List category places

Filter up to 20 places published on a destination category page by name, accessibility, or other fields. The result covers the page’s selection.

Category pages can use an inherited global or ancestor configuration. A destination's custom navigation does not remove the global category URLs: those pages remain available alongside custom category pages and resolve places inside the requested destination. Country category paths, such as /en/destinations/cz/places/accommodation/, use the same category tools. Read the selected page's metadata rather than assuming its category appears in the destination navigation.

What it returns

This lists a bounded set of cards from the current category page. Filters apply to published card fields and do not make it a global search.

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

WebMCP

Input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Optional published place name or partial name."
    },
    "category": {
      "type": "string",
      "description": "Optional published category code."
    },
    "audience": {
      "type": "string",
      "description": "Optional published audience label or code."
    },
    "accessibility": {
      "type": "string",
      "description": "Optional published accessibility label or code."
    },
    "neighborhood": {
      "type": "string",
      "description": "Optional published neighborhood."
    },
    "administrativeArea": {
      "type": "string",
      "description": "Optional published administrative area."
    },
    "activityType": {
      "type": "string",
      "description": "Optional published activity type."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "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_category_places');
if (!tool) throw new Error('list_category_places is not registered for the current page.');
const result = await modelContext.executeTool(tool, {"limit": 5});
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."
    },
    "name": {
      "type": "string",
      "description": "Optional published place name or partial name."
    },
    "category": {
      "type": "string",
      "description": "Optional published category code."
    },
    "audience": {
      "type": "string",
      "description": "Optional published audience label or code."
    },
    "accessibility": {
      "type": "string",
      "description": "Optional published accessibility label or code."
    },
    "neighborhood": {
      "type": "string",
      "description": "Optional published neighborhood."
    },
    "administrativeArea": {
      "type": "string",
      "description": "Optional published administrative area."
    },
    "activityType": {
      "type": "string",
      "description": "Optional published activity type."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "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_category_places. 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_category_places \
  -H 'Content-Type: application/json' \
  --data '{"pagePath": "/en/destinations/cz/prague/places/hotel/", "limit": 5}'

JavaScript

const response = await fetch("https://govisit.ai/api/tools/v1/list_category_places", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
  "pagePath": "/en/destinations/cz/prague/places/hotel/",
  "limit": 5
})
});
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_category_places",
    data=json.dumps({
  "pagePath": "/en/destinations/cz/prague/places/hotel/",
  "limit": 5
}).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."
    },
    "name": {
      "type": "string",
      "description": "Optional published place name or partial name."
    },
    "category": {
      "type": "string",
      "description": "Optional published category code."
    },
    "audience": {
      "type": "string",
      "description": "Optional published audience label or code."
    },
    "accessibility": {
      "type": "string",
      "description": "Optional published accessibility label or code."
    },
    "neighborhood": {
      "type": "string",
      "description": "Optional published neighborhood."
    },
    "administrativeArea": {
      "type": "string",
      "description": "Optional published administrative area."
    },
    "activityType": {
      "type": "string",
      "description": "Optional published activity type."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "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_category_places. 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_category_places",
  arguments: {"pagePath": "/en/destinations/cz/prague/places/hotel/", "limit": 5},
});
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."
    },
    "name": {
      "type": "string",
      "description": "Optional published place name or partial name."
    },
    "category": {
      "type": "string",
      "description": "Optional published category code."
    },
    "audience": {
      "type": "string",
      "description": "Optional published audience label or code."
    },
    "accessibility": {
      "type": "string",
      "description": "Optional published accessibility label or code."
    },
    "neighborhood": {
      "type": "string",
      "description": "Optional published neighborhood."
    },
    "administrativeArea": {
      "type": "string",
      "description": "Optional published administrative area."
    },
    "activityType": {
      "type": "string",
      "description": "Optional published activity type."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "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-category-places. The skill calls the GoVisit HTTP API.

Open a GoVisit destination category page, such as hotels or restaurants, and copy its link.

Use GoVisit to list up to five places published on [category page URL]. Include their names, available facts, and profile links.

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