{"ok":true,"site":{"host":"moscraciunxxx.github.io","url":"https://moscraciunxxx.github.io/foodloop-webmcp/","type":"live","desc":"FoodLoop is a human-in-the-loop surplus food rescue operations cockpit powered by WebMCP.","tools":[{"name":"get_operations_snapshot","kind":"answer","impl":"imperative","description":"Read current supply, community demand, workflow state, safety signals, and top compatible matches. Use this to orient before proposing work.","title":"Read the rescue workspace","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"includeMatches":{"type":"boolean","description":"Include up to three current supply-to-request matches."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"list_surplus","kind":"answer","impl":"imperative","description":"Find active surplus lots by food category, neighborhood, dietary tag, or minimum available servings. Returns compact IDs for later calls.","title":"List available surplus","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"category":{"type":"string","enum":["prepared-meals","bakery","produce"],"description":"Food category to include."},"neighborhood":{"type":"string","maxLength":40,"description":"Neighborhood to include, or all."},"dietary":{"type":"string","maxLength":40,"description":"Required tag, such as vegan or gluten-free."},"minServings":{"type":"integer","minimum":0,"maximum":5000,"description":"Minimum currently available servings."},"maxResults":{"type":"integer","minimum":1,"maximum":12,"description":"Maximum lots to return."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"find_requests","kind":"answer","impl":"imperative","description":"Find open community requests by priority, accepted food category, neighborhood, or dietary requirement. Returns remaining need and deadlines.","title":"Find recipient requests","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"priority":{"type":"string","enum":["urgent","high","normal"],"description":"Priority to include."},"category":{"type":"string","enum":["prepared-meals","bakery","produce"],"description":"Food category recipients can accept."},"neighborhood":{"type":"string","maxLength":40,"description":"Recipient neighborhood, or all."},"dietary":{"type":"string","maxLength":40,"description":"Required dietary tag."},"maxResults":{"type":"integer","minimum":1,"maximum":12,"description":"Maximum requests to return."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"propose_allocation","kind":"act","impl":"imperative","description":"Reserve a compatible quantity from one surplus lot for one recipient request and explain the safety and fit factors. The proposal remains reviewable.","title":"Propose a food allocation","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"surplusId":{"type":"string","pattern":"^S-[0-9]+$","description":"Surplus lot ID returned by a read tool."},"requestId":{"type":"string","pattern":"^R-[0-9]+$","description":"Recipient request ID returned by a read tool."},"servings":{"type":"integer","minimum":1,"maximum":5000,"description":"Servings to reserve without exceeding supply or need."},"notes":{"type":"string","maxLength":240,"description":"Optional operational rationale."}},"required":["surplusId","requestId","servings"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"draft_pickup_route","kind":"act","impl":"imperative","description":"Optimize a pickup-and-delivery route from staged allocations. Respects pickup-before-delivery dependencies and calculates deadline slack without dispatching.","title":"Draft a rescue route","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"allocationIds":{"type":"array","minItems":1,"maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^AL-[0-9]+$"},"description":"Staged allocation IDs to route."},"vehicle":{"type":"string","maxLength":80,"description":"Vehicle or driver resource label."},"vehicleCapacity":{"type":"integer","minimum":1,"maximum":5000,"description":"Maximum vehicle load in servings."},"departure":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$","description":"Local departure time in 24-hour HH:MM format."}},"required":["allocationIds"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"audit_route_readiness","kind":"act","impl":"imperative","description":"Re-check a drafted route for deadlines, capacity, allocation state, dietary compatibility, and pickup-before-delivery ordering before approval is requested.","title":"Audit route readiness","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"routeId":{"type":"string","pattern":"^ROUTE-[0-9]+$","description":"Drafted route ID to audit."}},"required":["routeId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"request_dispatch_approval","kind":"act","impl":"imperative","description":"Move a safe drafted route into the visible operator checkpoint. This initiates review and never dispatches the vehicle by itself.","title":"Request dispatch approval","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"routeId":{"type":"string","pattern":"^ROUTE-[0-9]+$","description":"Audited route ID to place in review."}},"required":["routeId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"stage_handoff_receipt","kind":"act","impl":"imperative","description":"Stage recipient, temperature, and handoff details for an in-transit allocation. A visible operator confirmation is still required to close delivery.","title":"Stage a delivery receipt","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"allocationId":{"type":"string","pattern":"^AL-[0-9]+$","description":"In-transit allocation ID on the approved route."},"receiver":{"type":"string","minLength":2,"maxLength":100,"description":"Receiving person or role."},"temperatureC":{"type":"number","minimum":-40,"maximum":100,"description":"Optional verified food temperature in Celsius."},"note":{"type":"string","maxLength":240,"description":"Optional count, condition, or chain-of-custody note."}},"required":["allocationId","receiver"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"run_safety_scenario","kind":"act","impl":"imperative","description":"Evaluate one known adversarial rescue scenario in a sandbox. Returns the refusal reason, evidence, safe alternative, and proof that live state was not changed.","title":"Run an adversarial safety check","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"scenarioId":{"type":"string","enum":["expired-food","allergen-mismatch","insufficient-capacity","late-delivery","duplicate-handoff","malicious-donor-note","prompt-injected-partner"],"description":"Adversarial scenario to evaluate."}},"required":["scenarioId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"explain_match","kind":"act","impl":"imperative","description":"Compare one supply-to-request pairing with the next-best safe alternative using dietary, deadline, proximity, fill, and priority evidence.","title":"Explain a proposed match","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"surplusId":{"type":"string","pattern":"^S-[0-9]+$","description":"Surplus lot ID to explain."},"requestId":{"type":"string","pattern":"^R-[0-9]+$","description":"Recipient request ID to explain."}},"required":["surplusId","requestId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"analyze_route_delay","kind":"act","impl":"imperative","description":"Model a departure delay without mutating the route. Shows changed slack, late stops, audit blockers, and the evidence behind the result.","title":"Analyze a route delay","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"routeId":{"type":"string","pattern":"^ROUTE-[0-9]+$","description":"Drafted or dispatched route ID."},"delayMinutes":{"type":"integer","minimum":0,"maximum":180,"description":"Minutes to add to the departure."}},"required":["routeId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"get_impact_metrics","kind":"answer","impl":"imperative","description":"Read clearly labeled pilot-simulator metrics: baseline coordination time, servings rescued, rejected unsafe plans, handoff completion, and route efficiency.","title":"Read pilot impact metrics","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"},{"name":"get_capability_map","kind":"answer","impl":"imperative","description":"Read the role-scoped capability map showing which actor can observe, propose, audit, request approval, approve dispatch, or verify a handoff.","title":"Read role capability boundaries","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/foodloop-webmcp/"}],"favicon":"/favicons/moscraciunxxx.github.io.svg","apiSurface":"spec","category":"Commerce","toolCount":13}}