# Entervista

> Find and book local service businesses (plumbers, HVAC, detailers) at real prices, with approval.

- name: ai.entervista/entervista
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 80/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.entervista%2Fentervista
- tools: https://api.protogrid.dev/v1/servers/ai.entervista%2Fentervista/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "entervista": {
      "type": "http",
      "url": "https://entervista.ai/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-21d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 80/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 14 of 14 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 3,228 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 50 (weight 15)

- pass `stability.changes`: 4 tool changes in 30 days
- fail `stability.rug_pull`: 1 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 14, about 3,228 tokens to load them all
- tool set hash: 807cfd2b49494078f355dc388bf67f3f
- tools last changed: 2026-10-15T04:50:53.566Z
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.entervista/entervista.svg)](https://protogrid.dev/servers/ai.entervista/entervista)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-15 `place_service_request` changed (description, inputSchema)
  - before: One 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. 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.
  - after: One 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.
- 2026-10-07 `place_service_request` changed (description)
  - before: One 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 when the flow is book_then_pay. Returns a draft with total or estimate, offered windows, a ref and customer_token. Nothing reaches the business until approve_request.
  - after: One 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. 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.
- 2026-09-30 `get_availability` changed (description) **meaning changed**
  - before: Open appointment windows for a service business over the next few days (business-local time). Use a slot's start time with book_slot or approve_request.
  - after: Live 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.
- 2026-09-30 `place_service_request` changed (inputSchema)

Full history: https://api.protogrid.dev/v1/servers/ai.entervista%2Fentervista/changes

## Remotes

- https://entervista.ai/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (14)

- `approve_request`: Use 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.
- `book_slot`: Book a flat-rate service (e.g. drain cleaning) into a slot from get_availability. Returns a draft awaiting the customer's approval.
- `cancel_request`: Cancel an order, quote or booking on the customer's behalf.
- `check_service_area`: Deterministic yes/no: does this business come to the customer's zip? Returns reason, the zips it serves, excluded zips, and alternative businesses when no.
- `get_availability`: Live 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.
- `get_business`: Full 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).
- `get_request_status`: Current status, ETA / arrival window, business response, and the next step. Poll this while waiting on a business.
- `get_service_requirements`: Before 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.
- `get_services`: The 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.
- `place_order`: Draft 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.
- `place_service_request`: One 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.
- `request_quote`: Ask 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).
- `search_businesses`: Find 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.
- `upload_photo`: Stores an image and returns a URL to pass in photos[] of place_service_request. Some services require a photo (get_service_requirements says which).
