For developers

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
javascript
// 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

javascript
// 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

javascript
// 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)

json
// 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

1

Get a test key

Sign up free, get a br_test_… key instantly.

Sign up →
2

Try the sandbox

Search availability, create a booking, cancel it — with seeded fake businesses.

Learn more →
3

Set up webhooks

Point an endpoint at BookRails, verify the signature, handle booking events.

Learn more →
4

Go live

Flip the environment to Live, swap the key, and start receiving real bookings.

Learn more →

Ready to build?

The full API reference, guides, and a sandbox are free to use. No credit card required to get started.