Ship a real booking flow in an afternoon
REST + MCP, a full sandbox, signed webhooks, and an open booking spec. No per-merchant integration work. One API surfaces all of local services.
- OpenAPI 3.1 contract-first
- TypeScript + Python SDKs
- Sandbox with seeded businesses
- MCP server — zero integration for Claude/Cline
// Search availability
const slots = await bookrails.availability.search({
service: "haircut",
near: "Brooklyn, NY",
after: "2026-06-03T15:00",
agentId: "chatgpt", // attributed to calling agent
});
// slots[0] → { slotId, start, end, business, price, currency }Everything an agent needs to book
REST API + function schemas
OpenAPI 3.1 spec. Availability search, booking create/cancel/modify, pricing quotes, policy fetch. Works with any HTTP client.
MCP server
Install the BookRails MCP server in Claude Desktop, Cursor, or any MCP host in one config block. All booking actions exposed as tools.
Full sandbox
Seeded businesses, realistic availability, simulated no-shows. Ship a complete booking flow before touching production.
Signed webhooks
HMAC-SHA256 signed events for every booking lifecycle change. Delivery retries with exponential backoff. Replay from the dashboard.
TypeScript + Python SDKs
Type-safe clients with first-class async support. Auto-generated from the OpenAPI spec and published to npm and PyPI.
Open booking spec
The `.well-known/agent-booking.json` open spec. Any agent that reads the spec can book without a custom integration.
Code that works
Real examples from the API — copy-paste into your agent.
Create a booking
// Create a booking
const booking = await bookrails.bookings.create({
slotId: slots[0].id,
customer: {
name: "Olivia Bennett",
email: "olivia@example.com",
},
idempotencyKey: "req_abc123",
});
// booking → { id, confirmationCode, status: "confirmed" }Handle webhooks
// Verify + handle a webhook event
import { verifySignature } from "@bookrails/sdk";
app.post("/hooks/bookrails", (req, res) => {
const event = verifySignature(req.body, req.headers, secret);
if (event.type === "booking.no_show") {
await notifyAgent(event.data.agentId, event.data);
}
res.sendStatus(200);
});Install the MCP server (Claude Desktop / Cursor)
// claude_desktop_config.json
{
"mcpServers": {
"bookrails": {
"command": "npx",
"args": ["-y", "@bookrails/mcp-server"],
"env": {
"BOOKRAILS_API_KEY": "br_test_2kQ9..."
}
}
}
}From zero to live in 4 steps
Try the sandbox
Search availability, create a booking, cancel it — with seeded fake businesses.
Learn more →Set up webhooks
Point an endpoint at BookRails, verify the signature, handle booking events.
Learn more →Ready to build?
The full API reference, guides, and a sandbox are free to use. No credit card required to get started.