Skip to main content
Glama

list_categories

Retrieve the complete Zipp taxonomy of 35 categories to find valid category slugs for news search and retrieval.

Instructions

List the full Zipp taxonomy (7 main groups × 5 leaves = 35 categories total). Use to discover valid category slugs for the search / get_latest tools.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
langNoen-US

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The MCP tool handler function for 'list_categories'. It creates a ZippClient and delegates to client.list_categories().
    async def list_categories(
        lang: str = _DEFAULT_LANG,
    ) -> dict[str, Any]:
        """List all active categories in the Zipp taxonomy.
    
        Args:
            lang: BCP-47 language tag (default en-US).
        """
        async with ZippClient() as client:
            return await client.list_categories(lang=lang)
  • Registration of the 'list_categories' tool with FastMCP using @mcp.tool decorator, including its name and description.
    @mcp.tool(
        name="list_categories",
        description=(
            "List the full Zipp taxonomy (7 main groups × 5 leaves = 35 "
            "categories total). Use to discover valid category slugs for "
            "the search / get_latest tools."
        ),
    )
  • ZippClient.list_categories() — the low-level async method that makes the actual HTTP GET request to /api/v1/news/categories with an optional lang parameter.
    async def list_categories(
        self,
        *,
        lang: str = "en-US",
    ) -> dict[str, Any]:
        return await self._get("/categories", params={"lang": lang})
  • Input schema for the tool: a single optional 'lang' string parameter defaulting to 'en-US'.
        lang: str = _DEFAULT_LANG,
    ) -> dict[str, Any]:
  • ZippClient._get() — internal helper used by list_categories (and all other methods) to perform the actual HTTP GET request and parse JSON response.
    async def _get(self, path: str, *, params: dict[str, Any]) -> dict[str, Any]:
        # Drop None values so the upstream doesn't get e.g. ?category=None.
        clean = {k: v for k, v in params.items() if v is not None}
        resp = await self._client.get(_API_PREFIX + path, params=clean)
        if resp.status_code >= 400:
            raise ZippAPIError(resp.status_code, resp.text)
        return resp.json()
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description assumes full burden. It adds structural detail (7×5) and purpose but does not explicitly state read-only behavior or other side effects beyond listing. Minimal behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. First sentence describes the output (taxonomy structure), second gives usage guidance. Extremely efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple tool with one optional param and an output schema, the description covers purpose and usage well. However, it neglects to mention the 'lang' parameter's effect, which would complete the picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, yet the description adds no explanation for the lone 'lang' parameter. The description focuses entirely on the output, offering zero insight into param meaning or expected values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists the full Zipp taxonomy with exact structure (7 groups × 5 leaves = 35 categories) and specifies the purpose of discovering valid slugs for sibling tools, effectively distinguishing it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('to discover valid category slugs for search / get_latest tools'), providing clear context. Lacks explicit when-not-to-use but implies its role.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/deficlow/zipp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server