Entervista
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Find and book local service businesses (plumbers, HVAC, detailers) at real prices, with approval.
| Author | ai.entervista |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 29 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Entervista": {
"url": "https://entervista.ai/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (14)
search_businessesread-onlyFind businesses in the network by what the customer needs (e.g. 'plumber', 'smoothie', 'clogged sink'), optionally filtered by category, zip, location and open-now. Returns summaries with starting prices and whether they serve the zip.
Parameters:
q— string — Free text: the need, a service, or a business namelat— numberlng— numberzip— string — Customer's 5-digit zip; results show serves_your_zipaccepts— string — Only businesses that support this actioncategory— string — e.g. plumber, smoothiesopen_now— boolean
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_businessread-onlyFull agent-readable profile: verified identity and license, services with real prices (what's included / excluded), hours, service zips, delivery rules, policies, and exactly how to act (order, quote, or book).
Parameters:
slug(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_servicesread-onlyThe business's services with pricing mode (fixed | starting_at | range | diagnostic_fee_then_quote | quote_required), price, what's included/excluded, and which intake fields are required.
Parameters:
slug(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
check_service_arearead-onlyDeterministic yes/no: does this business come to the customer's zip? Returns reason, the zips it serves, excluded zips, and alternative businesses when no.
Parameters:
slug(required) — stringzip(required) — string — Customer's 5-digit zipemergency— boolean
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_service_requirementsread-onlyBefore creating a request: the exact questions to ask the customer for this service (required_fields / optional_fields, each with type and options), the pricing flow, and what happens next.
Parameters:
slug(required) — stringservice_sku(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
place_service_requestOne call for any trade job (repair, quote, booking). Pass service_sku (or a plain description and it matches one), intake_answers keyed by the field ids from get_service_requirements, customer (name, phone, address with line1+zip), preferred_time, and slot_start only when the service flow asks for one. For an unchanged retry after receiving a receipt, include retry_ref and its customer_token with the original details. For quote-first requests without a slot, optionally generate and securely save intent_capability before the first submission; explicitly repeat the same business/details/capability to recover a lost first receipt. Do not silently resubmit. Without either capability this creates a separate request, even if the phone matches. A quote_required request is sent to the business without a price; a priced booking draft waits for the customer's approval. Follow the returned next_step, and never call a request booked until the business confirms.
Parameters:
slug(required) — stringcustomer(required) — object — Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing.notes— stringphotos— array — URLs (use upload_photo to turn an image into a URL)urgency— stringretry_ref— string — Existing request reference for an unchanged retry; requires customer_token. A phone number never authorizes a retry.slot_start— string — ISO start from get_availabilitydescription— string — The problem in the customer's words; used to match a service if service_sku is omittedreferred_by— string — Slug of the business whose error response listed this one under referrals[] (its trusted partner). Lets both businesses see the referral.service_sku— stringcustomer_token— string — Customer token returned with retry_ref; only for an unchanged retry of that request.intake_answers— objectpreferred_time— string — e.g. 'Tomorrow morning' or an ISO datetimeintent_capability— string — Optional secret 32-byte random client capability, encoded as lowercase hex. Save before sending a quote-first request without a slot; explicitly repeat unchanged details with the same capability to recover a lost first receipt. Never combine with retry_ref/customer_token; never silently resubmit.
Hints: read-only no · destructive no · idempotent no · open-world yes
upload_photoStores an image and returns a URL to pass in photos[] of place_service_request. Some services require a photo (get_service_requirements says which).
Parameters:
image_base64(required) — stringmedia_type— string — image/jpeg (default), image/png, image/webp, image/heic
Hints: read-only no · destructive no · idempotent no · open-world yes
get_availabilityread-onlyLive bookable windows over the next days, from the business's own schedule (hours, crew, jobs, holds, blocks). Pass service_sku to get windows sized for that service's duration and crew, plus: operating_state (open | closed | open_fully_booked | emergency_only | temporarily_unavailable | booking_future | unknown), confidence (verified | stale, with a note when not verified recently), earliest, the service's price and whether it auto-books or needs the owner. Use a slot's start with place_service_request or book_slot; the slot is held the moment the draft is created.
Parameters:
slug(required) — stringdate— string — YYYY-MM-DD to start fromdays— number — 1 to 14, default 5service_sku— string
Hints: read-only yes · destructive no · idempotent yes · open-world no
place_orderDraft an order (food/retail). Returns line items, total, a ref and a customer_token. Nothing reaches the business until approve_request. Ask the customer to confirm the total first.
Parameters:
slug(required) — stringitems(required) — arrayfulfillment(required) — stringcustomer(required) — object — Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing.requested_time— string — ISO datetime; omit for ASAP
Hints: read-only no · destructive no · idempotent no · open-world yes
request_quoteAsk a service business (plumber, etc.) for a price. Describe the problem in plain English. Many businesses answer instantly with an estimate and bookable slots; others reply within their stated response time (poll get_request_status).
Parameters:
slug(required) — stringdescription(required) — string — What's wrong, in the customer's wordscustomer(required) — object — Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing.photos— array — URLsurgency— stringservice_sku— string — If the profile's service list clearly matchespreferred_times— array
Hints: read-only no · destructive no · idempotent no · open-world yes
book_slotBook a flat-rate service (e.g. drain cleaning) into a slot from get_availability. Returns a draft awaiting the customer's approval.
Parameters:
slug(required) — stringservice_sku(required) — stringslot_start(required) — string — ISO start from get_availabilitycustomer(required) — object — Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing.notes— string
Hints: read-only no · destructive no · idempotent no · open-world yes
approve_requestUse only after the customer explicitly approves the total / quote / final price. Sends it to the business. When offered_slots is present, pass the customer's chosen slot_start. If the business takes online payment, the result is status awaiting_payment with a payment_url: give that link to the customer; they pay on that page themselves.
Parameters:
ref(required) — stringcustomer_token(required) — stringslot_start— string
Hints: read-only no · destructive no · idempotent no · open-world yes
get_request_statusread-onlyCurrent status, ETA / arrival window, business response, and the next step. Poll this while waiting on a business.
Parameters:
ref(required) — stringcustomer_token(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
cancel_requestdestructiveCancel an order, quote or booking on the customer's behalf.
Parameters:
ref(required) — stringcustomer_token(required) — stringreason— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.