Things 3 MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Things 3 MCP Serverlist my tasks due today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.

Things 3 MCP Server
This Model Context Protocol (MCP) server lets you use Claude Desktop to interact with your task management data in Things 3. You can ask Claude or your MCP client of choice to create tasks, analyze projects, help manage priorities, and more.
This MCP server leverages a combination of the Things.py library and Things 3’s AppleScript support, enabling reading and writing to Things 3.
Why Things MCP?
This MCP server unlocks the power of AI for your task management:
Natural Language Task Creation: Ask Claude to create richly-detailed tasks and descriptions in natural language
Smart Task Analysis: Let Claude explore your project lists and focus areas and provide insights into your work
GTD & Productivity Workflows: Let Claude help you implement productivity and prioritisation systems
Seamless Integration: Works directly with your existing Things 3 data
Related MCP server: Things MCP Server
Features
Access to all major Things lists (Inbox, Today, Upcoming, Logbook, Someday, etc.)
Project and Area management and assignment
Tagging operations for tasks and projects
Advanced search capabilities
Recent items tracking
Support for nested data (projects within areas, todos within projects)
Checklist/Subtask support - Read and display existing checklist items from todos
Installation
Prerequisites
Python 3.12+
Claude Desktop
Things 3 for MacOS
Step 1: Install the package
Option A: Install from PyPI in a virtual environment (recommended)
# Create a virtual environment in your home directory
python3 -m venv ~/.venvs/things3-mcp-env
source ~/.venvs/things3-mcp-env/bin/activate
# Install the package
pip install Things3-MCP-server==2.0.6Option B: Install from source (for development/contributors)
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Restart your terminal afterwards
# Clone and install the package with development dependencies
git clone https://github.com/rossshannon/Things3-MCP
cd Things3-MCP
uv venv
uv pip install -e ".[dev]" # Install in development mode with extra dependenciesStep 2: Configure Claude Desktop
Edit the Claude Desktop configuration file:
code ~/Library/Application\ Support/Claude/claude_desktop_config.jsonAdd the Things server to the mcpServers key in the configuration file:
Option A: Using PyPI package in virtual environment
{
"mcpServers": {
"things": {
"command": "~/.venvs/things3-mcp-env/bin/Things3-MCP-server"
}
}
}Option B: Using source installation (for development/contributors)
{
"mcpServers": {
"things": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/Things3-MCP",
"run",
"Things3-MCP-server"
]
}
}
}Step 3: Restart Claude Desktop
Restart the Claude Desktop app to enable the integration.
Sample Usage with Claude Desktop
“What’s on my todo list today?”
“Create a todo to prepare for each of my 1-on-1s next week”
“Evaluate my todos scheduled for today using the Eisenhower matrix.”
“Help me conduct a GTD-style weekly review using Things.”
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 (e.g., asking it to include relevant details in the task description, whether to use emojis, etc.).
Try combining this with 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 tasks that relate to upcoming calendar events (e.g., prep for a meeting), etc.
Available Tools
List Views
get_inbox- Get todos from Inboxget_today- Get todos due todayget_upcoming- Get upcoming todosget_anytime- Get todos from Anytime listget_someday- Get todos from Someday listget_logbook- Get completed todosget_trash- Get trashed todos
Random Sampling (for LLM Enrichment)
get_random_inbox- Get a random sample of todos from Inboxget_random_anytime- Get a random sample of items from Anytime listget_random_todos- Get a random sample of todos, optionally filtered by project
Basic Operations
get_todos- Get todos, optionally filtered by projectget_projects- Get all projectsget_areas- Get all areas
Tag Operations
get_tags- Get all tagsget_tagged_items- Get items with a specific tag
Search Operations
search_todos- Simple search by title/notessearch_advanced- Advanced search with multiple filters
Time-based Operations
get_recent- Get recently created items
Modification Operations
add_todo- Create a new todo with full parameter supportadd_project- Create a new project with tags and todosupdate_todo- Update an existing todoupdate_project- Update an existing projectshow_item- Show a specific item or list in Thingssearch_items- Search for items in Things
Tool Parameters
get_todos
project_uuid(optional) - Filter todos by project
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 tagarea- Filter by area UUIDtype- Filter by item type (to-do/project/heading)
get_recent
period- Time period (e.g., '3d', '1w', '2m', '1y')limit- Maximum number of items to return
Random Sampling Tools
get_random_inbox(count=5)- Get random sample from Inboxget_random_anytime(count=5)- Get random sample from Anytime listget_random_todos(project_uuid=None, count=5)- Get random sample of todos, optionally from specific project
add_todo
title- Title of the todonotes(optional) - Notes for the todo (supports Markdown formatting including checkboxes like- [ ] Task)when(optional) - When to schedule the todo (today, tomorrow, evening, anytime, someday, or YYYY-MM-DD)deadline(optional) - Deadline for the todo (YYYY-MM-DD)tags(optional) - Tags to apply to the todolist_title(optional) - Title of project/area to add to (must exactly match existing name)list_id(optional) - ID of project/area to add to (takes priority over list_title if both provided)Note: While Things’ native checklist feature (i.e., subtasks) cannot be created via AppleScript, you and your LLMs can use Markdown checkboxes in the notes field to achieve similar functionality.

update_todo
id- ID of the todo to updatetitle(optional) - New titlenotes(optional) - New noteswhen(optional) - When to schedule the todo (today, tomorrow, evening, anytime, someday, or YYYY-MM-DD)deadline(optional) - Deadline for the todo (YYYY-MM-DD)tags(optional) - New tagscompleted(optional) - Mark as completedcanceled(optional) - Mark as canceledlist_name(optional) - Name of built-in list, project, or area to move the todo to. For built-in lists use: "Inbox", "Today", "Anytime", "Someday". For projects/areas, use the exact name.list_id(optional) - ID of project/area to move the todo to (takes priority over list_name if both provided)
add_project
title- Title of the projectnotes(optional) - Notes for the projectwhen(optional) - When to schedule the projectdeadline(optional) - Deadline for the projecttags(optional) - Tags to apply to the projectarea_titleorarea_id(optional) - Title or ID of area to add to (must exactly match an existing area title — look them up withget_areas)todos(optional) - Initial todos to create in the project
update_project
id- ID of the project to updatetitle(optional) - New titlenotes(optional) - New noteswhen(optional) - When to schedule the project (today, tomorrow, evening, anytime, someday, or YYYY-MM-DD)deadline(optional) - Deadline for the project (YYYY-MM-DD)tags(optional) - New tagscompleted(optional) - Mark as completedcanceled(optional) - Mark as canceled
show_item
id- ID of item to show, or one of: inbox, today, upcoming, anytime, someday, logbookquery(optional) - Optional query to filter byfilter_tags(optional) - Optional tags to filter by
Usage Examples
Creating Todos with List Assignment
# Create todo in Inbox (default)
add_todo(title="Review quarterly report")
# Create todo in a built-in list
add_todo(title="Call dentist", when="today")
add_todo(title="Plan vacation", when="someday")
# Create todo in a project by name
add_todo(title="Design new logo", list_title="Website Redesign")
# Create todo in a project by ID (more precise, recommended for automation)
add_todo(title="Write documentation", list_id="ABC123DEF456")
# When both are provided, list_id takes priority
add_todo(
title="Important task",
list_id="ABC123DEF456", # This will be used
list_title="Other Project" # This will be ignored
)Moving Todos Between Lists
# Move to built-in list
update_todo(id="TODO123", list_name="Today")
update_todo(id="TODO456", list_name="Someday")
# Move to project by name
update_todo(id="TODO789", list_name="Website Redesign")
# Move to project by ID (recommended for precision)
update_todo(id="TODO101", list_id="ABC123DEF456")When to Use ID vs Title
Use
list_title/list_namewhen:Working interactively with human-readable names
You're certain the name is unique and won't change
Creating simple scripts or one-off tasks
Use
list_idwhen:Building automation or applications
You need precision and reliability
Working with projects/areas that might have similar names
Using Tags
Things will automatically create missing tags when they are added to a task or project. Configure your LLM to do a lookup of your tags first before making changes if you want to control this.
LLM Enrichment Workflows
The random sampling tools (get_random_inbox, get_random_anytime, get_random_todos) are designed for iterative task improvement workflows where you want to gradually enhance your todo items using AI assistance.
Use Cases
Incremental Task Enhancement
Pull 5 random todos from your Inbox to add better descriptions, break down into subtasks, or estimate time requirements
Sample from your Anytime list to identify tasks that could benefit from better scheduling or prioritization
Avoid downloading hundreds of tasks into context when you only need a few
Content Enrichment
Add or improve context and suggest more actionable language
Add context, dependencies, or next steps to existing todos
Standardize formatting across your task descriptions
Find tasks that might be too vague or overly complex
Discover todos that could be automated or delegated
Development
This project uses pyproject.toml to manage dependencies and build configuration. It's built using the Model Context Protocol, which allows Claude to securely access tools and data.
Development Workflow
Setting up a development environment
# Clone the repository
git clone https://github.com/rossshannon/Things3-MCP
cd Things3-MCP
# Set up a virtual environment with development dependencies
uv venv
uv pip install -e ".[dev]" # Install in development mode with extra dependenciesTesting changes during development
Run the comprehensive test suite to ensure everything is working as expected:
# Run all tests (116 tests, ~3-4 minutes)
uv run pytest
# Run tests with coverage report
uv run pytest --cov=things3_mcp --cov-report=term-missing
# Run specific test file
uv run pytest tests/test_list_assignment_operations.py
# Run tests with minimal output
uv run pytest -q
# Run tests matching a pattern
uv run pytest -k "error_handling"Test Configuration:
116 comprehensive tests covering all functionality
Automatic cleanup - tests don't affect your existing Things data
Edge case coverage - malformed UUIDs, timeouts, error conditions
Integration testing - tests against real Things app
The tests clean up after themselves and don't affect your existing data, so you can run them as often as you like.

Troubleshooting
The server includes error handling for:
Invalid UUIDs
Missing required parameters
Things database access errors
Data formatting errors
Authentication token issues
AppleScript execution failures
Common Issues
Things app not running: Make sure the Things app is running on your Mac for AppleScript methods to work.
Checking Logs
All errors are logged and returned with descriptive messages. To review the MCP logs:
# Follow main logs in real-time
tail -f ~/.things-mcp/logs/things3_mcp.log
# Check error logs
tail -f ~/.things-mcp/logs/things3_mcp_errors.log
# View structured logs for analysis
cat ~/.things-mcp/logs/things3_mcp_structured.json | jq
# Claude Desktop MCP logs
tail -n 20 -f ~/Library/Logs/Claude/mcp*.logAcknowledgements
This MCP server was originally based on the Applescript bridge method from things-mcp by excelsier, which was in turn based on things-mcp by hald.
Available Tools
24 toolsadd_projectA
Create a new project in Things.
Args:
----
title: Title of the project
notes: Notes for the project
when: When to schedule the project
deadline: Deadline for the project
tags: Tags to apply to the project. IMPORTANT: Always pass as an array of
strings (e.g., ["tag1", "tag2"]) NOT as a comma-separated string.
Passing as a string will treat each character as a separate tag.
area_id: ID of area to add to
area_title: Title of area to add to (must exactly match an existing area title — look them up with get_areas)
todos: Initial todos to create in the project
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| when | No | ||
| notes | No | ||
| title | Yes | ||
| todos | No | ||
| area_id | No | ||
| deadline | No | ||
| area_title | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavioral traits. However, it only documents input parameters and does not describe side effects, authentication needs, or what happens on success or failure. Key behavioral aspects like whether duplicate titles are allowed or if area_title must match an existing area are only implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence followed by a bulleted list of parameters. It is front-loaded and each parameter earns its place. While slightly verbose in listing all args, the format aids readability. One minor point: the 'Args' section could be trimmed, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, 0% schema coverage, no annotations, and an output schema exists, the description provides thorough input documentation. It covers all parameters with explanations and critical formatting notes. The output schema presumably handles return values. One gap is lack of error conditions or constraints, but overall complete enough for an experienced user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema provides no parameter descriptions. The tool's description compensates fully by explaining each parameter's purpose and format, including critical details like 'tags must be an array of strings' and 'area_title must exactly match an existing area title.' This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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.' This verb+resource combination is specific and immediately distinguishes the tool from sibling tools like add_todo or update_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like update_project or add_todo. It does not state prerequisites, exclusions, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_todoA
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)
deadline: Deadline for the todo (YYYY-MM-DD)
tags: Tags to apply to the todo. IMPORTANT: Always pass as an array of
strings (e.g., ["tag1", "tag2"]) NOT as a comma-separated string.
Passing as a string will treat each character as a separate tag.
list_id: ID of project/area to add to (takes priority over list_title if both provided)
list_title: Title of project/area to add to (must exactly match an existing area or project title — look them up with get_areas or get_projects).
If both list_id and list_title are provided, list_id takes priority.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| when | No | ||
| notes | No | ||
| title | Yes | ||
| list_id | No | ||
| deadline | No | ||
| list_title | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses important behavioral traits: the array vs string pitfall for tags, and the priority rule between list_id and list_title. It does not mention idempotency, duplication behavior, or error handling for invalid list_title, but the note to look up lists mitigates some risk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a one-line summary followed by a bullet-point argument list. Each line is necessary and informative. It front-loads the purpose and uses clear formatting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 (not shown but known to exist), the description does not need to explain return values. It covers parameter constraints, usage guidance, and key behavioral notes. For a creation tool, this is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain parameters. It explains all parameters: title (implied), notes, when (with valid values), deadline (format), tags (with critical format warning), list_id and list_title (with usage and priority). This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Create a new todo in Things.' This is a clear and specific verb (Create) + resource (todo) statement. It distinguishes this tool from siblings like update_todo or get_todos by specifying the action and target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on using list_id vs list_title, including priority and the need to look up existing areas/projects with get_areas or get_projects. It also warns about tags format. However, it does not explicitly compare this tool to siblings like add_project or when to use alternative tools for different tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_anytimeA
Get all todos from Anytime list. Note that this will return an extensive list of tasks. It is generally recommended to use get_todos with filters or search_todos instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool returns an extensive list, which is a behavioral trait. However, it does not explicitly state whether it is read-only, destructive, or any authentication requirements. The description is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words: first sentence states purpose, second provides usage guidance and alternatives. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 mostly complete. It explains what it returns (list of tasks), warns about volume, and suggests alternatives. Could mention pagination or ordering, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (0), so the baseline is 4. The description does not add parameter semantics, but none are needed since the schema is empty and coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets all todos from the Anytime list. The verb 'Get' and resource 'all todos from Anytime list' are specific. It distinguishes from siblings like get_todos and search_todos by warning about extensive results and recommending alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends using get_todos with filters or search_todos instead, providing clear guidance on when not to use this tool and naming alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_areasA
Get all areas from Things. Use these names when assigning a task or project to an area.
Args:
----
include_items: Include projects and tasks within areas
| Name | Required | Description | Default |
|---|---|---|---|
| include_items | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the effect of the include_items parameter but does not disclose read-only nature or other behavioral traits; no annotations provided so description carries burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences and an args block. Every sentence adds value. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for the tool's simplicity: explains purpose, parameter, and usage context. Output schema exists, so return format need not be detailed. Lacks explicit sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Explains the single parameter include_items: 'Include projects and tasks within areas', adding meaning beyond the schema's boolean name. Satisfactory compensation for 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it gets all areas from Things and mentions usage for assignment. Distinguishes from sibling tools like get_projects by focusing on areas, but does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when to use (for obtaining area names for assignment), but provides no guidance on when not to use or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inboxB
Get todos from Inbox.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description does not disclose behavioral traits such as read-only nature, side effects, or access permissions. With no annotations, the description should provide more context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with no wasted words. The single sentence is efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and an output schema present, the description is adequate for a simple retrieval tool. However, it could mention the sorting or filtering behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is complete. Description adds no parameter info, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 action and resource. It distinguishes from siblings like 'get_today' or 'get_anytime' by specifying 'Inbox', but could be more explicit about the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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., 'get_todos'). There are no exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_logbookA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| period | No | 7d |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses default behavior (7 days, 50 limit) but omits explicit statements about being read-only, idempotent, or any side effects. Sufficient for simple 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise, front-loaded with purpose, followed by two-line parameter breakdown. Every sentence is necessary and informative with no redundancies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 the core functionality and parameters. Lacks explanation of what 'Logbook' is (e.g., a history of completed items), but this is minor given sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description adds vital meaning: explains period format (e.g., '3d', '1w', '2m', '1y') and limits default. However, no additional constraints on limit (e.g., maximum) or explanation of period units beyond examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Get' and resource 'completed todos from Logbook', with a default scope of last 7 days. Unambiguous and distinct from sibling tools like get_todos (all todos) or get_recent (recently modified).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The description implies usage for retrieving completed tasks over a period, but does not exclude alternatives or provide context like when to prefer get_todos or get_recent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectsB
Get all projects from Things.
Args:
----
include_items: Include tasks within projects.
| Name | Required | Description | Default |
|---|---|---|---|
| include_items | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'Get all projects from Things,' implying a read operation, but does not mention authentication requirements, whether projects are mutable, or how the data is structured. The behavior is minimally conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, making it quick to parse. The first sentence provides the core purpose, and the second documents the parameter. However, it could be structured better with a clear separation of description and parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description is minimally adequate. It explains the tool's main action and parameter, but lacks context about the scope of 'all projects' (e.g., user-specific or global), no mention of ordering or pagination, and no guidance on expected return format beyond what the output schema might provide.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, so the description must add meaning. It explains the 'include_items' parameter as 'Include tasks within projects,' which clarifies its purpose beyond the schema's default and title. However, it does not specify what 'include' means structurally (e.g., nested tasks or a separate tasks array), leaving room for ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all projects from Things,' specifying the verb 'Get,' the resource 'projects,' and the scope 'all.' This effectively distinguishes it from siblings like 'add_project' and 'update_project,' which are mutative, and from other retrieval 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.
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_todos' or 'get_areas.' It lacks any context about prerequisites, limitations, or scenarios where 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.
get_random_anytimeA
Get a random sample of items from the Anytime list.
Note: The Anytime list can contain both todos and projects. This returns a
random subset without filtering types.
Args:
----
count: Number of random items to return. Defaults to 5.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It discloses that the tool returns a random subset and does not filter types, but it does not state that it is read-only, any side effects, or behavior on invalid inputs. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with five lines including a helpful note. No unnecessary words or repetition. Efficiently communicates the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and an output schema (not provided for review), the description covers the basic purpose but lacks comparative context with 23 sibling tools. It is adequate but not fully enriched for an agent to confidently select among alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should add meaning beyond the schema. It restates the 'count' parameter as 'Number of random items to return. Defaults to 5.' which exactly matches the schema, providing no additional semantics like min/max or special behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a random sample of items from the Anytime list' with specific verb 'Get' and resource 'random sample from Anytime list'. It notes that the list can contain both todos and projects, distinguishing it from siblings like get_random_inbox and get_random_todos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that it returns a random subset without filtering types, which implies when to use (e.g., for a mixed sample). However, it provides no explicit guidance on when not to use or comparisons with alternative tools like get_random_inbox or get_random_todos.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_random_inboxA
Get a random sample of todos from Inbox.
Args:
----
count: Number of random items to return. Defaults to 5.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions random sampling but does not disclose whether the tool is read-only, any side effects, or behavioral nuances. Since no annotations are provided, the description carries full burden; it provides basic transparency but omits details about safety or consistency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the main purpose. However, the 'Args:' section with delimiter lines adds unnecessary verbosity. It could be more streamlined without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 non-required parameter, no annotations, output schema exists), the description sufficiently covers the purpose and parameter. It does not explain the output structure, but the output schema likely covers that. The description is adequate for this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant value to the parameter 'count' by explaining 'Number of random items to return. Defaults to 5.' This exceeds the schema which only provides type and default; schema coverage is 0%, so the description fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a random sample of todos from Inbox,' specifying the verb 'get', resource 'todos from Inbox', and the random sampling nature, effectively distinguishing it from siblings like get_inbox and get_random_todos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the default behavior of the count parameter but does not explicitly state when to use this tool versus alternatives such as get_inbox or get_random_anytime. It is clear in its context but lacks explicit usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_random_todosA
Get a random sample of todos, optionally filtered by project.
Args:
----
project_uuid: Optional UUID of a specific project to draw todos from.
count: Number of todos to return. Defaults to 5.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| project_uuid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description transparently explains it returns a random sample with a default count, but does not disclose whether the operation is read-only or other behavioral traits like idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a well-structured docstring with an Args section. It is concise and front-loaded with the purpose. Minor redundancy could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the two parameters and no annotations, the description covers the core functionality adequately. The output schema exists, so return values are documented elsewhere. Slight room for improvement in behavioral details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates by explaining the purpose of each parameter (project_uuid and count) including their default values, adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a random sample of todos' with an optional filter, which is specific and distinguishes it from siblings like get_todos (which gets all todos) and other random getters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool over alternatives like get_todos or get_random_anytime. It implies usage for random sampling, but lacks direct guidance or comparisons.
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')
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description should disclose behavioral traits. It mentions period examples but lacks details on return order, limits, or whether unsaved items are included. Adequate for a simple tool but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded with purpose, then parameter explanation. The 'Args: ---' format is informal but efficient. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, return values need not be explained. However, with many sibling tools and no annotations, the description could provide more context on scope (e.g., across all projects) and differences from similar tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains the period parameter with example values but no format specification, default, or validation rules. Minimal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get recently created items', specifying verb and resource. It is distinct from siblings like get_today or get_todos, but does not clarify which item types are included (e.g., projects, todos).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use vs. alternatives such as get_today, get_upcoming, or get_anytime. The period parameter is given examples but no context on selection criteria.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states the basic functionality without disclosing any behavioral traits such as read-only nature, pagination, ordering, or permissions. Given no annotations, the description carries the full burden of transparency, and it falls short.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately states the action and resource. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal but functional. However, given the large number of sibling get_* tools, the description could benefit from a sentence explaining what distinguishes the Someday list from others. The presence of an output schema might compensate for return values, but the description does not hint at the structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the input schema is trivially fully covered. The description does not need to add parameter semantics. Baseline score 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and resource 'todos from Someday list' which clearly indicates the tool retrieves todos from a specific list. It distinguishes itself from sibling tools like get_today, get_inbox, etc. that target different lists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit guidance on when to use this tool vs alternatives like get_anytime or get_inbox. The name 'Someday' implies it's for a specific list, but without explanation, an AI agent might not understand the difference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tagged_itemsC
Get items with a specific tag.
Args:
----
tag: Tag title to filter by
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states that it gets items with a tag, omitting details like pagination, ordering, case-sensitivity, or whether it returns all types of items. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise (one sentence plus arg list). No fluff. However, the 'Args:' header is unnecessary for a single param, but overall structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Considering the tool's simplicity (1 param) and that an output schema exists, the description is still incomplete. It doesn't clarify what 'items' are (todos? projects?) or provide examples. An output schema may define return structure, but the meaning of filtered items remains ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'tag' is described as 'Tag title to filter by', which clarifies it's a title not an ID. Since schema property lacks a description (0% coverage), this adds some value but no format details or possible values. Baseline 3 due to low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Get' and resource 'items with a specific tag'. It distinguishes from siblings like get_tags (which returns tags) and other getters that filter by different criteria. However, it doesn't specify what 'items' includes (todos, projects, etc.), which could be ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 search_todos or get_projects. The description only states what it does, not the context of use or when to avoid it. There are many sibling tools without differentiation hints.
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
| Name | Required | Description | Default |
|---|---|---|---|
| include_items | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks behavioral details such as pagination, ordering, authentication requirements, or error handling. It only restates the parameter purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of a single line and a simple parameter note. It is front-loaded with the core purpose, though the args format is slightly informal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 the tool's simplicity, the description provides basic completeness. However, it lacks context on when to set include_items to true and does not mention any potential scope or limits (e.g., all tags in the system).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds 'Include items tagged with each tag,' which clarifies the parameter's meaning beyond the schema's title and default value. However, no additional parameter details are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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-resource pair. It distinguishes itself from siblings like 'get_tagged_items' by focusing on tags themselves, not tagged items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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' or 'search_items.' The description does not mention any prerequisites, exclusions, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_todayB
Get todos due today.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only states the basic function. It does not mention whether results include completed tasks, recurrences, sort order, or timezone handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (5 words) and front-loaded. However, it may be too sparse given the need to differentiate from many similar sibling tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of parameters and the presence of an output schema, the description is minimally adequate. It explains the basic purpose but lacks details about edge cases (e.g., overdue items) and does not fully differentiate from siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so by rule the baseline is 4. The description adds no parameter details because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get todos due today' clearly specifies the verb 'Get' and the resource 'todos due today', which distinguishes it from sibling tools like get_anytime (anytime tasks) or get_upcoming (future tasks). It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as get_todos or get_upcoming. The description lacks context for selection.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_uuid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavior. It only states 'Get todos from Things' without detailing output format, pagination, authentication, or read-only nature. This is insufficient for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence stating purpose and one parameter description. It is front-loaded and contains no superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and an output schema, the description covers the basics. However, it omits context about output structure or usage prerequisites, which would be helpful given the lack of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description includes an 'Args' section explaining project_uuid as an optional UUID. This adds meaning beyond the schema type definition, though the UUID format could be more specific.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves todos from Things with optional project filtering. However, it does not explicitly differentiate from siblings like search_todos, which could be used for similar purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when fetching todos, optionally filtered by project, but provides no guidance on when to use this over siblings like get_anytime or search_todos. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trashB
Get trashed todos.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states 'Get trashed todos' without explaining what 'trashed' means, whether it's a read operation, or any side effects. This is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two words, but it lacks sufficient context. It could be improved by adding a brief explanation of what 'trashed' means or how the results are sorted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and has an output schema, so the description could be minimal. However, it does not clarify the scope (e.g., all trashed items or just todos) or any default ordering, which would help the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters in the input schema. The description does not need to add parameter semantics, and the baseline score for 0 parameters is 4, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'trashed todos', indicating it retrieves deleted items. However, it does not distinguish from sibling tools like get_inbox or get_todos, which could be confusing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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_inbox or get_todos. The context signals show many sibling tools, but the description offers no selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upcomingA
Get all upcoming todos (those with a start date in the future).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses the filter criteria (future start date) but does not mention ordering, pagination, or exact time boundary. The output schema may fill some gaps, but the description alone is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately conveys the tool's purpose without redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, no nested objects), the description is largely complete. However, it omits details like default ordering or whether the result set is limited, which would be useful for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100% by default. The description adds meaning by clarifying the scope ('start date in the future'), which qualifies as helpful context beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all upcoming todos' and defines 'upcoming' as those with a start date in the future. This is a specific verb-resource pair and distinguishes from siblings like get_today or get_recent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance or alternatives are provided. The tool's purpose implies usage for future-dated todos, but with many siblings, explicit guidance would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_advancedC
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)
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| area | No | ||
| type | No | ||
| status | No | ||
| deadline | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only lists parameters; it does not state whether this tool is read-only, whether it respects user context, what the default behavior is when no filters are given (returns all?), or any side effects. This lack of transparency could lead to misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences plus parameter list). However, the parameter list uses raw 'Args:' formatting with dash bullets, which is functional but not polished. It could be more structured (e.g., table or enumerated list). No extraneous words, but some parameter descriptions are ambiguous (e.g., 'tag' as a string but not clear if it's exact match).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 optional parameters) and many sibling tools, the description is incomplete. It does not explain how filters combine (AND, OR?), whether all parameters are optional and what an empty search returns, or how pagination works. An output schema exists (not shown), but the tool's behavior remains underdefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description bears full responsibility for parameter meaning. It adds basic descriptions (e.g., 'Filter by todo status (incomplete/completed/canceled)'), which clarify purpose. However, it does not specify expected formats (e.g., UUID for area, date format for start_date/deadline). The parameter list is minimally helpful but not comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Advanced todo search with multiple filters' which clearly identifies the action (search) and resource (todos). The listed parameters (status, start_date, etc.) reinforce this. However, it does not explicitly differentiate from sibling search tools like 'search_items' or 'search_todos', leaving the agent to infer from the 'advanced' name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 its many siblings. It does not specify prerequisites, alternative tools, or exclusions. The agent must guess from the name and parameter list, which is insufficient for correct selection.
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behaviors. It only says 'Search for items in Things,' which reveals nothing about authentication needs, rate limits, mutation risks, or response characteristics. This is severely insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence), but it fails to provide necessary information. While concise, it is under-specified and does not earn its place; it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of sibling tools and no annotations, the description should elaborate on scope, behavior, and output. It does not mention what is returned, pagination, or limitations, making it incomplete even for a simple search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, meaning neither schema nor description adequately explains parameters. The description adds only 'query: Search query,' which simply repeats the parameter name without clarifying format, constraints, or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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+resource. However, it lacks differentiation from sibling tools like search_todos and search_advanced, which also search but likely in more specific scopes. The term 'items' is vague and could encompass multiple entity types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 search_todos or search_advanced. The description does not mention any context, prerequisites, or exclusions, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_todosA
Search todos by title or notes.
Args:
----
query: Search term to look for in todo titles and notes
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. It reveals that the tool searches both title and notes, but omits details like case sensitivity, partial matching, pagination, or response structure. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one-line summary plus a single parameter doc. No unnecessary words, front-loaded with purpose. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one param, output schema present), the description is adequate but leaves gaps: no mention of matching behavior (exact/substring), result limits, or ordering. Could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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: 'Search term to look for in todo titles and notes.' This clarifies that the query applies to both fields, which the schema's 'Query' title alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search todos by title or notes', specifying the verb, resource, and search scope. It distinguishes from sibling tools like 'search_advanced' or 'search_items' which may target different fields or use more complex logic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. The description implies usage for basic text search on todos, but fails to mention when not to use it (e.g., for filters or advanced queries) or list alternative tools.
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. IMPORTANT: Always pass as an
array of strings (e.g., ["tag1", "tag2"]) NOT as a comma-separated
string. Passing as a string will treat each character as a separate tag.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| query | No | ||
| filter_tags | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description partially covers behavior: it mentions the format constraint for filter_tags and the special id values. However, it lacks details on error handling, authentication, or side effects, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with purpose, and uses a structured Args section. The filter_tags instruction, though lengthy, is important for correctness. No unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and parameter details adequately but lacks usage guidance and behavioral context (e.g., invalid ID handling). Given the presence of an output schema, return value explanations are not needed. Overall, adequate but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds critical meaning: it enumerates special id values, explains query as optional filtering, and gives a crucial note on filter_tags array format. This significantly aids correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 the special IDs (inbox, today, etc.), distinguishing it from sibling get_* tools that only fetch specific lists. However, it does not explicitly differentiate itself from those tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 show_item versus alternatives like get_today or get_inbox. It lists possible id values but does not explain trade-offs or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectA
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, anytime, someday, or YYYY-MM-DD)
deadline: New deadline (YYYY-MM-DD)
tags: New tags. IMPORTANT: Always pass as an array of strings (e.g., ["tag1", "tag2"]) NOT as a comma-separated string. Passing as a string will treat each character as a separate tag.
completed: Mark as completed
canceled: Mark as canceled
list_name: Move project directly to a built-in list. Must be one of:
- "Today": Move to Today list
- "Anytime": Move to Anytime list
- "Someday": Move to Someday list
- "Trash": Move to trash
Note: Projects cannot be moved to Inbox or Logbook. To move a project
to Logbook, mark it as completed instead.
area_title: Title of the area to move the project to
area_id: ID of the area to move the project to
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| tags | No | ||
| when | No | ||
| notes | No | ||
| title | No | ||
| area_id | No | ||
| canceled | No | ||
| deadline | No | ||
| completed | No | ||
| list_name | No | ||
| area_title | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It includes important behavioral notes: tags must be array not string, list_name restrictions (cannot move to Inbox/Logbook), and how to move to Logbook via completed. However, it does not disclose error behavior or return value details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and uses a structured 'Args' section. It is slightly verbose due to detailed parameter notes, but every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 11 parameters and no annotations, the description covers all parameters with behavioral constraints. It lacks information about what happens on invalid id or error conditions, but output schema likely handles return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining each parameter's meaning. It provides valid values for 'when', warns about 'tags' array format, enumerates allowed 'list_name' values, and clarifies area parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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,' specifying the verb (update) and resource (project). It distinguishes from sibling tools like add_project (create) and update_todo (update todos), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool vs alternatives like add_project. It provides some parameter-specific guidance (e.g., list_name constraints) but lacks general when-to-use context.
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: When to schedule the todo (today, tomorrow, anytime, someday, or YYYY-MM-DD).
deadline: New deadline (YYYY-MM-DD).
tags: New tags. IMPORTANT: Always pass as an array of strings (e.g., ["tag1", "tag2"]) NOT as a comma-separated string. Passing as a string will treat each character as a separate tag.
completed: Mark as completed.
canceled: Mark as canceled.
list_id: ID of project/area to move the todo to (takes priority over list_name if both provided).
list_name: Name of built-in list, project, or area to move the todo to. For built-in lists use: "Inbox", "Today", "Anytime", "Someday". For projects or areas, use the exact name.
If both list_id and list_name are provided, list_id takes priority.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| tags | No | ||
| when | No | ||
| notes | No | ||
| title | No | ||
| list_id | No | ||
| canceled | No | ||
| deadline | No | ||
| completed | No | ||
| list_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist; description covers basic update behavior but lacks details on partial vs full update, side effects, or authentication. It does warn about tags format and list_id priority.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with purpose and structured as a list; each sentence adds value. Slight redundancy on list_id priority but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and output schema present, description covers all parameters adequately. Missing details on idempotency or return format, but not critical for update use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, description fully compensates by explaining each parameter's meaning, valid values (e.g., 'when' options), formatting constraints (tags as array), and priority rules (list_id over list_name).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'existing todo in Things', distinguishing it from sibling tools like add_todo (create) and update_project (project update).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implicitly clear (update an existing todo), but no explicit guidance on when not to use or alternatives is provided. The parameter descriptions offer some usage hints (e.g., list_id vs list_name priority).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
24 tool updates
v2.0.7- First observed
add_project - First observed
add_todo - First observed
get_anytime - First observed
get_areas - First observed
get_inbox - First observed
get_logbook - First observed
get_projects - First observed
get_random_anytime - First observed
get_random_inbox - First observed
get_random_todos - First observed
get_recent - First observed
get_someday - First observed
get_tagged_items - First observed
get_tags - First observed
get_today - First observed
get_todos - First observed
get_trash - First observed
get_upcoming - First observed
search_advanced - First observed
search_items - First observed
search_todos - First observed
show_item - First observed
update_project - First observed
update_todo
TDQS
Most tools have distinct purposes (e.g., get lists for different views, search tools with different scopes). Some overlap exists between search_items, search_todos, and search_advanced, but descriptions clarify the differences. Overall, an agent can reliably distinguish tools.
All tools follow a consistent verb_noun pattern in snake_case (add_, get_, update_, search_, show_). No mixing of styles or unpredictable patterns, making it easy to infer tool behavior from name.
With 24 tools, the server covers a wide range of task management operations. While slightly on the higher side, each tool serves a specific purpose and fits the domain of a full-featured task manager.
The server provides strong coverage for creating, reading, and updating tasks and projects. However, there is no explicit delete tool (only move to trash via update), and the search functionality has some redundancy. Minor gaps exist but core workflows are supported.
Maintenance
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
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Manage tasks, Focus Zone, notes, projects, and task history from compatible AI assistants.
- AurentiaOAuthfr.aurentia
Your Aurentia workspace — projects, CRM, tasks, deliverables — in Claude, Cursor or any MCP client.
- BleepOAuthcom.usebleep
Create Tasks and run Workflows in Bleep from Claude, ChatGPT, and other AI assistants.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables interaction with the Things app through Claude Desktop, allowing task creation, project analysis, and priority management using natural language commands.22574MIT
- AlicenseNot gradedqualityDmaintenanceLets 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.36MIT
- AlicenseBqualityDmaintenanceEnables Claude to interact with Things 3 on macOS, allowing users to create, update, and manage to-dos and projects, list tasks, search items, and navigate through Things lists using natural language.202017ISC
- AlicenseBqualityDmaintenanceEnables Claude to interact with Things 3 task management, allowing creation, analysis, and management of tasks, projects, and tags via natural language.22MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/rossshannon/Things3-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server