Entervista

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

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
85%
Naming quality
94%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,904Tokens (tool definitions)
~1.4 KBTypical response size
Significant attention impact (2.27% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "entervista": {
      "url": "https://entervista.ai/mcp"
    }
  }
}

Remote endpoints

https://entervista.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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.

Input Schema

{
  "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).

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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).

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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).

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools