Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,552Letters: 14Defects: 1,323counted 3 min ago
teppi

Server definition

Hash
sha256:09b734e329bd0185291474263259ecdaedda7a09dcf7df910ba979abcb926f01
What it is
What a remote MCP server returned when asked what it offers: 14 tools

The blob, as servednamed by its sha256

{ "instructions": "Entervista is a network of local businesses set up for AI assistants. Use it to actually finish tasks like \"get me a smoothie\" or \"fix my sink\" instead of sending the person to an app.\nService businesses (plumbers etc.): search_businesses -> check_service_area(zip) -> get_service_requirements(slug, service_sku) to learn exactly which questions to ask the customer -> place_service_request with intake_answers + customer + preferred_time (+ slot_start from get_availability for fixed-price work) -> show the customer the total/estimate -> approve_request when they say yes -> get_request_status until booked/confirmed -> later the business may send final_quote_ready (after diagnosis): show it, approve_request again.\nFood/retail: search_businesses -> get_business -> place_order -> approve_request -> get_request_status.\nWhen a business can't take the job (booked, outside its area, service not offered), the error may include referrals[]: businesses it trusts and sends customers to, already on Entervista. Offer that to the customer instead of giving up, and pass referred_by when you place the request there.\nsearch_businesses results carry state: \"live\" businesses have an authoritative schedule and can be booked; \"listing\" ones are public info only (name, phone, hours): never quote prices or times for them, give the phone.\nRules: never approve without the customer saying yes. Every error is structured (code, message, missing, alternatives, hint): act on it, don't give up. MISSING_INFORMATION lists the exact questions still needed. Keep the customer_token; it's what lets you approve or cancel.", "tools": [ { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer_token": { "type": "string" }, "ref": { "type": "string" }, "slot_start": { "type": "string" } }, "required": [ "ref", "customer_token" ], "type": "object" }, "name": "approve_request", "outputSchema": null }, { "description": "Book a flat-rate service (e.g. drain cleaning) into a slot from get_availability. Returns a draft awaiting the customer's approval.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer": { "description": "Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing.", "properties": { "address": { "properties": { "city": { "type": "string" }, "line1": { "type": "string" }, "line2": { "type": "string" }, "state": { "type": "string" }, "zip": { "type": "string" } }, "required": [ "line1", "zip" ], "type": "object" }, "email": { "type": "string" }, "name": { "type": "string" }, "notes": { "type": "string" }, "phone": { "type": "string" } }, "type": "object" }, "notes": { "type": "string" }, "service_sku": { "type": "string" }, "slot_start": { "description": "ISO start from get_availability", "type": "string" }, "slug": { "type": "string" } }, "required": [ "slug", "service_sku", "slot_start", "customer" ], "type": "object" }, "name": "book_slot", "outputSchema": null }, { "description": "Cancel an order, quote or booking on the customer's behalf.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer_token": { "type": "string" }, "reason": { "type": "string" }, "ref": { "type": "string" } }, "required": [ "ref", "customer_token" ], "type": "object" }, "name": "cancel_request", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "emergency": { "type": "boolean" }, "slug": { "type": "string" }, "zip": { "description": "Customer's 5-digit zip", "type": "string" } }, "required": [ "slug", "zip" ], "type": "object" }, "name": "check_service_area", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "date": { "description": "YYYY-MM-DD to start from", "type": "string" }, "days": { "description": "1 to 14, default 5", "type": "number" }, "service_sku": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_availability", "outputSchema": null }, { "description": "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).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "slug": { "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_business", "outputSchema": null }, { "description": "Current status, ETA / arrival window, business response, and the next step. Poll this while waiting on a business.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer_token": { "type": "string" }, "ref": { "type": "string" } }, "required": [ "ref" ], "type": "object" }, "name": "get_request_status", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "service_sku": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "slug", "service_sku" ], "type": "object" }, "name": "get_service_requirements", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "slug": { "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_services", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer": { "description": "Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing.", "properties": { "address": { "properties": { "city": { "type": "string" }, "line1": { "type": "string" }, "line2": { "type": "string" }, "state": { "type": "string" }, "zip": { "type": "string" } }, "required": [ "line1", "zip" ], "type": "object" }, "email": { "type": "string" }, "name": { "type": "string" }, "notes": { "type": "string" }, "phone": { "type": "string" } }, "type": "object" }, "fulfillment": { "enum": [ "pickup", "delivery" ], "type": "string" }, "items": { "items": { "properties": { "add_ons": { "items": { "type": "string" }, "type": "array" }, "notes": { "type": "string" }, "qty": { "type": "number" }, "size": { "description": "option id from the menu, e.g. 16oz", "type": "string" }, "sku": { "type": "string" } }, "required": [ "sku" ], "type": "object" }, "minItems": 1, "type": "array" }, "requested_time": { "description": "ISO datetime; omit for ASAP", "type": "string" }, "slug": { "type": "string" } }, "required": [ "slug", "items", "fulfillment", "customer" ], "type": "object" }, "name": "place_order", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer": { "description": "Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing.", "properties": { "address": { "properties": { "city": { "type": "string" }, "line1": { "type": "string" }, "line2": { "type": "string" }, "state": { "type": "string" }, "zip": { "type": "string" } }, "required": [ "line1", "zip" ], "type": "object" }, "email": { "type": "string" }, "name": { "type": "string" }, "notes": { "type": "string" }, "phone": { "type": "string" } }, "type": "object" }, "description": { "description": "The problem in the customer's words; used to match a service if service_sku is omitted", "type": "string" }, "intake_answers": { "additionalProperties": {}, "propertyNames": { "type": "string" }, "type": "object" }, "notes": { "type": "string" }, "photos": { "description": "URLs (use upload_photo to turn an image into a URL)", "items": { "type": "string" }, "type": "array" }, "preferred_time": { "description": "e.g. 'Tomorrow morning' or an ISO datetime", "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" }, "service_sku": { "type": "string" }, "slot_start": { "description": "ISO start from get_availability", "type": "string" }, "slug": { "type": "string" }, "urgency": { "enum": [ "emergency", "today", "this_week", "flexible" ], "type": "string" } }, "required": [ "slug", "customer" ], "type": "object" }, "name": "place_service_request", "outputSchema": null }, { "description": "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).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer": { "description": "Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing.", "properties": { "address": { "properties": { "city": { "type": "string" }, "line1": { "type": "string" }, "line2": { "type": "string" }, "state": { "type": "string" }, "zip": { "type": "string" } }, "required": [ "line1", "zip" ], "type": "object" }, "email": { "type": "string" }, "name": { "type": "string" }, "notes": { "type": "string" }, "phone": { "type": "string" } }, "type": "object" }, "description": { "description": "What's wrong, in the customer's words", "type": "string" }, "photos": { "description": "URLs", "items": { "type": "string" }, "type": "array" }, "preferred_times": { "items": { "type": "string" }, "type": "array" }, "service_sku": { "description": "If the profile's service list clearly matches", "type": "string" }, "slug": { "type": "string" }, "urgency": { "enum": [ "emergency", "today", "this_week", "flexible" ], "type": "string" } }, "required": [ "slug", "description", "customer" ], "type": "object" }, "name": "request_quote", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "accepts": { "description": "Only businesses that support this action", "enum": [ "order", "quote", "booking" ], "type": "string" }, "category": { "description": "e.g. plumber, smoothies", "type": "string" }, "lat": { "type": "number" }, "lng": { "type": "number" }, "open_now": { "type": "boolean" }, "q": { "description": "Free text: the need, a service, or a business name", "type": "string" }, "zip": { "description": "Customer's 5-digit zip; results show serves_your_zip", "type": "string" } }, "type": "object" }, "name": "search_businesses", "outputSchema": null }, { "description": "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).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "image_base64": { "type": "string" }, "media_type": { "description": "image/jpeg (default), image/png, image/webp, image/heic", "type": "string" } }, "required": [ "image_base64" ], "type": "object" }, "name": "upload_photo", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:09b734e329bd0185291474263259ecdaedda7a09dcf7df910ba979abcb926f01 | sha256sum