Skip to main content
Glama
hald

Things MCP Server

by hald

show_item

Display a specific item or filtered list in the Things app using ID or predefined categories like inbox, today, or logbook, with optional query and tag filters.

Instructions

Show a specific item or list in Things

Args: id: ID of item to show, or one of: inbox, today, upcoming, anytime, someday, logbook query: Optional query to filter by filter_tags: Optional tags to filter by

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filter_tagsNo
idYes
queryNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • The main handler function for the 'show_item' tool, registered via @mcp.tool decorator. It invokes the url_scheme.show helper to construct and execute a Things URL scheme to display the specified item or list.
    @mcp.tool
    async def show_item(
        id: str,
        query: str = None,
        filter_tags: List[str] = None
    ) -> str:
        """Show a specific item or list in Things
        
        Args:
            id: ID of item to show, or one of: inbox, today, upcoming, anytime, someday, logbook
            query: Optional query to filter by
            filter_tags: Optional tags to filter by
        """
        url = url_scheme.show(
            id=id,
            query=query,
            filter_tags=filter_tags
        )
        url_scheme.execute_url(url)
        return f"Showing item: {id}"
  • Supporting helper function in url_scheme.py that constructs the URL parameters for the 'show' command in Things URL scheme, used directly by the show_item handler.
    def show(id: str, query: Optional[str] = None, filter_tags: Optional[list[str]] = None) -> str:
        """Construct URL to show a specific item or list."""
        params = {
            'id': id,
            'query': query,
            'filter': filter_tags
        }
        return construct_url('show', {k: v for k, v in params.items() if v is not None})
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions showing items or lists but doesn't describe the output format, whether it's read-only, if it requires authentication, or any rate limits. For a tool with no annotation coverage, this is a significant gap in transparency.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose, followed by parameter explanations in a clear 'Args:' section. It avoids unnecessary words, though the structure could be slightly more polished by integrating the parameter details more seamlessly.

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

Completeness3/5

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

Given the tool has an output schema, the description doesn't need to explain return values, which helps. However, with no annotations, 3 parameters (one required), and many sibling tools, the description lacks context on behavior and usage guidelines, making it only minimally adequate.

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

Parameters4/5

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

The description adds meaningful context beyond the input schema, which has 0% description coverage. It explains that 'id' can be an item ID or predefined list names (e.g., 'inbox', 'today'), and clarifies that 'query' and 'filter_tags' are optional filters. This compensates well for the schema's lack of descriptions.

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

Purpose4/5

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

The description clearly states the verb 'show' and resource 'specific item or list in Things', making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_inbox', 'get_today', etc., which appear to serve similar list-retrieval functions, so it falls short of a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools like 'get_inbox', 'get_today', and 'search_items' that likely overlap in functionality, there's no indication of when this tool is preferred or what distinguishes it, leaving usage unclear.

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

Related 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/hald/things-mcp'

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