PermitStack
Server Details
U.S. building permits, permit histories by address and contractors from city and county records.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- PermitStack
TDQS
Scored across 18 tools
The set is organized around a clear search_/get_ pairing per resource (permits, certificates, violations, pipeline cases), and descriptions explicitly state the difference (search by criteria vs. fetch by UUID or exact number). The main soft spots are get_coverage vs. get_dataset_coverage (platform totals vs. per-dataset sign-in detail) and get_contractor_licenses vs. lookup_license, which an agent could plausibly confuse, though descriptions do differentiate them.
Most tools follow a predictable verb_noun pattern (search_permits, get_permit, search_inspections, get_pipeline_case), with resources named consistently across the search/get pairs. The one deviation is lookup_license, which breaks the get_/search_ convention and sits awkwardly next to get_contractor_licenses.
Eighteen tools is on the high side, but the surface covers roughly nine distinct resource types (permits, contractors, licenses, certificates, inspections, violations, pipeline cases, decisions, coverage), each with search and/or get operations. Every tool maps to a distinct resource-action pair rather than duplicating functionality, so the count is justified even if slightly heavy.
The read-only surface is broad and coherent: search + get for every major record type, plus contractor work history, license lookup and coverage metadata, with explicit notes on known data gaps (no owner contact data, licensing has no coverage endpoint). Minor gaps remain — no direct get-by-UUID for a single contractor profile and no cross-resource aggregate view — but agents can work around these via the existing search tools.
Available Tools
18 toolsget_certificateOccupancy certificate detailsARead-onlyIdempotentInspect
Get an occupancy or completion certificate by UUID, including certificate_status and co_date_basis. A duplicate id resolves to its canonical record. Coverage varies; a completion certificate does not establish occupancy.
Inputs: certificate_id (required).
get_contractor_licensesContractor licensesARead-onlyIdempotentInspect
List public board licenses linked to a contractor UUID by the API's exact matching rules. Coverage and as_of dates vary by board. Access and locked_fields identify unavailable fields; a registration is not a license. No contact enrichment.
Inputs: contractor_id (required).
get_contractor_permitsContractor's permitsARead-onlyIdempotentInspect
List the permits pulled by one contractor, identified by the contractor UUID from search_contractors. Returns up to 25 permits per page with the contractor's work history fields (dates, categories, values). Results carry no property owner name, owner mailing address or permit applicant name fields.
Inputs: contractor_id (required), page, start, per_page.
get_coverageData coverageARead-onlyIdempotentInspect
Describe PermitStack's coverage: total permits, jurisdictions (active, archive, frozen) and states. On a signed-in connection it also lists covered jurisdictions with their permit counts, county and data_through (the date of the newest permit held), filterable by state and by name, up to 25 per call, largest first. Without sign-in it returns the platform totals only.
Inputs: name, state.
get_dataset_coverageDataset coverageARead-onlyIdempotentInspect
List source and place coverage for inspections, violations, pipeline cases/decisions or certificates. Includes the API's measured freshness, completeness and caveats where available. Counts have source-specific meanings; complaints are separate from violations. Requires sign-in. Licensing has no coverage endpoint.
Inputs: dataset (required), name, page, start, +3 more.
get_permitLook up a permit by numberARead-onlyIdempotentInspect
Look up a permit by the permit number assigned by the issuing jurisdiction, optionally narrowed by city and state. The number is matched exactly (ignoring case), and the same number can exist in several jurisdictions, so up to 5 matching permits are returned; give the city or state to tell them apart. If nothing matches exactly and a city or state was given, permits in that place whose number contains the text are returned instead, and match says "partial". When the connected account covers a limited date range, account_window_from is set and only permits from that date onward are searched. Results carry no property owner name, owner mailing address or permit applicant name fields.
Inputs: permit_number (required), city, state.
get_permit_inspectionsPermit inspectionsARead-onlyIdempotentInspect
List inspections linked to a permit UUID. Future scheduled inspections are excluded by default unless result=SCHEDULED or upcoming opts in. An empty list means no linked inspection is held. Coverage varies by source and place; an empty result does not establish that no record exists. Up to 25 results per call. total_capped marks a lower bound; total_unknown means the total is unknown. Pagination guidance is in _notes.
Inputs: permit_id (required), page, start, result, +3 more.
get_pipeline_casePlanning case detailsBRead-onlyIdempotentInspect
Get a planning case by UUID with linked decisions and permits. A permit link matches site and time, not proof it was issued under this case; link_method and confidence describe the match. A planning case does not guarantee construction. Coverage varies.
Inputs: case_id (required).
get_property_historyProperty permit historyARead-onlyIdempotentInspect
Permit history for one property, looked up by street address (house number and street name, e.g. '123 Main St'). Optional city, state and ZIP narrow the match when the same street address exists in several places. Returns a property profile (permit timeline, category breakdown, contractors) and up to 25 permit records per page, newest first; has_more says whether the next page has more. Covers all permit categories. When the connected account covers a limited date range, the profile and records cover only that range, account_window_from is set, and _notes says so: the result is then not the property's full permit history. Results carry no property owner name, owner mailing address or permit applicant name fields.
Inputs: address (required), zip, city, page, +3 more.
get_violationCode violation or complaintARead-onlyIdempotentInspect
Get a violation or complaint by UUID, including source status and related copies. A complaint is not a confirmed violation. Coverage and published fines vary by source.
Inputs: violation_id (required).
lookup_licenseLook up a contractor licenseARead-onlyIdempotentInspect
Look up a license number in its issuing state across the public board rosters held, with matching contractors. Coverage and as_of dates vary by board. Access and locked_fields identify unavailable fields; a registration is not a license. No contact enrichment.
Inputs: state (required), license_number (required).
search_certificatesSearch occupancy certificatesARead-onlyIdempotentInspect
Search certificates of occupancy or completion. Defaults exclude renewals; co_date_basis states what each date means. Completion certificates do not establish occupancy, and pending applications are not issued certificates. Coverage varies by source and place; an empty result does not establish that no record exists. Up to 25 results per call. total_capped marks a lower bound; total_unknown means the total is unknown. Pagination guidance is in _notes.
Inputs: lat, lng, city, kind, +18 more.
search_contractorsSearch contractorsARead-onlyIdempotentInspect
Search contractors by name, city, state or specialty. Returns up to 25 contractors per call with the contractor UUID, name, licence number and licence state, home city and state, total permit count, first and last permit dates, specialties and activity score (0-100), sorted by activity score (highest first). Project values are not included; get_contractor_permits lists a contractor's permits with their estimated values.
Inputs: city, name, page, start, +4 more.
search_inspectionsSearch building inspectionsARead-onlyIdempotentInspect
Search inspection logs by place, permit, type, result and date. Summaries and future scheduled inspections are excluded by default; upcoming and summaries opt in. Sources report data_through. Coverage varies by source and place; an empty result does not establish that no record exists. Up to 25 results per call. total_capped marks a lower bound; total_unknown means the total is unknown. Pagination guidance is in _notes.
Inputs: city, page, scope, start, +16 more.
search_permitsSearch building permitsARead-onlyIdempotentInspect
Search U.S. building permits by location (city, state, ZIP code, or a lat/lng radius), category, status, property type, filing or issue date range, estimated project value, contractor name, or free text. Returns up to 25 permits per call with address, dates, category, status, estimated value, contractor and description, plus the total number of matches. Response fields: total is exact unless total_capped is true, in which case it is a lower bound; when total_unknown is true the count could not be computed and total is null. account_window_clamped, account_window_days and account_window_from are set when the connected account covers a limited date range, and the results then cover only that range. Category HVAC also matches MECHANICAL, and MECHANICAL also matches HVAC. date_after/date_before match whichever date a permit has (issued, else filed), for feeds that publish only one of the two. Results carry no property owner name, owner mailing address or permit applicant name fields.
Inputs: q, lat, lng, city, +19 more.
search_pipeline_casesSearch planning casesARead-onlyIdempotentInspect
Search planning and zoning cases by place, type, status, dates and proposed size. A planning case does not guarantee construction. Sources report data_through. Coverage varies by source and place; an empty result does not establish that no record exists. Up to 25 results per call. total_capped marks a lower bound; total_unknown means the total is unknown. Pagination guidance is in _notes.
Inputs: lat, lng, city, page, +19 more.
search_pipeline_decisionsSearch planning decisionsARead-onlyIdempotentInspect
Search council, planning commission and zoning board decisions by place, body, action and meeting date. RECOMMENDED_* is a recommendation, not a final decision. A decision does not guarantee construction. Coverage varies by source and place; an empty result does not establish that no record exists. Up to 25 results per call. total_capped marks a lower bound; total_unknown means the total is unknown. Pagination guidance is in _notes.
Inputs: body, city, page, start, +12 more.
search_violationsSearch code violationsARead-onlyIdempotentInspect
Search agency findings by place, case number, status, category and date. record_kind defaults to violation; complaints are reports, not confirmed violations. Sources report data_through, coverage_window and count_unit. Coverage varies by source and place; an empty result does not establish that no record exists. Up to 25 results per call. total_capped marks a lower bound; total_unknown means the total is unknown. Pagination guidance is in _notes.
Inputs: lat, lng, city, page, +16 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Building permits by address for a growing list of US cities and counties, from city open data.
Source-linked building-permit search across 34 US states and DC, with county-level coverage.
Public building permits, property assessments, parcels and development intelligence.
Fresh US building permits with contacts from official city APIs. Construction lead generation.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search permit coverage, count matching building permits, and retrieve clean permit rows with property and contractor details, including free initial results and paid per-row access.MIT
- AlicenseNot gradedqualityBmaintenanceEnables extraction of live municipal building permits and code violations, owner skip tracing to phones and emails, and contractor/OFAC screening through MCP tools.MIT
- AlicenseNot gradedqualityCmaintenanceOpen & historical US government bid solicitations from city/county portals — updated daily.147 npm2MIT
- AlicenseNot gradedqualityCmaintenanceEnables US address resolution and location-scoped search of building permits and construction contractors via the Shovels.ai API.10 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.