Skip to content
Roofer Registry logo

Roofer Registry MCP server

Which MCP servers are Roofer Registry's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-29

← Back to Roofer Registry

Whose server it is
  • Registry namecom.rooferregistry/roofer-registryverified in the MCP registry

The registry name sits under rooferregistry.com. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-29
  • Stateanswerschecked 2026-10-29
  • Tools9
  • Server calls itselfRoofer Registry
  • Server version0.2.0
  • Protocol version2025-06-18

On 2026-10-29 the server answered initialize and tools/list without a sign-in. First answer in 128 ms.

Should an agent connect itNot proven either way yet
  • Its tools do every use case we checked: look up a roofer's license status by name; review a roofer's state discipline record before signing.
  • Checked on 6 of the 7 days it takes to judge reliability.

Once connected

  • For "look up a roofer's license status by name", the likely first call is search_licensees.
  • For "review a roofer's state discipline record before signing", the likely first call is enforcement_actions.
  • Parameters are untyped or undescribed in 8 of 9 tools: check arguments before calling.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 6, the first on 2026-10-29
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 6 so far
  • What an agent can do with it2 of 2 use cases
  • Answeredmeasuring6 of the 7 daily checks it takes to print a share
  • Median first answer149 ms
  • Space in an agent's context≈ 1,951 tokensthe definitions of all its tools (9), which an agent carries on every turn
  • Tool definitionsC · 69 of 100
  • Typed results0 of 9 toolsdeclared outputSchema: results come typed, read once
  • Parameters without a description: in 8 of 9
  • Not saying whether it only reads or can destroy: 9 of 9

What an agent can do with it

  • can do · look up a roofer's license status by name
  • can do · review a roofer's state discipline record before signing
  • not sure · browse state-published unlicensed activity cases by job type

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

None of the five warning signs in these definitions.

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers9 tools · read 2026-10-29
  • check_license

    Look up one roofing contractor license by state and license number. Returns status as published by the state regulator, a machine-readable verdict (licensed-active | licensed-not-active | not-found), licensee name, city, expiration, and…

  • search_licensees

    Search roofing contractors by name, firm, or partial license number, optionally within a state and city. Returns up to 50 regulator-sourced records with a true total count. Use this when the user has a name but no license number.

  • state_rules

    Return what Roofer Registry has verified about a state's rules for roofing contractors: licensing, licenseTypes, deductibleWaiver, depositRule, permit, insurance, unlicensedPenalty, rightToCancel, aob — each { value, quote, citation, url…

  • unlicensed_activity

    List people and companies the state board cited for unlicensed contracting, filtered by county and/or name. Use when the user has a name or company from a truck or flyer but no license number, or asks who was caught working unlicensed…

  • enforcement_actions

    Board discipline and unlicensed-activity citations for a state, license number, name, or county. Merges licensed-activity discipline rows and unlicensed-activity citations, newest first. Republished as filed; a citation is an allegation…

  • compare_rules

    Compare a specific rule field across 2–10 states. Only states with verified: true carry a rule. Treat null as "not verified", not "no rule". Input formats: states as two-letter codes (FL, GA, TX); field is one of licensing, licenseTypes…

  • changes_since

    License changes (new, lapsed, status change) since a given date, optionally filtered by state and change type. Changes are tracked starting from the first roster refresh after deploy — no backfill is available. Use when monitoring for new…

  • verify_live

    Fetch the current license status directly from the state regulator (FL only) and compare it with our roster copy. Uses a 24-hour cache; the second call within 24h returns cached: true. Other states return { supported: false, lookupUrl }…

  • request_contact

    Send a contact request to ONE specific licensee the user has chosen, by license number. This creates the same consent-recorded request a person submits on the profile page; it is not lead routing and we never pick the licensee for the…

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "roofer-registry": {
      "type": "http",
      "url": "https://rooferregistry.com/api/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http rooferregistry https://rooferregistry.com/api/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://rooferregistry.com/api/mcp as a custom connector in the settings.

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.