Skip to main content
Glama
elizagarate

Things MCP Server

by elizagarate

Things MCP Server

This Model Context Protocol (MCP) server lets you use Claude Desktop to interact with your task management data in Things 3 from Cultured Code. You can ask Claude to create tasks, analyze projects, help manage priorities, and more.

This server leverages the Things.py library and the Things URL Scheme.

Support the Project

If you find this project helpful, consider supporting its development:

ko-fi

Related MCP server: Things MCP Server

Features

  • Access to all major Things lists (Inbox, Today, Upcoming, etc.)

  • Project and area management

  • Tag operations

  • Advanced search capabilities

  • Recent items

  • Detailed item information including checklists

  • Support for nested data (projects within areas, todos within projects)

  • Someday project filtering: tasks in Someday projects are automatically excluded from Today, Upcoming, and Anytime views, matching Things UI behavior

Installation

Prerequisites

  • macOS (Things 3 is Mac-only)

  • Things 3 app with "Enable Things URLs" turned on (Settings → General)

  • A MCP client, such as Claude Desktop or Claude Code

  • uv Python package manager: brew install uv

Install via uvx (Any MCP Client)

Things MCP is published on PyPI and can be run directly with uvx:

uvx things-mcp

Configure your MCP client to use uvx with things-mcp as the argument.

Claude Desktop

  1. Download the latest file from the releases page

  2. Double-click the .mcpb file

  3. Done!

Option 2: Manual Config

  1. Go to Claude → Settings → Developer → Edit Config

  2. Add the Things server:

{
  "mcpServers": {
    "things": {
      "command": "uvx",
      "args": ["things-mcp"]
    }
  }
}
  1. Save and restart Claude Desktop

Claude Code

claude mcp add-json things '{"command":"uvx","args":["things-mcp"]}'

To make it available globally (across all projects), add -s user:

claude mcp add-json -s user things '{"command":"uvx","args":["things-mcp"]}'

Verify it's working

After installation:

  • If using Claude Desktop, you should see "Things MCP" in the "Search and tools" list

  • Try asking: "What's in my Things inbox?"

Sample Usage with Claude Desktop

  • "What's on my todo list today?"

  • "Create a todo to pack for my beach vacation next week, include a packing checklist."

  • "Evaluate my current todos using the Eisenhower matrix."

  • "Help me conduct a GTD-style weekly review using Things."

  • "Show me tasks that haven't been modified in over a month."

Tips

  • Create a project in Claude with custom instructions that explains how you use Things and organize areas, projects, tags, etc. Tell Claude what information you want included when it creates a new task (eg asking it to include relevant details in the task description might be helpful).

  • Try adding another MCP server that gives Claude access to your calendar. This will let you ask Claude to block time on your calendar for specific tasks, create todos from upcoming calendar events (eg prep for a meeting), etc.

  • Use task ages to identify stale items: "Which tasks in my Anytime list are older than 2 weeks?"

Available Tools

List Views

  • get-inbox - Get todos from Inbox

  • get-today - Get todos due today

  • get-upcoming - Get upcoming todos

  • get-anytime - Get todos from Anytime list

  • get-someday - Get todos from Someday list, including tasks in Someday projects

  • get-logbook - Get completed todos

  • get-trash - Get trashed todos

Basic Operations

  • get-todos - Get todos, optionally filtered by project

  • get-projects - Get all projects

  • get-areas - Get all areas

Tag Operations

  • get-tags - Get all tags

  • get-tagged-items - Get items with a specific tag

Search Operations

  • search-todos - Simple search by title/notes

  • search-advanced - Advanced search with multiple filters

Time-based Operations

  • get-recent - Get recently created items

Things URL Scheme Operations

  • add-todo - Create a new todo

  • add-project - Create a new project

  • update-todo - Update an existing todo

  • update-project - Update an existing project

  • show-item - Show a specific item or list in Things

  • search-items - Search for items in Things

Tool Parameters

get-todos

  • project_uuid (optional) - Filter todos by project

  • include_items (optional, default: true) - Include checklist items

get-projects / get-areas / get-tags

  • include_items (optional, default: false) - Include contained items

search-advanced

  • status - Filter by status (incomplete/completed/canceled)

  • start_date - Filter by start date (YYYY-MM-DD)

  • deadline - Filter by deadline (YYYY-MM-DD)

  • tag - Filter by tag

  • area - Filter by area UUID

  • type - Filter by item type (to-do/project/heading)

  • last - Filter by creation date (e.g., '3d' for last 3 days, '1w' for last week)

get-recent

  • period - Time period (e.g., '3d', '1w', '2m', '1y')

Scheduling with Reminders (add-todo, add-project, update-todo, update-project)

  • when - Accepts multiple formats:

    • Keywords: today, tomorrow, evening, anytime, someday

    • Date: YYYY-MM-DD (e.g., 2024-01-15)

    • DateTime with reminder: YYYY-MM-DD@HH:MM (e.g., 2024-01-15@14:30)

Troubleshooting

If it's not working:

  1. Make sure Things 3 is installed and has been opened at least once

    • The Things database needs to exist for the server to work

  2. Check that "Enable Things URLs" is turned on

    • Open Things → Settings → General → Enable Things URLs

  3. Claude Desktop can't find uvx

    • Install uv globally with Homebrew (brew install uv)

    • Alternative: Use the full path to uvx in your config. Find it with which uvx (typically /Users/USERNAME/.local/bin/uvx)

Development

Running Tests

The project includes a comprehensive unit test suite for the URL scheme and formatter modules.

# Install test dependencies
uv sync --extra test

# Run all tests
uv run pytest

# Run tests with verbose output
uv run pytest -v

# Run a specific test file
uv run pytest tests/test_url_scheme.py

# Run tests matching a pattern
uv run pytest -k "test_add_todo"

MCP Integration Test

The project includes an integration test plan that can be executed by Claude (via Claude Cowork or Claude Code) to verify all MCP tools work correctly against a live Things database.

See docs/mcp_integration_test_plan.md for the full test plan.

Project Structure

things-mcp/
├── src/things_mcp/      # Main package
│   ├── __init__.py      # Package exports
│   ├── __main__.py      # Entry point for python -m
│   ├── server.py        # MCP server implementation
│   ├── url_scheme.py    # Things URL scheme implementation
│   └── formatters.py    # Data formatting utilities
├── tests/               # Unit tests
│   ├── conftest.py      # Test fixtures and configuration
│   ├── test_url_scheme.py
│   ├── test_formatters.py
│   ├── test_someday_filtering.py
│   └── test_mcp_server_filtering.py
├── docs/                # Documentation
│   └── mcp_integration_test_plan.md  # Claude-executable integration test
├── manifest.json        # MCPB package manifest
├── build_mcpb.sh        # MCPB package build script
├── pyproject.toml       # Project dependencies, build config, and pytest config
├── .env.example         # Sample environment configuration
└── run.sh               # Convenience runner script

HTTP Transport

By default, the server uses stdio transport for communication with MCP clients. For remote access scenarios, you can run the server with HTTP transport.

Configuration

Set these environment variables to enable HTTP transport:

Variable

Default

Description

THINGS_MCP_TRANSPORT

stdio

Transport type: stdio or http

THINGS_MCP_HOST

127.0.0.1

HTTP server bind address

THINGS_MCP_PORT

8000

HTTP server port

Example

# Using uvx
THINGS_MCP_TRANSPORT=http THINGS_MCP_HOST=0.0.0.0 THINGS_MCP_PORT=8000 uvx things-mcp

# Or from source
THINGS_MCP_TRANSPORT=http THINGS_MCP_HOST=0.0.0.0 THINGS_MCP_PORT=8000 uv run things-mcp

See .env.example for a sample configuration file.

Available Tools

22 tools
add_projectA

Create a new project in Things

Args: title: Title of the project notes: Notes for the project when: When to schedule the project (today, tomorrow, evening, anytime, someday, or YYYY-MM-DD). Use YYYY-MM-DD@HH:MM format to add a reminder (e.g., 2024-01-15@14:30) deadline: Deadline for the project (YYYY-MM-DD) tags: Tags to apply to the project area_id: ID of area to add to area_title: Title of area to add to todos: Initial todos to create in the project

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
notesNo
whenNo
deadlineNo
tagsNo
area_idNo
area_titleNo
todosNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It explains parameter formats (e.g., 'when', 'deadline') and the purpose of 'todos' as initial items. However, it does not mention side effects, idempotency, or return behavior, which are typical for a creation tool.

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 front-loaded with purpose and uses a clear Args list. It is appropriately sized for 8 parameters, though some entries (e.g., 'tags') could be more specific. No superfluous content.

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 no annotations and a moderate number of parameters, the description covers all inputs well. It lacks notes on precedence between 'area_id' and 'area_title', and does not mention error handling or prerequisites, but overall provides sufficient context for typical usage.

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

Parameters5/5

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

Schema description coverage is 0%, but the description explains all 8 parameters with concrete examples and allowed formats (e.g., 'when' values, date formats). This adds significant value beyond the raw schema.

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 'Create a new project in Things', using a specific verb and resource. This distinguishes it from sibling tools like 'add_todo' which creates todos, and 'update_project' which modifies existing projects.

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?

No guidance is provided on when to use this tool versus alternatives like 'add_todo' or 'update_project'. The description only lists parameters without context on when this tool is appropriate.

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

add_todoB

Create a new todo in Things

Args: title: Title of the todo notes: Notes for the todo when: When to schedule the todo (today, tomorrow, evening, anytime, someday, or YYYY-MM-DD). Use YYYY-MM-DD@HH:MM format to add a reminder (e.g., 2024-01-15@14:30) deadline: Deadline for the todo (YYYY-MM-DD) tags: Tags to apply to the todo checklist_items: Checklist items to add list_id: ID of project/area to add to list_title: Title of project/area to add to heading: Heading title to add under heading_id: Heading ID to add under (takes precedence over heading)

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
notesNo
whenNo
deadlineNo
tagsNo
checklist_itemsNo
list_idNo
list_titleNo
headingNo
heading_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so the description must carry the full burden. It only says 'Create', indicating mutation, but fails to disclose side effects, authentication needs, rate limits, or what happens on duplication. Minimal behavioral context.

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 front-loaded with the purpose and then lists parameters concisely. Each parameter line is necessary, but the format could be slightly more compact. Still efficient and well-structured.

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?

Output schema exists, so return values are covered. However, the description lacks information about errors, constraints, or behavior when parameters conflict. For a creation tool with 10 parameters and no annotations, this is a moderate shortfall.

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?

All 10 parameters are explained in the description, including format details for 'when' and 'deadline', and relationships like 'heading_id takes precedence over heading'. This adds significant value beyond the schema, which has 0% description coverage.

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 the action ('Create a new todo') and the resource ('in Things'), using a specific verb and resource. It distinguishes from sibling tools like update_todo and add_project.

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?

No explicit guidance on when to use this tool vs. alternatives. Only the purpose is stated, leaving the agent to infer that creation is appropriate, but without any context about prerequisites or when not to use it.

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

get_anytimeB

Get todos from Anytime list

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the action without disclosing whether the operation is read-only, any side effects, or rate limits. The verb 'Get' implies reading, but no explicit assurance.

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?

The description is a single sentence with no superfluous words. It is front-loaded and efficient.

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

Completeness2/5

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

Given the presence of 20 sibling tools and no explanation of what 'Anytime list' entails, the description is too sparse. It does not provide enough context for an agent to correctly choose this tool over others, despite having an output schema.

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

Parameters3/5

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

The input schema has no parameters and schema description coverage is 100%. The description adds no parameter details, but there is nothing to add. Baseline 3 is appropriate.

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 'Get todos from Anytime list' clearly states the verb (get) and resource (todos from Anytime list). It distinguishes from siblings like get_today, get_inbox, etc., by specifying the list context.

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?

No guidance is provided on when to use this tool versus alternatives like get_today, get_inbox, or get_upcoming. The description lacks any usage context or exclusions.

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

get_areasB

Get all areas from Things

Args: include_items: Include projects and tasks within areas

ParametersJSON Schema
NameRequiredDescriptionDefault
include_itemsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior but only mentions reading areas. It does not state that it is read-only, potential authentication needs, or any side effects, leaving significant ambiguity.

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?

The description is extremely concise, using two sentences to convey essential information without any wasted verbiage.

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 presence of an output schema, the description adequately covers the basic operation and the sole parameter. However, it lacks details on ordering, pagination, or limits, which may be needed for full clarity.

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

Parameters3/5

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

Schema coverage is 0%, but the description explains the 'include_items' parameter, adding value beyond the bare schema. However, it remains brief and does not elaborate on parameter usage details.

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 states 'Get all areas from Things' with a specific verb and resource, clearly distinguishing it from sibling tools that operate on other entities like todos or projects.

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?

No guidance is provided on when to use this tool versus alternatives such as 'get_projects' or 'search_items'. The description only states functionality without contextual usage advice.

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

get_headingsB

Get headings from Things

Args: project_uuid: Optional UUID of a specific project to get headings from

ParametersJSON Schema
NameRequiredDescriptionDefault
project_uuidNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It only states it 'gets' headings, implying a read operation, but provides no details on return format, pagination, or any side effects. The output schema exists but is not referenced.

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 very concise with two sentences, but it could benefit from a brief note on what headings are or the output structure. The lack of structure is minor given the tool's simplicity.

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?

The tool appears simple, but the description does not reference the output schema or explain the concept of headings. For a retrieval tool with a single optional parameter, the description is minimally adequate but could be more informative.

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 meaning to the sole parameter 'project_uuid' by specifying it is optional and a UUID for filtering, which exceeds the schema's minimal definition. However, it does not explain the default behavior when omitted.

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 tool retrieves headings from Things, using the verb 'Get' and specifying the resource 'headings'. This distinguishes it from sibling tools like get_projects or get_todos, though it doesn't elaborate on what headings are.

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?

No guidance is provided on when to use this tool versus alternatives. The description only mentions an optional parameter, but does not explain conditions for use or exclude scenarios, leaving the agent to infer usage.

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

get_inboxA

Get todos from Inbox

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so the description bears full responsibility. It gives only a bare statement of function without disclosing filtering, ordering, pagination, or any other behavioral traits that would help an agent understand the tool's output.

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?

The description is a single concise sentence, front-loaded with the key action and resource. No extraneous information.

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?

For a parameterless tool with an output schema, the description is minimal but functional. However, it lacks context about what 'Inbox' means operationally, and the existence of many siblings calls for more differentiation.

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 input schema has 0 parameters, so schema coverage is trivially 100%. The description does not need to add parameter meaning. Baseline of 4 is appropriate given no parameters exist.

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 'Get todos from Inbox' clearly states the verb ('Get') and the resource ('todos from Inbox'), distinguishing it from siblings that retrieve todos from other contexts like get_today or get_todos.

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?

No guidance on when to use this tool versus alternatives like get_todos or get_today. With 18 sibling tools sharing the 'get_' prefix, the lack of usage context is a notable gap.

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

get_logbookB

Get completed todos from Logbook, defaults to last 7 days

Args: period: Time period to look back (e.g., '3d', '1w', '2m', '1y'). Defaults to '7d' limit: Maximum number of entries to return. Defaults to 50

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNo7d
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Without annotations, the description accurately declares that the tool retrieves completed todos (read-only behavior). It mentions default time range and limit but does not disclose potential side effects, rate limits, or the exact nature of the 'Logbook' view. The 'Get' prefix implies mutation is unlikely.

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 short and to the point, using a clear heading and bullet-like Args section. It avoids unnecessary words, though it could be slightly more structured as a full sentence.

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 existence of an output schema, the description adequately explains the tool's purpose and parameters. However, it lacks context about what 'Logbook' specifically refers to (e.g., finished tasks?), ordering, pagination, or how this fits among sibling tools. More context would improve completeness.

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 details beyond the schema for both parameters: it explains that 'period' is a time period with examples ('3d', '1w', '2m', '1y') and defaults, and 'limit' is a maximum count with default. This compensates for the 0% schema description coverage.

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 'Get completed todos from Logbook', which is a specific verb-resource pair. It distinguishes from sibling tools like get_today or get_recent by specifying 'completed' and 'Logbook'. However, it does not explicitly differentiate among the many 'get_' siblings.

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?

No guidance is provided on when to use this tool versus alternatives such as get_todos, get_recent, or search_todos. The description gives defaults but does not explain the context that would lead an agent to choose get_logbook over other retrieval tools.

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

get_projectsA

Get all projects from Things

Args: include_items: Include tasks within projects

ParametersJSON Schema
NameRequiredDescriptionDefault
include_itemsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral details. It only states 'Get all projects' without clarifying scope (e.g., whether archived projects are included), potential side effects (none expected for a read tool), or any other constraints.

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?

The description is extremely concise, using two sentences with no wasted words. It is front-loaded with the core purpose and the parameter explanation is directly after.

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 low complexity, a single optional parameter, and an output schema (context signal), the description is somewhat complete. However, it does not mention ordering, filtering, or whether all projects (including those in areas) are returned.

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 single parameter 'include_items' is described as 'Include tasks within projects', which adds meaningful context beyond the schema's type and default. The schema description coverage is 0%, but the description compensates adequately for this simple parameter.

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 the tool retrieves all projects from Things, with a specific verb ('Get') and resource ('projects'). It distinguishes itself from sibling tools like 'get_todos' or 'get_areas' by focusing exclusively on projects.

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 such as 'search_items' or other 'get_*' tools. No context about prerequisites or exclusions is given.

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

get_recentB

Get recently created items

Args: period: Time period (e.g., '3d', '1w', '2m', '1y')

ParametersJSON Schema
NameRequiredDescriptionDefault
periodYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description is the sole source of behavioral information. It does not mention read-only nature, performance implications, or any side effects. The behavioral context is minimal beyond the obvious retrieval operation.

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?

The description is extremely concise, consisting of a brief purpose line and a single-line parameter explanation. It is front-loaded with the core action, and every word contributes value without redundancy.

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 presence of an output schema, the description need not detail return values, but it omits the type of items returned (projects, todos, etc.) and any limitations. For a simple parameterization, it is adequate but lacks completeness about the domain of items.

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 sole parameter 'period' is described as 'Time period (e.g., '3d', '1w', '2m', '1y')', providing concrete examples that clarify the format beyond the schema's bare 'string' type. This compensates for the 0% schema description coverage, though additional documentation of accepted values would improve it.

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 'Get recently created items' clearly indicates the tool retrieves recently created items. The name 'get_recent' aligns with this purpose. However, it does not explicitly differentiate from siblings like get_upcoming or get_today, which could also involve time-based retrieval, but the period parameter clarifies its focus on recent past items.

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 such as get_today, get_upcoming, or get_inbox. There are no explicit when-to-use or when-not-to-use instructions, and no mention of prerequisites or context.

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

get_somedayA

Get todos from Someday list, including tasks in Someday projects

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations, so description carries full burden. Only states basic purpose; missing traits like read-only nature, sorting, limits, or whether completed items are included.

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?

Single sentence, no wasted words, front-loaded with key information.

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?

Adequate but lacks detail on return format, pagination, or filtering. Output schema exists but description doesn't clarify scope like active items or ordering.

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?

No parameters in schema (100% coverage). Description adds nothing about parameters because there are none.

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?

Clear verb 'Get' and specific resource 'todos from Someday list, including tasks in Someday projects'. Distinct from siblings like get_today or get_anytime.

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

Usage Guidelines3/5

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

Implies use for Someday items but no explicit when-to-use vs alternatives like get_today or get_anytime. No guidance on exclusions.

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

get_tagged_itemsB

Get items with a specific tag

Args: tag: Tag title to filter by

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations; description does not disclose read-only nature, side effects, or any behavioral traits beyond the basic operation.

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

Conciseness3/5

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

Short and direct, but lacks a typical usage description; could be more structured but not verbose.

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?

Minimal but sufficient given the output schema; however, no info on error behavior or prerequisites.

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?

Describes the 'tag' parameter as 'Tag title to filter by', adding meaning beyond the schema's type-only (string) definition.

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?

Description clearly states it gets items with a specific tag, distinguishing it from sibling tools that retrieve other lists or tag definitions.

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?

No guidance on when to use this tool versus alternatives like get_tags or search_items; no scenarios or exclusions mentioned.

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

get_tagsB

Get all tags

Args: include_items: Include items tagged with each tag

ParametersJSON Schema
NameRequiredDescriptionDefault
include_itemsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description must suffice. It mentions the include_items parameter but does not disclose other relevant behaviors such as pagination, ordering, or safety (e.g., read-only operation). Minimal 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 concise but could be better structured. It uses two lines, but no clear separation of purpose and parameter explanation.

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 existence of an output schema and a single parameter, the description is adequate but not thorough. It does not mention potential nuances like filtering or default behavior.

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 explains the 'include_items' parameter clearly, adding meaning beyond the schema's boolean type. Since schema description coverage is 0%, this is valuable. However, only one parameter is described.

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 'Get all tags' which is a specific verb and resource. It distinguishes from other get_* tools by its focus on tags. However, it could be more precise about what 'all tags' entails.

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?

No guidance on when to use this tool versus alternatives like get_tagged_items. The description lacks any contextual usage hints.

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

get_todayA

Get todos due today

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits, but it only states the action. It does not clarify if the tool is read-only, excludes completed items, or handles time-based filtering, leaving significant gaps.

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?

The description is a single, front-loaded sentence that conveys the essential purpose with no extraneous words, achieving maximum efficiency.

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 zero parameters and an existing output schema, the description is mostly adequate. However, it lacks details about timezone handling or recurring tasks, but the low complexity keeps it close to complete.

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?

There are no parameters (schema coverage 100%), so per guidelines the baseline score is 4. The description does not need to add parameter meaning.

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 'Get todos due today' clearly states the verb 'Get' and the resource 'todos due today', precisely defining the scope and distinguishing it from siblings like 'get_anytime' or 'get_upcoming'.

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

Usage Guidelines3/5

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

The description implies usage for retrieving tasks due today but provides no explicit guidance on when to use this tool versus alternatives like 'get_upcoming' or 'get_anytime', nor does it mention any exclusions.

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

get_todosB

Get todos from Things, optionally filtered by project

Args: project_uuid: Optional UUID of a specific project to get todos from include_items: Include checklist items

ParametersJSON Schema
NameRequiredDescriptionDefault
project_uuidNo
include_itemsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description must fully disclose behavior. It states only 'Get todos' without mentioning side effects, authentication needs, rate limits, or output structure. Minimal disclosure for a read operation.

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?

Description is concise with a clear purpose sentence and an args section. It front-loads the main action and efficiently lists parameters, though minor tightening could remove redundancy in the parameter descriptions.

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?

For a simple tool with two optional parameters and an output schema, the description covers basic functionality but lacks usage context among many sibling tools. Behavioral details like read-only nature are absent, making it adequate but not fully complete.

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

Parameters3/5

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

Schema coverage is 0%, but the description adds meaning by explaining project_uuid as an optional UUID for filtering and include_items as including checklist items. This partially compensates for the schema's lack of description, providing some context beyond types and defaults.

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?

Description clearly states it gets todos from Things with optional project filter. The verb 'Get' and resource 'todos' are specific, and the optional filter distinguishes it from sibling tools like get_today or get_inbox.

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?

No explicit guidance on when to use this tool versus alternatives such as get_today, get_inbox, or get_projects. The description mentions an optional project filter but does not clarify scenarios where other tools are preferable.

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

get_trashA

Get trashed todos

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as whether the operation is read-only, potential side effects, or authentication requirements. The output schema may partially cover return values, but behavior beyond that is omitted.

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?

The description is extremely concise at 4 words, front-loaded with the key action and resource. Every word earns its place, with no redundancy.

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 no parameters and an existing output schema, the description is fairly complete for a simple retrieval tool. However, it could provide a hint about the return format or that it retrieves a list, but the output schema likely fills that gap.

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?

There are no parameters, and schema description coverage is 100%. Per guidelines, 0 parameters earns a baseline of 4.

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 'Get trashed todos' clearly specifies the action (get) and the resource (trashed todos). It is distinct from sibling tools like 'get_today' and 'get_upcoming', which target different subsets.

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

Usage Guidelines3/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 like 'get_todos' or 'search_items'. However, the purpose is self-explanatory given the tool name, so a basic score is appropriate.

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

get_upcomingC

Get upcoming todos

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It does not disclose ordering, pagination, or any constraints. Simply stating 'Get upcoming todos' is insufficient for a complex set of sibling tools.

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

Conciseness3/5

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

The description is very short, but it lacks sufficient detail to be effective. Conciseness is not synonymous with under-specification; it should provide essential context.

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

Completeness2/5

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

Despite having an output schema, the description does not clarify what constitutes 'upcoming' or how results are ordered. For a tool with many siblings, this is inadequate.

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

Parameters3/5

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

No parameters exist, and schema description coverage is 100% (trivially). Baseline is 3, but the description adds no additional meaning beyond the schema.

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

Purpose3/5

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

The description states 'Get upcoming todos' which indicates a verb and resource, but it is vague about what 'upcoming' means (e.g., future dates) and does not differentiate from siblings like 'get_today' or 'get_someday'.

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?

No guidance on when to use this tool versus alternatives. With many sibling tools providing filtered views of todos, the description should clarify the scope of 'upcoming'.

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

search_advancedB

Advanced todo search with multiple filters

Args: status: Filter by todo status (incomplete, completed, canceled) start_date: Filter by start date (YYYY-MM-DD) deadline: Filter by deadline (YYYY-MM-DD) tag: Filter by tag area: Filter by area UUID type: Filter by item type (to-do, project, heading) last: Filter by creation date (e.g., '3d' for last 3 days, '1w' for last week, '1y' for last year)

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
start_dateNo
deadlineNo
tagNo
areaNo
typeNo
lastNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It only explains parameter formats (e.g., YYYY-MM-DD, UUID) but does not disclose what the tool returns, whether it is read-only, any rate limits, or other behavioral details. The output schema exists but is not referenced.

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?

The description is extremely concise: a single-line purpose statement followed by a clear bullet list of parameters. Every line serves a purpose with no redundancy. The purpose is front-loaded.

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 7 optional parameters and an existing output schema, the description adequately covers parameter meanings but lacks context about the return format, default filtering behavior, or interactions between filters. It feels sufficient for basic use but not comprehensive.

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

Parameters3/5

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

The description adds meaning beyond the schema (which has 0% coverage) by providing descriptions for all 7 parameters, including format hints for dates (e.g., 'YYYY-MM-DD', '3d', '1w') and type constraints (e.g., UUID for area). However, the descriptions are minimal and do not clarify sources or constraints fully.

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 'Advanced todo search with multiple filters' and lists all filter parameters, making the tool's purpose evident. However, it does not explicitly differentiate from sibling tools like search_items or search_todos, which also search todos but may be simpler.

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

Usage Guidelines3/5

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

The description implies usage for complex filtering with multiple criteria, but it fails to provide explicit guidance on when to use this tool versus simpler search alternatives or what the prerequisites are. No exclusions or comparisons are made.

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

search_itemsC

Search for items in Things

Args: query: Search query

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It does not indicate whether the search is read-only, the format of results, or any limitations (e.g., no pagination, case sensitivity). The agent cannot infer the tool's side effects or constraints.

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

Conciseness3/5

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

The description is extremely concise at two lines, which is efficient, but the structure is minimal. The 'Args:' section is good, but the overall content is too sparse to be fully useful.

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

Completeness2/5

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

Given the presence of multiple sibling search tools and an output schema, the description fails to specify what the tool returns or how it differs. It is incomplete for an agent to decide between search tools.

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

Parameters2/5

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

The description only repeats the parameter name 'query' as 'Search query', adding no additional meaning. There is no detail about query syntax, supported operators, or matching behavior. Since schema coverage is 0%, this is insufficient.

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

Purpose3/5

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

The description states 'Search for items in Things', which is a clear verb and resource, but it does not distinguish from sibling tools like search_todos or search_advanced. The term 'items' is vague and could refer to todos, projects, or other entities, making the purpose somewhat ambiguous.

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?

No guidance is provided on when to use this tool versus alternatives. The description lacks context on which scenarios are appropriate for this search compared to search_todos or search_advanced.

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

search_todosC

Search todos by title or notes

Args: query: Search term to look for in todo titles and notes

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so the description must fully cover behavior. It only states the search scope but omits details on case sensitivity, pagination, result ordering, authentication needs, or performance implications.

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

Conciseness3/5

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

The description is very short and front-loaded with the key action. However, it is under-specified and could include more detail without losing conciseness.

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

Completeness2/5

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

Given the complexity of the tool set and presence of many sibling tools, the description is incomplete. It does not explain the search scope (title/notes only), match behavior, or result format, even though an output schema exists.

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

Parameters2/5

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

The input schema has 0% description coverage for the query parameter. The description adds a brief explanation ('Search term to look for in todo titles and notes'), which provides some meaning beyond the schema but is minimal.

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 it searches todos by title or notes, providing a specific verb and resource. It implicitly distinguishes from siblings like search_advanced and search_items, but does not explicitly differentiate, which would warrant a 5.

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?

No guidance on when to use this tool versus alternatives (e.g., search_advanced, get_todos). The description lacks any context for appropriate use or exclusions.

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

show_itemB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
queryNo
filter_tagsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as side effects, read-only nature, or output format. The existence of an output schema is not credited here.

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 concise with a clear 'Args' section. No unnecessary words, though it could be slightly more structured.

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?

Covers parameter semantics adequately but lacks context on what 'show' entails (e.g., output structure, pagination, side effects). Given the presence of an output schema, return value details are not needed, but behavioral context is missing.

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?

With 0% schema description coverage, the description adds valuable meaning by explaining that 'id' can be an item ID or a list name, and that 'query' and 'filter_tags' are optional filters. This goes beyond the raw type definitions.

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 'Show a specific item or list in Things' and lists valid id values including both item IDs and list names like inbox, today, etc. This distinguishes it from sibling tools that focus on specific lists.

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?

No guidance on when to use this tool versus alternatives. It does not mention when not to use or suggest sibling tools for specific use cases.

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

update_projectB

Update an existing project in Things

Args: id: ID of the project to update title: New title notes: New notes when: New schedule (today, tomorrow, evening, anytime, someday, or YYYY-MM-DD). Use YYYY-MM-DD@HH:MM format to add a reminder (e.g., 2024-01-15@14:30) deadline: New deadline (YYYY-MM-DD) tags: New tags completed: Mark as completed canceled: Mark as canceled

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
titleNo
notesNo
whenNo
deadlineNo
tagsNo
completedNo
canceledNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description bears full burden. It lists updateable fields and mentions that 'completed' and 'canceled' mark status, but does not disclose side effects (e.g., whether updating one field resets others), error conditions, or permission requirements.

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 well-structured with an args list, but the argument descriptions are minimal and could be more concise. It is not excessively long but could benefit from tighter phrasing.

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's complexity (8 parameters, no annotations, no when-to-use guidance) and the presence of an output schema (assumed to detail return values), the description is adequate but incomplete. It lacks usage context and behavioral traits.

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

Parameters3/5

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

Input schema coverage is 0%, so description must compensate. It explains the 'when' parameter format in detail (including reminder syntax), but for other parameters like 'title', 'notes', 'tags', it merely repeats the schema name without adding type or format constraints.

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 'Update an existing project in Things' which is a specific verb+resource. It distinguishes from sibling 'update_todo' by focusing on projects, but does not explicitly differentiate from 'add_project'.

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?

No guidance is provided on when to use this tool vs alternatives (e.g., update_todo for todos, or add_project for new projects). The description is purely parameter-oriented.

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

update_todoA

Update an existing todo in Things

Args: id: ID of the todo to update title: New title notes: New notes when: New schedule (today, tomorrow, evening, anytime, someday, or YYYY-MM-DD). Use YYYY-MM-DD@HH:MM format to add a reminder (e.g., 2024-01-15@14:30) deadline: New deadline (YYYY-MM-DD) tags: New tags completed: Mark as completed canceled: Mark as canceled list: The title of a project or area to move the to-do into list_id: The ID of a project or area to move the to-do into (takes precedence over list) heading: The heading title to move the to-do under heading_id: The heading ID to move the to-do under (takes precedence over heading)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
titleNo
notesNo
whenNo
deadlineNo
tagsNo
completedNo
canceledNo
listNo
list_idNo
headingNo
heading_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states 'Update' which implies mutation, but does not disclose side effects, required permissions, error handling, or return values. This is insufficient for a mutation tool.

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 organized with an 'Args:' section listing parameters, which is readable. While lengthy due to 12 parameters, every sentence adds value. It could be slightly more concise but is not verbose.

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's complexity (12 parameters, no schema descriptions, and an output schema exists), the description covers parameter semantics well but lacks behavioral context such as what happens if the id does not exist or whether partial updates are supported. The output schema presumably handles return values, so that gap is mitigated.

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

Parameters5/5

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

With 0% schema description coverage, the description compensates fully by explaining each parameter, including format details for 'when' and precedence for 'list_id' vs 'list'. This adds significant meaning beyond the bare input schema.

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 'Update an existing todo in Things', which is a specific verb+resource combination. It distinguishes from sibling tools like add_todo and update_project by focusing on updating existing todos.

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

Usage Guidelines3/5

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

The description implies usage for updating existing todos but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The context is implied by the tool's purpose.

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

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have clear distinct purposes, but the three search tools (search_items, search_todos, search_advanced) have overlapping functionality and could confuse an agent about which to use. The remaining tools are well-separated.

Naming Consistency5/5

Tools consistently use get_ for retrieval, add_ for creation, update_ for updates, and search_ for searching, all in snake_case. No mixing of conventions.

Tool Count4/5

22 tools is on the higher side but justified by the need to cover multiple views (today, upcoming, inbox, etc.) and CRUD for projects/todos. It's slightly heavy but still reasonable for a task management server.

Completeness3/5

CRUD for projects and todos is mostly covered, but missing explicit delete (only trash and cancellation) and no create/update for areas or tags. This leaves some gaps that agents may need to work around.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables interaction with the Things app through Claude Desktop, allowing task creation, project analysis, and priority management using natural language commands.
    22
    574
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Lets you use Claude Desktop to interact with your task management data in Things app, enabling you to create tasks, analyze projects, manage priorities, and implement productivity workflows through natural language.
    36
    MIT

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

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