mcpField
L
license-verify-mcp

license-verify-mcp

Local
github.com/lmanirarutaLegal & Government0Updated 14w ago

About license-verify-mcp

license-verify-mcp is an MCP server for checking US contractor licenses against state data, including surety bond and insurance details. Washington is live and California is beta; charges apply only to successful matches, not misses or source failures.

Key features

  1. 01Verify license status
  2. 02Retrieve bond and insurance details
  3. 03List supported states and data sources
  4. 04Search by license number or business name
  5. 05Charge only for successful matches

Use cases

  1. 01Check whether a contractor license is active
  2. 02Confirm contractor bond and insurance
  3. 03Review supported jurisdictions and sources
  4. 04Screen contractor credentials before procurement

MCP support

The MCP server exposes `verify_license` and `list_supported_jurisdictions` for compatible clients to query license, bond, insurance, and jurisdiction information.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"lmaniraruta-license-verify": {
"command": "npx",
"args": [
"-y",
"license-verify-mcp"
]
}
}
}
Run commandnpx -y license-verify-mcp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmlicense-verify-mcp0.1.3

Tools

2

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
jurisdictionstringYesTwo-letter US state code. Supported: 'WA' (Washington, via WA L&I open data), 'CA' (California, via CSLB). Call list_supported_jurisdictions to see all options.
business_namestringNoBusiness name or partial business name to search for. Case-insensitive partial match. May return multiple results if ambiguous — check the 'matches' array in that case.
license_numberstringNoContractor license or registration number to look up (e.g. 'ECOSTSC758NN'). Case-insensitive exact match. Preferred over business_name for unambiguous results.

Details

From the project README

Contractor License + Bond + Insurance Verify (MCP, agent-payable)

The only MCP-native license check that returns official SURETY BOND + INSURANCE from state data — not just active/inactive status. Pay-per-success: $0.03 full result, $0.01 status-only, FREE on a miss. WA live (official L&I), CA beta (CSLB).

Tools: verify_license, list_supported_jurisdictions.

Quickstart

// Call
{ "tool": "verify_license", "jurisdiction": "WA", "license_number": "ECOSTSC758NN" }
// Response (abridged)
{
  "found": true,
  "result": {
    "status": "active",
    "bonded":  { "is_bonded": true, "details": "Surety: NORTH RIVER INSURANCE COMPANY THE; Amount: $30,000" },
    "insured": { "has_insurance": true, "details": "Carrier: State National Ins Co Inc; Coverage: $1,000,000" }
  }
}
ResultPrice
Full (status + bond + insurance)$0.03
Status-only (no bond/insurance match, or statusOnly: true)$0.01
Miss (found: false)FREE

Jurisdictions

StateStatusSourceBond + Insurance
WA✅ LiveWA L&I open data (data.wa.gov)✅ Real data (bzff-4fmt + ciwg-agsx datasets)
CA⚠️ BetaCSLB HTML (cslb.ca.gov)✅ Parsed when CSLB is up

Washington is the reliable, production-ready jurisdiction. Official WA L&I open data is served via Socrata JSON — no scraping, no rate limits, bond and insurance data included from dedicated datasets.

California is beta. CSLB does not publish an open API; the provider fetches the HTML detail page directly. CSLB rate-limits or 503s automated requests intermittently. When unavailable, verify_license returns a clean SESSION_ERROR — you are never charged on source failures. Do not rely on CA for production workflows until a stable server-side CSLB run is confirmed.


Apify Actor

Agentic-payments eligible — pay-per-event pricing + limited permissions + no Standby mode.

Pricing
EventPrice
license-verification$0.03 — full result (status + bond + insurance)
status-only-result$0.01 — status found, no bond/insurance match (or statusOnly: true)

Charged only on found: true. Validation errors, not-found results, and source failures are not charged.

Input
{
  "jurisdiction": "WA",
  "license_number": "ECOSTSC758NN"
}
FieldTypeRequiredNotes
jurisdiction"WA" | "CA"✅WA = live; CA = beta
license_numberstringone of ↓WA: alphanumeric. CA: numeric, ≤8 digits
business_namestringone of ↑WA only. Partial match, may return matches[]
Output (default dataset)
{
  "found": true,
  "jurisdiction": "WA",
  "query": { "license_number": "ECOSTSC758NN" },
  "result": {
    "license_number": "ECOSTSC758NN",
    "business_name": "!ECO STAR C G CONSTRUCTION LLC",
    "status": "active",
    "license_type": "CONSTRUCTION CONTRACTOR",
    "bonded": {
      "is_bonded": true,
      "details": "Surety: NORTH RIVER INSURANCE COMPANY THE; Bond #: 46CF842686; Amount: $30,000; Effective: 2025-08-05; Expires: Until Canceled"
    },
    "insured": {
      "has_insurance": true,
      "details": "Carrier: State National Ins Co Inc; Policy: NXT9PTHTLT-01-GL; Coverage: $1,000,000; Agency: Next Insurance Inc; Effective: 2026-06-12; Expires: 2027-06-12"
    },
    "effective_date": "2025-08-15",
    "expiration_date": "2027-08-15"
  },
  "source_url": "https://data.wa.gov/resource/m8qx-ubtq",
  "retrieved_at": "2026-06-26T01:34:37.598Z",
  "raw": { ... }
}

status is always one of: active | expired | suspended | revoked | unknown.

On failure: { "found": false, "error": "SESSION_ERROR|NETWORK_ERROR|...", "message": "..." } — never a crash, never a charge.

Local test
npm install
npm run build
echo '{"jurisdiction":"WA","license_number":"ECOSTSC758NN"}' \
  > storage/key_value_stores/default/INPUT.json
npx apify run

MCP Server (stdio)

For use with Claude Desktop, Smithery, or any MCP-compatible agent.

Tools

verify_license — verify a contractor's license status.

  • jurisdiction (required): "WA" or "CA"
  • license_number and/or business_name (at least one required)

list_supported_jurisdictions — list all states with their status and data source.

Config (Claude Desktop)
{
  "mcpServers": {
    "license-verify": {
      "command": "node",
      "args": ["/absolute/path/to/license-verify-mcp/dist/index.js"]
    }
  }
}
Run
npm install && npm run build
npm run start:mcp   # stdio MCP server
npm run smoke       # hit real WA + CA endpoints, must be 8/8 PASS

Adding a State

  1. Create src/providers/<CODE>.ts implementing the Provider interface ({ info, verify() })
  2. Register it in src/providers/index.ts

No other changes needed in server or Actor.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.