MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Other

PermitStack

U.S. building permits, permit histories by address and contractors from city and county records.

Checks passed
13 / 22

1 failed · 8 not measured

Median response
468 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
18

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 468 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name permitstack.

  • Pass
    Lists tools

    tools/list returned 18 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 468 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 468 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    143 of 168 parameters have a description (85%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-10-23T12:34:13.920567Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using PermitStack

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http permitstack https://mcp.permit-stack.com/mcp

Capabilities

Tools 18

get_certificate

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.

Discovered
get_contractor_licenses

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.

Discovered
get_contractor_permits

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.

Discovered
get_coverage

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.

Discovered
get_dataset_coverage

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.

Discovered
get_permit

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.

Discovered
get_permit_inspections

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.

Discovered
get_pipeline_case

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.

Discovered
get_property_history

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.

Discovered
get_violation

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.

Discovered
lookup_license

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.

Discovered
search_certificates

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.

Discovered
search_contractors

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.

Discovered
search_inspections

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.

Discovered
search_permits

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.

Discovered
search_pipeline_cases

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.

Discovered
search_pipeline_decisions

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.

Discovered
search_violations

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.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected468 ms18