{"serverId":"mcp-registry/io.github.mcflamingo/local-intel","tools":[{"name":"local_intel_book","fixed":{"name":"local_intel_book","description":"Book a specific response to an RFQ — confirms the job with that business. Use after reviewing local_intel_rfq_status responses.","inputSchema":{"type":"object","required":["rfq_id","response_id"],"properties":{"note":{"type":"string","description":"Optional note to the business"},"rfq_id":{"type":"string","description":"UUID of the RFQ"},"response_id":{"type":"string","description":"UUID of the response to accept"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":129,"tokensAfter":129},{"name":"local_intel_compare","fixed":{"name":"local_intel_compare","description":"Compare up to 10 ZIP codes side-by-side and get a ranked opportunity table. Returns per-ZIP signals (HHI, capture rate, infra momentum, consumer profile, top gap) plus a top_pick recommendation with reasoning. Best tool for site selection, franchise expansion, investment screening, and market prioritization.","inputSchema":{"type":"object","required":["zips"],"properties":{"zips":{"type":"array","items":{"type":"string"},"description":"Array of ZIP codes to compare, e.g. [\"32082\",\"32081\",\"32084\"]. Max 10."},"focus":{"type":"string","description":"Ranking focus: \"opportunity\" (default), \"hhi\", \"saturation\", \"growth\", or \"population\"."},"limit":{"type":"number","description":"Max rows to return (default 10)."}}},"annotations":{"readOnly":true,"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":217,"tokensAfter":217},{"name":"local_intel_healthcare","fixed":{"name":"local_intel_healthcare","description":"Healthcare market intelligence for a ZIP. Ask about provider density, patient demographics, demand gaps, senior population. Returns structured data with confidence score. Trained on 100 healthcare business prompts.","inputSchema":{"type":"object","required":["query"],"properties":{"lat":{"type":"number","description":"Latitude (WGS84) — resolves to nearest FL ZIP"},"lon":{"type":"number","description":"Longitude (WGS84)"},"zip":{"type":"string","description":"ZIP code to analyze"},"query":{"type":"string","description":"Natural language question about healthcare market"}}},"annotations":{"readOnly":true,"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":175,"tokensAfter":175},{"name":"local_intel_query","fixed":{"name":"local_intel_query","description":"START HERE. Natural language entry point for both market intelligence AND business routing. Ask about a market, find a business, or route a customer request. Auto-detects ZIP, industry vertical, and intent. For customer agents: \"Find a restaurant in 32082 that serves lunch\" or \"Who can do landscaping in Ponte Vedra?\" — returns the matching business so your agent can route the order to them. For market intel: \"Is 32082 oversaturated with dentists?\" ZIP is always required for routing — pass it exp","inputSchema":{"type":"object","required":["query"],"properties":{"lat":{"type":"number","description":"Optional latitude (WGS84). Resolves to nearest FL ZIP. Use instead of zip for coordinate-based queries."},"lon":{"type":"number","description":"Optional longitude (WGS84). Required if lat is provided."},"zip":{"type":"string","description":"Optional ZIP override. If omitted, ZIP is detected from the query or resolved from lat/lon."},"query":{"type":"string","description":"Any plain-English market question. ZIP can be in the query or passed separately."}}},"annotations":{"readOnly":true,"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":310,"tokensAfter":310},{"name":"local_intel_rfq_status","fixed":{"name":"local_intel_rfq_status","description":"Poll the status of an RFQ. Returns the original request, all responses received so far, and booking details if booked.","inputSchema":{"type":"object","required":["rfq_id"],"properties":{"rfq_id":{"type":"string","description":"UUID returned by local_intel_rfq"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"local_intel_search","fixed":{"name":"local_intel_search","description":"Search businesses by name, category, or semantic group (food, retail, health, finance, civic, services).","inputSchema":{"type":"object","properties":{"zip":{"type":"string","description":"Filter by ZIP code"},"group":{"type":"string","description":"Semantic group: food | retail | health | finance | civic | services"},"limit":{"type":"integer","description":"Max results (default 20, max 50)"},"query":{"type":"string","description":"Text search on name/category/address"},"category":{"type":"string","description":"Exact OSM category (restaurant, bank, dentist...)"}}},"annotations":{"readOnly":true,"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":172,"tokensAfter":172},{"name":"local_intel_stats","fixed":{"name":"local_intel_stats","description":"Dataset coverage stats: total businesses, confidence scores, query volume, revenue earned.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnly":true,"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":51,"tokensAfter":51}],"toolsChanged":7,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}