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
7 tools: 1 change things and 6 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads6Claude Code: allow: see these tools
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/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "lookup_postal_code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_postal_code" says "lookup": a word for reading.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "lookup_postal_code" says "lookup": a word for reading.
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/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .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.