{"ok":true,"site":{"host":"nav-webmcp.vercel.app","url":"https://nav-webmcp.vercel.app/","type":"live","desc":"AgentBridge Booking Demo","tools":[{"name":"explore","kind":"act","impl":"imperative","description":"Navigate the platform's module tree. No path → platform overview and top-level modules. Dot-path (e.g. 'reservation.booking') → sub-modules and functions. 'x.*' → all descendants of x. '*' → entire tree. Array of paths → fetch multiple nodes in one call.","title":"Explore","inputSchema":{"type":"object","properties":{"path":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Module path(s). Omit for platform overview. Supports dot-paths, wildcards, or arrays."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"search","kind":"answer","impl":"imperative","description":"Find functions and modules by Linux-style path glob. Patterns match against synthesized 'module/path/functionName' strings. '**' crosses segment boundaries; '*' matches within one segment; '?' matches one char. A bare keyword (no metachar, no slash) is treated as '**/*keyword*'. Use search() when you know *what* you need but not *where* in the tree it lives. Use explore() when you want to navigate a known module path.","title":"Search","inputSchema":{"type":"object","properties":{"pattern":{"type":"string","minLength":1,"description":"Linux-style glob matched against module/function paths. Examples: \"**/*reservation*\", \"finance/**\", \"*refund*\", or a bare keyword like \"reservation\"."}},"required":["pattern"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"describe_tool","kind":"answer","impl":"imperative","description":"Return the full input schema and metadata for one or more functions by name. Use after explore() to get exact parameters before invoking.","title":"Describe Tool","inputSchema":{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Function name or array of names to describe."}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"invoke","kind":"act","impl":"imperative","description":"Call a function without loading it (stateless, Path B). Single call: { name, args }. Batch: { calls: [{name, args}] } — reads run in parallel, writes run in order.","title":"Invoke","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Function name (single-call form)"},"args":{"type":"object","additionalProperties":{},"description":"Arguments (single-call form)"},"calls":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Operation name"},"args":{"type":"object","additionalProperties":{},"default":{},"description":"Arguments for the operation"},"parallelSafe":{"type":"boolean","description":"Override parallel-safety for this call"}},"required":["name"],"additionalProperties":false},"description":"Batch calls (use this or name+args, not both)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"load_tools","kind":"act","impl":"imperative","description":"Promote functions to native MCP tools so they appear in tools/list with full schemas (Path A). Use when you'll call the same functions repeatedly. After calling, re-fetch tools/list.","title":"Load Tools","inputSchema":{"type":"object","properties":{"names":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Function names to promote to native tools"}},"required":["names"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"unload_tools","kind":"act","impl":"imperative","description":"Remove previously promoted functions from the native tool list. After calling, re-fetch tools/list to confirm removal.","title":"Unload Tools","inputSchema":{"type":"object","properties":{"names":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Function names to remove from native tools"}},"required":["names"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"getContext","kind":"answer","impl":"imperative","description":"Return current application context: page name, auth status, locale.","title":"Get Context","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"getCapabilities","kind":"answer","impl":"imperative","description":"Return the list of tools available to the caller's role, along with protocolVersion (semver of the protocol contract, same for every role) and capabilityHash (8-hex content hash of THIS role's tool set). Cache the manifest keyed on both; re-fetch when either changes.","title":"Get Capabilities","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"searchAvailability","kind":"answer","impl":"imperative","description":"Search available booking slots for a given date and party size. Returns a list of open time slots.","title":"Search Availability","inputSchema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date to search in YYYY-MM-DD format"},"partySize":{"type":"integer","minimum":1,"maximum":20,"description":"Number of people in the party"}},"required":["date","partySize"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"createReservation","kind":"transact","impl":"imperative","description":"Book a specific available slot. Requires a slotId from searchAvailability, the guest name, and party size.","title":"Create Reservation","inputSchema":{"type":"object","properties":{"slotId":{"type":"string","description":"ID of the slot to book, from searchAvailability"},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Guest name for the reservation"},"partySize":{"type":"integer","minimum":1,"maximum":20,"description":"Number of people in the party"}},"required":["slotId","name","partySize"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"cancelReservation","kind":"transact","impl":"imperative","description":"Cancel an existing reservation by ID. This is a destructive action — confirmation is required. When calling via MCP, you MUST pass confirm: true to acknowledge the cancellation.","title":"Cancel Reservation","inputSchema":{"type":"object","properties":{"reservationId":{"type":"string","description":"ID of the reservation to cancel"},"confirm":{"type":"boolean","description":"Must be true to confirm cancellation. Pass confirm: true to proceed."}},"required":["reservationId","confirm"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"listReservations","kind":"answer","impl":"imperative","description":"Return all current reservations.","title":"List Reservations","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"getReservation","kind":"answer","impl":"imperative","description":"Look up a specific reservation by ID.","title":"Get Reservation","inputSchema":{"type":"object","properties":{"reservationId":{"type":"string","description":"ID of the reservation to retrieve"}},"required":["reservationId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"book","kind":"transact","impl":"imperative","description":"Book a table in ONE step: finds the matching open slot for the date and time, reserves it, and validates the booking. Prefer this over calling searchAvailability + createReservation separately.","title":"Book a Table","inputSchema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date in YYYY-MM-DD format"},"time":{"type":"string","description":"Desired time slot, e.g. '18:00'"},"partySize":{"type":"integer","minimum":1,"maximum":20,"description":"Number of guests (1–20)"},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Guest name for the reservation"}},"required":["date","time","partySize","name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"getGuestPreferences","kind":"answer","impl":"imperative","description":"Retrieve dining preferences and dietary restrictions for a guest.","title":"Get Guest Preferences","inputSchema":{"type":"object","properties":{"guestId":{"type":"string","description":"The unique guest identifier"}},"required":["guestId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"updateGuestPreferences","kind":"act","impl":"imperative","description":"Update dietary restrictions, seating preferences, and special notes for a guest.","title":"Update Guest Preferences","inputSchema":{"type":"object","properties":{"guestId":{"type":"string","description":"The unique guest identifier"},"dietaryRestrictions":{"type":"array","items":{"type":"string"},"description":"List of dietary restrictions or allergies"},"seatingPreference":{"type":"string","description":"Preferred seating area (e.g. window, booth, outdoor)"},"specialNotes":{"type":"string","description":"Free-text special notes or requests"}},"required":["guestId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"getLoyaltyStatus","kind":"answer","impl":"imperative","description":"Get loyalty tier, point balance, and redemption history for a guest.","title":"Get Loyalty Status","inputSchema":{"type":"object","properties":{"guestId":{"type":"string","description":"The unique guest identifier"}},"required":["guestId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"getBillSummary","kind":"answer","impl":"imperative","description":"Get the bill summary for a seated reservation.","title":"Get Bill Summary","inputSchema":{"type":"object","properties":{"reservationId":{"type":"string","description":"Reservation ID to retrieve bill for"}},"required":["reservationId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"getWaitTime","kind":"answer","impl":"imperative","description":"Get the current estimated wait time for walk-in guests.","title":"Get Wait Time","inputSchema":{"type":"object","properties":{"partySize":{"type":"integer","minimum":1,"maximum":20,"description":"Number of guests in the walk-in party"}},"required":["partySize"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"getMyTasks","kind":"answer","impl":"imperative","description":"List all tasks assigned to the current user.","title":"Get My Tasks","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"completeTask","kind":"act","impl":"imperative","description":"Mark a task assigned to the current user as completed.","title":"Complete Task","inputSchema":{"type":"object","properties":{"taskId":{"type":"string","description":"ID of the task to mark as completed"}},"required":["taskId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]}],"category":"Travel & Events","favicon":"/favicons/nav-webmcp.vercel.app.svg","apiSurface":"spec","toolCount":21}}