Skip to content

CodePostalPro

by codepostalpro.com · remote · no sign-in to list tools · v1.1.0 · published by com.codepostalpro

Postal lookups for 120 countries with cited sources; deep US tier: demographics, climate, area codes

Changes · 1

7 tools: 1 change things and 6 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http postal-codes https://api.codepostalpro.com/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "lookup_postal_code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_postal_code" says "lookup": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

7 tools

Changes things 1Claude Code: ask
  • lookup_postal_codeLook up a postal code or US ZIP code.1 finding

    Why it is in this group

    • The name "lookup_postal_code" says "lookup": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "lookup_postal_code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_postal_code" says "lookup": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Look up a postal code or US ZIP code. Returns every locality that carries the code with its city, county/administrative division, region (state, département, wilaya…), coordinates, IANA time zone, US telephone area codes, USDA 2023 plant hardiness / planting zone (e.g. 7b with its temperature band), and US Census demographics (population, density and land area, median household and per-capita income, median age, households, housing units, median home value, median gross rent — measured for the ZCTA, the Census approximation of the ZIP area). Each record lists its `sources` and a `verification` status (cross-checked | source-single | conflict | unverified); on `conflict`, `alternate_codes` gives the competing values and their sources — never pick one silently; tell the user both. Curated coverage (full records): United States (ZIP), Germany, Austria, Spain, France, Algeria, Tunisia, Morocco. All other countries (~115 more: GB, CA, IN, JP, MX, BR…) return bulk-tier records — place name, admin areas and coordinates from GeoNames, marked `tier: "bulk"` and single-source, without demographics.

    Annotations the server declares

    • title: Postal code lookup
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 6Claude Code: allow
  • area_code_lookupWhere a US telephone area code is used: the state(s) it serves, the cities with the most ZIPs listing it, total ZIP and city counts, and `overlay_codes` — codes assigned to the sam…No findings

    Why it is in this group

    • The name "area_code_lookup" says "lookup": a word for reading.
    Description, as the server wrote it
    Where a US telephone area code is used: the state(s) it serves, the cities with the most ZIPs listing it, total ZIP and city counts, and `overlay_codes` — codes assigned to the same territory (e.g. 310 and 424 in west Los Angeles). Use it for "where is area code 310", "what area code is Denver" (via the city’s ZIPs instead), or to sanity-check a phone number’s geography. Caveat to relay: NANPA assigns codes to rate centres, matched here to cities — city-level accuracy, not a legal boundary, and a mobile number keeps its code when its owner moves.

    Annotations the server declares

    • title: US area code lookup
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_groupA city (US), département (France), province (Morocco), post office (Algeria) or delegation (Tunisia) with all its localities / ZIP codes.No findings

    Why it is in this group

    • The name "get_group" says "get": a word for reading.
    Description, as the server wrote it
    A city (US), département (France), province (Morocco), post office (Algeria) or delegation (Tunisia) with all its localities / ZIP codes. For a US city this is the complete list of its ZIP codes with coordinates, time zone and area codes. Needs the region slug and the group slug (both from get_region or from any record's `region.slug` / `group.slug`).

    Annotations the server declares

    • title: City & district details
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_regionA state, région, wilaya or governorate with the list of its cities / départements / delegations (names, slugs and their postal codes), plus for US states every telephone area code …No findings

    Why it is in this group

    • The name "get_region" says "get": a word for reading.
    Description, as the server wrote it
    A state, région, wilaya or governorate with the list of its cities / départements / delegations (names, slugs and their postal codes), plus for US states every telephone area code in use. Use the slugs it returns to call get_group or get_place. Region slugs are lower-case hyphenated names: "texas", "ile-de-france", "alger".

    Annotations the server declares

    • title: Region details
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_countriesCoverage overview: the eight curated countries with postal-code format, hierarchy labels (e.g.No findings

    Why it is in this group

    • The name "list_countries" says "list": a word for reading.
    Description, as the server wrote it
    Coverage overview: the eight curated countries with postal-code format, hierarchy labels (e.g. state › city › ZIP), key facts (capital, population, area, currency, calling code) and time zones — plus `bulk_tier` with per-country postal-code counts for the ~115 additional countries served from GeoNames. Call it once if unsure whether a country is covered.

    Annotations the server declares

    • title: Covered countries
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • nearby_placesList localities around a latitude/longitude, nearest first, each with `distance_km`.No findings

    Why it is in this group

    • The description's first verb is "list": a word for reading.
    Description, as the server wrote it
    List localities around a latitude/longitude, nearest first, each with `distance_km`. Use it for "what ZIP codes are near…", "postal codes within 10 km of…", or to resolve coordinates to the closest postal code (the first result). Distances are to the locality centroid from the source data, not to a boundary.

    Annotations the server declares

    • title: Nearby postal codes
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_placesFind localities by name, city name, or the beginning of a postal code.No findings

    Why it is in this group

    • The name "search_places" says "search": a word for reading.
    Description, as the server wrote it
    Find localities by name, city name, or the beginning of a postal code. Use this when the user gives a place name and wants its postal code(s), or has a partial code. Results are ranked exact-name-first, then by population. Returns the same full records as lookup_postal_code. Restrict with `country` whenever it is known — names repeat across countries and states (there are many Springfields). With a non-curated `country` (GB, CA, JP…), searches the bulk GeoNames tier by place name or postal-code prefix.

    Annotations the server declares

    • title: Place search
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http postal-codes https://api.codepostalpro.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__postal-codes__search_places",
      "mcp__postal-codes__nearby_places",
      "mcp__postal-codes__get_region",
      "mcp__postal-codes__get_group",
      "mcp__postal-codes__area_code_lookup",
      "mcp__postal-codes__list_countries"
    ],
    "ask": [
      "mcp__postal-codes__lookup_postal_code"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as postal-codes. Review it before you use it.