A local MCP-style tool server for Contractor Quote Check, bound to loopback with money, email, ads and publishing tools declared but disabled.
An HTTP server exposing the quote-analysis tools two ways: a JSON-RPC subset of MCP (initialize, tools/list, tools/call, ping) and plain POST /tools/<name> for scripts. It reuses the same analysis code as the web app rather than a second copy of the logic.
It binds 127.0.0.1 only and has no public route. That is deliberate: a public AI endpoint would mean customer quote text passing through a third party, plus rate limiting and abuse handling that do not exist yet.
| Tool | What it does | State |
|---|---|---|
audit_quote | Sections present/missing, red flags, questions | enabled |
compare_quotes | Two or three quotes side by side | enabled |
extract_quote_amounts | Every detected currency value | enabled |
flag_missing_quote_sections | Check against eight standard sections | enabled |
generate_contractor_questions | Question list, optionally trade-specific | enabled |
generate_quote_report | Draft report with public links | enabled |
save_lead | Store a follow-up contact locally | enabled |
save_checkout_interest | Record a price point someone would pay | enabled |
send_report_email | Email a report | disabled — owner approval |
charge_customer | Charge for a paid tier | disabled — owner approval |
create_payment_link | Create a Stripe Payment Link | disabled — owner approval |
submit_contractor_referral | Refer a homeowner to a contractor | disabled by design |
publish_ad | Publish a paid ad | disabled — owner approval |
publish_social_post | Publish a drafted post | disabled — owner approval |
Disabled tools are declared rather than hidden, and return {"ok": false, "status": "owner_approval_required"}. An AI client that can see the boundary is less likely to invent a way around it.
generate_quote_report writes to an unauthenticated public URL. Fine for samples, a blocker for real customer data.Contractor quotes contain names, addresses, phone numbers and prices. No customer data should be sent through an AI app, plugin or connector until a privacy policy and account terms covering that data flow have been reviewed and approved. That is why the tool server currently binds to loopback and has no public route: it cannot leak what it cannot receive.
Related: legal drafts