Connect Floyd's MCP Server instead of building REST wrappers. 5 booking tools with signed slot tokens, agent-friendly errors, and explicit user confirmation. Any MCP client discovers them automatically.
{
"slotId": "slot_v1.<payload>.<sig>"
}→ OK
{
"bookingId": "bkg_mcp_1",
"status": "hold",
"expiresAt": "2026-03-01T09:05:00Z"
}Standard MCP protocol. Any compatible client discovers booking tools automatically.
HMAC-signed slot tokens. Floyd verifies integrity before creating a hold.
Every error includes a recovery hint. The agent adapts automatically.
Everything you need to handle real-world booking complexity out of the box.
get_available_slots, hold_booking, confirm_booking, cancel_booking, get_booking - a complete booking workflow exposed as standard MCP tools.
Availability responses include HMAC-SHA256 signed tokens encoding service, resource, and time range. Prevents agents from fabricating or altering slot data.
Floyd error codes map to actionable hints: slot_unavailable → 'Try a different time', policy_rejected → 'That date is blocked', hold_expired → 'Create a new hold'.
confirm_booking requires a userConfirmed flag set to true. Enforces human-in-the-loop - the agent cannot silently finalize a booking.
Same hold → confirm lifecycle as the REST API. Holds expire if the user doesn't confirm. No phantom bookings from abandoned conversations.
Point the MCP Server at Floyd Cloud (managed) or your self-hosted Floyd Engine. Same tools, same behavior, your choice of backend.
3 API calls. Hold, confirm, done.
TOOL floyd_get_available_slots
{
"serviceId": "svc_consultation",
"startTime": "2026-03-01T00:00:00Z",
"endTime": "2026-03-01T23:59:59Z",
"durationMinutes": 30
}→ { "slots": [{ "slotId": "slot_v1.<payload>.<sig>", "startTime": "09:00" }] }Slots include signed tokens for tamper-proof booking.
TOOL floyd_hold_booking
{
"slotId": "slot_v1.<payload>.<sig>"
}→ { "bookingId": "bkg_mcp_1", "status": "hold", "expiresAt": "..." }Signed token verified. Hold created with TTL.
TOOL floyd_confirm_booking
{
"bookingId": "bkg_mcp_1",
"userConfirmed": true
}→ { "bookingId": "bkg_mcp_1", "status": "confirmed" }Requires explicit user approval.
Holds expire automatically after a TTL. Conflicts are handled at the database level.