{"ok":true,"site":{"host":"queueless-mu-one.vercel.app","url":"https://queueless-mu-one.vercel.app/","type":"live","desc":"WebMCP appointment marketplace. Agents search, compare, reserve, and keep watching for better slots — so you don't have to refresh.","tools":[{"name":"get_app_state","kind":"answer","impl":"imperative","description":"Get QueueLess app snapshot: current screen, inventory counts, active watches, pending approval, and suggested agent workflow.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search_slots","kind":"answer","impl":"imperative","description":"Search the simulated appointment marketplace for available slots. Filter by time window, max price (INR), day, category, or free-text query. Returns ranked slots and a cheapest recommendation.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Free text match on provider, location, or category."},"afterTime":{"type":"string","description":"Earliest time HH:MM (24h). Example: 17:00 for after 5 PM."},"beforeTime":{"type":"string","description":"Latest time HH:MM (24h)."},"maxPriceInr":{"type":"number","description":"Maximum price in Indian Rupees."},"minPriceInr":{"type":"number","description":"Minimum price in INR."},"days":{"type":"array","items":{"type":"string"},"description":"Optional ISO dates YYYY-MM-DD to include."},"categories":{"type":"array","items":{"type":"string","enum":["clinic","salon","visa","dmv","dentist"]},"description":"clinic | salon | visa | dmv | dentist"}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compare_slots","kind":"act","impl":"imperative","description":"Compare and rank slots by price, soonest time, or overall value. Optionally pass specific slot IDs; otherwise uses the latest search results. Surfaces a clear recommendation for the human.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"slotIds":{"type":"array","items":{"type":"string"},"description":"Optional list of slot IDs to compare."},"sortBy":{"type":"string","enum":["price","soonest","value"],"description":"Ranking strategy. Default: price."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"reserve_slot","kind":"transact","impl":"imperative","description":"Reserve an appointment slot. ALWAYS call first with confirm=false to propose and show the human Approval screen. Only call with confirm=true after the human explicitly approves.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"slotId":{"type":"string","description":"Slot ID from search_slots / compare_slots / check_watch."},"confirm":{"type":"boolean","description":"false = propose for human approval; true = finalize reservation after human yes."}},"required":["slotId","confirm"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"cancel_reservation","kind":"transact","impl":"imperative","description":"Cancel a confirmed reservation and release the slot back to available inventory.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"reservationId":{"type":"string","description":"Reservation ID returned by reserve_slot."}},"required":["reservationId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"notify_user","kind":"act","impl":"imperative","description":"Show an in-app notification to the human collaborator (toast + notification tray).","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Short notification title."},"body":{"type":"string","description":"Notification body text."},"level":{"type":"string","enum":["info","success","watch","warn"],"description":"Visual urgency level."}},"required":["title","body"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"keep_watching","kind":"act","impl":"imperative","description":"Create a Keep Watching rule. The agent should periodically call check_watch until a matching cheaper/later slot appears, then ask the human before reserving. This is QueueLess's signature human+agent collaboration feature.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"label":{"type":"string","description":"Human-readable watch label."},"maxPriceInr":{"type":"number","description":"Maximum acceptable price in INR."},"afterTime":{"type":"string","description":"Earliest acceptable time HH:MM (e.g. 18:00)."},"beforeTime":{"type":"string","description":"Optional latest time HH:MM."},"days":{"type":"array","items":{"type":"string"},"description":"Optional ISO dates to watch."},"categories":{"type":"array","items":{"type":"string","enum":["clinic","salon","visa","dmv","dentist"]}}},"required":["maxPriceInr","afterTime"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"check_watch","kind":"answer","impl":"imperative","description":"Poll active Keep Watching rules against live marketplace inventory. Call periodically while watching. Returns new matches when conditions are satisfied — then ask the human before reserve_slot.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"watchId":{"type":"string","description":"Optional specific watch ID; omit to check all active watches."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_reservations","kind":"answer","impl":"imperative","description":"List all reservations (confirmed and cancelled) with slot details.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_watches","kind":"answer","impl":"imperative","description":"List Keep Watching rules and their status.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"stop_watching","kind":"act","impl":"imperative","description":"Deactivate a Keep Watching rule so the agent can stop polling.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"watchId":{"type":"string","description":"Watch ID from keep_watching."}},"required":["watchId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Productivity & Business","favicon":"/favicons/queueless-mu-one.vercel.app.svg","apiSurface":"spec","toolCount":11}}