{"ok":true,"site":{"host":"plan-on-it.vercel.app","url":"https://plan-on-it.vercel.app/","type":"live","desc":"PlanOnIt","tools":[{"name":"search_restaurants","kind":"answer","impl":"imperative","description":"Find demo restaurants that match city, date, party size, cuisine, rating, price, and current remaining table capacity. Use before selecting dinner. Returns IDs and available slots; never books.","title":"Search available restaurants","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"city":{"type":"string","enum":["Dhaka"]},"date":{"type":"string","format":"date","enum":["2026-10-28","2026-10-29","2026-10-30","2026-10-31","2026-11-01","2026-11-02","2026-11-03","2026-11-04","2026-11-05","2026-11-06","2026-11-07","2026-11-08","2026-11-09","2026-11-10"],"description":"Supported demo inventory window: 2026-10-28 through 2026-11-10. The window rolls forward with the current date."},"people":{"type":"integer","minimum":1,"maximum":12},"cuisine":{"type":"string","minLength":2,"maxLength":40},"minRating":{"type":"number","minimum":1,"maximum":5},"maxPricePerPerson":{"type":"integer","minimum":100,"maximum":10000}},"required":["city","date","people"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_restaurant_details","kind":"answer","impl":"imperative","description":"Read one restaurant’s location, pricing, hours, party limits, and current provider-style availability inventory by ID.","title":"Get restaurant details","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"restaurantId":{"type":"string","minLength":1}},"required":["restaurantId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"check_restaurant_availability","kind":"answer","impl":"imperative","description":"Check current remaining table capacity for a known restaurant, supported date, and party size. Use immediately before plan creation or replacement.","title":"Check table availability","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"restaurantId":{"type":"string","minLength":1},"date":{"type":"string","format":"date","enum":["2026-10-28","2026-10-29","2026-10-30","2026-10-31","2026-11-01","2026-11-02","2026-11-03","2026-11-04","2026-11-05","2026-11-06","2026-11-07","2026-11-08","2026-11-09","2026-11-10"],"description":"Supported demo inventory window: 2026-10-28 through 2026-11-10. The window rolls forward with the current date."},"people":{"type":"integer","minimum":1,"maximum":12}},"required":["restaurantId","date","people"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"find_showtimes","kind":"answer","impl":"imperative","description":"Find movie showtimes in the plan city on an exact supported date with enough current seats. Returns atomic movieId/showtimeId pairs, cinema location, duration, and price.","title":"Find compatible showtimes","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"city":{"type":"string","enum":["Dhaka"]},"date":{"type":"string","format":"date","enum":["2026-10-28","2026-10-29","2026-10-30","2026-10-31","2026-11-01","2026-11-02","2026-11-03","2026-11-04","2026-11-05","2026-11-06","2026-11-07","2026-11-08","2026-11-09","2026-11-10"],"description":"Supported demo inventory window: 2026-10-28 through 2026-11-10. The window rolls forward with the current date."},"people":{"type":"integer","minimum":1,"maximum":12},"genre":{"type":"string","minLength":2,"maxLength":40}},"required":["city","date","people"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"estimate_transport","kind":"answer","impl":"imperative","description":"Return route-specific distance, duration, and fare options between known PlanOnIt location IDs. Unknown or unsupported routes return ROUTE_NOT_FOUND; no fares are invented.","title":"Estimate venue transport","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"fromLocationId":{"type":"string","minLength":1},"toLocationId":{"type":"string","minLength":1}},"required":["fromLocationId","toLocationId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_evening_plan","kind":"act","impl":"imperative","description":"Evaluate restaurant slots × showtimes × venue routes × transport options, reject invalid combinations, rank valid ones using structured preferences, and atomically replace the shared draft. It never approves or reserves.","title":"Create a feasible evening","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"city":{"type":"string","enum":["Dhaka"]},"date":{"type":"string","format":"date","enum":["2026-10-28","2026-10-29","2026-10-30","2026-10-31","2026-11-01","2026-11-02","2026-11-03","2026-11-04","2026-11-05","2026-11-06","2026-11-07","2026-11-08","2026-11-09","2026-11-10"],"description":"Supported demo inventory window: 2026-10-28 through 2026-11-10. The window rolls forward with the current date."},"people":{"type":"integer","minimum":1,"maximum":12},"budget":{"type":"integer","minimum":500,"maximum":100000},"preferences":{"type":"object","description":"Structured ranking preferences that materially affect candidate scoring.","properties":{"cuisine":{"type":"string","minLength":2,"maxLength":40},"movieGenre":{"type":"string","minLength":2,"maxLength":40},"minRestaurantRating":{"type":"number","minimum":1,"maximum":5},"transport":{"type":"string","enum":["lowest_cost","comfortable","fastest"],"default":"lowest_cost"},"priority":{"type":"string","enum":["balanced","lowest_cost","highest_rated"],"default":"balanced"},"timing":{"type":"string","enum":["relaxed","compact"],"default":"relaxed"}},"additionalProperties":false},"dinnerDurationMinutes":{"type":"integer","minimum":45,"maximum":150,"default":75},"bufferMinutes":{"type":"integer","minimum":5,"maximum":45,"default":15}},"required":["city","date","people","budget","preferences"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_current_plan","kind":"answer","impl":"imperative","description":"Read the current persisted shared draft, version, selections, current provider entities, timeline, cost breakdown, approval state, and full feasibility evidence.","title":"Inspect shared plan","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"validate_plan","kind":"act","impl":"imperative","description":"Recompute every blocking constraint against the current mutable provider revision: completeness, ownership, city, capacity, showtime integrity, route, chronology, and budget. Does not mutate.","title":"Validate shared plan","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_plan","kind":"act","impl":"imperative","description":"Apply a version-checked atomic change. Restaurant requires restaurantId+restaurantSlot; movie requires movieId+showtimeId. Invalid IDs, mismatches, wrong dates, routes, empty changes, and stale versions are rejected. Identical input is a no-op and does not increment the version.","title":"Atomically update plan","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":1,"description":"Current positive plan version from get_current_plan. Mutations reject stale versions."},"restaurantId":{"type":"string","minLength":1},"restaurantSlot":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"movieId":{"type":"string","minLength":1},"showtimeId":{"type":"string","minLength":1},"transportOptionId":{"type":"string","minLength":1},"budget":{"type":"integer","minimum":500,"maximum":100000},"people":{"type":"integer","minimum":1,"maximum":12},"preferences":{"type":"object","description":"Structured ranking preferences that materially affect candidate scoring.","properties":{"cuisine":{"type":"string","minLength":2,"maxLength":40},"movieGenre":{"type":"string","minLength":2,"maxLength":40},"minRestaurantRating":{"type":"number","minimum":1,"maximum":5},"transport":{"type":"string","enum":["lowest_cost","comfortable","fastest"],"default":"lowest_cost"},"priority":{"type":"string","enum":["balanced","lowest_cost","highest_rated"],"default":"balanced"},"timing":{"type":"string","enum":["relaxed","compact"],"default":"relaxed"}},"additionalProperties":false}},"required":["expectedVersion"],"additionalProperties":false,"minProperties":2,"dependentRequired":{"restaurantId":["restaurantSlot"],"restaurantSlot":["restaurantId"],"movieId":["showtimeId"],"showtimeId":["movieId"]}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"repair_plan","kind":"act","impl":"imperative","description":"Signature collaboration tool: inspect the current invalid human-edited draft, preserve the requested restaurant and/or movie, search dependent alternatives, and atomically replace it with the highest-ranked feasible version. Requires the current version.","title":"Repair invalid shared plan","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":1,"description":"Current positive plan version from get_current_plan. Mutations reject stale versions."},"preserveRestaurant":{"type":"boolean","default":true},"preserveMovie":{"type":"boolean","default":false}},"required":["expectedVersion"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"calculate_total_cost","kind":"act","impl":"imperative","description":"Return per-person-scaled dinner and ticket costs plus route-specific transport fare. Invalid or incomplete references return null components and failed feasibility evidence, never a misleading zero-cost success.","title":"Calculate reliable total","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"reserve_plan","kind":"transact","impl":"imperative","description":"Consequential sandbox action. Commits mutable in-app table and seat inventory only for the exact current version and provider revision after human approval. Stale, invalid, unapproved, conflicted, and failed attempts consume nothing; retries are idempotent. No real provider or payment is contacted.","title":"Confirm sandbox reservation","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":1,"description":"Current positive plan version from get_current_plan. Mutations reject stale versions."},"confirmation":{"type":"string","enum":["CONFIRM_SIMULATED_RESERVATION"],"description":"Backward-compatible exact acknowledgement that this is a controlled sandbox reservation."}},"required":["expectedVersion","confirmation"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"start_new_plan","kind":"act","impl":"imperative","description":"Explicitly begin a new plan after a reservation was confirmed. The previous reservation is never cancelled, detached, or hidden: its committed inventory stays with its own plan version and remains readable through get_current_plan’s reservationLedger. Required before create_evening_plan can run on a workspace that holds an active reservation.","title":"Start a new plan lifecycle","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":1,"description":"Current positive plan version from get_current_plan. Mutations reject stale versions."},"acknowledgeExistingReservation":{"type":"boolean","default":true,"description":"Acknowledges that any active reservation stays committed and visible in the ledger."}},"required":["expectedVersion"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Travel & Events","apiSurface":"spec","toolCount":13}}