# unesco-heritage-mcp-server (remote · unesco-heritage.caseyjhand.com)

Search UNESCO World Heritage sites, intangible heritage, biosphere reserves, and Global Geoparks.

- Trust score: 88/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `unesco-heritage.caseyjhand.com`: 88/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-unesco-heritage-mcp-server/unesco-heritage.md), [page](https://verifymcp.io/servers/cyanheads-unesco-heritage-mcp-server/unesco-heritage)
- npm · `@cyanheads/unesco-heritage-mcp-server`: 39/100, [markdown](https://verifymcp.io/servers/cyanheads-unesco-heritage-mcp-server/cyanheads-unesco-heritage-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-unesco-heritage-mcp-server/cyanheads-unesco-heritage-mcp-server)

## Channel facts

- Endpoint: `https://unesco-heritage.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.3.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-11-05.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 73/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 4501 tokens (~450/item across 10 items; 9 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **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.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the unesco-heritage-mcp-server server?

unesco-heritage-mcp-server is a hosted endpoint at https://unesco-heritage.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http cyanheads-unesco-heritage-mcp-server 'https://unesco-heritage.caseyjhand.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "cyanheads-unesco-heritage-mcp-server": {
      "url": "https://unesco-heritage.caseyjhand.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "cyanheads-unesco-heritage-mcp-server": {
      "type": "http",
      "url": "https://unesco-heritage.caseyjhand.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.cyanheads-unesco-heritage-mcp-server]
url = "https://unesco-heritage.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-unesco-heritage-mcp-server": {
      "type": "remote",
      "url": "https://unesco-heritage.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-unesco-heritage-mcp-server --url 'https://unesco-heritage.caseyjhand.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-unesco-heritage-mcp-server:
    url: "https://unesco-heritage.caseyjhand.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "cyanheads-unesco-heritage-mcp-server": {
      "Transport": "http",
      "Url": "https://unesco-heritage.caseyjhand.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add cyanheads-unesco-heritage-mcp-server -t streamable-http -u 'https://unesco-heritage.caseyjhand.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-unesco-heritage-mcp-server": {
      "type": "http",
      "url": "https://unesco-heritage.caseyjhand.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-11-05 (score 88, 0)

- [security] Stability: 0.97 → pass

### 2026-11-04 (score 88, +2)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “unesco_search_sites” rewrote its description, which is the text the model reads
- [functional] First check of Schema quality: 100
- [functional] Stability: pass → 0.97
- [functional] New resource “unesco-heritage-guide”
- [functional] Server version: 0.2.1 → 0.3.0
- [cosmetic] “unesco_search_sites” reworded the description of “query”
- [cosmetic] “unesco_search_sites” reworded the description of “include_description”
- [cosmetic] “unesco_list_reference” reworded the description of “topic”

### 2026-11-01 (score 86, 0)

- [security] Stability: 0.97 → pass

### 2026-10-31 (score 86, +1)

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

### 2026-10-29 (score 85, +1)

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

### 2026-10-27 (score 84, +1)

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

### 2026-10-25 (score 83, +1)

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

### 2026-10-22 (score 82, +1)

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

## MCP tools (9)

### `unesco_search_sites` (~1019 tokens)

Search World Heritage sites

Search the UNESCO World Heritage List by keyword, country, category (Cultural, Natural, Mixed), region, inscription criteria (i)–(x), inscription year range, Danger-list status, transboundary status, or distance from a point. Every keyword must appear at the start of a word in a site's name (any of six languages), component names, description, or statement of Outstanding Universal Value; name matches rank first, then component matches, which list the components that matched. A country is an ISO 3166-1 alpha-2 or alpha-3 code and matches every site it shares, transboundary sites included. Set in_danger to true for the List of World Heritage in Danger; the data records the year of each site's current Danger-list entry but no threat factors. Criterion (vi) is inferred from each site's statement of Outstanding Universal Value and marked as inferred. Results page with next_cursor and carry facet counts over the whole match.

Input parameters:

- `category` (string): Site category: Cultural, Natural, or Mixed.
- `country` (string): ISO 3166-1 alpha-2 or alpha-3 code, any case (FR, FRA). Matches every site the country takes part in, transboundary sites included. For a country name, look up its code with unesco_list_reference (to…
- `criteria` (array): Inscription criteria a site must all carry. (i) A masterpiece of human creative genius. (ii) An important interchange of human values over time or within a cultural area, in architecture, technology,…
- `cursor` (string): Opaque continuation cursor from the previous call's next_cursor. Pass it with the same filters and sort to fetch the next page.
- `in_danger` (boolean): true: only sites on the List of World Heritage in Danger. false: only sites not on it. Omit for both.
- `include_description` (boolean): Set false to leave each row's description out of the response (default true); unesco_get_site returns it. Which sites match, their order, matched_in, and matched_components are unchanged.
- `inscribed_from` (integer): Earliest inscription year, inclusive.
- `inscribed_to` (integer): Latest inscription year, inclusive.
- `limit` (integer): Maximum results per page (default 20). A page holds at most 50: a larger limit, up to 10000, is served as 50 and notice says so.
- `near` (object): Only sites within radius_km of this point: a site matches when its representative point or any of its components lies within the radius, and a site with neither never matches. The match and the dista…
- `query` (string): Keywords; every word must match the start of a word in a site's name (any of six languages), component names, description, or statement of Outstanding Universal Value. Case, accents, and punctuation…
- `region` (string): UNESCO region: Africa, Arab States, Asia and the Pacific, Europe and North America, or Latin America and the Caribbean (codes AFR, ARB, APA, EUR, LAC accepted).
- `sort` (string): Result order. Default: relevance when query is set, else distance when near is set, else name. relevance needs query; distance needs near. Absent areas and Danger years sort last.
- `transboundary` (boolean): true: only sites shared by more than one State Party. false: only single-State sites.

Output parameters:

- `applied_filters` (object): The filters and sort as the server applied them.
- `cap` (number): The page size applied: limit, or the per-call cap of 50 when limit was larger.
- `descriptions_omitted` (boolean): Present when include_description is false: no row carries its description, which unesco_get_site returns.
- `error` (object): Present when the call failed. Absent on success.
- `facets` (object): Facet counts over the whole match, not just this page.
- `next_cursor` (string): Pass as cursor, with the same filters and sort, to fetch the next page. Present when more results remain.
- `notice` (string): Guidance on the result: why nothing matched, caveats, or how to continue paging.
- `shown` (number): Number of results on this page.
- `sites` (array): Matching sites on this page.
- `sources` (array): Datasets this response was built from.
- `totalCount` (number): Total matches across all pages.
- `truncated` (boolean): True when more results remain beyond this page.

### `unesco_get_site` (~309 tokens)

Get World Heritage site

Fetch one World Heritage site's full record by id_no: its description, statement of Outstanding Universal Value, each inscription criterion with its meaning (criterion (vi) marked as inferred), States Parties, coordinates, area, inscription and later years, Danger-list year, component parts, names in six languages, and the main image with its copyright credit. description_language returns UNESCO's French, Spanish, Russian, Arabic, or Chinese description instead of the English one. Intangible heritage UNESCO links to the site is listed by unesco_search_intangible_heritage with world_heritage_site.

Input parameters:

- `description_language` (string): Language of the description UNESCO publishes for the site: en, fr, es, ru, ar, or zh, in any case. Unset returns the English description. When UNESCO publishes none in that language, the English one…
- `id_no` (string, required): The site's World Heritage id_no, from unesco_search_sites. A number, a digit string, or the site's whc.unesco.org/en/list/{id} page URL.
- `max_components` (integer): Maximum component parts to list (default 20). One call lists at most 1000: a larger value, up to 10000, is served as 1000 and notice says so. 0 omits the list but keeps components_total; the largest…

Output parameters:

- `area_hectares` (number): Area in hectares, when recorded.
- `cap` (number): The max_components applied: the request, or the per-call cap of 1000 when it was larger.
- `category` (string): Cultural, Natural, or Mixed.
- `components` (array): Component parts in UNESCO order, up to max_components.
- `components_total` (number): UNESCO's component count for the site.
- `components_unparsed` (number): Entries of UNESCO's component list that could not be read and are omitted; 0 normally.
- `country_codes` (array): ISO 3166-1 alpha-2 codes aligned with states; empty for the one site without a code.
- `criteria` (array): Inscription criteria in numeral order.
- `danger_listed_year` (number): Year of the site's current Danger-list entry, when in danger.
- `description` (string): UNESCO's short description, when recorded: in English, or in the language description_language names.
- `description_language` (string): Language of description, present when the description_language input was set and a description is returned: the requested language, or en when UNESCO publishes no description in it.
- `error` (object): Present when the call failed. Absent on success.
- `id_no` (string): World Heritage id_no.
- `image` (object): Main image with its credit, when UNESCO lists one.
- `in_danger` (boolean): True when the site is on the List of World Heritage in Danger.
- `inscribed_year` (number): Year of inscription.
- `justification` (string): The statement of Outstanding Universal Value, in English (UNESCO publishes no translation), when recorded.
- `latitude` (number): Representative point latitude, when recorded.
- `longitude` (number): Representative point longitude, when recorded.
- `name` (string): English name.
- `names` (object): Names in the other UNESCO languages, each present when UNESCO records it.
- `notice` (string): That max_components was above the per-call cap, that the description is not in the requested description_language, how to list more components, or why some are missing.
- `region` (string): UNESCO region.
- `secondary_years` (array): Later years UNESCO's secondary dates list for the site after inscription; empty when none.
- `shown` (number): Components listed.
- `sources` (array): Datasets this response was built from.
- `states` (array): States Parties as UNESCO names them.
- `transboundary` (boolean): True when the site spans more than one State Party.
- `truncated` (boolean): True when the list stops at cap with more readable components left.
- `url` (string): The site's UNESCO page URL.

### `unesco_search_intangible_heritage` (~563 tokens)

Search intangible heritage

Search UNESCO's Intangible Cultural Heritage lists — the Representative List, the Urgent Safeguarding List, and the Register of Good Safeguarding Practices — by keyword, country, list, inscription year range, multinational status, or linked World Heritage site. Every keyword must appear at the start of a word in an element's English or French name, its UNESCO concept terms, or its description, and name matches rank first. A country is an ISO 3166-1 alpha-2 or alpha-3 code and matches every element it shares, multinational elements included. world_heritage_site takes a site's id_no and lists the elements UNESCO links to it. Rows omit the description; read it with unesco_get_intangible_heritage_element. Results page with next_cursor and carry facet counts over the whole match.

Input parameters:

- `country` (string): ISO 3166-1 alpha-2 or alpha-3 code, any case (FR, FRA). Matches every element the country shares, multinational elements included. For a country name, look up its code with unesco_list_reference (top…
- `cursor` (string): Opaque continuation cursor from the previous call's next_cursor. Pass it with the same filters and sort to fetch the next page.
- `inscribed_from` (integer): Earliest inscription year, inclusive.
- `inscribed_to` (integer): Latest inscription year, inclusive.
- `limit` (integer): Maximum results per page (default 20). A page holds at most 50: a larger limit, up to 10000, is served as 50 and notice says so.
- `list` (string): Intangible heritage list: Representative List, Urgent Safeguarding List, or Register of Good Safeguarding Practices (acronyms RL, USL, Art18 accepted).
- `multinational` (boolean): true: only elements shared by more than one country. false: only single-country elements.
- `query` (string): Keywords; every word must match the start of a word in an element's English or French name, its UNESCO concept terms, or its description. Case, accents, and punctuation are ignored, so the query must…
- `sort` (string): Result order. Default: relevance when query is set, else name. relevance needs query.
- `world_heritage_site` (string): A World Heritage site's id_no (from unesco_search_sites or unesco_get_site); lists the elements UNESCO links to that site. A number, a digit string, or the site's whc.unesco.org/en/list/{id} page URL.

Output parameters:

- `applied_filters` (object): The filters and sort as the server applied them.
- `cap` (number): The page size applied: limit, or the per-call cap of 50 when limit was larger.
- `elements` (array): Matching elements on this page.
- `error` (object): Present when the call failed. Absent on success.
- `facets` (object): Facet counts over the whole match, not just this page.
- `next_cursor` (string): Pass as cursor, with the same filters and sort, to fetch the next page. Present when more results remain.
- `notice` (string): Guidance on the result: why nothing matched, caveats, or how to continue paging.
- `shown` (number): Number of results on this page.
- `sources` (array): Datasets this response was built from.
- `totalCount` (number): Total matches across all pages.
- `truncated` (boolean): True when more results remain beyond this page.

### `unesco_get_intangible_heritage_element` (~208 tokens)

Get intangible heritage element

Fetch one Intangible Cultural Heritage element's full record by ich_ref: its description, the list it is inscribed on, the countries that share it, its inscription year, UNESCO concept terms, the World Heritage sites UNESCO links to it, its UNESCO page, and the main image with its caption and copyright credit. description_language fr returns UNESCO's French description instead of the English one.

Input parameters:

- `description_language` (string): Language of the description UNESCO publishes for the element: en or fr, in any case; UNESCO publishes element descriptions in no other language. Unset returns the English description. When UNESCO pub…
- `ich_ref` (string, required): The element's ich_ref, from unesco_search_intangible_heritage. A number, a digit string, or the element's ich.unesco.org/en/{RL|USL|Art18}/{ref} page URL.

Output parameters:

- `concepts` (array): Primary UNESCO concept terms; empty for the few elements without any.
- `concepts_secondary` (array): Secondary UNESCO concept terms.
- `countries` (array): Country display names aligned with country_codes.
- `country_codes` (array): ISO 3166-1 alpha-2 codes of the countries sharing the element, as UNESCO lists them.
- `description` (string): UNESCO's description of the element: in English, or in the language description_language names.
- `description_language` (string): Language of description, present when the description_language input was set: the requested language, or en when UNESCO publishes no description in it.
- `error` (object): Present when the call failed. Absent on success.
- `ich_ref` (string): Intangible heritage element reference (ich_ref).
- `image` (object): Main image with its caption and credit, when UNESCO lists one.
- `inscribed_year` (number): Inscription year. Elements dated 2008 were incorporated into the Representative List that year after an earlier proclamation.
- `list` (string): The list the element is inscribed on: Representative List, Urgent Safeguarding List, or Register of Good Safeguarding Practices.
- `multinational` (boolean): True when more than one country shares the element.
- `name` (string): English name.
- `name_fr` (string): French name.
- `notice` (string): That the description is not in the requested description_language, and why.
- `sources` (array): Datasets this response was built from.
- `url` (string): The element's UNESCO page URL.
- `world_heritage_sites` (array): World Heritage sites UNESCO links to the element; empty when none are linked.

### `unesco_search_biosphere_reserves` (~688 tokens)

Search biosphere reserves

Search the World Network of Biosphere Reserves (UNESCO Man and the Biosphere Programme) by keyword, country, region, MAB regional network, designation year range, transboundary or Small Island Developing States status, or distance from a point. Every keyword must appear at the start of a word in the reserve's name, introduction, or ecological or socio-economic description; there is no biome or ecosystem field, so an ecosystem search is a keyword search such as mangrove or alpine. A country is an ISO 3166-1 alpha-2 or alpha-3 code. A transboundary reserve appears once per participating country, each with its own mab_id. Results page with next_cursor and carry facet counts over the whole match.

Input parameters:

- `country` (string): ISO 3166-1 alpha-2 or alpha-3 code, any case (FR, FRA). Matches the reserve's country; a transboundary reserve has one row per participating country. For a country name, look up its code with unesco_…
- `cursor` (string): Opaque continuation cursor from the previous call's next_cursor. Pass it with the same filters and sort to fetch the next page.
- `designated_from` (integer): Earliest designation year, inclusive.
- `designated_to` (integer): Latest designation year, inclusive.
- `include_description` (boolean): Set false to leave each row's introduction out of the response (default true); unesco_get_biosphere_reserve returns it. Which reserves match, their order, and matched_in are unchanged.
- `limit` (integer): Maximum results per page (default 20). A page holds at most 50: a larger limit, up to 10000, is served as 50 and notice says so.
- `near` (object): Only reserves within radius_km of this point. Every reserve has coordinates.
- `query` (string): Keywords; every word must match the start of a word in the reserve's name, introduction, or ecological or socio-economic description. Case, accents, and punctuation are ignored, so the query must con…
- `region` (string): UNESCO region: Africa, Arab States, Asia and the Pacific, Europe and North America, or Latin America and the Caribbean (codes AFR, ARB, APA, EUR, LAC accepted). Matches any of a reserve's regions.
- `regional_network` (string): MAB regional network, by full name or acronym (AfriMAB, ArabMAB, EABRN, EuroMAB, IberoMAB, SACAM, SeaBRnet), any case. A few reserves belong to no network.
- `sids` (boolean): true: only reserves in Small Island Developing States. false: only reserves elsewhere.
- `sort` (string): Result order. Default: relevance when query is set, else distance when near is set, else name. relevance needs query; distance needs near. area_largest orders by total recorded area.
- `transboundary` (boolean): true: only transboundary reserves (one row per participating country). false: only single-country reserves.

Output parameters:

- `applied_filters` (object): The filters and sort as the server applied them.
- `cap` (number): The page size applied: limit, or the per-call cap of 50 when limit was larger.
- `error` (object): Present when the call failed. Absent on success.
- `facets` (object): Facet counts over the whole match, not just this page.
- `next_cursor` (string): Pass as cursor, with the same filters and sort, to fetch the next page. Present when more results remain.
- `notice` (string): Guidance on the result: why nothing matched, caveats, or how to continue paging.
- `reserves` (array): Matching reserves on this page.
- `shown` (number): Number of results on this page.
- `sources` (array): Datasets this response was built from.
- `totalCount` (number): Total matches across all pages.
- `truncated` (boolean): True when more results remain beyond this page.

### `unesco_get_biosphere_reserve` (~105 tokens)

Get biosphere reserve

Fetch one biosphere reserve's full record by mab_id: its introduction, ecological and socio-economic characteristics, core, buffer, and transition areas (terrestrial and marine, in hectares) with resident population by zone, designation, extension, renaming, and periodic-review years, coordinates, and its UNESCO page.

Input parameters:

- `mab_id` (string, required): The reserve's mab_id, from unesco_search_biosphere_reserves. Case and accents are ignored.

Output parameters:

- `area_hectares` (object): Areas in hectares (unit inferred; undocumented upstream), as recorded — the server computes no totals, and zone sums do not always match the totals.
- `country` (string): Country name as UNESCO records it.
- `country_code` (string): ISO 3166-1 alpha-2 code of the reserve country.
- `designation_year` (number): Year of designation.
- `ecological_characteristics` (string): Ecological characteristics, when recorded.
- `error` (object): Present when the call failed. Absent on success.
- `extension_years` (array): Years the reserve was extended; empty when none.
- `introduction` (string): UNESCO's introduction to the reserve.
- `latitude` (number): Representative point latitude.
- `longitude` (number): Representative point longitude.
- `mab_id` (string): Biosphere reserve id (mab_id).
- `name` (string): English name.
- `periodic_review_years` (array): Years of periodic review; empty when none recorded.
- `population` (object): Resident population by zone, as recorded; 0 can mean none or unreported, and zone sums do not always match the total.
- `regional_network` (string): MAB regional network, when the reserve belongs to one.
- `regions` (array): UNESCO regions the reserve belongs to.
- `renaming_years` (array): Years the reserve was renamed; empty when none.
- `sids` (boolean): True when the reserve is in a Small Island Developing State.
- `socio_economic_characteristics` (string): Socio-economic characteristics, when recorded.
- `sources` (array): Datasets this response was built from.
- `transboundary` (boolean): True for a transboundary reserve; each participating country has its own mab_id.
- `url` (string): The reserve's UNESCO page URL.
- `website` (string): The reserve's own website, when recorded.

### `unesco_search_geoparks` (~545 tokens)

Search UNESCO Global Geoparks

Search UNESCO Global Geoparks by keyword, country, designation year range, transnational status, or distance from a point. Every keyword must appear at the start of a word in the geopark's name, introduction, description, or account of how it sustains local communities, and name matches rank first. A country is an ISO 3166-1 alpha-2 or alpha-3 code and matches every geopark it takes part in, transnational geoparks included. Geoparks UNESCO recognized before the Global Geopark label existed are dated 2015, the year it was created. Results page with next_cursor and carry facet counts over the whole match.

Input parameters:

- `country` (string): ISO 3166-1 alpha-2 or alpha-3 code, any case (FR, FRA). Matches every geopark the country takes part in, transnational geoparks included. For a country name, look up its code with unesco_list_referen…
- `cursor` (string): Opaque continuation cursor from the previous call's next_cursor. Pass it with the same filters and sort to fetch the next page.
- `designated_from` (integer): Earliest designation year, inclusive.
- `designated_to` (integer): Latest designation year, inclusive.
- `include_description` (boolean): Set false to leave each row's introduction out of the response (default true); unesco_get_geopark returns it. Which geoparks match, their order, and matched_in are unchanged.
- `limit` (integer): Maximum results per page (default 20). A page holds at most 50: a larger limit, up to 10000, is served as 50 and notice says so.
- `near` (object): Only geoparks within radius_km of this point. Every geopark has one point, which the distance measures.
- `query` (string): Keywords; every word must match the start of a word in the geopark's name, introduction, description, or account of sustaining local communities. Case, accents, and punctuation are ignored, so the qu…
- `sort` (string): Result order. Default: relevance when query is set, else distance when near is set, else name. relevance needs query; distance needs near. area_largest orders by recorded area.
- `transnational` (boolean): true: only geoparks spanning more than one country. false: only single-country geoparks.

Output parameters:

- `applied_filters` (object): The filters and sort as the server applied them.
- `cap` (number): The page size applied: limit, or the per-call cap of 50 when limit was larger.
- `error` (object): Present when the call failed. Absent on success.
- `facets` (object): Facet counts over the whole match, not just this page.
- `geoparks` (array): Matching geoparks on this page.
- `next_cursor` (string): Pass as cursor, with the same filters and sort, to fetch the next page. Present when more results remain.
- `notice` (string): Guidance on the result: why nothing matched, caveats, or how to continue paging.
- `shown` (number): Number of results on this page.
- `sources` (array): Datasets this response was built from.
- `totalCount` (number): Total matches across all pages.
- `truncated` (boolean): True when more results remain beyond this page.

### `unesco_get_geopark` (~110 tokens)

Get UNESCO Global Geopark

Fetch one UNESCO Global Geopark's full record by ugg_id: its countries, designation year, transnational status, area and resident population as recorded, coordinates, UNESCO's introduction and description, its account of how the geopark sustains local communities, its own website, and its UNESCO page.

Input parameters:

- `ugg_id` (string, required): The geopark's ugg_id, such as EUFR10, from unesco_search_geoparks. Case and surrounding whitespace are ignored.

Output parameters:

- `area_hectares` (number): Area in hectares, as recorded.
- `countries` (array): Country display names aligned with country_codes.
- `country_codes` (array): ISO 3166-1 alpha-2 codes of the geopark's countries; a transnational geopark lists each.
- `description` (string): UNESCO's description of the geopark.
- `designation_year` (number): Designation year; geoparks UNESCO recognized before the Global Geopark label existed are dated 2015, the year it was created.
- `error` (object): Present when the call failed. Absent on success.
- `introduction` (string): UNESCO's introduction to the geopark.
- `latitude` (number): Latitude of the geopark's point.
- `longitude` (number): Longitude of the geopark's point.
- `name` (string): English name.
- `population` (number): Resident population, as recorded; absent when UNESCO records none, and 0 can mean unreported.
- `sources` (array): Datasets this response was built from.
- `sustaining_local_communities` (string): UNESCO's account of how the geopark sustains its local communities.
- `transnational` (boolean): True when the geopark spans more than one country.
- `ugg_id` (string): UNESCO Global Geopark id (ugg_id).
- `url` (string): The geopark's UNESCO page URL.
- `website` (string): The geopark's own website, when recorded.

### `unesco_list_reference` (~402 tokens)

List UNESCO reference vocabulary

List the vocabulary the other unesco_ tools accept and the coverage of the underlying datasets: the ten inscription criteria with their meanings and site counts, the countries in each dataset with their ISO alpha-2 and alpha-3 codes and record counts, the five UNESCO regions, the three intangible heritage lists, the MAB regional networks, and each dataset's record count, license, and data date. Set filter to narrow a topic to matching entries, for example a country name to find its code.

Input parameters:

- `filter` (string): Keep only entries whose name or code (a criterion's meaning, a dataset's title) contains every word of this text, each word matching at the start of a word. Case, accents, and punctuation are ignored…
- `topic` (string, required): What to list. criteria: the ten inscription criteria (i)–(x) with meanings and site counts, the values of the criteria input of unesco_search_sites. countries: every country with its ISO alpha-2 and…

Output parameters:

- `biosphere_networks` (array): MAB regional network rows (topic biosphere_networks).
- `countries` (array): Country rows sorted by name (topic countries).
- `criteria` (array): Criteria rows (topic criteria).
- `datasets` (array): Dataset rows (topic datasets).
- `error` (object): Present when the call failed. Absent on success.
- `intangible_lists` (array): Intangible heritage list rows (topic intangible_lists).
- `notice` (string): Names each dataset that could not load and what the answer leaves out for it, then guidance when the filter matched no entry.
- `regions` (array): Region rows (topic regions).
- `sources` (array): Datasets this response was built from.
- `topic` (string): The topic listed.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-unesco-heritage-mcp-server/unesco-heritage#diagnostics

## Score history

- 2026-11-05: 88
- 2026-11-04: 88
- 2026-11-03: 86
- 2026-11-02: 86
- 2026-11-01: 86
- 2026-10-31: 86
- 2026-10-30: 85
- 2026-10-29: 85
- 2026-10-28: 84
- 2026-10-27: 84
- 2026-10-26: 83
- 2026-10-25: 83
- 2026-10-24: 82
- 2026-10-23: 82
- 2026-10-22: 82
- 2026-10-21: 81
- 2026-10-20: 81
- 2026-10-19: 80
- 2026-10-18: 80
- 2026-10-17: 80
- 2026-10-16: 79
- 2026-10-15: 79
- 2026-10-14: 78
- 2026-10-13: 78
- 2026-10-12: 77
- 2026-10-10: 76
- 2026-10-09: 76
- 2026-10-06: 74
- 2026-10-04: 74
- 2026-10-03: 73

## Common questions

### What is the unesco-heritage-mcp-server server?

unesco-heritage-mcp-server is listed in the public MCP registry as io.github.cyanheads/unesco-heritage-mcp-server. Search UNESCO World Heritage sites, intangible heritage, biosphere reserves, and Global Geoparks. This page covers its hosted endpoint (https://unesco-heritage.caseyjhand.com/mcp).

### Is the unesco-heritage-mcp-server server safe to use?

unesco-heritage-mcp-server scores 88 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the unesco-heritage-mcp-server server expose?

unesco-heritage-mcp-server exposes 9 tools: unesco_search_sites, unesco_get_site, unesco_search_intangible_heritage, unesco_get_intangible_heritage_element, unesco_search_biosphere_reserves, and 4 more. Their descriptions and schemas cost roughly 3,949 tokens of context every time the server is loaded.

### Does the unesco-heritage-mcp-server server require authentication?

No. We connected to unesco-heritage-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the unesco-heritage-mcp-server server still maintained?

unesco-heritage-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the unesco-heritage-mcp-server server?

VerifyMCP ran 13 checks on unesco-heritage-mcp-server, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://unesco-heritage.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/unesco-heritage-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-unesco-heritage-mcp-server/unesco-heritage.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-unesco-heritage-mcp-server/unesco-heritage/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/cyanheads-unesco-heritage-mcp-server/unesco-heritage.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-unesco-heritage-mcp-server/unesco-heritage
