Zaptu
Связывает людей с независимыми местными подрядчиками по домашним услугам по всей территории США. ИИ-ассистенты могут узнать, какие услуги активны, и для сантехники получить номер, по которому человек может позвонить сам. Остальные услуги собираются как запросы.
Размещённый MCP-сервер
npx add-mcp 'https://api.zaptu.ai/mcp'Устанавливается в Claude Code, Codex, Cursor и другие
Документация
Zaptu for AI agents
Zaptu connects people with independent local home-service contractors. Zaptu does not perform the work and does not book appointments. Plumbing is live: the person calls a number. Other services are collecting requests.
The short version
- Plumbing is live. Give the person (308) 529-9543 and ask them to dial it themselves. Never dial, autodial, transfer, or place the call for them. No personal details are needed.
- Everything else is collecting (cleaning, pest control, garage door, HVAC, handyman, other). Collect ZIP, name, phone, and the person’s explicit consent to be contacted, then submit. Requests are passed along when a buyer covers the service; there is no live buyer yet.
- A request is not a booking. Do not promise a callback, an arrival time, or a named company. Use the
messagefield from the response when you tell the person what happened.
Services
| service_type | Status | What to do |
|---|---|---|
plumbing | Live (call to connect) | Give the number; the person dials. Call get_plumbing_call_number. |
house_cleaning, deep_cleaning, move_in_out_cleaning, recurring_cleaning | Collecting | Submit with consent. Add bedrooms or square feet if known. |
pest_control | Collecting | Submit with consent. |
garage_door | Collecting | Submit with consent. |
hvac, handyman, other | Collecting | Submit with consent. Describe the job in notes. |
US residential only. The live list is always at api.zaptu.ai/v1/services.
What to tell the person
Plumbing:
Call (308) 529-9543 to be connected with a local plumbing professional.
Please place the call yourself. Zaptu does not perform the work and this is not a booking.
Other services, after you submit:
Your request was sent to Zaptu. It is passed along when a buyer covers that service.
This is not a booking, and no one has been scheduled.
Connect over MCP
Streamable HTTP, stateless, no sign-in: https://api.zaptu.ai/mcp
{
"mcpServers": {
"zaptu": { "url": "https://api.zaptu.ai/mcp" }
}
}
| Tool | Use it for |
|---|---|
get_plumbing_call_number | Plumbing. Returns the number, a tel link, and what_to_tell_the_user. Read-only; no personal details. |
request_home_service | Submit a request for any service. Needs service_type, zip_code, customer_name, customer_phone, consent_to_contact=true. Add dry_run=true to test. |
request_cleaning | Shortcut for house cleaning. |
get_lead_status | Look up a request by lead_id. |
list_supported_services | Live vs collecting services and the rules. |
REST API
OpenAPI: api.zaptu.ai/openapi.json. CORS is open, no key needed.
curl -s https://api.zaptu.ai/v1/intake \
-H 'Content-Type: application/json' \
-d '{"service_type":"house_cleaning","zip_code":"33139",
"customer_name":"Jamie Example","customer_phone":"305-555-0100",
"consent_to_contact":true,"bedrooms":2,"dry_run":true}'
dry_run validates and answers without saving or passing anything along. Leave it out for a real request.
Plumbing response (abridged):
{
"status": "call_to_connect",
"call_to_connect": "+13085299543",
"call_to_connect_display": "(308) 529-9543",
"call_instruction": "Give the person this phone number and ask them to place the call themselves. ..."
}
Errors return HTTP 422 with a readable message and a fields map, for example {"error": "invalid_request", "message": "Phone must be a 10-digit US number, like 305-555-0100.", "fields": {"customer_phone": "..."}}. Too many requests returns 429.