Skip to content
Back to search
90
MCP live MCP 2025-11-25 http

Playwright MCP Server

mcp.so:gsan12345/permitintel
Watch this dependency Share evidence report
Uptime
100.0%
3 direct probes · 30d
Response
1058ms
last probe
Tools
31
callable
Resources
0
readable
Prompts
0
available
Score: 90/100
Handshake verified by our own probe.
pass Answers the MCP handshake 50/50
The handshake and the list calls succeeded on the primary URL.
pass Lists tools, resources or prompts 30/30
31 tools, 0 resources, 0 prompts returned.
pass 3 or more catalogue items 10/10
31 items in total; 3 or more earns these points.
fail Describes itself 0/10
0 characters; more than 30 earns these points.
How to earn +10 points
Describe the server in one or two sentences
Set description in your server.json (or the registry listing) to say what the server does and for whom.

Tools · 31

verify_license

Wraps GET /api/v1/verify/license. Verify one contractor license against the Florida DBPR record: status, license type, effective and expiration dates, whether it is currently active, days to expiry, a…

search_permits

Wraps GET /api/v1/permits. Search ingested building-permit records. SEVEN modes, exactly one of which is required: `address` for permits at a street address; `contractor` for a contractor's permit his…

lookup_contractor

Wraps GET /api/v1/contractors. Look up Florida contractors with their permit activity rolled up: permit count, declared value, activity in the last 12 months, first and last permit dates, top trades, …

roof_lookup

Wraps GET /api/v1/roof/{address}. Roof state for one property address: roof age in years derived from the most recent roof permit on record, the date of that permit, and roof material with its source …

rollups

Wraps GET /api/v1/rollups. Grouped permit totals for a place instead of a list of permits: set `group` to `county` (with `state`), `zip` (with `county`) or `jurisdiction` (with `state` or `county`), a…

supply_accounts

Wraps GET /api/v1/supply/accounts. Ranks Florida-licensed contractors in ONE territory as supplier sales accounts: permits and declared value in the trailing 12 months, momentum (last 90 days versus t…

get_permit

Wraps GET /api/v1/permits/{id}. One permit by the numeric `id` that search_permits puts on every row, with the matched contractor and its contact included by default. The id is the internal id, NOT th…

get_contractor

Wraps GET /api/v1/contractors/{license}. One contractor profile keyed by DBPR license number, the same profile lookup_contractor returns for `license`, plus `recent_permits` (the 10 newest permits on …

list_jurisdictions

Wraps GET /api/v1/jurisdictions. The jurisdiction codes you can pass to search_permits `jurisdiction` and `county`, so a code is never guessed. Narrow with `state` (two letters), `county` (a code pref…

get_usage

Wraps GET /api/v1/usage. What the calling key has spent this month: tier, records used, the monthly records limit and what remains, when it resets, and the requests-per-minute limit. Costs 0 records a…

get_coverage

Wraps GET /api/v1/coverage. The machine-readable /coverage page: the headline totals and the per-state counts for everyone, and with a key the per-jurisdiction place list. Costs 0 records on any plan.…

verify_insurance

Wraps GET /api/v1/verify/insurance. Coverage status and lapse intel for one licensed business: workers' compensation status (`wc_status`), carrier, policy effective and expiration dates and cancellati…

verify_certifications

Wraps GET /api/v1/verify/certifications. Compliance badges for one licensed business in a single call: EPA RRP lead-safe renovation certification and Florida OSD minority or disadvantaged business des…

property_risk_insurance

Wraps GET /api/v1/properties/{address}/risk-insurance. A property-condition and insurance-risk summary for one address derived from the permit history held: roof age, last roof permit date, major-syst…

roof_evidence

Wraps GET /api/v1/roof/{address}/evidence. The citation layer behind roof_lookup: the roof permit records on file for one address, each with permit number, jurisdiction, issue date, status, contractor…

roof_coverage

Wraps GET /api/v1/roof/coverage. The coverage table behind roof coverage grades: without a key the totals and the A/B/C histogram, with a key the per-jurisdiction rows (property counts, roof-age fill …

roof_structure

Wraps GET /api/v1/roof/structure. Roof geometry — hip, gable, complex, flat or unknown — the signal Florida wind-mitigation credits price off. Look up by `address` (+ `zip`) or by `parcel` + `jurisdic…

roof_batch

Wraps POST /api/v1/roof/batch. Roof age and material for a book of addresses in one call: `items` is 1 to 1,000 objects of { address, zip? } (street line or full one-line address). Costs 1 record per …

list_monitors

Wraps GET /api/v1/monitors. The calling key's always-on license monitors: id, license, the events watched, webhook URL and whether it is active. Costs 1 record per monitor returned. Growth and up; a t…

create_monitor

Wraps POST /api/v1/monitors. WRITE — creates (or reactivates) an always-on monitor on one license for the calling key. `events` is a subset of license_lapse, insurance_lapse, new_permit, cert_expiry (…

delete_monitor

Wraps DELETE /api/v1/monitors/{id}. WRITE (destructive) — removes one monitor owned by the calling key, by the id list_monitors or create_monitor returned. Costs 0 records. Growth and up.

monitor_events

Wraps GET /api/v1/monitors/{id}/events. The events one of the calling key's monitors has detected (license lapse, insurance lapse, new permit, certification expiry), for callers without a webhook. `si…

supply_book_list

Wraps GET /api/v1/supply/book. The saved accounts in the calling key's supplier book of business, each enriched with live supply intelligence. Filter with `status` (prospect, contacted, active, won, l…

supply_book_add

Wraps POST /api/v1/supply/book. WRITE — saves one contractor license to the calling key's book of business, with optional pipeline `status`, owning `rep_id`, `notes`, and `watch=true` to monitor it (n…

supply_book_update

Wraps PATCH /api/v1/supply/book. WRITE — updates one saved account by `license`: any of `status`, `rep_id`, `notes`, `watch`, `webhook_url`; fields you omit are left unchanged. Costs 0 records. Growth…

supply_book_remove

Wraps DELETE /api/v1/supply/book. WRITE (destructive) — removes one account from the calling key's book by `license`, and tears down its watch. Costs 0 records. Growth and up.

supply_reps

Wraps GET /api/v1/supply/reps. The calling key's sales reps, oldest first, each with the `id` you pass as `rep_id` to a book entry or territory. Costs 1 record per rep returned. Growth and up.

supply_rep_add

Wraps POST /api/v1/supply/reps. WRITE — adds one sales rep (`name`, optional `email`) to the calling key's organization. Costs 0 records: the response echoes your own input. Growth and up.

supply_territories

Wraps GET /api/v1/supply/territories. The calling key's saved territories — named, reusable supply_accounts filters (county, trade, momentum, grade, minimum permits, owning rep). A territory stores th…

supply_territory_add

Wraps POST /api/v1/supply/territories. WRITE — saves one named territory: a reusable supply_accounts filter of `county`, `trade`, `momentum`, `grade` and `min_permits_12mo`, optionally owned by `rep_i…

supply_territory_remove

Wraps DELETE /api/v1/supply/territories. WRITE (destructive) — deletes one saved territory by `id`. Costs 0 records. Growth and up.

How to use

Claude Desktop or claude.ai: add a custom connector (Customize → Connectors; on Team and Enterprise plans an owner adds it under Organization settings → Connectors) with this server URL: https://permitintel.ai/api/mcp

Cursor or Cline: add to your MCP config:

{
  "mcpServers": {
    "playwright_mcp_server": {
      "url": "https://permitintel.ai/api/mcp",
      "transport": "http"
    }
  }
}