Contractor Licence Changes
Server Details
Did this contractor's licence change? Observed lapses and reinstatements, not a snapshot.
- Status
- Healthy
- Uptime
- 100.0% over 27 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- modelcontextprotocol/registry
- GitHub Stars
- 6,314
TDQS
Scored across 2 tools
check_license_history is explicitly per-contractor and returns the full observed transition timeline, while recent_license_changes is a statewide, newest-first monitoring query. They operate at different granularities and answer different questions, so an agent should not have trouble selecting between them.
Both names are readable and use snake_case, but they do not follow the same pattern: check_license_history is verb-object while recent_license_changes is an adjective-noun phrase. With only two tools, this inconsistency is noticeable even though neither name is ambiguous.
Two tools is on the low end, but the server's stated scope is narrowly limited to licence-change monitoring and the two tools cover the two natural views: individual history and statewide recent changes. The count feels lean rather than bloated or insufficient.
For the stated change-monitoring domain, the surface is largely complete: one tool answers 'did this contractor change?' and the other answers 'what changed across the state?'. Current-status lookup is intentionally outside scope, and export or cross-contractor search is a minor omission rather than a core gap.
Available Tools
2 toolscheck_license_historyAInspect
Has this contractor's licence changed? Returns every status transition observed in the state board's own published file since 2026-07-17 -- suspensions, expirations, reinstatements and first appearance -- with the date each was seen. This is change over time, not a current-status lookup: use it after a snapshot check, to find out whether the licence you are about to rely on lapsed and came back. Distinguishes 'no change observed' from 'this source is not observed for that change', which are not the same answer. Only public, unsuppressed directory records are returned. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | Two-letter state code. Covered: AZ, CA, CO, CT, DE, FL, IA, NV, NY, OR, TX, UT, VA, WA | |
| license_number | Yes | The licence number as the board prints it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does so thoroughly. It explicitly states the operation is read-only, only public and unsuppressed records are returned, and it distinguishes 'no change observed' from 'this source is not observed for that change'. It also explains the data source and the date threshold, giving an agent strong behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured, with a clear front-loaded statement of purpose, followed by usage guidance, a critical semantic distinction, and a read-only caveat. Every sentence earns its place and no unnecessary filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema or annotations, the description explains what will be returned, the kinds of transitions, the source data, and the important caveats. It sufficiently covers likely agent questions about current status, data availability, and observation semantics. No critical operational context appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add significant parameter-level meaning beyond the schema; it provides useful context about relying on a licence but does not further explain state or license_number semantics. This is acceptable because the schema already documents both parameters clearly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: it returns every status transition observed in a state board file for a specific contractor's licence, with examples of transition types. It distinguishes itself from a current-status lookup, though it does not explicitly reference the sibling tool 'recent_license_changes'. Overall, the resource and scope are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use this tool: after a snapshot check, to determine whether a licence lapsed and came back. It also clearly says this is not a current-status lookup. However, it does not name or contrast the sibling tool directly, so the alternatives guidance is slightly incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_license_changesAInspect
What changed lately across a state: licences that lapsed, were reinstated, or appeared for the first time, newest first, optionally narrowed to one trade. Answers the monitoring question a single lookup cannot -- which contractors lost standing this month, or who is newly licensed in this trade. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look back 1 to 365 days (default 30) | |
| limit | No | Max rows, clamped to 1 through 100 (default 25) | |
| state | Yes | Two-letter state code. Covered: AZ, CA, CO, CT, DE, FL, IA, NV, NY, OR, TX, UT, VA, WA | |
| trade | No | Optional trade filter, e.g. electricians, plumbers | |
| change_type | No | lapse = active to suspended/expired/inactive; new_license = first observed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explicitly states 'Read-only,' discloses the change categories, the 'newest first' ordering, and the optional trade narrowing. This is good behavioral disclosure for a read-only monitoring tool, though it does not describe response shape, pagination, or edge cases like unknown states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the core behavior, then gives a motivating use case, and ends with a clear safety signal. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and no output schema, the description covers the main behavior, ordering, filtering, and read-only nature. It omits the 'status_change' enum value from the prose and gives no example of returned rows, but the schema already documents the enum and all parameters. This is nearly complete for an agent to decide whether to call the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds context linking categories to real monitoring questions ('which contractors lost standing', 'who is newly licensed'), which helps map meaning, but it does not add significant parameter-level detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific resource ('licences that lapsed, were reinstated, or appeared for the first time') and a specific verb/resource ('what changed lately across a state'), distinguishing it from a single-lookup history tool. It also defines the ordering and optional filtering. This is specific enough for an agent to understand exactly what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says when to use it: 'Answers the monitoring question a single lookup cannot -- which contractors lost standing this month, or who is newly licensed in this trade.' This gives clear use-case guidance and indirectly contrasts with the sibling check_license_history, though it does not explicitly name the alternative or say when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
check_license_history - First observed
recent_license_changes
Related MCP Connectors
Is this NSW builder licensed, insolvent or disciplined? 178k+ licences from official registers.
Verify contractor licenses: 50 states + DC + 8 cities — status, expiration, disciplinary history.
Free contractor-license checks from official state records; a no-match never proves unlicensed.
Verify a contractor, real estate or cosmetology license in 12 US states from the boards' own files.
Related MCP Servers
- AlicenseAqualityDmaintenanceReal-time contractor license verification across 45 US states. Verifies license status, expiration, and disciplinary history directly against state licensing board portals.457 npmMIT
- AlicenseAqualityCmaintenanceVerifies contractor license status mid-task, returning normalized JSON with active/expired/suspended/revoked status, bond details, and insurance for WA (reliable) and CA (beta) jurisdictions.255 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents and procurement systems to verify contractor licenses against official state boards, search contractors by trade and location, audit workers' comp, surety bonds and OSHA safety records, and check SAM.gov federal debarment status. It returns a deterministic ALLOW/WARN/BLOCK compliance decision plus registry health metrics for US trade contractors.MIT
- FlicenseNot gradedqualityCmaintenanceEnables searching and retrieving 126 Canadian contractor forms with verified regulatory citations, determining needed forms from plain-language situations, and estimating 2026 provincial trades taxes, required hourly rates, and HST quick method comparisons.-
Glama MCP Gateway
Add one secure layer between your agents and this server.