Search / ai.agentlookups/plumbline
Plumbline - Contractor License Checks
R0· no sign-inFree contractor-license checks from official state records; a no-match never proves unlicensed.
v1.0.1 · active · website · descriptor JSON · versions
Search / ai.agentlookups/plumbline
R0· no sign-inFree contractor-license checks from official state records; a no-match never proves unlicensed.
v1.0.1 · active · website · descriptor JSON · versions
{
"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
protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length1 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations1 of 1 tools declare readOnlyHint or destructiveHinttools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHinttools.token_costabout 950 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes3 tool changes in 30 daysstability.rug_pull1 tools kept their name but changed most of their description in 30 days; review before trusting themdeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagecheck_contractorchangeddescription, input schemaLooks 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).
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 changedCheck 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).
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, annotationsCheck 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).
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.
+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.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://contractors.agentlookups.ai/mcp streamable-http | none | yes | 100% | 217 ms | 2025-06-18 | 2026-10-19 |
check_contractorread-only | 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. |
Schemas: list_tools.
{
"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."
}