Get destination section
Read one named section of a destination’s published page. The experiences section includes all published experience cards in the page’s language.
What it returns
Use section: "overview" for the long description, nullable metaDescription, and legacy overview fields. description falls back to the legacy overview text and is an empty string when neither is published; metaDescription and overview are null when absent.
Use section: "experiences" for { "items": [...] } containing every published experience card in the page language across all audiences. When that language has no cards, the whole list falls back to English, matching the page and HTTP API; each card retains its actual locale. Each card supplies type (the audience code), nullable audience (public kicker or framing copy, not an audience identity), null intent, headline, nullable summary, and locale. Destination intent is reserved for Place-shape compatibility and is always null; internal canonical editorial intent is never published. Empty or unavailable content returns { "items": [] }.
The page displays at most three cards for the selected audience tab. This reader includes every card, including other audiences and cards beyond that display limit. The experiences list is exempt from the usual 20-item list cap; individual strings remain bounded to 4,000 characters. Other sections retain their existing limits. These editorial cards describe ways to experience the destination; they do not establish a live schedule, bookable package, recommendation, price, or availability.
The requested section must be available on the current destination page. Preserve the returned freshness metadata.
For the full current contract and linked context, see the WebMCP manifest and the WebMCP overview.
WebMCP
Input schema
{
"type": "object",
"properties": {
"section": {
"type": "string",
"enum": [
"overview",
"experiences",
"highlights",
"categories",
"places",
"collections",
"activities",
"updates"
]
}
},
"required": [
"section"
],
"additionalProperties": false
}Output schema
{
"type": "object",
"description": "Successful read of the sanitized published page snapshot. Unsupported sections reject the invocation.",
"properties": {
"schemaVersion": {
"const": "1"
},
"pageType": {
"const": "destination"
},
"pageId": {
"type": "string"
},
"locale": {
"type": "string"
},
"canonicalUrl": {
"type": "string"
},
"contentVersion": {
"type": [
"string",
"number",
"null"
]
},
"updatedAt": {
"type": [
"string",
"null"
]
},
"freshness": {
"type": "object",
"properties": {
"contentVersion": {
"type": [
"string",
"number",
"null"
]
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"contentVersion",
"updatedAt"
],
"additionalProperties": false
},
"completeness": {
"const": "page-published-section"
},
"data": {
"description": "The requested published section. Overview includes independent short description and nullable long overview. Experiences is an object with every published page-language card in items (all audiences, no list cap). Other lists remain bounded to 20 items; strings remain bounded.",
"type": [
"object",
"array",
"string",
"null"
],
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
},
"anyOf": [
{
"title": "Overview (section=overview)",
"type": "object",
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string",
"description": "Published long destination description in the page language; empty when absent."
},
"region": {
"type": "string"
},
"type": {
"type": "string"
},
"country": {
"type": [
"object",
"string",
"null"
]
},
"coordinates": {
"type": [
"object",
"array",
"null"
]
},
"sameAs": {
"type": "array",
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
}
},
"placeCount": {
"type": "number"
},
"primaryTaxonomy": {
"type": "array",
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
}
},
"overview": {
"type": [
"string",
"null"
],
"maxLength": 2048,
"description": "Legacy published overview field in the page language; null when absent."
},
"metaDescription": {
"type": [
"string",
"null"
],
"description": "Published search and page meta description in the page language; null when absent."
}
},
"required": [
"code",
"name",
"description",
"metaDescription",
"country",
"region",
"type",
"coordinates",
"sameAs",
"placeCount",
"primaryTaxonomy",
"overview"
],
"additionalProperties": false
},
{
"title": "Complete experiences (section=experiences)",
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"maxLength": 4000
},
"audience": {
"type": [
"string",
"null"
],
"maxLength": 4000
},
"intent": {
"type": "null",
"description": "Reserved Place-compatible field. Destination canonical editorial intent is never public."
},
"headline": {
"type": "string",
"maxLength": 4000
},
"summary": {
"type": [
"string",
"null"
],
"maxLength": 4000
},
"locale": {
"type": "string",
"maxLength": 4000
}
},
"required": [
"type",
"audience",
"intent",
"headline",
"summary",
"locale"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
},
{
"title": "Published list section",
"type": "array",
"maxItems": 20,
"items": {
"description": "Published section records; fields depend on the section and the page projection."
}
},
{
"title": "Published structured section",
"type": "object",
"description": "Named public fields or an items list, such as places.items, location coordinates, opening hours or experience groups.",
"properties": {
"items": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object"
}
}
}
},
{
"title": "Published text section",
"type": "string",
"maxLength": 4000
},
{
"title": "Unavailable published section",
"type": "null"
}
]
}
},
"required": [
"schemaVersion",
"pageType",
"pageId",
"locale",
"canonicalUrl",
"contentVersion",
"updatedAt",
"freshness",
"completeness",
"data"
],
"additionalProperties": false
}const modelContext = document.modelContext;
if (!modelContext) throw new Error("This browser does not expose WebMCP on this page.");
const tool = (await modelContext.getTools()).find((entry) => entry.name === 'get_destination_section');
if (!tool) throw new Error('get_destination_section is not registered for the current page.');
const result = await modelContext.executeTool(tool, {"section": "experiences"});
console.log(result);
Registration is page-scoped. Check getTools() before calling.
HTTP API
Request body schema
{
"type": "object",
"properties": {
"pagePath": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Canonical GoVisit page path supplying this tool's published context; no origin, query or fragment."
},
"section": {
"type": "string",
"enum": [
"overview",
"experiences",
"highlights",
"categories",
"places",
"collections",
"activities",
"updates"
]
}
},
"required": [
"pagePath",
"section"
],
"additionalProperties": false
}Successful response schema
{
"type": "object",
"description": "Successful read of the sanitized published page snapshot. Unsupported sections reject the invocation.",
"properties": {
"schemaVersion": {
"const": "1"
},
"pageType": {
"const": "destination"
},
"pageId": {
"type": "string"
},
"locale": {
"type": "string"
},
"canonicalUrl": {
"type": "string"
},
"contentVersion": {
"type": [
"string",
"number",
"null"
]
},
"updatedAt": {
"type": [
"string",
"null"
]
},
"freshness": {
"type": "object",
"properties": {
"contentVersion": {
"type": [
"string",
"number",
"null"
]
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"contentVersion",
"updatedAt"
],
"additionalProperties": false
},
"completeness": {
"const": "page-published-section"
},
"data": {
"description": "The requested published section. Overview includes independent short description and nullable long overview. Experiences is an object with every published page-language card in items (all audiences, no list cap). Other lists remain bounded to 20 items; strings remain bounded.",
"type": [
"object",
"array",
"string",
"null"
],
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
},
"anyOf": [
{
"title": "Overview (section=overview)",
"type": "object",
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string",
"description": "Published long destination description in the page language; empty when absent."
},
"region": {
"type": "string"
},
"type": {
"type": "string"
},
"country": {
"type": [
"object",
"string",
"null"
]
},
"coordinates": {
"type": [
"object",
"array",
"null"
]
},
"sameAs": {
"type": "array",
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
}
},
"placeCount": {
"type": "number"
},
"primaryTaxonomy": {
"type": "array",
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
}
},
"overview": {
"type": [
"string",
"null"
],
"maxLength": 2048,
"description": "Legacy published overview field in the page language; null when absent."
},
"metaDescription": {
"type": [
"string",
"null"
],
"description": "Published search and page meta description in the page language; null when absent."
}
},
"required": [
"code",
"name",
"description",
"metaDescription",
"country",
"region",
"type",
"coordinates",
"sameAs",
"placeCount",
"primaryTaxonomy",
"overview"
],
"additionalProperties": false
},
{
"title": "Complete experiences (section=experiences)",
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"maxLength": 4000
},
"audience": {
"type": [
"string",
"null"
],
"maxLength": 4000
},
"intent": {
"type": "null",
"description": "Reserved Place-compatible field. Destination canonical editorial intent is never public."
},
"headline": {
"type": "string",
"maxLength": 4000
},
"summary": {
"type": [
"string",
"null"
],
"maxLength": 4000
},
"locale": {
"type": "string",
"maxLength": 4000
}
},
"required": [
"type",
"audience",
"intent",
"headline",
"summary",
"locale"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
},
{
"title": "Published list section",
"type": "array",
"maxItems": 20,
"items": {
"description": "Published section records; fields depend on the section and the page projection."
}
},
{
"title": "Published structured section",
"type": "object",
"description": "Named public fields or an items list, such as places.items, location coordinates, opening hours or experience groups.",
"properties": {
"items": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object"
}
}
}
},
{
"title": "Published text section",
"type": "string",
"maxLength": 4000
},
{
"title": "Unavailable published section",
"type": "null"
}
]
}
},
"required": [
"schemaVersion",
"pageType",
"pageId",
"locale",
"canonicalUrl",
"contentVersion",
"updatedAt",
"freshness",
"completeness",
"data"
],
"additionalProperties": false
}Error response schema
{
"type": "object",
"properties": {
"schemaVersion": {
"const": "1"
},
"completeness": {
"enum": [
"invalid-input",
"not-found",
"unavailable"
]
},
"error": {
"type": "string"
}
},
"required": [
"schemaVersion",
"completeness",
"error"
],
"additionalProperties": false
}Send a JSON POST to https://govisit.ai/api/tools/v1/get_destination_section. See the HTTP API guide for shared conventions.
Use the pathname from an actual canonical GoVisit link, including its language prefix. The sample page path illustrates the shape; replace it with your selected published page. HTTP inputs add pagePath to the browser arguments. No cookies, browser session or inferred location are required. Queries, fragments, origins and cache-refresh flags are rejected. Language comes from the page path.
curl
curl --silent --show-error https://govisit.ai/api/tools/v1/get_destination_section \
-H 'Content-Type: application/json' \
--data '{"pagePath": "/en/destinations/cz/prague/", "section": "overview"}'
JavaScript
const response = await fetch("https://govisit.ai/api/tools/v1/get_destination_section", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"pagePath": "/en/destinations/cz/prague/",
"section": "overview"
})
});
const result = await response.json();
if (!response.ok) throw new Error(`${response.status}: ${result.error || "unavailable"}`);
console.log(result);
Python
import json
from urllib.error import HTTPError
from urllib.request import Request, urlopen
request = Request(
"https://govisit.ai/api/tools/v1/get_destination_section",
data=json.dumps({
"pagePath": "/en/destinations/cz/prague/",
"section": "overview"
}).encode(),
headers={"Content-Type": "application/json"},
method="POST",
)
try:
with urlopen(request) as response:
result = json.load(response)
except HTTPError as error:
result = json.load(error)
raise RuntimeError(f"{error.code}: {result.get('error', 'unavailable')}") from error
print(result)
Successful results match the browser tool's published page projection, including its freshness and scope limits. The adapter uses GoVisit's existing page caches; it does not provide a fresh live availability check. An absent page returns 404; an unsupported section returns 400; unavailable or malformed page context returns 503. See Reliability for errors and shared request limits.
MCP
Tool arguments schema
{
"type": "object",
"properties": {
"pagePath": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Canonical GoVisit page path supplying this tool's published context; no origin, query or fragment."
},
"section": {
"type": "string",
"enum": [
"overview",
"experiences",
"highlights",
"categories",
"places",
"collections",
"activities",
"updates"
]
}
},
"required": [
"pagePath",
"section"
],
"additionalProperties": false
}Structured result schema
{
"type": "object",
"description": "Successful read of the sanitized published page snapshot. Unsupported sections reject the invocation.",
"properties": {
"schemaVersion": {
"const": "1"
},
"pageType": {
"const": "destination"
},
"pageId": {
"type": "string"
},
"locale": {
"type": "string"
},
"canonicalUrl": {
"type": "string"
},
"contentVersion": {
"type": [
"string",
"number",
"null"
]
},
"updatedAt": {
"type": [
"string",
"null"
]
},
"freshness": {
"type": "object",
"properties": {
"contentVersion": {
"type": [
"string",
"number",
"null"
]
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"contentVersion",
"updatedAt"
],
"additionalProperties": false
},
"completeness": {
"const": "page-published-section"
},
"data": {
"description": "The requested published section. Overview includes independent short description and nullable long overview. Experiences is an object with every published page-language card in items (all audiences, no list cap). Other lists remain bounded to 20 items; strings remain bounded.",
"type": [
"object",
"array",
"string",
"null"
],
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
},
"anyOf": [
{
"title": "Overview (section=overview)",
"type": "object",
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string",
"description": "Published long destination description in the page language; empty when absent."
},
"region": {
"type": "string"
},
"type": {
"type": "string"
},
"country": {
"type": [
"object",
"string",
"null"
]
},
"coordinates": {
"type": [
"object",
"array",
"null"
]
},
"sameAs": {
"type": "array",
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
}
},
"placeCount": {
"type": "number"
},
"primaryTaxonomy": {
"type": "array",
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
}
},
"overview": {
"type": [
"string",
"null"
],
"maxLength": 2048,
"description": "Legacy published overview field in the page language; null when absent."
},
"metaDescription": {
"type": [
"string",
"null"
],
"description": "Published search and page meta description in the page language; null when absent."
}
},
"required": [
"code",
"name",
"description",
"metaDescription",
"country",
"region",
"type",
"coordinates",
"sameAs",
"placeCount",
"primaryTaxonomy",
"overview"
],
"additionalProperties": false
},
{
"title": "Complete experiences (section=experiences)",
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"maxLength": 4000
},
"audience": {
"type": [
"string",
"null"
],
"maxLength": 4000
},
"intent": {
"type": "null",
"description": "Reserved Place-compatible field. Destination canonical editorial intent is never public."
},
"headline": {
"type": "string",
"maxLength": 4000
},
"summary": {
"type": [
"string",
"null"
],
"maxLength": 4000
},
"locale": {
"type": "string",
"maxLength": 4000
}
},
"required": [
"type",
"audience",
"intent",
"headline",
"summary",
"locale"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
},
{
"title": "Published list section",
"type": "array",
"maxItems": 20,
"items": {
"description": "Published section records; fields depend on the section and the page projection."
}
},
{
"title": "Published structured section",
"type": "object",
"description": "Named public fields or an items list, such as places.items, location coordinates, opening hours or experience groups.",
"properties": {
"items": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object"
}
}
}
},
{
"title": "Published text section",
"type": "string",
"maxLength": 4000
},
{
"title": "Unavailable published section",
"type": "null"
}
]
}
},
"required": [
"schemaVersion",
"pageType",
"pageId",
"locale",
"canonicalUrl",
"contentVersion",
"updatedAt",
"freshness",
"completeness",
"data"
],
"additionalProperties": false
}Connect a Streamable HTTP MCP client to https://govisit.ai/mcp and call get_destination_section. Use the HTTP API arguments shown above, including the canonical pagePath. Replace example paths with the published page you want to read.
const result = await client.callTool({
name: "get_destination_section",
arguments: {"pagePath": "/en/destinations/cz/prague/", "section": "overview"},
});
if (result.isError) throw new Error(result.content[0]?.text ?? "GoVisit tool call failed");
console.log(result.structuredContent);
Agent Skills
Tool input schema
{
"type": "object",
"properties": {
"pagePath": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Canonical GoVisit page path supplying this tool's published context; no origin, query or fragment."
},
"section": {
"type": "string",
"enum": [
"overview",
"experiences",
"highlights",
"categories",
"places",
"collections",
"activities",
"updates"
]
}
},
"required": [
"pagePath",
"section"
],
"additionalProperties": false
}Tool output schema
{
"type": "object",
"description": "Successful read of the sanitized published page snapshot. Unsupported sections reject the invocation.",
"properties": {
"schemaVersion": {
"const": "1"
},
"pageType": {
"const": "destination"
},
"pageId": {
"type": "string"
},
"locale": {
"type": "string"
},
"canonicalUrl": {
"type": "string"
},
"contentVersion": {
"type": [
"string",
"number",
"null"
]
},
"updatedAt": {
"type": [
"string",
"null"
]
},
"freshness": {
"type": "object",
"properties": {
"contentVersion": {
"type": [
"string",
"number",
"null"
]
},
"updatedAt": {
"type": [
"string",
"null"
]
}
},
"required": [
"contentVersion",
"updatedAt"
],
"additionalProperties": false
},
"completeness": {
"const": "page-published-section"
},
"data": {
"description": "The requested published section. Overview includes independent short description and nullable long overview. Experiences is an object with every published page-language card in items (all audiences, no list cap). Other lists remain bounded to 20 items; strings remain bounded.",
"type": [
"object",
"array",
"string",
"null"
],
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
},
"anyOf": [
{
"title": "Overview (section=overview)",
"type": "object",
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string",
"description": "Published long destination description in the page language; empty when absent."
},
"region": {
"type": "string"
},
"type": {
"type": "string"
},
"country": {
"type": [
"object",
"string",
"null"
]
},
"coordinates": {
"type": [
"object",
"array",
"null"
]
},
"sameAs": {
"type": "array",
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
}
},
"placeCount": {
"type": "number"
},
"primaryTaxonomy": {
"type": "array",
"maxItems": 20,
"items": {
"description": "Published JSON value; optional field shapes depend on the page projection."
}
},
"overview": {
"type": [
"string",
"null"
],
"maxLength": 2048,
"description": "Legacy published overview field in the page language; null when absent."
},
"metaDescription": {
"type": [
"string",
"null"
],
"description": "Published search and page meta description in the page language; null when absent."
}
},
"required": [
"code",
"name",
"description",
"metaDescription",
"country",
"region",
"type",
"coordinates",
"sameAs",
"placeCount",
"primaryTaxonomy",
"overview"
],
"additionalProperties": false
},
{
"title": "Complete experiences (section=experiences)",
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"maxLength": 4000
},
"audience": {
"type": [
"string",
"null"
],
"maxLength": 4000
},
"intent": {
"type": "null",
"description": "Reserved Place-compatible field. Destination canonical editorial intent is never public."
},
"headline": {
"type": "string",
"maxLength": 4000
},
"summary": {
"type": [
"string",
"null"
],
"maxLength": 4000
},
"locale": {
"type": "string",
"maxLength": 4000
}
},
"required": [
"type",
"audience",
"intent",
"headline",
"summary",
"locale"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
},
{
"title": "Published list section",
"type": "array",
"maxItems": 20,
"items": {
"description": "Published section records; fields depend on the section and the page projection."
}
},
{
"title": "Published structured section",
"type": "object",
"description": "Named public fields or an items list, such as places.items, location coordinates, opening hours or experience groups.",
"properties": {
"items": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object"
}
}
}
},
{
"title": "Published text section",
"type": "string",
"maxLength": 4000
},
{
"title": "Unavailable published section",
"type": "null"
}
]
}
},
"required": [
"schemaVersion",
"pageType",
"pageId",
"locale",
"canonicalUrl",
"contentVersion",
"updatedAt",
"freshness",
"completeness",
"data"
],
"additionalProperties": false
}After installing GoVisit skills, ask your assistant to use govisit-get-destination-section. The skill calls the GoVisit HTTP API.
Copy a GoVisit destination link and name the section you need, such as its overview or experiences.
Use GoVisit to read the [section name] section of [destination page URL]. Summarize what is published and include the source link.
Skill package and contract
Skill source · Complete package · HTTP contract
The complete package includes its MIT license and versioned contract. GoVisit data remains subject to the GoVisit Data Use License.