Entervista
Find and book local service businesses (plumbers, HVAC, detailers) at real prices, with approval.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"entervista": {
"url": "https://entervista.ai/mcp"
}
}
}远程端点
https://entervista.ai/mcpstreamable-http它能做什么
工具清单
工具(14)
🟢search_businesses(q, category, zip, lat, lng, ...)
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.
输入模式
{
"type": "object",
"properties": {
"q": {
"description": "Free text: the need, a service, or a business name",
"type": "string"
},
"category": {
"description": "e.g. plumber, smoothies",
"type": "string"
},
"zip": {
"description": "Customer's 5-digit zip; results show serves_your_zip",
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"open_now": {
"type": "boolean"
},
"accepts": {
"description": "Only businesses that support this action",
"type": "string",
"enum": [
"order",
"quote",
"booking"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_business(slug)
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).
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string"
}
},
"required": [
"slug"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_services(slug)
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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string"
}
},
"required": [
"slug"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢check_service_area(slug, zip, emergency)
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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"zip": {
"type": "string",
"description": "Customer's 5-digit zip"
},
"emergency": {
"type": "boolean"
}
},
"required": [
"slug",
"zip"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_service_requirements(slug, service_sku)
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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"service_sku": {
"type": "string"
}
},
"required": [
"slug",
"service_sku"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢place_service_request(slug, service_sku, description, intake_answers, customer, ...)
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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"service_sku": {
"type": "string"
},
"description": {
"description": "The problem in the customer's words; used to match a service if service_sku is omitted",
"type": "string"
},
"intake_answers": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"customer": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"email": {
"type": "string"
},
"address": {
"type": "object",
"properties": {
"line1": {
"type": "string"
},
"line2": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string"
}
},
"required": [
"line1",
"zip"
]
},
"notes": {
"type": "string"
}
},
"description": "Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing."
},
"preferred_time": {
"description": "e.g. 'Tomorrow morning' or an ISO datetime",
"type": "string"
},
"slot_start": {
"description": "ISO start from get_availability",
"type": "string"
},
"urgency": {
"type": "string",
"enum": [
"emergency",
"today",
"this_week",
"flexible"
]
},
"photos": {
"description": "URLs (use upload_photo to turn an image into a URL)",
"type": "array",
"items": {
"type": "string"
}
},
"notes": {
"type": "string"
},
"referred_by": {
"description": "Slug of the business whose error response listed this one under referrals[] (its trusted partner). Lets both businesses see the referral.",
"type": "string"
}
},
"required": [
"slug",
"customer"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡upload_photo(image_base64, media_type)
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).
输入模式
{
"type": "object",
"properties": {
"image_base64": {
"type": "string"
},
"media_type": {
"description": "image/jpeg (default), image/png, image/webp, image/heic",
"type": "string"
}
},
"required": [
"image_base64"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_availability(slug, date, days, service_sku)
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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"date": {
"description": "YYYY-MM-DD to start from",
"type": "string"
},
"days": {
"description": "1 to 14, default 5",
"type": "number"
},
"service_sku": {
"type": "string"
}
},
"required": [
"slug"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪place_order(slug, items, fulfillment, customer, requested_time)
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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"items": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"sku": {
"type": "string"
},
"qty": {
"type": "number"
},
"size": {
"description": "option id from the menu, e.g. 16oz",
"type": "string"
},
"add_ons": {
"type": "array",
"items": {
"type": "string"
}
},
"notes": {
"type": "string"
}
},
"required": [
"sku"
]
}
},
"fulfillment": {
"type": "string",
"enum": [
"pickup",
"delivery"
]
},
"customer": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"email": {
"type": "string"
},
"address": {
"type": "object",
"properties": {
"line1": {
"type": "string"
},
"line2": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string"
}
},
"required": [
"line1",
"zip"
]
},
"notes": {
"type": "string"
}
},
"description": "Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing."
},
"requested_time": {
"description": "ISO datetime; omit for ASAP",
"type": "string"
}
},
"required": [
"slug",
"items",
"fulfillment",
"customer"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢request_quote(slug, description, service_sku, customer, urgency, ...)
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).
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"description": {
"type": "string",
"description": "What's wrong, in the customer's words"
},
"service_sku": {
"description": "If the profile's service list clearly matches",
"type": "string"
},
"customer": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"email": {
"type": "string"
},
"address": {
"type": "object",
"properties": {
"line1": {
"type": "string"
},
"line2": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string"
}
},
"required": [
"line1",
"zip"
]
},
"notes": {
"type": "string"
}
},
"description": "Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing."
},
"urgency": {
"type": "string",
"enum": [
"emergency",
"today",
"this_week",
"flexible"
]
},
"preferred_times": {
"type": "array",
"items": {
"type": "string"
}
},
"photos": {
"description": "URLs",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"slug",
"description",
"customer"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢book_slot(slug, service_sku, slot_start, customer, notes)
Book a flat-rate service (e.g. drain cleaning) into a slot from get_availability. Returns a draft awaiting the customer's approval.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"service_sku": {
"type": "string"
},
"slot_start": {
"type": "string",
"description": "ISO start from get_availability"
},
"customer": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"email": {
"type": "string"
},
"address": {
"type": "object",
"properties": {
"line1": {
"type": "string"
},
"line2": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string"
}
},
"required": [
"line1",
"zip"
]
},
"notes": {
"type": "string"
}
},
"description": "Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing."
},
"notes": {
"type": "string"
}
},
"required": [
"slug",
"service_sku",
"slot_start",
"customer"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪approve_request(ref, customer_token, slot_start)
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.
输入模式
{
"type": "object",
"properties": {
"ref": {
"type": "string"
},
"customer_token": {
"type": "string"
},
"slot_start": {
"type": "string"
}
},
"required": [
"ref",
"customer_token"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_request_status(ref, customer_token)
Current status, ETA / arrival window, business response, and the next step. Poll this while waiting on a business.
输入模式
{
"type": "object",
"properties": {
"ref": {
"type": "string"
},
"customer_token": {
"type": "string"
}
},
"required": [
"ref"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴cancel_request(ref, customer_token, reason)
Cancel an order, quote or booking on the customer's behalf.
输入模式
{
"type": "object",
"properties": {
"ref": {
"type": "string"
},
"customer_token": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"required": [
"ref",
"customer_token"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}社区
证据