unesco-heritage-mcp-server
Server Details
Search UNESCO World Heritage sites, intangible heritage, biosphere reserves, and Global Geoparks.
- Status
- Healthy
- Uptime
- 99.5% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/unesco-heritage-mcp-server
- GitHub Stars
- 2
- Server Listing
- unesco-heritage-mcp-server
TDQS
Scored across 9 tools
Each tool targets a distinct UNESCO dataset (World Heritage sites, biosphere reserves, geoparks, intangible heritage) and the get/search split is applied consistently, so no two tools overlap. An agent can unambiguously pick the right dataset and the right operation.
All tools share the unesco_ prefix and follow a clean verb_noun pattern (get_*, search_*, list_reference), with singular/plural handled sensibly (get_site vs search_sites). The convention is fully predictable.
Nine tools cover four datasets, each with a search and a full-record get, plus one reference tool for controlled vocabulary. This is a tightly scoped, well-earned set with no filler.
For a read-only reference server, the surface is complete: search plus full-record retrieval for every dataset, cross-linking (e.g. intangible heritage to World Heritage sites), and a vocabulary/coverage tool. No obvious read operation is missing and there are no dead ends.
Available Tools
9 toolsunesco_get_biosphere_reserveGet biosphere reserveARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mab_id | Yes | The reserve's mab_id, from unesco_search_biosphere_reserves. Case and accents are ignored. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | The reserve's UNESCO page URL. |
| name | No | English name. |
| sids | No | True when the reserve is in a Small Island Developing State. |
| error | No | Present when the call failed. Absent on success. |
| mab_id | No | Biosphere reserve id (mab_id). |
| country | No | Country name as UNESCO records it. |
| regions | No | UNESCO regions the reserve belongs to. |
| sources | No | Datasets this response was built from. |
| website | No | The reserve's own website, when recorded. |
| latitude | No | Representative point latitude. |
| longitude | No | Representative point longitude. |
| population | No | Resident population by zone, as recorded; 0 can mean none or unreported, and zone sums do not always match the total. |
| country_code | No | ISO 3166-1 alpha-2 code of the reserve country. |
| introduction | No | UNESCO's introduction to the reserve. |
| area_hectares | No | Areas in hectares (unit inferred; undocumented upstream), as recorded — the server computes no totals, and zone sums do not always match the totals. |
| transboundary | No | True for a transboundary reserve; each participating country has its own mab_id. |
| renaming_years | No | Years the reserve was renamed; empty when none. |
| extension_years | No | Years the reserve was extended; empty when none. |
| designation_year | No | Year of designation. |
| regional_network | No | MAB regional network, when the reserve belongs to one. |
| periodic_review_years | No | Years of periodic review; empty when none recorded. |
| ecological_characteristics | No | Ecological characteristics, when recorded. |
| socio_economic_characteristics | No | Socio-economic characteristics, when recorded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description goes beyond that by disclosing the substantive content of the record (zones in hectares, population by zone, designation/extension/renaming/review years, coordinates), which tells the agent what depth of data it gets in one call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the verb and resource before the payload inventory. The middle field list is dense but each item is informative; it stops short of 5 only because the enumeration could be trimmed given an output schema already exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full annotation coverage and an output schema, nothing an agent needs to invoke it correctly is missing. The record-content enumeration is arguably redundant with the output schema, but it does no harm and aids routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage on a single parameter, the schema already carries the semantics (source tool, case/accent insensitivity, length bounds). The description adds no extra syntax or format guidance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch one biosphere reserve's full record by mab_id') and enumerates the record's scope, making it trivially distinguishable from siblings like unesco_get_geopark or unesco_get_site. An agent can select it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a lookup-by-identifier pattern and the schema notes mab_id comes 'from unesco_search_biosphere_reserves', which hints at the search-then-fetch flow. However, the description itself states no explicit when-to-use condition, no when-not, and does not name any alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unesco_get_geoparkGet UNESCO Global GeoparkARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ugg_id | Yes | The geopark's ugg_id, such as EUFR10, from unesco_search_geoparks. Case and surrounding whitespace are ignored. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | The geopark's UNESCO page URL. |
| name | No | English name. |
| error | No | Present when the call failed. Absent on success. |
| ugg_id | No | UNESCO Global Geopark id (ugg_id). |
| sources | No | Datasets this response was built from. |
| website | No | The geopark's own website, when recorded. |
| latitude | No | Latitude of the geopark's point. |
| countries | No | Country display names aligned with country_codes. |
| longitude | No | Longitude of the geopark's point. |
| population | No | Resident population, as recorded; absent when UNESCO records none, and 0 can mean unreported. |
| description | No | UNESCO's description of the geopark. |
| introduction | No | UNESCO's introduction to the geopark. |
| area_hectares | No | Area in hectares, as recorded. |
| country_codes | No | ISO 3166-1 alpha-2 codes of the geopark's countries; a transnational geopark lists each. |
| transnational | No | True when the geopark spans more than one country. |
| designation_year | No | Designation year; geoparks UNESCO recognized before the Global Geopark label existed are dated 2015, the year it was created. |
| sustaining_local_communities | No | UNESCO's account of how the geopark sustains its local communities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety/behavior profile is covered. The description's enumeration of record contents (countries, designation year, coordinates, etc.) is useful scoping but largely duplicates what the output schema already defines, and it says nothing about errors for a missing/invalid ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and key, and a single sentence with no filler. The trailing field enumeration is somewhat list-heavy and overlaps the output schema, but it stays readable and earns its place as a scope signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and an output schema defining return fields, the description only needs to convey what the tool fetches and by what key, which it does. The main omission is that it doesn't mention what happens on an unknown ugg_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single ugg_id parameter is fully documented in the schema (pattern, max length, case/whitespace handling, example EUFR10). The description adds only 'by ugg_id' with no extra syntax or format detail, so the baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch) and resource (one UNESCO Global Geopark's full record) with the exact lookup key (ugg_id). It is unambiguous against siblings like unesco_get_site or unesco_get_biosphere_reserve, which return different resource types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Fetch one ... by ugg_id' implies this is the retrieval-by-identifier counterpart to unesco_search_geoparks, but the description never names the search sibling or states the precondition (you must already have an ID). Only the input schema points at unesco_search_geoparks as the ID source, so the routing guidance is implicit rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unesco_get_intangible_heritage_elementGet intangible heritage elementARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ich_ref | Yes | 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. | |
| description_language | No | 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 publishes none in French, the English one is returned with description_language en, and notice says so. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | The element's UNESCO page URL. |
| list | No | The list the element is inscribed on: Representative List, Urgent Safeguarding List, or Register of Good Safeguarding Practices. |
| name | No | English name. |
| error | No | Present when the call failed. Absent on success. |
| image | No | Main image with its caption and credit, when UNESCO lists one. |
| notice | No | That the description is not in the requested description_language, and why. |
| ich_ref | No | Intangible heritage element reference (ich_ref). |
| name_fr | No | French name. |
| sources | No | Datasets this response was built from. |
| concepts | No | Primary UNESCO concept terms; empty for the few elements without any. |
| countries | No | Country display names aligned with country_codes. |
| description | No | UNESCO's description of the element: in English, or in the language description_language names. |
| country_codes | No | ISO 3166-1 alpha-2 codes of the countries sharing the element, as UNESCO lists them. |
| multinational | No | True when more than one country shares the element. |
| inscribed_year | No | Inscription year. Elements dated 2008 were incorporated into the Representative List that year after an earlier proclamation. |
| concepts_secondary | No | Secondary UNESCO concept terms. |
| description_language | No | Language of description, present when the description_language input was set: the requested language, or en when UNESCO publishes no description in it. |
| world_heritage_sites | No | World Heritage sites UNESCO links to the element; empty when none are linked. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real value by enumerating the record's contents (list, countries, inscription year, concept terms, linked World Heritage sites, image with caption/copyright) and by disclosing the French fallback: when no French description exists, English is returned with description_language en and a notice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The verb and identifier are front-loaded in the first clause, followed by a content enumeration and one sentence on the language parameter. Slightly list-heavy, but every clause earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description helpfully previews them and covers the language fallback edge case. For a two-parameter get-by-id tool with rich annotations and schema, this is essentially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both ich_ref and description_language are fully documented in the schema, establishing the baseline of 3. The description only restates the description_language=fr behavior without adding syntax or format detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch) and resource (one Intangible Cultural Heritage element's full record) keyed by ich_ref. It is clearly distinguishable from the sibling search tools (unesco_search_intangible_heritage) and from the other get_* tools, each of which targets a different UNESCO registry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and the 'by ich_ref' framing, and the schema notes the ref comes from unesco_search_intangible_heritage. However, the description itself never states when to prefer this over alternatives or any prerequisites, leaving the routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unesco_get_siteGet World Heritage siteARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id_no | Yes | 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 | No | 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 site has 758 components. | |
| description_language | No | 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 is returned with description_language en, and notice says so. The statement of Outstanding Universal Value is English only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The max_components applied: the request, or the per-call cap of 1000 when it was larger. |
| url | No | The site's UNESCO page URL. |
| name | No | English name. |
| error | No | Present when the call failed. Absent on success. |
| id_no | No | World Heritage id_no. |
| image | No | Main image with its credit, when UNESCO lists one. |
| names | No | Names in the other UNESCO languages, each present when UNESCO records it. |
| shown | No | Components listed. |
| notice | No | 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 | No | UNESCO region. |
| states | No | States Parties as UNESCO names them. |
| sources | No | Datasets this response was built from. |
| category | No | Cultural, Natural, or Mixed. |
| criteria | No | Inscription criteria in numeral order. |
| latitude | No | Representative point latitude, when recorded. |
| in_danger | No | True when the site is on the List of World Heritage in Danger. |
| longitude | No | Representative point longitude, when recorded. |
| truncated | No | True when the list stops at cap with more readable components left. |
| components | No | Component parts in UNESCO order, up to max_components. |
| description | No | UNESCO's short description, when recorded: in English, or in the language description_language names. |
| area_hectares | No | Area in hectares, when recorded. |
| country_codes | No | ISO 3166-1 alpha-2 codes aligned with states; empty for the one site without a code. |
| justification | No | The statement of Outstanding Universal Value, in English (UNESCO publishes no translation), when recorded. |
| transboundary | No | True when the site spans more than one State Party. |
| inscribed_year | No | Year of inscription. |
| secondary_years | No | Later years UNESCO's secondary dates list for the site after inscription; empty when none. |
| components_total | No | UNESCO's component count for the site. |
| danger_listed_year | No | Year of the site's current Danger-list entry, when in danger. |
| components_unparsed | No | Entries of UNESCO's component list that could not be read and are omitted; 0 normally. |
| description_language | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered. The description adds genuine behavioral context beyond that: the criterion (vi) value is flagged as inferred, the language fallback semantics, and the fact that the statement of Outstanding Universal Value is English-only. Pagination/truncation behavior is disclosed in the schema rather than here, which keeps this at a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then a dense but purposeful enumeration of the returned record. The three sentences each carry information; the field list is long but it is the substance of the tool, not filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read tool with an output schema and full annotation coverage, the description is more than sufficient. Enumerating return fields is somewhat redundant given the output schema, but it usefully highlights the inferred-criterion marker and English-only OUV caveat an agent should expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id_no, max_components, and description_language are fully documented in the schema itself. The description restates the language option without adding format or edge-case detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch) and resource (one World Heritage site's full record) keyed on id_no, and enumerates the payload contents, which cleanly separates it from the sibling unesco_search_sites and the other unesco_get_* tools for biosphere reserves, geoparks, and intangible heritage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes the usage context (retrieve a single site by identifier, with an option to switch description language) and routes the agent to unesco_search_intangible_heritage with world_heritage_site for linked intangible data. It stops short of explicitly stating when not to use this tool or that id_no must first come from unesco_search_sites, leaving that to the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unesco_list_referenceList UNESCO reference vocabularyARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | 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 alpha-3 codes and counts per dataset, the values of every country input. regions: the five UNESCO regions with codes, the values of the region inputs. intangible_lists: the three intangible heritage lists with acronyms, the values of the list input of unesco_search_intangible_heritage. biosphere_networks: the MAB regional networks with acronyms, the values of the regional_network input of unesco_search_biosphere_reserves. datasets: each dataset with its record count, data date, license, attribution, and coverage notes. | |
| filter | No | 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, so the filter must contain at least one letter or digit and at most 16 distinct words. For example, a country name finds its ISO code. For countries, a two- or three-letter ISO code (or UK) keeps exactly that country, as the country inputs read it, and common former or everyday names such as Turkey, Swaziland, or Holland match too. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| topic | No | The topic listed. |
| notice | No | Guidance when the filter matched no entry. |
| regions | No | Region rows (topic regions). |
| sources | No | Datasets this response was built from. |
| criteria | No | Criteria rows (topic criteria). |
| datasets | No | Dataset rows (topic datasets). |
| countries | No | Country rows sorted by name (topic countries). |
| intangible_lists | No | Intangible heritage list rows (topic intangible_lists). |
| biosphere_networks | No | MAB regional network rows (topic biosphere_networks). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is fully covered. The description's added behavioral content — coverage notes, record counts, licenses, data dates — largely restates the per-topic detail already in the schema enum, adding little that is not already structured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the opening clause, but the long enumeration of the six topic categories largely duplicates the schema enum descriptions and makes the first sentence heavy. The filter sentence is concise and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description still conveys the tool's scope and the filter's purpose. It is essentially complete for a read-only enumerator; the duplication of schema detail is the main redundancy rather than an omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both topic and filter are documented in exhaustive detail in the schema itself. The description adds only a single illustrative filter example (country name → code) beyond what the schema already explains, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (reference vocabulary other unesco_ tools accept), and enumerates exactly what the six topics contain. An agent can immediately distinguish this lookup/support tool from the get_* and search_* siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The framing 'the vocabulary the other unesco_ tools accept' clearly positions this as the tool to consult to discover valid values (criteria, countries, regions) before calling the search/get tools, and the filter example shows narrowing by country name. It stops short of an explicit 'call this before X / not for Y' routing statement, so it is clear context rather than full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unesco_search_biosphere_reservesSearch biosphere reservesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | Only reserves within radius_km of this point. Every reserve has coordinates. | |
| sids | No | true: only reserves in Small Island Developing States. false: only reserves elsewhere. | |
| sort | No | 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. | |
| limit | No | 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. | |
| query | No | 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 contain at least one letter or digit and at most 16 distinct words; no phrases, operators, or fuzzy matching. For an ecosystem, use a habitat word such as mangrove, wetland, or alpine. | |
| cursor | No | Opaque continuation cursor from the previous call's next_cursor. Pass it with the same filters and sort to fetch the next page. | |
| region | No | 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. | |
| country | No | 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_list_reference (topic countries). | |
| designated_to | No | Latest designation year, inclusive. | |
| transboundary | No | true: only transboundary reserves (one row per participating country). false: only single-country reserves. | |
| designated_from | No | Earliest designation year, inclusive. | |
| regional_network | No | MAB regional network, by full name or acronym (AfriMAB, ArabMAB, EABRN, EuroMAB, IberoMAB, SACAM, SeaBRnet), any case. A few reserves belong to no network. | |
| include_description | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The page size applied: limit, or the per-call cap of 50 when limit was larger. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of results on this page. |
| facets | No | Facet counts over the whole match, not just this page. |
| notice | No | Guidance on the result: why nothing matched, caveats, or how to continue paging. |
| sources | No | Datasets this response was built from. |
| reserves | No | Matching reserves on this page. |
| truncated | No | True when more results remain beyond this page. |
| totalCount | No | Total matches across all pages. |
| next_cursor | No | Pass as cursor, with the same filters and sort, to fetch the next page. Present when more results remain. |
| applied_filters | No | The filters and sort as the server applied them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world, but the description adds non-obvious behavior: a transboundary reserve appears once per participating country with its own mab_id (so result rows are not one-per-reserve), results page via next_cursor, and facet counts span the whole match rather than the page. It does not mention permissions or rate limits, but those are not the salient risks here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the resource and filter list before the operational caveats. Every sentence carries information, though the keyword-matching rules are repeated in both the description and the query schema, costing a little redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it still usefully flags the duplicate-row behavior and whole-match facet counts. For a 13-parameter, all-optional search tool this is nearly complete; the only gap is guidance on sibling selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (query prefix-matching rules, ISO code formats, sort defaults, limit capping at 50, cursor reuse) is already documented in the schema. The description largely restates those constraints rather than adding new semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (World Network of Biosphere Reserves, UNESCO MAB Programme) and enumerates the supported filter dimensions. It is clearly distinguishable from siblings like unesco_search_geoparks, unesco_search_sites, and unesco_get_biosphere_reserve without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real query-formulation guidance ('there is no biome or ecosystem field, so an ecosystem search is a keyword search such as mangrove or alpine') and the transboundary row semantics, but never says when to pick this tool over unesco_get_biosphere_reserve or the other search_* siblings. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unesco_search_geoparksSearch UNESCO Global GeoparksARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | Only geoparks within radius_km of this point. Every geopark has one point, which the distance measures. | |
| sort | No | 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. | |
| limit | No | 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. | |
| query | No | 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 query must contain at least one letter or digit and at most 16 distinct words; no phrases, operators, or fuzzy matching. For a landform, use a word such as volcanic, karst, or fossil. | |
| cursor | No | Opaque continuation cursor from the previous call's next_cursor. Pass it with the same filters and sort to fetch the next page. | |
| country | No | 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_reference (topic countries). | |
| designated_to | No | Latest designation year, inclusive. | |
| transnational | No | true: only geoparks spanning more than one country. false: only single-country geoparks. | |
| designated_from | No | Earliest designation year, inclusive. | |
| include_description | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The page size applied: limit, or the per-call cap of 50 when limit was larger. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of results on this page. |
| facets | No | Facet counts over the whole match, not just this page. |
| notice | No | Guidance on the result: why nothing matched, caveats, or how to continue paging. |
| sources | No | Datasets this response was built from. |
| geoparks | No | Matching geoparks on this page. |
| truncated | No | True when more results remain beyond this page. |
| totalCount | No | Total matches across all pages. |
| next_cursor | No | Pass as cursor, with the same filters and sort, to fetch the next page. Present when more results remain. |
| applied_filters | No | The filters and sort as the server applied them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world behavior, so the bar is lower, yet the description adds genuinely non-obvious traits: prefix-word matching semantics with name matches ranked first, and the rule that pre-2015 recognized geoparks are dated 2015. It also notes paging via next_cursor and facet counts over the whole match. It does not cover error/rate-limit behavior, but that is a minor omission given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by matching semantics and then pagination, so the structure is sound and every sentence carries information. Some sentences are long and compressed, but none is redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, nested objects, and an output schema present, the description supplies the matching model, ranking, dating convention, pagination, and facet behavior, while correctly leaving return shape to the output schema. Nothing an agent needs to call this correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes beyond it by explaining ranking ('name matches rank first'), the 2015 dating convention for older designations, and that country matches every geopark the country takes part in including transnational ones — semantic meaning not fully derivable from the schema fields alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (UNESCO Global Geoparks) and enumerates the facet axes (keyword, country, designation year range, transnational, distance). An agent can immediately tell this apart from unesco_get_geopark (single-record fetch) and the other unesco_search_* tools by domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context and routes one sub-task to a sibling: 'For a country name, look up its code with unesco_list_reference (topic countries)'. It does not explicitly state when to prefer this over unesco_search_sites or other sibling searches, so it falls short of full when/when-not/alternatives coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unesco_search_intangible_heritageSearch intangible heritageARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | Intangible heritage list: Representative List, Urgent Safeguarding List, or Register of Good Safeguarding Practices (acronyms RL, USL, Art18 accepted). | |
| sort | No | Result order. Default: relevance when query is set, else name. relevance needs query. | |
| limit | No | 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. | |
| query | No | 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 contain at least one letter or digit and at most 16 distinct words; no phrases, operators, or fuzzy matching. | |
| cursor | No | Opaque continuation cursor from the previous call's next_cursor. Pass it with the same filters and sort to fetch the next page. | |
| country | No | 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 (topic countries). | |
| inscribed_to | No | Latest inscription year, inclusive. | |
| multinational | No | true: only elements shared by more than one country. false: only single-country elements. | |
| inscribed_from | No | Earliest inscription year, inclusive. | |
| world_heritage_site | No | 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 Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The page size applied: limit, or the per-call cap of 50 when limit was larger. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of results on this page. |
| facets | No | Facet counts over the whole match, not just this page. |
| notice | No | Guidance on the result: why nothing matched, caveats, or how to continue paging. |
| sources | No | Datasets this response was built from. |
| elements | No | Matching elements on this page. |
| truncated | No | True when more results remain beyond this page. |
| totalCount | No | Total matches across all pages. |
| next_cursor | No | Pass as cursor, with the same filters and sort, to fetch the next page. Present when more results remain. |
| applied_filters | No | The filters and sort as the server applied them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses real behavior: result rows omit the description field, results page via next_cursor, facet counts span the whole match set, name matches rank first, and a limit above 50 is silently served as 50 with a notice. These are non-obvious traits an agent must know to interpret results and avoid paging errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads resource and all filter dimensions, then subsequent sentences cover matching rules, pagination, and the description-field caveat. Dense but every sentence carries information; a small amount of redundancy with the schema keeps it from being maximally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, zero required, an output schema present, and a search tool whose default behavior matters, the description covers matching semantics, defaults, paging, and what is omitted from rows. An agent has everything needed to issue a correct first call and page through results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds matching semantics: country matches every element it shares including multinational ones, world_heritage_site takes a site id_no, and query keywords must match word starts. Most of this restates the schema, so it earns only modest credit above the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Search) plus precise resource (UNESCO's Intangible Cultural Heritage lists) and it enumerates the three lists being searched. It is immediately distinguishable from the sibling unesco_get_intangible_heritage_element, which the description explicitly names as the detail reader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent to named alternatives for adjacent needs: unesco_get_intangible_heritage_element for descriptions, unesco_list_reference to resolve a country name to a code, and unesco_search_sites/unesco_get_site as the source of world_heritage_site ids. There is no explicit when-not-to-use this tool, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unesco_search_sitesSearch World Heritage sitesARead-onlyIdempotentInspect
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), description, or statement of Outstanding Universal Value, and name matches rank first. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | 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 distance sort use the exact distance to the nearest of those points, which distance_km shows rounded to 0.1 km and never above radius_km. | |
| sort | No | 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. | |
| limit | No | 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. | |
| query | No | Keywords; every word must match the start of a word in a site's name (any of six languages), description, or statement of Outstanding Universal Value. Case, accents, and punctuation are ignored, so the query must contain at least one letter or digit and at most 16 distinct words; no phrases, operators, or fuzzy matching. | |
| cursor | No | Opaque continuation cursor from the previous call's next_cursor. Pass it with the same filters and sort to fetch the next page. | |
| region | No | 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). | |
| country | No | 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 (topic countries). | |
| category | No | Site category: Cultural, Natural, or Mixed. | |
| criteria | No | 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, monumental arts, town planning, or landscape design. (iii) A unique or exceptional testimony to a cultural tradition or a civilization, living or vanished. (iv) An outstanding example of a type of building, architectural or technological ensemble, or landscape illustrating significant stages in human history. (v) An outstanding example of traditional human settlement, land use, or sea use representative of a culture or of human interaction with the environment, especially where vulnerable to irreversible change. (vi) Direct association with events, living traditions, ideas, beliefs, or artistic and literary works of outstanding universal significance. (vii) Superlative natural phenomena, or areas of exceptional natural beauty and aesthetic importance. (viii) An outstanding example of a major stage of Earth's history, including the record of life, significant ongoing geological processes, or significant landforms. (ix) An outstanding example of significant ongoing ecological and biological processes in the evolution of ecosystems and communities of plants and animals. (x) The most important natural habitats for in-situ conservation of biological diversity, including those holding threatened species of outstanding universal value. Criterion (vi) is inferred from the statement of Outstanding Universal Value, since UNESCO's criteria fields omit it. | |
| in_danger | No | true: only sites on the List of World Heritage in Danger. false: only sites not on it. Omit for both. | |
| inscribed_to | No | Latest inscription year, inclusive. | |
| transboundary | No | true: only sites shared by more than one State Party. false: only single-State sites. | |
| inscribed_from | No | Earliest inscription year, inclusive. | |
| include_description | No | Set false to leave each row's description out of the response (default true); unesco_get_site returns it. Which sites match, their order, and matched_in are unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The page size applied: limit, or the per-call cap of 50 when limit was larger. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of results on this page. |
| sites | No | Matching sites on this page. |
| facets | No | Facet counts over the whole match, not just this page. |
| notice | No | Guidance on the result: why nothing matched, caveats, or how to continue paging. |
| sources | No | Datasets this response was built from. |
| truncated | No | True when more results remain beyond this page. |
| totalCount | No | Total matches across all pages. |
| next_cursor | No | Pass as cursor, with the same filters and sort, to fetch the next page. Present when more results remain. |
| applied_filters | No | The filters and sort as the server applied them. |
| descriptions_omitted | No | Present when include_description is false: no row carries its description, which unesco_get_site returns. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly, idempotent, openWorld); the description adds substantial behavior beyond that: keyword matching is word-prefix across six languages, name matches rank first, criterion (vi) is inferred and flagged as such, Danger-list data carries only the entry year with no threat factors, and results are a cursor-paged set with facet counts computed over the whole match. These are exactly the non-obvious traits an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the searchable dimensions before drilling into matching rules, so an agent gets the gist in the first clause. It is a single dense multi-sentence paragraph with some duplication of schema content, but nearly every sentence carries operational information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter, nested-object, cursor-paged search with an output schema and full annotations, the description covers the matching semantics, paging model, facet behavior, and the notable criterion (vi) inference caveat. What remains (limit capping, cursor reuse contract, per-field ranges) lives in the schema, so the description is close to complete though not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description largely restates schema-documented semantics (keyword prefix rules, ISO 3166-1 country codes and transboundary matching, criterion (vi) inference) rather than adding syntax or format detail the schema lacks; its one net-new parameter note is the distance-based matching framing. Credit is limited because the schema already carries the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (UNESCO World Heritage List), then enumerates the full filter surface, making it immediately distinguishable from sibling searches (unesco_search_geoparks, unesco_search_biosphere_reserves) and from unesco_get_site. An agent knows exactly which dataset this hits without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong conditional guidance for individual filters (set in_danger to true for the Danger List; country matches every site it shares) and explains sort defaults implicitly via the near/distance and name-ranking notes. It never names an alternative tool or states when NOT to use this one (e.g., when to prefer unesco_get_site for a known site), so it stops short of full when/when-not/alternatives coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- Changed
unesco_get_biosphere_reserve1 field changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `biosphere_reserve_not_found`: No record carries this mab_id, after folding case and diacritics. `snapshot_unavailable`: No MAB snapshot has loaded yet and the Data Hub is unreachable. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `biosphere_reserve_not_found`: No record carries this mab_id, after folding case and diacritics. `snapshot_unavailable`: No MAB snapshot has loaded yet: the Data Hub is unreachable, failing, or rate-limiting (retryable), or it rejected the request or served data this server cannot use (not retryable). Other values are possible when a failure originates below the handler."
- Changed
unesco_get_geopark1 field changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `geopark_not_found`: No record carries this ugg_id, after trimming and uppercasing. `snapshot_unavailable`: No geopark snapshot has loaded yet and the Data Hub is unreachable. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `geopark_not_found`: No record carries this ugg_id, after trimming and uppercasing. `snapshot_unavailable`: No geopark snapshot has loaded yet: the Data Hub is unreachable, failing, or rate-limiting (retryable), or it rejected the request or served data this server cannot use (not retryable). Other values are possible when a failure originates below the handler."
- Changed
unesco_get_intangible_heritage_element5 fields changed- added
Input schema / properties / description_languageAdded value: +{ + "description": "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 publishes none in French, the English one is returned with description_language en, and notice says so.", + "enum": [ + "en", + "fr" + ], + "type": "string" +} - changed
Output schema / properties / description / descriptionPrevious value: -"UNESCO's description of the element."New value: +"UNESCO's description of the element: in English, or in the language description_language names." - added
Output schema / properties / description_languageAdded value: +{ + "description": "Language of description, present when the description_language input was set: the requested language, or en when UNESCO publishes no description in it.", + "enum": [ + "en", + "fr" + ], + "type": "string" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `element_not_found`: No record carries this ich_ref. `snapshot_unavailable`: No intangible heritage snapshot has loaded yet and the Data Hub is unreachable. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `element_not_found`: No record carries this ich_ref. `snapshot_unavailable`: No intangible heritage snapshot has loaded yet: the Data Hub is unreachable, failing, or rate-limiting (retryable), or it rejected the request or served data this server cannot use (not retryable). Other values are possible when a failure originates below the handler." - added
Output schema / properties / noticeAdded value: +{ + "description": "That the description is not in the requested description_language, and why.", + "type": "string" +}
- Changed
unesco_get_site10 fields changed- added
Input schema / properties / description_languageAdded value: +{ + "description": "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 is returned with description_language en, and notice says so. The statement of Outstanding Universal Value is English only.", + "enum": [ + "en", + "fr", + "es", + "ru", + "ar", + "zh" + ], + "type": "string" +} - changed
Input schema / properties / max_components / descriptionPrevious value: -"Maximum component parts to list (0–1000, default 20). 0 omits the list but keeps components_total; the largest site has 758 components."New value: +"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 site has 758 components." - changed
Input schema / properties / max_components / maximumPrevious value: -1000New value: +10000 - changed
Output schema / properties / cap / descriptionPrevious value: -"The max_components that was applied."New value: +"The max_components applied: the request, or the per-call cap of 1000 when it was larger." - changed
Output schema / properties / description / descriptionPrevious value: -"UNESCO's short description, when recorded."New value: +"UNESCO's short description, when recorded: in English, or in the language description_language names." - added
Output schema / properties / description_languageAdded value: +{ + "description": "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.", + "enum": [ + "en", + "fr", + "es", + "ru", + "ar", + "zh" + ], + "type": "string" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `site_not_found`: No record carries this id_no. `snapshot_unavailable`: No World Heritage snapshot has loaded yet and the Data Hub is unreachable. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `site_not_found`: No record carries this id_no. `snapshot_unavailable`: No World Heritage snapshot has loaded yet: the Data Hub is unreachable, failing, or rate-limiting (retryable), or it rejected the request or served data this server cannot use (not retryable). Other values are possible when a failure originates below the handler." - changed
Output schema / properties / justification / descriptionPrevious value: -"The statement of Outstanding Universal Value, when recorded."New value: +"The statement of Outstanding Universal Value, in English (UNESCO publishes no translation), when recorded." - changed
Output schema / properties / notice / descriptionPrevious value: -"How to list more components, or why some are missing."New value: +"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." - changed
Output schema / properties / truncated / descriptionPrevious value: -"True when the component list was capped at max_components."New value: +"True when the list stops at cap with more readable components left."
- Changed
unesco_list_reference1 field changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `snapshot_unavailable`: A dataset the topic reads has not loaded yet and the Data Hub is unreachable. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `snapshot_unavailable`: A dataset the topic reads has not loaded yet: the Data Hub is unreachable, failing, or rate-limiting (retryable), or it rejected the request or served data this server cannot use (not retryable). Other values are possible when a failure originates below the handler."
- Changed
unesco_search_biosphere_reserves6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum results per page (1–50, default 20)."New value: +"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." - changed
Input schema / properties / limit / maximumPrevious value: -50New value: +10000 - changed
Output schema / properties / applied_filters / properties / limit / descriptionPrevious value: -"Page size."New value: +"Page size applied: limit, or 50 when limit was larger." - changed
Output schema / properties / cap / descriptionPrevious value: -"The page size (limit) that was applied."New value: +"The page size applied: limit, or the per-call cap of 50 when limit was larger." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `unknown_country`: country is not a recognized ISO 3166-1 alpha-2 or alpha-3 code, such as a country name or an unassigned code. `invalid_year_range`: designated_from is later than designated_to. `sort_needs_input`: sort relevance without query, or sort distance without near. `cursor_mismatch`: cursor was issued for different filters or sort, or for an earlier data snapshot. `invalid_cursor`: cursor is malformed, or its offset or limit is not a non-negative whole number. `snapshot_unavailable`: No MAB snapshot has loaded yet and the Data Hub is unreachable. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `unknown_country`: country is not a recognized ISO 3166-1 alpha-2 or alpha-3 code, such as a country name or an unassigned code. `invalid_year_range`: designated_from is later than designated_to. `sort_needs_input`: sort relevance without query, or sort distance without near. `cursor_mismatch`: cursor was issued for different filters or sort, or for an earlier data snapshot. `invalid_cursor`: cursor is malformed, or its offset is not a non-negative whole number or its limit not a positive one. `snapshot_unavailable`: No MAB snapshot has loaded yet: the Data Hub is unreachable, failing, or rate-limiting (retryable), or it rejected the request or served data this server cannot use (not retryable). Other values are possible when a failure originates below the handler." - changed
Output schema / properties / reserves / items / properties / distance_km / descriptionPrevious value: -"Distance from the near point in km (present when near is set)."New value: +"Distance from the near point in km, rounded to 0.1 km and never above radius_km (present when near is set)."
- Changed
unesco_search_geoparks6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum results per page (1–50, default 20)."New value: +"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." - changed
Input schema / properties / limit / maximumPrevious value: -50New value: +10000 - changed
Output schema / properties / applied_filters / properties / limit / descriptionPrevious value: -"Page size."New value: +"Page size applied: limit, or 50 when limit was larger." - changed
Output schema / properties / cap / descriptionPrevious value: -"The page size (limit) that was applied."New value: +"The page size applied: limit, or the per-call cap of 50 when limit was larger." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `unknown_country`: country is not a recognized ISO 3166-1 alpha-2 or alpha-3 code, such as a country name or an unassigned code. `invalid_year_range`: designated_from is later than designated_to. `sort_needs_input`: sort relevance without query, or sort distance without near. `cursor_mismatch`: cursor was issued for different filters or sort, or for an earlier data snapshot. `invalid_cursor`: cursor is malformed, or its offset or limit is not a non-negative whole number. `snapshot_unavailable`: No geopark snapshot has loaded yet and the Data Hub is unreachable. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `unknown_country`: country is not a recognized ISO 3166-1 alpha-2 or alpha-3 code, such as a country name or an unassigned code. `invalid_year_range`: designated_from is later than designated_to. `sort_needs_input`: sort relevance without query, or sort distance without near. `cursor_mismatch`: cursor was issued for different filters or sort, or for an earlier data snapshot. `invalid_cursor`: cursor is malformed, or its offset is not a non-negative whole number or its limit not a positive one. `snapshot_unavailable`: No geopark snapshot has loaded yet: the Data Hub is unreachable, failing, or rate-limiting (retryable), or it rejected the request or served data this server cannot use (not retryable). Other values are possible when a failure originates below the handler." - changed
Output schema / properties / geoparks / items / properties / distance_km / descriptionPrevious value: -"Distance from the near point in km (present when near is set)."New value: +"Distance from the near point in km, rounded to 0.1 km and never above radius_km (present when near is set)."
- Changed
unesco_search_intangible_heritage5 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum results per page (1–50, default 20)."New value: +"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." - changed
Input schema / properties / limit / maximumPrevious value: -50New value: +10000 - changed
Output schema / properties / applied_filters / properties / limit / descriptionPrevious value: -"Page size."New value: +"Page size applied: limit, or 50 when limit was larger." - changed
Output schema / properties / cap / descriptionPrevious value: -"The page size (limit) that was applied."New value: +"The page size applied: limit, or the per-call cap of 50 when limit was larger." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `unknown_country`: country is not a recognized ISO 3166-1 alpha-2 or alpha-3 code, such as a country name or an unassigned code. `invalid_year_range`: inscribed_from is later than inscribed_to. `sort_needs_input`: sort relevance without query. `cursor_mismatch`: cursor was issued for different filters or sort, or for an earlier data snapshot. `invalid_cursor`: cursor is malformed, or its offset or limit is not a non-negative whole number. `snapshot_unavailable`: No intangible heritage snapshot has loaded yet and the Data Hub is unreachable. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `unknown_country`: country is not a recognized ISO 3166-1 alpha-2 or alpha-3 code, such as a country name or an unassigned code. `invalid_year_range`: inscribed_from is later than inscribed_to. `sort_needs_input`: sort relevance without query. `cursor_mismatch`: cursor was issued for different filters or sort, or for an earlier data snapshot. `invalid_cursor`: cursor is malformed, or its offset is not a non-negative whole number or its limit not a positive one. `snapshot_unavailable`: No intangible heritage snapshot has loaded yet: the Data Hub is unreachable, failing, or rate-limiting (retryable), or it rejected the request or served data this server cannot use (not retryable). Other values are possible when a failure originates below the handler."
- Changed
unesco_search_sites8 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum results per page (1–50, default 20)."New value: +"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." - changed
Input schema / properties / limit / maximumPrevious value: -50New value: +10000 - changed
Input schema / properties / near / descriptionPrevious value: -"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. distance_km and the distance sort use the nearest of those points."New value: +"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 distance sort use the exact distance to the nearest of those points, which distance_km shows rounded to 0.1 km and never above radius_km." - changed
Output schema / properties / applied_filters / properties / limit / descriptionPrevious value: -"Page size."New value: +"Page size applied: limit, or 50 when limit was larger." - changed
Output schema / properties / cap / descriptionPrevious value: -"The page size (limit) that was applied."New value: +"The page size applied: limit, or the per-call cap of 50 when limit was larger." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `unknown_country`: country is not a recognized ISO 3166-1 alpha-2 or alpha-3 code, such as a country name or an unassigned code. `invalid_year_range`: inscribed_from is later than inscribed_to. `sort_needs_input`: sort relevance without query, or sort distance without near. `cursor_mismatch`: cursor was issued for different filters or sort, or for an earlier data snapshot. `invalid_cursor`: cursor is malformed, or its offset or limit is not a non-negative whole number. `snapshot_unavailable`: No World Heritage snapshot has loaded yet and the Data Hub is unreachable, erroring, or rate-limiting. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `unknown_country`: country is not a recognized ISO 3166-1 alpha-2 or alpha-3 code, such as a country name or an unassigned code. `invalid_year_range`: inscribed_from is later than inscribed_to. `sort_needs_input`: sort relevance without query, or sort distance without near. `cursor_mismatch`: cursor was issued for different filters or sort, or for an earlier data snapshot. `invalid_cursor`: cursor is malformed, or its offset is not a non-negative whole number or its limit not a positive one. `snapshot_unavailable`: No World Heritage snapshot has loaded yet: the Data Hub is unreachable, failing, or rate-limiting (retryable), or it rejected the request or served data this server cannot use (not retryable). Other values are possible when a failure originates below the handler." - changed
Output schema / properties / sites / items / properties / distance_km / descriptionPrevious value: -"Distance in km from the near point to the nearest of the site's representative point and its components (present when near is set)."New value: +"Distance in km from the near point to the nearest of the site's representative point and its components, rounded to 0.1 km and never above radius_km (present when near is set)." - changed
Output schema / properties / sites / items / properties / nearest_component / descriptionPrevious value: -"The component distance_km is measured to; present when near is set and a component is nearer than the representative point at distance_km precision (0.1 km; a tie keeps the representative point), or the site has no representative point."New value: +"The component distance_km is measured to; present when near is set and a component is strictly nearer than the representative point before rounding (an exact tie keeps the representative point), or the site has no representative point."
9 tool updates
- First observed
unesco_get_biosphere_reserve - First observed
unesco_get_geopark - First observed
unesco_get_intangible_heritage_element - First observed
unesco_get_site - First observed
unesco_list_reference - First observed
unesco_search_biosphere_reserves - First observed
unesco_search_geoparks - First observed
unesco_search_intangible_heritage - First observed
unesco_search_sites
Related MCP Connectors
Read-only MCP for heritage travel: search 500+ UNESCO destinations by region and intent.
Read-only OpenHeritage search for genealogy and cultural heritage records.
Search GBIF species taxonomy, occurrence records, datasets, and publishers.
Search GBIF species taxonomy, occurrence records, datasets, and publishers.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables searching for national-standard scenic areas, rural tourism villages, accommodations (including restaurants, guesthouses, and starred hotels), and outbound travel agencies, with filtering by region, category, and business status.1-
- AlicenseNot gradedqualityBmaintenanceEnables access to the National Register of Immovable Cultural Heritage of Georgia (the country), allowing searches for heritage objects by name, place, category, and status, retrieval of full object details with coordinates and listing decrees, discovery of nearby monuments, and browsing of registered museums with contact information.9 npmMIT
- FlicenseNot gradedqualityDmaintenanceDiscovers Korean national heritage, resolves designation numbers, and creates heritage-focused trip plans using official National Heritage Administration data.-
- AlicenseAqualityAmaintenanceRemote MCP server for the UNESCO Institute for Statistics (UIS): ~5,000 indicators on education, science/R&D, culture and communication by country, region and year — hosted, nothing to install, no API key, with source URL, data release, retrieval timestamp and licence on every answer.5282 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.