# io.github.andrew-sondgeroth/zipexplore-mcp (remote · mcp.zipexplore.com)

US ZIP code intelligence: demographics, weather, tax, crime, housing, voting, and more.

- Trust score: 63/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.zipexplore.com`: 63/100 (this document), [markdown](https://verifymcp.io/servers/andrew-sondgeroth-zipexplore-mcp/mcp.md), [page](https://verifymcp.io/servers/andrew-sondgeroth-zipexplore-mcp/mcp)

## Channel facts

- Endpoint: `https://mcp.zipexplore.com/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 22 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 85/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 1937 tokens (~80/item across 24 items; 22 tools + 2 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 67/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
- **Capabilities**: 40/100
  - Spec-recency check failed: implements MCP spec 2025-03-26; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http andrew-sondgeroth-zipexplore-mcp https://mcp.zipexplore.com/mcp
```

### Codex

```toml
[mcp_servers.andrew-sondgeroth-zipexplore-mcp]
url = "https://mcp.zipexplore.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "andrew-sondgeroth-zipexplore-mcp": {
      "type": "remote",
      "url": "https://mcp.zipexplore.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add andrew-sondgeroth-zipexplore-mcp --url https://mcp.zipexplore.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  andrew-sondgeroth-zipexplore-mcp:
    url: "https://mcp.zipexplore.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "andrew-sondgeroth-zipexplore-mcp": {
      "type": "http",
      "url": "https://mcp.zipexplore.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 61, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 60, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 59, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 58)

First indexed and scored.

## MCP tools (22)

### `get_article` (~83 tokens)

Returns the full prose of a specific ZipExplore research article. Use this for editing, fact-checking, detailed analysis, or when get_research summaries aren't enough. Valid slugs: disappearing-towns, hazard-premium, snap-economy, wealthy-retirees. Each article includes all body sections and methodology notes exactly as published.

Input parameters:

- `slug` (string, required)

### `ping` (~27 tokens)

Returns server status and tool/resource counts. Use this to verify the ZipExplore MCP connection is live.

### `get_methodology` (~100 tokens)

Returns ZipExplore's data interpretation guide: reasoning guardrails (associations vs. causes, small-ZIP noise, averages hiding distributions, editorial score weights, drawing conclusions about people from geographic data), quality flag definitions, known data limitations, coverage gap explanations, and per-domain vintage summary. Call this when you have questions about data quality, what a quality_flag code means, why a ZIP has no data, or how to reason carefully about scores and correlations.

### `get_research` (~106 tokens)

Returns ZipExplore's published research articles — original data findings on topics including disaster risk vs. housing costs (the Hazard Premium), food insecurity in fully-employed communities (SNAP economy), economically declining towns vs. retirement communities, and income variation among America's oldest ZIP codes. Each entry includes the key finding, specific quantitative results, caveats, and a URL to the full article. Call this when a user asks about these topics or when published findings would add context to a live data lookup.

### `search_zips` (~183 tokens)

Find ZIP codes matching one or more criteria. Returns a ranked list with
        scores. Use this first when the user wants recommendations (e.g. "find a
        low-crime suburb near Denver"). Call get_search_fields first if you're
        unsure what field names to use.

        criteria: list of {"field": str, "level": "low"|"medium"|"high"}
        area_types: "CITY" | "SUBURB" | "SMALL_TOWN" | "RURAL"
        regions: "northeast" | "southeast" | "midwest" | "southwest" | "west"

Input parameters:

- `area_types`
- `criteria` (array, required)
- `limit` (integer)
- `minimum_completeness` (number)
- `regions`
- `states`

### `get_zip_profile` (~100 tokens)

Full location profile for one ZIP code across all 12 data domains:
        demographics, climate, tax, crime, cost of living, voting, education,
        healthcare, business, air quality, disaster risk, and transit. Use this
        to get detail on a ZIP after search, or when the user asks about a
        specific ZIP. For deeper data on one domain, use the domain-specific tools.

Input parameters:

- `zip` (string, required)

### `compare_zips` (~61 tokens)

Side-by-side full profiles for 2–5 ZIP codes. Use when the user has
        finalists and needs to choose between them. Returns the same profile
        shape as get_zip_profile for each ZIP.

Input parameters:

- `zips` (array, required)

### `get_search_fields` (~54 tokens)

Lists every field name, type, and description available for search
        criteria. Call this when you're unsure what field names to pass to
        search_zips, or when the user asks what data ZipExplore has.

### `get_census_profile` (~66 tokens)

Detailed Census / demographics data for one ZIP code. Use when
        get_zip_profile's demographics section isn't sufficient depth.
        Includes population, housing, income distribution, education attainment,
        economic indicators, internet access, and public assistance rates.

Input parameters:

- `zip` (string, required)

### `reverse_geocode` (~53 tokens)

Convert a latitude/longitude coordinate to a ZIP code. Use when the
        user provides an address or map coordinates rather than a ZIP code.

Input parameters:

- `lat` (number, required)
- `lon` (number, required)

### `get_zip_centroids` (~50 tokens)

Get the latitude/longitude centroid for one or more ZIP codes (max 200).
        Use when you need map coordinates for a set of ZIPs.

Input parameters:

- `zips` (array, required)

### `get_weather_profile` (~58 tokens)

Detailed climate data for one ZIP code. Use when get_zip_profile's
        climate section isn't sufficient depth. Includes annual/monthly temperature
        averages, precipitation, humidity, and nearest weather station info.

Input parameters:

- `zip` (string, required)

### `get_tax_profile` (~62 tokens)

Detailed tax data for one ZIP code. Use when get_zip_profile's tax
        section isn't sufficient depth. Includes state income tax, sales tax,
        property tax effective rates, excise taxes, and IRS income statistics.

Input parameters:

- `zip` (string, required)

### `get_crime_profile` (~63 tokens)

Detailed crime data for one ZIP code. Use when get_zip_profile's crime
        section isn't sufficient depth. Includes violent crime rate, property
        crime rate, and data quality flags (coverage level, Bayesian shrinkage).

Input parameters:

- `zip` (string, required)

### `get_cost_profile` (~60 tokens)

Detailed cost of living data for one ZIP code. Use when get_zip_profile's
        cost section isn't sufficient depth. Includes fair market rents, housing
        cost burden, regional price indices, and affordability metrics.

Input parameters:

- `zip` (string, required)

### `get_voting_profile` (~64 tokens)

Detailed voting and political data for one ZIP code. Use when
        get_zip_profile's voting section isn't sufficient depth. Includes
        presidential election results, partisan lean, congressional and
        state legislative districts, and state officials.

Input parameters:

- `zip` (string, required)

### `get_education_profile` (~92 tokens)

Detailed school data for one ZIP code. Use when get_zip_profile's
        education section isn't sufficient depth. Includes school counts,
        student-teacher ratios, graduation rates, per-pupil spending, Title I
        percentage, and budget breakdown (instruction vs. admin vs. capital).
        May reflect data from the nearest ZIP if no schools are in this ZIP.

Input parameters:

- `zip` (string, required)

### `get_healthcare_profile` (~75 tokens)

Detailed healthcare data for one ZIP code. Use when get_zip_profile's
        healthcare section isn't sufficient depth. Includes hospital count and
        ratings, nursing homes, beds per capita, primary care and mental health
        shortage area designations, pharmacy count, and urgent care count.

Input parameters:

- `zip` (string, required)

### `get_business_profile` (~69 tokens)

Detailed business and employment data for one ZIP code. Use when
        get_zip_profile's business section isn't sufficient depth. Includes
        top industries, sector breakdowns, total establishments, employment,
        and annual payroll from Census BDS/CBP data.

Input parameters:

- `zip` (string, required)

### `get_air_quality_profile` (~75 tokens)

Detailed air quality data for one ZIP code. Use when get_zip_profile's
        air quality section isn't sufficient depth. Includes EPA AQS pollutant
        levels (PM2.5, PM10, ozone, NO2, SO2, CO) and AQI summary.

Input parameters:

- `zip` (string, required)

### `get_disaster_risk_profile` (~79 tokens)

Detailed natural disaster risk data for one ZIP code. Use when
        get_zip_profile's disaster risk section isn't sufficient depth. Includes
        FEMA NRI overall risk score, individual hazard scores (hurricane, tornado,
        earthquake, wildfire, flood, etc.), and expected annual loss estimates.

Input parameters:

- `zip` (string, required)

### `get_transit_profile` (~82 tokens)

Detailed public transit data for one ZIP code. Use when get_zip_profile's
        transit section isn't sufficient depth. Includes bus stop count, subway
        station count, rail station count, light rail count, ferry terminal count,
        total transit stops, transit commute percentage, and nearest subway/rail
        distances.

Input parameters:

- `zip` (string, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/andrew-sondgeroth-zipexplore-mcp/mcp#diagnostics

## Score history

- 2026-08-03: 63
- 2026-08-02: 62
- 2026-08-01: 62
- 2026-07-31: 61
- 2026-07-30: 60
- 2026-07-29: 60
- 2026-07-28: 59
- 2026-07-27: 59
- 2026-07-26: 58

## Links

- Remote endpoint: https://mcp.zipexplore.com/mcp
- Authorisation metadata: https://mcp.zipexplore.com/.well-known/oauth-protected-resource/mcp
- Changelog RSS feed: https://verifymcp.io/servers/andrew-sondgeroth-zipexplore-mcp/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/andrew-sondgeroth-zipexplore-mcp/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/andrew-sondgeroth-zipexplore-mcp/mcp
