$1M Insured · All US · Auto-refund ×2 if we fail to dispatch

Agent-bookable services.
Real humans. Real outcomes. Real receipts.

Deterministic, idempotent, transactional booking endpoints. No DOM. No flakiness. Built for agents that need outcomes, not screenshots.

Connect via MCP Read llms-full.txt

Quick start for agents

MCP server

https://mcp.sunrays.dev/mcp Transport: streamable-HTTP, HTTP+SSE

Example tool call

book_plumber({
  zip: "94105",
  datetime: "2026-05-08T14:00:00-07:00",
  issue: "kitchen sink clog",
  caller_id: "user@example.com",
  agent_id: "did:web:claude.ai",
  spending_cap_signed: "<JWS>"
})

Response

{"status":"booked","booking_id":"bk_7hjk","price_cents":34000,
 "datetime":"2026-05-08T14:00:00-07:00","provider_id":"pv_sf01",
 "dispatch_deadline":"2026-05-08T18:00:00-07:00","receipt_url":"..."}

11 MCP tools

All tools share the same booking schema and route internally to one bookService(category, ...). Tool descriptions are LLM-facing prompts — version-controlled and eval-tested (≥90% correct selection).

book_plumber()

Plumber

High (leaks, clogs, water heater)

~2.5–4.5M/mo US bookings

book_handyman()

Handyman

Medium (mounting, drywall, fixtures)

~2.0–5.0M/mo US bookings

book_hvac()

HVAC

High (seasonal, emergency)

~1.8–3.5M/mo US bookings

book_electrician()

Electrician

High (safety, smart-home)

~1.5–3.0M/mo US bookings

book_pest_control()

Pest Control

Medium (recurring + seasonal)

~1.0–3.0M/mo US bookings

book_appliance_repair()

Appliance Repair

Medium (washer, fridge, oven)

~1.0–2.5M/mo US bookings

book_garage_door()

Garage Door

Critical (security)

~0.4–1.2M/mo US bookings

book_locksmith()

Locksmith

Highest emergency fit

~0.4–1.0M/mo US bookings

book_roofer()

Roofer

Medium (storm-driven)

~0.5–1.2M/mo US bookings

book_lawn_care()

Lawn Care

Low (recurring)

~1.0M+/mo US bookings

request_other_service()

Other Service

Fallback — logs waitlist signal

How it works for agents

Step 1 — Call a tool

Agent calls book_plumber(zip, datetime, issue, caller_id, spending_cap_signed).

Step 2 — Card setup (first time)

If no saved payment method: response includes checkout_url. Agent presents URL to caller for one-time Stripe card setup. After setup, agent retries with the same Idempotency-Key.

Step 3 — Booking confirmed

Returns {status: "booked", booking_id, price_cents, dispatch_deadline}. Stripe auth hold placed. All future bookings for the same caller_id are fully autonomous — no more HITL.

Coverage & pricing

Geography

All US zip codes accepted. Non-US requests are rejected with a structured out_of_region_waitlist response (logged for expansion planning).

Tier 1 (SF Bay): high-confidence dispatch via founder rolodex.
Tier 2 (rest of US): Yelp/Google ad-hoc dispatch with auto-refund ×2 guarantee.

Pricing

Static lookup: base_rate[category] × estimated_hours × time_of_day_multiplier × tier_multiplier. Quoted as fixed price via /quote endpoint. No haggling, no dynamic surge in v1.

Platform fee: 30% gross. Tradesperson receives 70% net, guaranteed regardless of payment rail.

Identity & trust

Every booking call requires three identity primitives:

  • agent_id — DID or signed JWT for the calling agent (e.g. did:web:claude.ai)
  • caller_id — OAuth email or verified identity of the human principal
  • spending_cap_signed — JWS assertion {"max":500,"currency":"USD","expires":"..."} issued by the caller's auth provider

v1 enforcement: fields required and logged; spending_cap_signed is verified for tampering and expiry (ship-blocker). Full Catena ACK / Skyfire enforcement in v1.5 when standards ship.

Agent discovery

/llms.txt LLM-readable summary — tools, endpoints, schema /llms-full.txt Full tool schemas, error taxonomy, identity layer /.well-known/mcp.json MCP server discovery manifest /.well-known/agents.json Agent capabilities manifest /.well-known/ai-plugin.json ChatGPT plugin manifest Smithery badge Listed on Smithery — install in Claude, Cursor, Codex, and more