Get destination categories

Read up to 20 categories published on a destination page. Use the page’s category list to decide which part of the destination to explore next.

This projection contains the destination's effective navigation categories: its own override, the nearest ancestor override, or the global default. It is not a complete list of valid category URLs. Global category pages remain available when custom navigation uses different slugs; use a published category link to read one of those pages.

What it returns

This returns category cards published on the current destination page. It does not perform a global category search.

For the full current contract and linked context, see the WebMCP manifest and the WebMCP overview.

WebMCP

Input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Output schema
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array"
        },
        "count": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "items",
        "count"
      ]
    }
  },
  "required": [
    "data"
  ]
}
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 === 'list_destination_categories');
if (!tool) throw new Error('list_destination_categories is not registered for the current page.');
const result = await modelContext.executeTool(tool, {});
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."
    }
  },
  "additionalProperties": false,
  "required": [
    "pagePath"
  ]
}
Successful response schema
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array"
        },
        "count": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "items",
        "count"
      ]
    }
  },
  "required": [
    "data"
  ]
}
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/list_destination_categories. 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/list_destination_categories \
  -H 'Content-Type: application/json' \
  --data '{"pagePath": "/en/destinations/cz/prague/"}'

JavaScript

const response = await fetch("https://govisit.ai/api/tools/v1/list_destination_categories", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
  "pagePath": "/en/destinations/cz/prague/"
})
});
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/list_destination_categories",
    data=json.dumps({
  "pagePath": "/en/destinations/cz/prague/"
}).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."
    }
  },
  "additionalProperties": false,
  "required": [
    "pagePath"
  ]
}
Structured result schema
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array"
        },
        "count": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "items",
        "count"
      ]
    }
  },
  "required": [
    "data"
  ]
}

Connect a Streamable HTTP MCP client to https://govisit.ai/mcp and call list_destination_categories. 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: "list_destination_categories",
  arguments: {"pagePath": "/en/destinations/cz/prague/"},
});
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."
    }
  },
  "additionalProperties": false,
  "required": [
    "pagePath"
  ]
}
Tool output schema
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array"
        },
        "count": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "items",
        "count"
      ]
    }
  },
  "required": [
    "data"
  ]
}

After installing GoVisit skills, ask your assistant to use govisit-list-destination-categories. The skill calls the GoVisit HTTP API.

Copy the GoVisit destination link whose published categories you want to browse.

Use GoVisit to list the categories published on [destination page URL]. Explain what each covers and include its 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.

Last updated: November 7, 2026