Things MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| things_create_from_templateA | Send one structured to-do or project to Things. Supports checklist rows and initial project headings. Requires writes. URL receipt confirms dispatch only: Things exposes no complete read-back or returned IDs here. Inspect Things; never retry with a new request ID. |
| things_edit_extrasA | Send checklist replacement/append/prepend, heading placement or scheduling including reminders/Evening/clearing to Things. Requires writes, current revision and the local Keychain URL token. Checklist replacement replaces every row. These fields cannot be read back; receipt is unverified dispatch. Repeat templates may reject these changes. |
| things_duplicate_itemA | Ask Things to duplicate a to-do or project through its documented URL command. Requires writes, current revision and the local Keychain URL token. Repeating items cannot be duplicated. Receipt contains the source ID, not a new item ID, and does not confirm completion. Inspect Things before another request. |
| things_show_viewA | Open search or a built-in Things view, optionally filtering by tags. This changes the Mac's view only. Requires writes and a request ID; receipt confirms URL dispatch, not a visible result or returned task data. |
| things_capabilitiesA | Read the implementation and verification status of every operation family. Unavailable features cannot be invoked. |
| things_healthA | Check the local Things connection, timezone, ordinary-write permission, and separate Trash permission. |
| things_find_itemsA | Find items by type, text, status, tag ID, date range, selected items, list or parent. Optional sorting changes result order only. Follow nextScanOffset with offset zero to continue beyond 5000 objects. Results are not a snapshot. Fetch before editing. |
| things_get_itemA | Read one Things item by kind and stable ID, including its revision for safe editing. |
| things_create_itemB | Create a to-do, project, area, or tag. Supply a unique UUID requestId. Creation of all four kinds is native verified. Local write permission is required and disabled by default. |
| things_update_itemA | Edit supported fields, or complete/cancel/reopen a to-do or project. Use the latest revision and a unique UUID requestId. Omitted fields stay unchanged; deadline null clears it. No deletion or arbitrary property editing. |
| things_schedule_itemA | Schedule a to-do or project on an explicit calendar date in the Mac timezone. Requires its current revision and a unique UUID requestId. Does not set reminders or repeating rules. |
| things_move_itemA | Move a to-do to a project or area, a project to an area, detach a parent, or move a to-do to Inbox, Today, Anytime, or Someday. Projects support Today and Someday. Project Anytime and direct Logbook moves are unavailable. Project moves return descendantImpact with compared/changed task counts and up to 20 changed IDs with field names. Counts describe exposed fields, not every inherited effect. Requires the latest revision and write permission. Does not reorder items, address headings, or restore Trash. |
| things_trash_itemA | Move one open to-do, including any checklist it contains, to Things Trash on the Mac. Read it and review the target first. Requires the latest revision, a unique request ID, ordinary write permission, and the separate local Trash grant. Does not permanently delete, empty Trash, or delete projects, areas or tags. |
| things_request_statusA | Check the local receipt for a mutation request ID. Pending or unknown means inspect Things before any further write; do not create a new ID as an automatic retry. |
| things_restore_itemA | Restore one open to-do to Inbox or one open project to Today from Trash. Requires normal writes, a current revision and a unique request ID. Closed items are not enabled. Restore a trashed project before addressing its children. Trashed project children cannot be enumerated before restoration; the receipt verifies exposed root fields and destination. |
| things_existsA | Check whether an item exists by kind and ID. Automation errors are not reported as absence. |
| things_navigateA | Show an item or built-in list, open a task/project for editing, or show Quick Entry on this Mac. Requires write permission. Reports command acceptance, not task creation or visibility on another device. |
| things_count_itemsA | Count matches in a scan segment. Follow nextScanOffset and sum counts until scanComplete; concurrent Things edits can change totals. Uses the same filters as find. Offset must be zero. |
| things_preview_destructiveA | Inspect the exposed scope of project/area/tag deletion, emptying Trash, or logging completed items. Returns a scope revision. Never grants permission. Checklist, heading and repeat-template content cannot be enumerated; Things does not provide atomic scope locking. Check health for native execution gates. |
| things_apply_destructiveC | Apply a previously reviewed scope using its current scope revision. Requires ordinary writes and the separate local owner grant for this action. Container deletion can cascade; empty Trash is permanent and global. Open-project, area and tag-hierarchy deletion are native verified. Global-command gates remain disabled pending their separate checks. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Most tools map to a distinct resource and action, and the paired destructive preview/apply flow is clearly separated. Minor overlap exists between create_item and create_from_template, and between schedule_item and edit_extras, so an agent must read descriptions carefully to pick the right one.
All tools share the things_ prefix and use snake_case, with mostly verb_noun names like get_item, create_item, and restore_item. A few names are noun-only or less conventional (things_capabilities, things_health, things_exists, things_request_status), making the pattern slightly inconsistent.
20 tools falls into the 16-25 range that feels heavy for a server. That said, each tool addresses a distinct operation or safety gate, so the count is still defensible for a full Things integration.
The surface covers create, read, update, move, schedule, duplicate, trash/restore, and reviewed destructive actions, which is strong lifecycle coverage for the domain. Minor gaps remain, such as no direct read-back for template-created items, no project-to-Logbook move, and disabled global destructive gates.