# AgentBookable

> One booking interface for AI agents. Businesses connect the diary they already use (via Composio-backed connectors such as Cal.com, eTermin, ScheduleOnce, Planyo, and more). AI assistants discover them, check live availability, and create real appointments — with consent-bound, audited booking authorization. Provider identities are never exposed to agents.

This site is production. Bookings created through the API/MCP are real appointments in the business's booking calendar.

## How agents interact

Preferred: MCP (Model Context Protocol) — connect an MCP client to `https://agentbookable.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no authentication required for the current MVP).
Also available: REST + OpenAPI 3.0 — any HTTP-capable agent can call the documented endpoints directly.

## Booking workflow (do this in order)

1. Find businesses: search the registry by text, category, city, service or geo radius.
2. Read the business record: `capabilities` state what is possible — never promise reschedule/cancel/payment when the flag is false.
3. List services: each service carries `bookingRequirements` (e.g. customer phone required) — collect required details from the user BEFORE proposing a booking.
4. Check live availability: slots are temporary (~60s TTL) and revalidated at booking time.
5. Prepare a booking draft: the concrete proposal (business, service, time, customer) to show the user.
6. Show the draft and get explicit affirmative user consent ("yes, book it" — any natural-language yes; no magic keyword). Consent binds to that exact draft.
7. Assert consent and book: a single-use, 15-minute mandate is issued bound to the draft; AgentBookable revalidates availability immediately before the provider mutation.
8. If the slot was taken: you receive SLOT_NO_LONGER_AVAILABLE with alternatives — fetch fresh availability and get FRESH consent for a replacement. Never rebook unilaterally.

## Key links

- [Agent card (A2A-style discovery)](https://agentbookable.com/.well-known/agent-card.json): machine-readable site capabilities and interface URLs
- [OpenAPI 3.0 contract](https://agentbookable.com/openapi.json): the full public booking API — interactive docs at /docs
- [Business registry search](https://agentbookable.com/api/registry/businesses): JSON list of published businesses with capabilities and links
- [MCP endpoint](https://agentbookable.com/mcp): Streamable HTTP MCP server — tools: find_businesses, get_business, list_services, get_availability, prepare_booking, create_mandate_for_draft, create_booking, get_booking
- [Find page (human/agent HTML)](https://agentbookable.com/find): server-rendered list of published businesses
- [Business onboarding](https://agentbookable.com/onboard): connect a booking system and publish services for AI booking

## Published businesses

- [AgentBookable Demo](https://agentbookable.com/b/agentbookable-demo): Consultant demo in London (Europe/London). Consultation (30 min) and 15 min meeting. Machine record: https://agentbookable.com/api/registry/businesses/agentbookable-demo

## Rules of engagement

- Respect `capabilities`: do not offer reschedule/cancel/payment when the flag is false — the action will be rejected (e.g. CANCELLATION_NOT_ALLOWED).
- Collect required customer details (name/phone per service requirements) before asking for consent.
- Always create a mandate after the user consents to the exact draft; consent is audited with your actorRef.
- Use an idempotencyKey on create_booking so transport retries never double-book.
- Rate limits: 20 booking mutations/hour, 120 discovery reads/hour per client. Exceeding returns 429 RATE_LIMITED.
