Skip to content

Example domain — support ticket intake ​

The smallest honest domain: everything a real one has, nothing invented.

PartFileWhat it shows
Manifestdomain.jsonthe router card, steps order, slot labels, the entity name, the mock policy
Toolsmcp/server.tsreads (search_customers, reference_data), the triad (validate_ticket_slots fills from the record and applies defaults, preview_ticket, create_ticket with the write gate), internal_* media tools, the reg() wrapper (auth + trace context from _meta)
Skillskills/support-intake/SKILL.mdentry, the customer cascade (picker on ≥2 matches), the category ask, what the runtime owns
Schemaschema/ticket-schema.jsonslots with sources, mandatory sets, ask sets, runtime steps, probe findings
Stepssteps/index.tsa form step (Details) and a chips step (Priority) from stepHelpers
Mockmock/policy.tsthe model's part of the journey as a state machine — the offline path
Evalsevals/run-evals.tsseven scenarios: happy path, confirm gate, words beside a form, partial form, the review, injection, summary defaults
Fixturesfixtures/customers.jsonreference data with two look-alike names (the picker)

Try it: npm run gateway, open http://localhost:8787, type "ticket for Northwind: login fails on mobile". Data lands in examples/support-intake/.data/ (tickets.json, uploads) when writes are on.

Copy it: npm run new-domain -- <name> scaffolds from templates/, or copy this folder into domains/<name> and replace the backend behind the tools.


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

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