Good food.
Unhurried evenings.
A cozy neighborhood bistro serving market suppers, generous pours, and the kind of welcome that remembers your name.
This is a fictional restaurant built to demonstrate WebMCP. Reservations create real state, but no actual table exists.
Try it with
your agent.
- 1Use a WebMCP-capable browser.
Open ChatGPT’s in-app browser, or Chrome 149+ with
chrome://flags/#enable-webmcp-testingenabled for the origin trial. - 2Open this site there.
Your agent discovers the booking tools automatically through
document.modelContext. Nothing to paste or configure. - 3Give your agent a reservation.
Copy the starter prompt. The live calendar makes it check, negotiate, hold, and confirm.
Book me a table for 4 this Friday at 7pm at this restaurant; if that's full, find the closest available time and confirm it under my name.Friday at 7 is intentionally popular. The agent may need to negotiate the nearest real opening before confirming.
Pull up a chair.
always
Come for the roast chicken.
Stay because nobody is rushing you.
Genuinely working reservations.
Already have
a table?
Look up, cancel, or move your reservation. No account, no phone tree.
A website an agent
can actually use.
const ctx = document.modelContext ?? navigator.modelContext;
const controller = new AbortController();
await ctx?.registerTool({
name: "mabel_check_availability",
description: "Check live table availability at Mabel's Table for a date and party size. Use this before creating a hold or rescheduling.",
inputSchema: {
type: "object",
properties: {
date: {
type: "string",
description: "Reservation date in YYYY-MM-DD format, within the next 21 days."
},
partySize: {
type: "integer",
minimum: 1,
maximum: 10,
description: "Number of guests, from 1 to 10."
}
},
required: ["date", "partySize"]
},
execute: ({ date, partySize }) =>
checkAvailability(String(date), Number(partySize))
}, { signal: controller.signal });
// Cleanup
controller.abort();
ctx?.unregisterTool?.("mabel_check_availability");The tool schema tells an agent exactly what values are valid before it acts.
Give your agent
a head start.
Paste this prompt into your coding agent to add a typed WebMCP booking flow to your own site.
Add WebMCP booking tools to this site using document.modelContext.registerTool(), with navigator.modelContext as a fallback for older browsers. Expose typed tools to check live availability, place an expiring hold, confirm with guest details, look up, cancel, and reschedule reservations. Use JSON Schema inputs, return concise structured results, validate every server-side action, persist state, handle sold-out times with alternatives, and abort current registrations or unregister older fallback tools during cleanup. Keep the normal human booking UI fully functional too.