Skip to content

Example domain — table bookings ​

The second example, built by following skills/build-a-domain step by step, so it is also that skill's acceptance test. Its worksheet answers:

QuestionAnswer
The jobBook a table at a venue: which venue, which day, for how many, which time, confirm, create
The entity and the writebooking; create_booking into .data/bookings.json (writes off in evals and CI)
The backenda JSON file that validates nothing; venues from fixtures/venues.json; availability computed, so the no-availability path is deterministic
The slotsvenue (asked, resolved by search); cuisine, area (from the record, shown); date, party size, occasion (the Details card); time (chips from availability); notes (optional)
Done"Booking BKG-… confirmed — venue, day, time, party"
PartFileWhat it shows beyond the first example
Manifestdomain.jsonroute hints that make the super agent choose between two domains
Toolsmcp/server.tssearch_venues (two look-alike names → the picker), availability (open slots, or the nearest alternatives), the triad
Stepssteps/index.tsa date row in the Details card; a bespoke StepDefinition (the Time chips) fed by a tool, settling two slots when it moves the date
Mockmock/policy.tsregistered under the domain's name, so two policies share one gateway
Evalsevals/run-evals.tsnine scenarios: the happy path, the picker, no availability, a correction, words beside the card, the review, an injection probe, and routing to each domain

Try it: npm run gateway (both examples are discovered), open http://localhost:8787, type "book a table at Harbour House for 4". The suite: npm run gateway:evals & npm run evals:bookings.


Source: examples/bookings/README.md — edit it there; the site mirrors the repository.

Apache-2.0. The docs are mirrored from the repository on every merge.