Skip to content

Domain packs

Three built-in packs form one coupled world: an email sent to a CRM contact's address can later be found in the recipient's inbox via world events; deleting a contact has defined consequences everywhere. List them with eval-mock packs list (fingerprints included — packs are part of the reproduction identity).

All list_* / search_* tools paginate with limit (default 20, max 100) and an opaque cursor; results carry total and next_cursor. Real APIs paginate, so the mock does too.

email

Tool Args Notes / errors
email.list_inbox limit?, cursor? newest last
email.read id marks read; EMAIL_NOT_FOUND
email.send to, subject, body lands in email.sent
email.search query, limit?, cursor? substring over from/subject/body

World event email.deliver (usable in turns.world_events): a message arrives in the agent's inbox at a scheduled virtual time.

crm

Tool Args Notes / errors
crm.search_contacts query, limit?, cursor? name/email/tier substring
crm.get_contact id CONTACT_NOT_FOUND
crm.create_contact name, email, …
crm.update_contact id, fields id immutable
crm.delete_contact id see referential integrity below
crm.log_activity contact_id, note CONTACT_NOT_FOUND if dangling

Referential integrity (defined, not accidental): deleting a contact keeps historical activities (audit trail); operations that reference a deleted contact fail with CONTACT_NOT_FOUND.

calendar

Tool Args Notes / errors
calendar.list_events limit?, cursor?
calendar.create_event title, start, end, attendees? half-open [start, end); overlap → TIME_CONFLICT
calendar.delete_event id EVENT_NOT_FOUND

Times are ISO-8601 strings with offset (2026-07-01T14:00:00Z) on the scenario's virtual clock.

Need your own domain? BYO domains generates this same tool template from a YAML entity schema — zero code.