Machine-readable booking
Book via agent
Third-party agents can book Boulder County Dryer Vent services over MCP. This page is for software that requests a visit on behalf of a homeowner.
Third-party agents can book Boulder County Dryer Vent services over MCP on behalf of a homeowner. This is an operations note, not a second booking funnel. Homeowners should keep using the normal Book flow or call (720) 605-3198.
MCP endpoint
HTTPS: https://api.bouldercountydryervent.com/mcp
Streamable HTTP. GET returns a short JSON note. Booking calls are POST JSON-RPC (initialize, then tools/call) on that same URL. The path is /mcp on the same public ops host as book ingest. Primary customer booking remains the Book flow on this site.
Human book URL: https://bouldercountydryervent.com/book/
Phone: (720) 605-3198
Discovery files: /llms.txt, /.well-known/mcp.json, /.well-known/mcp/server-card.json.
Tools
| Tool | Access | Notes |
|---|---|---|
list_services |
Public | Fixed prices: standard $129, difficult $169 (roof, long run, or upper floor). Boulder County service area. |
check_availability |
Public | Stub: request a preferred 2-hour window. This does not open a request. |
create_booking |
Public | No token. Opens a PENDING request, not a booking. Required: name, phone (a valid US mobile or landline), and street plus town (a real Boulder County address; it is validated). Also send service (standard or difficult), and optionally email, preferred_windows, sms_consent, and notes. Honeypot company_website must be empty or omitted. The response includes a short confirmation code. Strict per-IP and daily rate limits. No payment in MCP. Payment is due before the visit, by card through Stripe only. |
get_booking_status |
Public | No token. Pass public_id (for example BCDV-YYYY-NNNN) and phone (the phone number used on the request). The response does not include other personal details. |
Access
No token. Any agent can call list_services, check_availability, create_booking, and get_booking_status. Do not send an Authorization header.
create_booking does not book a visit. It opens a PENDING request and the response includes a short confirmation code. The homeowner must text CONFIRM and that code (for example CONFIRM 4821) from the same phone to (720) 605-3198 within 48 hours. If they do not, the request expires and is never contacted. Leave company_website empty. Strict per-IP and daily rate limits apply. Nothing is charged to hold a time. Payment is due before the visit, by card through Stripe only.
Example
Public JSON-RPC over HTTPS. No token. initialize, then tools/call. A successful create_booking returns a PENDING request and a short confirmation code. The sample street and phone are placeholders: substitute a real Boulder County street address and a valid US mobile or landline, or the call is rejected. The homeowner then texts CONFIRM and the code from that phone to (720) 605-3198 within 48 hours. The status id below is a sample.
curl -sS -X POST 'https://api.bouldercountydryervent.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"example-agent","version":"0.1.0"}}}'
curl -sS -X POST 'https://api.bouldercountydryervent.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_services","arguments":{}}}'
curl -sS -X POST 'https://api.bouldercountydryervent.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"create_booking","arguments":{"name":"Jordan Lee","phone":"7205550100","email":"jordan@example.com","street":"100 Example St","town":"Louisville","service":"standard","preferred_windows":"Tue 9-11am","sms_consent":true,"company_website":""}}}'
curl -sS -X POST 'https://api.bouldercountydryervent.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"get_booking_status","arguments":{"public_id":"BCDV-2026-0008","phone":"7205550100"}}}'
Non-goals
- Payments are not in MCP. Nothing is charged to hold a time. Payment is due before the visit, by card through Stripe only.
- This call does not create a booking. Without the CONFIRM text within 48 hours, the request expires and is never contacted.
- Lead time is typically 3–4 business days or more.
Book on the website if you are scheduling for yourself.