# loc8n Geographic Data (npm · @gener8v/mcp-geographic-data)

U.S. demographics, housing, mortgage, migration, and employment data via loc8n API

- Trust score: 81/100 (high trust)
- Change this week: +29
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.loc8n.com`: 4/100, [markdown](https://verifymcp.io/servers/gener8v-thomas-mcp-geographic-data/mcp.md), [page](https://verifymcp.io/servers/gener8v-thomas-mcp-geographic-data/mcp)
- npm · `@gener8v/mcp-geographic-data`: 81/100 (this document), [markdown](https://verifymcp.io/servers/gener8v-thomas-mcp-geographic-data/gener8v-mcp-geographic-data.md), [page](https://verifymcp.io/servers/gener8v-thomas-mcp-geographic-data/gener8v-mcp-geographic-data)

## Channel facts

- Registry: `npm`
- Package: `@gener8v/mcp-geographic-data`
- Version: `0.1.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, 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.

- **Supply Chain Security**: 86/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to gener8v/gener8v.mcp.geographic-data).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 124 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 84/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).
  - Context-footprint check failed: tool/resource definitions use about 3310 tokens (~110/item across 30 items; 23 tools + 7 resources), over budget; trim descriptions and params.
  - 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**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add gener8v-thomas-mcp-geographic-data -- npx -y @gener8v/mcp-geographic-data
```

### Codex

```bash
codex mcp add gener8v-thomas-mcp-geographic-data -- npx -y @gener8v/mcp-geographic-data
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gener8v-thomas-mcp-geographic-data": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@gener8v/mcp-geographic-data"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add gener8v-thomas-mcp-geographic-data --command npx --arg -y --arg @gener8v/mcp-geographic-data
```

### Hermes

```yaml
mcp_servers:
  gener8v-thomas-mcp-geographic-data:
    command: "npx"
    args: ["-y", "@gener8v/mcp-geographic-data"]
```

### Other

```json
{
  "mcpServers": {
    "gener8v-thomas-mcp-geographic-data": {
      "command": "npx",
      "args": [
        "-y",
        "@gener8v/mcp-geographic-data"
      ]
    }
  }
}
```

## 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 81, +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-02 (score 80, +39)

- [security improvement] Provenance: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security] The attested source repository moved: gener8v/gener8v.mcp.geographic-data
- [functional regression] Security disclosure: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional] Licence: MIT

### 2026-08-01 (score 41, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-07-31 (score 26, +2)

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

### 2026-07-30 (score 24, −28)

- [functional regression] Schema quality: 100 → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-07-27 (score 52)

First indexed and scored.

## MCP tools (23)

### `lookup_zip_code` (~69 tokens)

Look up full details for a single 5-digit US ZIP code, including city, state, county, timezone, coordinates, area codes, land/water area, and elevation.

Input parameters:

- `zipCode` (string, required): The 5-digit ZIP code to look up (e.g., "30301")

### `search_zip_codes_by_city` (~67 tokens)

Search for all ZIP codes in a given city and state. Returns the full list of matching ZIP codes with details.

Input parameters:

- `city` (string, required): City name (e.g., "Atlanta")
- `state` (string, required): 2-letter state abbreviation (e.g., "GA")

### `find_zip_codes_in_radius` (~106 tokens)

Find all ZIP codes within a given radius of a center ZIP code. Returns each nearby ZIP with its distance from the center.

Input parameters:

- `limit` (integer): Maximum number of results (1 to 500, default 100)
- `radius` (number, required): Search radius (0.1 to 500)
- `sort` (string): Sort order for results
- `unit` (string): Distance unit
- `zipCode` (string, required): Center ZIP code (5 digits)

### `calculate_zip_code_distance` (~82 tokens)

Calculate the distance between two ZIP codes using either the Haversine or Vincenty formula. Returns origin/destination details and the computed distance.

Input parameters:

- `from` (string, required): Origin ZIP code (5 digits)
- `method` (string): Calculation method
- `to` (string, required): Destination ZIP code (5 digits)
- `unit` (string): Distance unit

### `search_areas` (~94 tokens)

Search for geographic areas by name across all boundary types (county, state, CBSA, census tract, ZIP). Uses trigram matching for fuzzy name search.

Input parameters:

- `limit` (integer): Maximum number of results (1 to 50, default 20)
- `query` (string, required): Search term -- name or partial ZIP code (minimum 2 characters)
- `types` (array): Restrict to specific boundary types

### `get_demographics` (~160 tokens)

Retrieve a full demographic profile (population, income, housing, education, employment, households) for a single geographic area such as a ZIP code, county, state, place, CBSA, census tract, or block group.

Input parameters:

- `area_code` (string, required): Area identifier: 5-digit ZIP, 2-digit state FIPS, 5-digit county FIPS, 11-digit tract GEOID, 12-digit block group GEOID, place FIPS, or CBSA code.
- `area_type` (string, required): Geographic area type. Use 'zip' for ZIP codes, or a Census boundary type.
- `data_year` (integer): Specific ACS data year (e.g. 2023). Omit for the most recent available year.

### `get_demographics_category` (~133 tokens)

Retrieve specific demographic categories (e.g. population, income, housing) for a geographic area. Use this instead of get_demographics when you only need a subset of categories to keep the response concise.

Input parameters:

- `area_code` (string, required): Area identifier (ZIP code, FIPS code, GEOID, or CBSA code).
- `area_type` (string, required): Geographic area type.
- `categories` (array, required): One or more demographic categories to retrieve: population, income, housing, education, employment, households.
- `data_year` (integer): Specific ACS data year. Omit for the most recent available year.

### `get_demographics_trend` (~118 tokens)

Retrieve historical demographic data across multiple years for a single geographic area, useful for analysing population growth, income changes, or housing trends over time.

Input parameters:

- `area_code` (string, required): Area identifier (ZIP code, FIPS code, GEOID, or CBSA code).
- `area_type` (string, required): Geographic area type.
- `end_year` (integer): Last year of the range. Omit for the most recent available year.
- `start_year` (integer): First year of the range. Omit for the earliest available year.

### `compare_demographics` (~93 tokens)

Compare demographics side by side for two to ten ZIP codes. Returns each ZIP's demographic profile plus summary comparison ranges (population, income, housing).

Input parameters:

- `categories` (array): Optional list of categories to include in the comparison.
- `data_year` (integer): Specific ACS data year. Omit for the most recent available year.
- `zip_codes` (array, required): Two to ten 5-digit ZIP codes to compare.

### `get_fair_market_rent` (~188 tokens)

Look up HUD Fair Market Rent (FMR) rates for a geographic area by ZIP code, county FIPS, CBSA/metro code, or state FIPS. Returns monthly rent estimates by bedroom count (efficiency through 4-bedroom). Note: State-level queries return all ZIP-level FMR records within the state, which can be hundreds of records. Use ZIP or county lookups when only a single area is needed. Source: U.S. Dept. of Housing & Urban Development, Fair Market Rents.

Input parameters:

- `area_code` (string, required): Area identifier — format depends on area_type
- `area_type` (string, required): Geographic area type: zip (5-digit), county (5-digit FIPS), cbsa (CBSA/metro code), or state (2-digit FIPS)
- `year` (integer): FMR fiscal year (default: latest available)

### `get_fmr_trend` (~169 tokens)

Retrieve Fair Market Rent data across multiple years for a single area. Returns an array of yearly FMR records with rent values by bedroom count. Supports ZIP, county, and CBSA area types. State-level trends are not supported because state queries return aggregated lists of ZIP-level records, not a single time series. Source: U.S. Dept. of Housing & Urban Development, Fair Market Rents.

Input parameters:

- `area_code` (string, required): Area identifier — format depends on area_type
- `area_type` (string, required): Geographic area type: zip, county, or cbsa (state is not supported for trends)
- `end_year` (integer): Last year of the range (default: latest available)
- `start_year` (integer): First year of the range (default: earliest available)

### `get_mortgage_summary` (~146 tokens)

Retrieve the mortgage lending summary for a single geographic area (census tract, county, or state) from HMDA data. Returns origination count, denial rate, median loan amount, median interest rate, loan purpose mix, and loan type mix (conventional, FHA, VA, USDA). Source: CFPB/FFIEC HMDA.

Input parameters:

- `area_type` (string, required): Geographic level: tract (or census_tract), county, or state
- `geoid` (string, required): FIPS code — 11 digits for tract, 5 for county, 2 for state
- `year` (integer): HMDA data year (default: most recent available)

### `get_mortgage_trends` (~117 tokens)

Retrieve multi-year mortgage lending data for a single area across all available HMDA years. Returns an array of yearly summaries including origination count, denial rate, median loan amount, median interest rate, and loan purpose/type breakdowns. Source: CFPB/FFIEC HMDA.

Input parameters:

- `area_type` (string, required): Geographic level: tract (or census_tract), county, or state
- `geoid` (string, required): FIPS code — 11 digits for tract, 5 for county, 2 for state

### `compare_mortgage` (~148 tokens)

Compare mortgage lending metrics across 2-5 geographic areas for a single HMDA data year. All areas must be the same geographic level (tract, county, or state). Returns side-by-side summaries including origination count, denial rate, median loan amount, and loan type/purpose breakdowns for each area. Source: CFPB/FFIEC HMDA.

Input parameters:

- `area_type` (string, required): Geographic level (must be same for all areas): tract (or census_tract), county, or state
- `geoids` (array, required): Array of 2-5 FIPS codes to compare
- `year` (integer): HMDA data year (default: most recent available)

### `get_migration_summary` (~160 tokens)

Retrieve migration summary for a county or state showing aggregate inflows, outflows, and net migration. Returns net returns (positive = net in-migration, negative = net out-migration), net exemptions (proxy for people), and net AGI (adjusted gross income in thousands of dollars). Year is specified as a year pair (e.g., '2021-2022') representing tax filing year transitions. Source: IRS Statistics of Income.

Input parameters:

- `fips` (string, required): FIPS code — 5 digits for county, 2 for state
- `level` (string, required): Geographic level: county or state
- `year` (string): Year pair (e.g., '2021-2022'). Defaults to most recent available.

### `get_migration_flows` (~251 tokens)

Retrieve top inflow or outflow areas for a county or state, ranked by number of tax returns or AGI. Inflows show where people moved from (into this area); outflows show where people moved to (out of this area). Returns an array of flow records with FIPS, area name, returns, exemptions, and AGI (in thousands of dollars). Some flow entries may be suppressed by the IRS for privacy when returns fall below the disclosure threshold. Source: IRS Statistics of Income.

Input parameters:

- `direction` (string, required): Flow direction: inflow (moved into area) or outflow (moved out of area)
- `fips` (string, required): FIPS code — 5 digits for county, 2 for state
- `level` (string, required): Geographic level: county or state
- `limit` (integer): Number of top flow areas to return (1-50, default: 10)
- `sort` (string): Ranking metric: 'returns' (household count) or 'agi' (income). Default: 'returns'.
- `year` (string): Year pair (e.g., '2021-2022'). Defaults to most recent available.

### `get_migration_trends` (~109 tokens)

Retrieve migration summary data across all available year pairs for a county or state. Returns an array of yearly migration summaries sorted by year pair, each including net returns, net exemptions, net AGI, and inflow/outflow breakdowns. AGI values are in thousands of dollars. Source: IRS Statistics of Income.

Input parameters:

- `fips` (string, required): FIPS code — 5 digits for county, 2 for state
- `level` (string, required): Geographic level: county or state

### `get_employment` (~172 tokens)

Retrieve employment data for a single geographic area. Returns total jobs, industry mix by NAICS sector, earnings distribution, and age breakdown. The 'perspective' parameter controls whether data reflects jobs physically located in the area (workplace, WAC data — default) or jobs held by the area's residents regardless of where they work (residence, RAC data).

Input parameters:

- `area_type` (string, required): Geographic level: tract, county, or state.
- `geoid` (string, required): FIPS code for the area — 11 digits for tract, 5 for county, 2 for state.
- `perspective` (string): workplace (jobs located in the area, default) or residence (jobs held by area residents).
- `year` (integer): Data year. Omit to use the most recent available year.

### `get_employment_trend` (~132 tokens)

Retrieve employment data across all available years for a single area. Returns an array of yearly metrics (total jobs, industry mix, earnings, age breakdown) ordered ascending by year. Use 'perspective' to choose workplace (default) or residence.

Input parameters:

- `area_type` (string, required): Geographic level: tract, county, or state.
- `geoid` (string, required): FIPS code for the area — 11 digits for tract, 5 for county, 2 for state.
- `perspective` (string): workplace (jobs located in the area, default) or residence (jobs held by area residents).

### `compare_employment` (~126 tokens)

Compare employment data for multiple areas side by side (2-10 areas). All geoids must share the same area type. Returns per-area metrics including total jobs, industry mix, earnings, and age breakdown.

Input parameters:

- `area_type` (string, required): Geographic level shared by all geoids.
- `geoids` (string, required): Comma-separated FIPS codes to compare (2-10). All must match the specified area type.
- `perspective` (string): workplace (default) or residence.
- `year` (integer): Data year. Omit to use the most recent available year.

### `get_commute_flows` (~234 tokens)

Retrieve commute flow (origin-destination) data for a county or state. Shows where workers come from (inbound) or where residents commute to (outbound). Returns top flow pairs with job counts and a 3-supersector industry breakdown (Goods Producing, Trade/Transport/Utilities, All Other Services). Note: this uses OD data with a coarser industry breakdown than the 20-sector NAICS detail available in single-area employment summaries. Not available at the tract level.

Input parameters:

- `area_type` (string, required): Geographic level: county or state (tract is not supported for flows).
- `direction` (string, required): inbound = where workers come from; outbound = where residents commute to.
- `geoid` (string, required): FIPS code — 5 digits for county, 2 for state.
- `limit` (integer): Number of top flow pairs to return (1-100, default 25).
- `min_jobs` (integer): Minimum job count threshold to include a flow pair (default 0).
- `year` (integer): Data year. Omit to use the most recent available year.

### `geocode_address` (~148 tokens)

Convert a street address or place name into geographic coordinates. Returns up to 'limit' candidate results with coordinates, formatted address, address components, confidence score, and provider name. The optional 'country' parameter biases (but does not strictly filter) results toward the given country.

Input parameters:

- `address` (string, required): The address or place name to geocode (minimum 3 characters).
- `country` (string): 2-letter uppercase ISO 3166-1 country code to bias results (e.g., 'US'). Biases but does not strictly filter — results from other countries may appear.
- `limit` (integer): Maximum number of results to return (1-10, default 5).

### `reverse_geocode` (~66 tokens)

Convert a latitude/longitude coordinate pair into a street address. Returns the best-match formatted address, address components, and coordinates.

Input parameters:

- `latitude` (number, required): Latitude in decimal degrees (-90 to 90).
- `longitude` (number, required): Longitude in decimal degrees (-180 to 180).

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/gener8v-thomas-mcp-geographic-data/gener8v-mcp-geographic-data#diagnostics

## Score history

- 2026-08-03: 81
- 2026-08-02: 80
- 2026-08-01: 41
- 2026-07-31: 26
- 2026-07-30: 24
- 2026-07-28: 52
- 2026-07-27: 52

## Links

- npm package: https://www.npmjs.com/package/@gener8v/mcp-geographic-data
- Socket report: https://socket.dev/npm/package/@gener8v/mcp-geographic-data
- Repository: https://github.com/gener8v/gener8v.mcp.geographic-data
- Changelog RSS feed: https://verifymcp.io/servers/gener8v-thomas-mcp-geographic-data/gener8v-mcp-geographic-data/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/gener8v-thomas-mcp-geographic-data/gener8v-mcp-geographic-data/changelog.json
- HTML version of this page: https://verifymcp.io/servers/gener8v-thomas-mcp-geographic-data/gener8v-mcp-geographic-data
