protogrid

Search / ai.agentlookups/plumbline

Plumbline - Contractor License Checks

R0· no sign-in

Free contractor-license checks from official state records; a no-match never proves unlicensed.

v1.0.1 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality77good
Trust80of 100
Uptime, 30 days100%
Latency p50217 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "plumbline": {
      "type": "http",
      "url": "https://contractors.agentlookups.ai/mcp"
    }
  }
}
claude mcp add --transport http plumbline https://contractors.agentlookups.ai/mcp
[mcp_servers.plumbline]
url = "https://contractors.agentlookups.ai/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "plumbline": {
      "type": "remote",
      "url": "https://contractors.agentlookups.ai/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "plumbline": {
      "type": "http",
      "url": "https://contractors.agentlookups.ai/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=plumbline&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vY29udHJhY3RvcnMuYWdlbnRsb29rdXBzLmFpL21jcCJ9"
}
{
  "servers": {
    "plumbline": {
      "type": "http",
      "url": "https://contractors.agentlookups.ai/mcp"
    }
  }
}
{
  "mcpServers": {
    "plumbline": {
      "httpUrl": "https://contractors.agentlookups.ai/mcp"
    }
  }
}
extensions:
  "plumbline":
    enabled: true
    name: "plumbline"
    type: streamable_http
    uri: "https://contractors.agentlookups.ai/mcp"
    timeout: 300

Quality 77 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations1 of 1 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 950 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability50 · weight 15
  • pass
    stability.changes3 tool changes in 30 days
  • fail
    stability.rug_pull1 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

1 tools, about 950 tokens to load them all · tool set df19a58cabd7 · tools last changed 2026-10-08 · checked 2026-10-19 10:52 UTC

Tool changes

  • check_contractorchangeddescription, input schema
    before

    Looks up a contractor's public credential in indexed state and local licensing records. Licenses, registrations and bond records mean different things. Each record carries a credential object (kind, label, note): kind is license, registration, business_license or bond when the source makes that clear; otherwise it is the generic "credential", and the note says what to verify with the issuing agency. The set of covered jurisdictions changes as sources are added, so this description does not list it. Inputs: a record number (license) or business name, with optional jurisdiction and exact listed city, or an entity_id from an earlier result, which selects that one record. Results: match (the credential record with its status and provenance); candidates (several records fit; each page holds up to 20 rows, total_candidates is the full count, offset pages through the rest, and entity_id selects one; a field with the same value on every row of a page is given once, in same_for_all_rows, and each row's entity block omits what the row already states); no_match_in_index (the index holds no record for that input, which does not mean the contractor is unlicensed; for a search across all jurisdictions, the message states how many covered jurisdictions were searched); or jurisdiction_not_covered (the requested jurisdiction is outside the index, with an official pointer URL where one is on file; the response message states exactly what the link is, or that none is on file, and for some jurisdictions the link is a consumer-protection or licensing-board page, not a license lookup).

    after · 83% of words in common

    Looks up a contractor's public credential in indexed state and local licensing records. Licenses, registrations and bond records mean different things. Each record carries a credential object (kind, label, note): kind is license, registration, business_license or bond when the source makes that clear; otherwise it is the generic "credential", and the note says what to verify with the issuing agency. The set of covered jurisdictions changes as sources are added, so this description does not list it. Inputs: a record number (license) or business name, with optional jurisdiction and exact listed city, or an entity_id from an earlier result, which selects that one record. Results: match (the credential record with its status and provenance); candidates (several records fit; each page holds up to 20 rows, total_candidates is the full count, offset pages through the rest, and entity_id selects one; a field with the same value on every row of a page is given once, in same_for_all_rows, and each row's entity block omits what the row already states); no_match_in_index (the index holds no record for that input, which does not mean the contractor is unlicensed; for a search across all jurisdictions, the message states how many covered jurisdictions were searched); or jurisdiction_not_covered (the requested jurisdiction is outside the index, with an official pointer URL where one is on file; the response message states exactly what the link is, or that none is on file, and for some jurisdictions the link is a consumer-protection or licensing-board page, not a license lookup). Each record carries as_of_date: the publisher's own last-updated date where we have read one, else the day of our fetch. The freshness field on a match, and freshness_notes on candidates and on a no-match with a jurisdiction, state when a source's copy is behind its normal update schedule, slow to refresh by design, or still on its first full pass, with a plain note, the dates, and the issuing body's own lookup.

  • check_contractorchangedtitle, description, input schemameaning changed
    before

    Check a contractor's public credential against indexed state and local records. Licenses, registrations and bond records have different meanings; use the returned credential description. The covered set grows over time; GET /v1/coverage on this host for the exact current list, and never assume from this description whether a jurisdiction is covered. Provide a record number or business name, optionally jurisdiction and exact listed city; select a candidate with entity_id. Returns match (the credential record with status and provenance), candidates (disambiguate and call again; page with offset), no_match_in_index (NOT a determination of unlicensure), or jurisdiction_not_covered (with an official pointer URL for that jurisdiction; the response message states exactly what the link is, which for some jurisdictions is a consumer-protection or licensing-board page rather than a license lookup, so relay the message's wording and never present the link as a license lookup unless the message says it is one).

    after · 42% of words in common

    Looks up a contractor's public credential in indexed state and local licensing records. Licenses, registrations and bond records mean different things. Each record carries a credential object (kind, label, note): kind is license, registration, business_license or bond when the source makes that clear; otherwise it is the generic "credential", and the note says what to verify with the issuing agency. The set of covered jurisdictions changes as sources are added, so this description does not list it. Inputs: a record number (license) or business name, with optional jurisdiction and exact listed city, or an entity_id from an earlier result, which selects that one record. Results: match (the credential record with its status and provenance); candidates (several records fit; each page holds up to 20 rows, total_candidates is the full count, offset pages through the rest, and entity_id selects one; a field with the same value on every row of a page is given once, in same_for_all_rows, and each row's entity block omits what the row already states); no_match_in_index (the index holds no record for that input, which does not mean the contractor is unlicensed; for a search across all jurisdictions, the message states how many covered jurisdictions were searched); or jurisdiction_not_covered (the requested jurisdiction is outside the index, with an official pointer URL where one is on file; the response message states exactly what the link is, or that none is on file, and for some jurisdictions the link is a consumer-protection or licensing-board page, not a license lookup).

  • check_contractorchangeddescription, input schema, annotations
    before

    Check a contractor's license against official state and local licensing records covering dozens of US jurisdictions. The covered set grows over time; GET /v1/coverage on this host for the exact current list, and never assume from this description whether a jurisdiction is covered. Provide a license number or a business name, plus the jurisdiction. Returns match (the license record with status and provenance), candidates (disambiguate and call again; page with offset), no_match_in_index (NOT a determination of unlicensure), or jurisdiction_not_covered (with an official pointer URL for that jurisdiction; the response message states exactly what the link is, which for some jurisdictions is a consumer-protection or licensing-board page rather than a license lookup, so relay the message's wording and never present the link as a license lookup unless the message says it is one).

    after · 80% of words in common

    Check a contractor's public credential against indexed state and local records. Licenses, registrations and bond records have different meanings; use the returned credential description. The covered set grows over time; GET /v1/coverage on this host for the exact current list, and never assume from this description whether a jurisdiction is covered. Provide a record number or business name, optionally jurisdiction and exact listed city; select a candidate with entity_id. Returns match (the credential record with status and provenance), candidates (disambiguate and call again; page with offset), no_match_in_index (NOT a determination of unlicensure), or jurisdiction_not_covered (with an official pointer URL for that jurisdiction; the response message states exactly what the link is, which for some jurisdictions is a consumer-protection or licensing-board page rather than a license lookup, so relay the message's wording and never present the link as a license lookup unless the message says it is one).

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 80 / 100

no-repository
provenance55
liveness100
freshness85
hygiene80

+dns-namespace +website +reachable +uptime-100% ~updated-54d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://contractors.agentlookups.ai/mcp streamable-httpnoneyes100%217 ms2025-06-182026-10-19

Tools (1)

check_contractorread-onlyLooks up a contractor's public credential in indexed state and local licensing records. Licenses, registrations and bond records mean different things. Each record carries a credential object (kind, label, note): kind is license, registration, business_license or bond when the source makes that clear; otherwise it is the generic "credential", and the note says what to verify with the issuing agency. The set of covered jurisdictions changes as sources are added, so this description does not list it. Inputs: a record number (license) or business name, with optional jurisdiction and exact listed city, or an entity_id from an earlier result, which selects that one record. Results: match (the credential record with its status and provenance); candidates (several records fit; each page holds up to 20 rows, total_candidates is the full count, offset pages through the rest, and entity_id selects one; a field with the same value on every row of a page is given once, in same_for_all_rows, and each row's entity block omits what the row already states); no_match_in_index (the index holds no record for that input, which does not mean the contractor is unlicensed; for a search across all jurisdictions, the message states how many covered jurisdictions were searched); or jurisdiction_not_covered (the requested jurisdiction is outside the index, with an official pointer URL where one is on file; the response message states exactly what the link is, or that none is on file, and for some jurisdictions the link is a consumer-protection or licensing-board page, not a license lookup). Each record carries as_of_date: the publisher's own last-updated date where we have read one, else the day of our fetch. The freshness field on a match, and freshness_notes on candidates and on a no-match with a jurisdiction, state when a source's copy is behind its normal update schedule, slow to refresh by design, or still on its first full pass, with a plain note, the dates, and the issuing body's own lookup.

Schemas: list_tools.

Similar MCP servers

More from ai.agentlookups

Official server.json
{
  "name": "ai.agentlookups/plumbline",
  "title": "Plumbline - Contractor License Checks",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://contractors.agentlookups.ai/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.1",
  "websiteUrl": "https://contractors.agentlookups.ai",
  "description": "Free contractor-license checks from official state records; a no-match never proves unlicensed."
}