MCP server

A contractor verification MCP server for AI agents.

Connect an MCP client to https://api.bettervetters.com/mcp and your agent can check whether a US contractor is real, licensed, and pulling permits, in Washington, Texas, New York City, Oregon, and Connecticut. Two tools, one API key, $0.15 per check, 20 free.

Connect

Hosted endpoint (streamable HTTP).

  1. Create a key: POST https://api.bettervetters.com/v1/keys with body {"label":"mcp"}. It includes 20 free checks and is shown once.
  2. Add the server to your MCP client with the URL and a Bearer header:
mcp config
{
  "mcpServers": {
    "better-vetters": {
      "url": "https://api.bettervetters.com/mcp",
      "headers": {
        "Authorization": "Bearer bv_live_YOUR_KEY"
      }
    }
  }
}

Replace bv_live_YOUR_KEY with your key. Config keys differ slightly between clients; the values are the URL and the Authorization header.

Local alternative (stdio)

If you prefer to run a process yourself, download server.py, install mcp and httpx, and add:

mcp config (stdio)
{
  "mcpServers": {
    "better-vetters": {
      "command": "python",
      "args": [
        "/path/to/server.py"
      ],
      "env": {
        "CONTRACTOR_CHECK_API_URL": "https://api.bettervetters.com",
        "CONTRACTOR_CHECK_API_KEY": "bv_live_YOUR_KEY"
      }
    }
  }
}

Full notes: MCP README. Setup steps also appear in the docs.

Tools

Two tools.

ToolInputsCost
check_contractorname (required); optional state, city, license_number, phone, website. Requires an API key.$0.15 per in-coverage check; out_of_coverage and server errors are not charged.
get_coverageNone.Free. No key required.

check_contractor returns the same JSON as POST /v1/contractor/check: verdict, trust_score, match, license, permits, discipline, reasons, data_freshness, and billing. See the how it works page for matching and scoring.

Prompts

Things to ask your agent.

  • “Check whether Seattle Roofing Co in Washington is licensed and pulling permits.”
  • “What jurisdictions does Better Vetters cover, and how fresh is the data?”
  • “Use get_coverage first, then check_contractor only if the state is covered.”
  • “Look up Acme Electric in Austin, TX. Tell me the license status and the trust score, and flag it if match confidence is below 0.8.”

Those are example prompts, not results. Your agent should treat a match.confidence below 0.8 as a possible match and treat not_found as no record in the covered sources, which is not proof of a problem.

FAQ

MCP server FAQ.

What is the Better Vetters MCP server?

It is a Model Context Protocol server that gives an AI agent two tools: check_contractor, which looks a contractor up in official license, permit, and discipline records and returns a verdict and 0 to 100 trust score, and get_coverage, which lists jurisdictions, sources, freshness, and pricing. It is listed on the Official MCP Registry as com.bettervetters/contractor-check.

What is the MCP endpoint URL?

https://api.bettervetters.com/mcp, a streamable HTTP endpoint. Send your API key as Authorization: Bearer <key> (or X-API-Key). get_coverage is free and works without a key.

Which MCP clients can use it?

Any client that supports streamable HTTP MCP servers with custom headers can connect to the hosted endpoint. Clients that only run local stdio servers can use the downloadable server.py instead.

How much does an MCP call cost?

A check_contractor call costs the same $0.15 as the REST API. Every new API key includes 20 free checks. get_coverage is free. Out-of-coverage states and server errors are not charged.

What happens when my key runs out of credits?

The tool returns the same payment-required document as the REST API’s HTTP 402 body, with the price and your balance, and charges nothing for that call. Credit packs are coming soon.

Connect your agent.

Create a key and add the endpoint to your MCP client.

create a key
# Get a key (20 free checks, no card). The key is shown once.
curl -s -X POST https://api.bettervetters.com/v1/keys \
  -H 'content-type: application/json' \
  -d '{"label":"my-agent"}'