{"ok":true,"site":{"host":"catering-webmcp.vercel.app","url":"https://catering-webmcp.vercel.app/plan.html","type":"live","desc":"Planner","tools":[{"name":"plan_meal","kind":"act","impl":"imperative","description":"Turn an occasion into a need list: headcount, budget, dietary groups, venue constraints. Pass whatever you already understood as fields — they are taken as stated and outrank anything read from `description`, whose reader is deliberately shallow. Returns `given` (fields you supplied), `found` (what is known rather than assumed) and `unread` (quantities in the description no field claimed). With no arguments it re-plans whatever the page currently holds.","inputSchema":{"type":"object","properties":{"description":{"type":"string","description":"the occasion in plain words; optional if you pass the fields"},"headcount":{"type":"integer","description":"how many people are eating"},"budget":{"type":"number","description":"total to spend, in dollars"},"dietary":{"type":"object","description":"guest counts by group, e.g. {\"vegetarian\":6,\"gluten_free\":2}"},"venue_has_kitchen":{"type":"boolean"},"duration_hours":{"type":"number","description":"how long food is served for"},"service_level":{"type":"string","enum":["pickup","delivery","dropoff_setup"]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/plan.html","pages":["/plan.html"]},{"name":"build_basket","kind":"act","impl":"imperative","description":"Compose an order across vendors covering every dietary group and the total volume, with the arithmetic behind each quantity.","inputSchema":{"type":"object","properties":{"service_level":{"type":"string","enum":["pickup","delivery","dropoff_setup"]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/plan.html","pages":["/plan.html"]},{"name":"build_options","kind":"act","impl":"imperative","description":"Two or three real orders for this occasion, each with its tradeoffs stated: what it covers, what it costs, what it leaves you doing, and why any split across vendors is justified. Does not choose — returns the choice.","inputSchema":{"type":"object","properties":{"service_level":{"type":"string","enum":["pickup","delivery","dropoff_setup"]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/plan.html","pages":["/plan.html"]},{"name":"choose_option","kind":"act","impl":"imperative","description":"Pick one of the options from build_options. Everything below it — the order, the findings, and who is doing what — follows the choice.","inputSchema":{"type":"object","properties":{"option":{"type":"string"}},"required":["option"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/plan.html","pages":["/plan.html"]},{"name":"check_plan","kind":"answer","impl":"imperative","description":"Report what the current order does not cover: quantity, dietary coverage, jobs nobody owns, and timing that breaks a food-safety rule.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/plan.html","pages":["/plan.html"]},{"name":"negotiate","kind":"act","impl":"imperative","description":"Ask every vendor what they can do about a stated problem, and what it would cost.","inputSchema":{"type":"object","properties":{"constraint":{"type":"string","enum":["timing","coverage","unclaimed","quantity"]}},"required":["constraint"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/plan.html","pages":["/plan.html"]},{"name":"list_assumptions","kind":"answer","impl":"imperative","description":"Every number this plan inferred rather than read from a vendor: its value, where it came from, how far it is trusted, and whether the customer has confirmed it.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/plan.html","pages":["/plan.html"]},{"name":"revise","kind":"act","impl":"imperative","description":"Correct one assumption by id and rebuild the plan from it. The corrected value is marked confirmed and is not overwritten by a later run.","inputSchema":{"type":"object","properties":{"assumption":{"type":"string"},"value":{}},"required":["assumption","value"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/plan.html","pages":["/plan.html"]},{"name":"replan","kind":"act","impl":"imperative","description":"Change one input and report only what broke. Returns the difference from the previous plan, not a whole new plan.","inputSchema":{"type":"object","properties":{"assumption":{"type":"string"},"value":{},"service_level":{"type":"string","enum":["pickup","delivery","dropoff_setup"]},"description":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/plan.html","pages":["/plan.html"]},{"name":"explain_ranking","kind":"answer","impl":"imperative","description":"How the vendors rank and why, plus any instruction a vendor tried to give this agent and what was done about it. Ranking is deterministic: coverage, then value, then name.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/plan.html","pages":["/plan.html"]},{"name":"share_plan","kind":"act","impl":"imperative","description":"The plan as something you can hand to another person: every job, when it has to happen, and who owns it — including the jobs that land on the host and appear on no receipt.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/plan.html","pages":["/plan.html"]},{"name":"read_source","kind":"answer","impl":"imperative","description":"Read one business at one source tier and return the normalized records, each with its tier, url, timestamp, confidence and the evidence it was read from.","inputSchema":{"type":"object","properties":{"tier":{"type":"string","enum":["T0","T1","T2","T3"]}},"required":["tier"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/gradient.html","pages":["/gradient.html"]},{"name":"compare_tiers","kind":"act","impl":"imperative","description":"Ask the same question of every source tier at once and report which of them can answer it, how, and how long the round trip takes.","inputSchema":{"type":"object","properties":{"question":{"type":"string","enum":["menu","servings","dietary","availability","requirements","hold","negotiate","roundtrip"]}},"required":["question"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/gradient.html","pages":["/gradient.html"]},{"name":"capability_matrix","kind":"act","impl":"imperative","description":"What each source tier makes possible at all, not merely how much effort it takes. Requirements exist at no tier below T0, and nothing below T0 can act.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/gradient.html","pages":["/gradient.html"]},{"name":"draft_inquiry","kind":"act","impl":"imperative","description":"For a business that publishes nothing, compose the enquiry a person can send, including the question about what they need from you that no format publishes.","inputSchema":{"type":"object","properties":{"headcount":{"type":"number"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/gradient.html","pages":["/gradient.html"]},{"name":"ping","kind":"act","impl":"imperative","description":"Echo a message back. Verifies WebMCP tool discovery and invocation.","inputSchema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/smoke.html","pages":["/smoke.html"]},{"name":"get_page_facts","kind":"answer","impl":"imperative","description":"Return basic facts about this page, to verify multi-tool discovery.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/smoke.html","pages":["/smoke.html"]}],"apiSurface":"spec","category":"Travel & Events","toolCount":17}}