{"ok":true,"site":{"host":"routegap.vercel.app","url":"https://routegap.vercel.app/","type":"live","desc":"A WebMCP-powered dispatcher workspace that turns route gaps into safe, profitable customer opportunities.","tools":[{"name":"inspect_schedule","kind":"answer","impl":"imperative","description":"Read a technician schedule and its open gaps. Does not change data.","title":"Inspect technician schedule","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"technician_id":{"type":"string","description":"Technician ID","pattern":"^[a-z]+-[a-z0-9-]+$"},"date":{"type":"string","format":"date"}},"required":["technician_id","date"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"analyze_route_gap","kind":"act","impl":"imperative","description":"Analyze one existing gap and visualize its capacity and route constraints on the live page.","title":"Analyze route gap","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"gap_id":{"type":"string","description":"Open schedule gap ID","pattern":"^[a-z]+-[a-z0-9-]+$"}},"required":["gap_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"find_eligible_customers","kind":"answer","impl":"imperative","description":"Rank and visualize nearby customers who are eligible, consented, due, and fit the selected gap.","title":"Find eligible customers","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"gap_id":{"type":"string","description":"Open schedule gap ID","pattern":"^[a-z]+-[a-z0-9-]+$"},"radius_miles":{"type":"number","minimum":1,"maximum":15,"default":5},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5}},"required":["gap_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"calculate_offer_options","kind":"act","impl":"imperative","description":"Calculate and record price, discount, drive time, and margin-safe options for one eligible customer.","title":"Calculate offer options","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"gap_id":{"type":"string","description":"Open schedule gap ID","pattern":"^[a-z]+-[a-z0-9-]+$"},"customer_id":{"type":"string","description":"Eligible customer ID","pattern":"^[a-z]+-[a-z0-9-]+$"},"service_type_id":{"type":"string","description":"Service type ID","pattern":"^[a-z]+-[a-z0-9-]+$"}},"required":["gap_id","customer_id","service_type_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"preview_campaign","kind":"act","impl":"imperative","description":"Create one immutable outreach draft in the live page audit. This does not contact anyone.","title":"Preview outreach campaign","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"gap_id":{"type":"string","description":"Open schedule gap ID","pattern":"^[a-z]+-[a-z0-9-]+$"},"customer_id":{"type":"string","description":"Eligible customer ID","pattern":"^[a-z]+-[a-z0-9-]+$"},"offer_option_id":{"type":"string","description":"Calculated offer option ID","pattern":"^[a-z]+-[a-z0-9-]+$"},"channel":{"type":"string","enum":["sms"]}},"required":["gap_id","customer_id","offer_option_id","channel"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"request_campaign_approval","kind":"transact","impl":"imperative","description":"Open a visible dispatcher approval gate. Only the human can approve or reject; the tool waits for that choice.","title":"Request human approval","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"campaign_id":{"type":"string","description":"Draft campaign ID","pattern":"^[a-z]+-[a-z0-9-]+$"}},"required":["campaign_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"verify_schedule","kind":"act","impl":"imperative","description":"After the customer page books, read and verify the appointment, filled gap, route metrics, margin, and receipt evidence.","title":"Verify customer-booked schedule","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"booking_id":{"type":"string","description":"Customer booking receipt ID","pattern":"^[a-z]+-[a-z0-9-]+$"}},"required":["booking_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Productivity & Business","apiSurface":"spec","toolCount":7}}