Things Cloud MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| API_KEY | Yes | Primary API key for authentication. Must be at least 32 characters. | |
| THINGS_EMAIL | Yes | Your Things Cloud account email | |
| THINGS_PASSWORD | Yes | Your Things Cloud account password |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_inboxA | List tasks in the Inbox — tasks not yet scheduled or assigned to a list. Inbox = schedule is 'inbox', not completed, not trashed. |
| list_todayB | List tasks scheduled for today or earlier that aren't completed. Today = start date is today or before, not completed, not trashed. Ordered by today_index then index. |
| list_upcomingA | List tasks scheduled for a future date. Upcoming = start date is after today, not completed, not trashed. Ordered by start date, then deadline. |
| list_anytimeA | List tasks in the Anytime list — available to work on, no specific date. Anytime = schedule is 'anytime', not completed, not trashed. |
| list_somedayA | List tasks in the Someday list — ideas and tasks without urgency. Someday = schedule is 'someday', not completed, not trashed. |
| list_logbookA | List completed tasks from the Logbook. Shows tasks completed within the last |
| list_trashB | List trashed tasks. Ordered by modification date, newest first. |
| get_taskA | Get a single task by its UUID. Returns full task details including tags. |
| list_areasB | List all areas. Areas are high-level life categories (e.g., Work, Personal). |
| list_tagsA | List all tags. Tags can be hierarchical (e.g., work/errands). |
| list_projectsA | List all projects. Projects are multi-step tasks that contain sub-tasks. Args: include_completed: If True, also include completed/cancelled projects. Default False (active projects only). limit: Optional max number of projects. offset: Optional pagination offset. |
| search_tasksA | Full-text search across task titles, notes, and checklist items. Case-insensitive substring match. Trashed tasks are excluded by default. Args: query: Search string. Returns empty list when blank. include_trashed: If True, also search trashed tasks. include_checklists: If True (default), also match tasks whose checklist items contain the query. limit: Optional max number of tasks. offset: Optional pagination offset. |
| search_advancedA | Multi-predicate search. Every filter is optional and AND-combined. Use this for GTD reviews ("what's overdue?"), area sweeps, or finding tasks modified recently. Args:
status: 'pending', 'cancelled', or 'completed'.
type: 'task', 'project', or 'heading'.
schedule: 'inbox', 'anytime', or 'someday'.
area_uuid: Filter by area.
project_uuid: Filter by parent project.
tag: Tag UUID or name to filter by.
include_descendants: When |
| list_tasks_by_tagA | List tasks with a specific tag. Args:
tag: Tag UUID or name (e.g., 'work' or 'work/errands').
include_descendants: If True (default), also matches child tags.
limit: Optional max number of tasks to return. Omit to fetch every
matching task in one call (typical for agent workflows).
offset: Optional pagination offset. Page by setting offset += limit
until the response is shorter than |
| list_all_tasksA | List every non-trashed task across the entire library. Returns all tasks regardless of schedule, area, or project. By default
fetches the full set in a single request — agents that need every task
should call this without Args: limit: Optional max number of tasks. Omit to fetch all tasks. offset: Optional pagination offset. |
| create_taskA | Create a new task in Things3. Args: title: Task title (required). notes: Optional notes/description. schedule: One of 'inbox', 'anytime', or 'someday'. Default: 'inbox'. tags: Optional list of tag UUIDs or names to assign. project_uuid: UUID of the project to add this task to. area_uuid: UUID of the area to assign this task to. deadline: Unix timestamp for the deadline. start_date: Unix timestamp for the start date (schedules for a specific day). evening: If True, schedule for 'This Evening' instead of morning. |
| update_taskA | Update an existing task. Only provided fields are changed. Args: uuid: Task UUID (required). title: New title. notes: New notes. schedule: 'inbox', 'anytime', or 'someday'. tags: New tag list (replaces existing tags). project_uuid: Move to this project. area_uuid: Assign to this area. deadline: New deadline (Unix timestamp). start_date: New start date (Unix timestamp). |
| complete_taskC | Mark a task as completed. Args: uuid: Task UUID. |
| cancel_taskC | Cancel a task (mark as cancelled, not deleted). Args: uuid: Task UUID. |
| delete_taskC | Move a task to the trash. Args: uuid: Task UUID. |
| schedule_taskA | Schedule a task for today, anytime, someday, or a specific date. Args: uuid: Task UUID. schedule: 'inbox', 'anytime', or 'someday'. start_date: Optional Unix timestamp to schedule for a specific day. evening: If True, schedule for "This Evening" instead of morning. |
| move_to_projectC | Move a task into a project. Args: uuid: Task UUID. project_uuid: Target project UUID. |
| assign_tagsA | Replace the tags on a task. Args: uuid: Task UUID. tags: List of tag UUIDs or names. Pass empty list to remove all tags. |
| create_tagB | Create a new tag. Args: title: Tag name. parent: Optional parent tag UUID or name for hierarchy (e.g., creates 'errands' under 'work'). shortcut: Optional single-character keyboard shortcut. |
| create_projectB | Create a new project. Projects are multi-step tasks that hold sub-tasks. Args: title: Project title (required). notes: Optional notes/description. schedule: 'inbox', 'anytime' (default), or 'someday'. area_uuid: Optional area to assign the project to. deadline: Unix timestamp deadline. start_date: Unix timestamp for the project's start date. tags: Optional list of tag UUIDs or names. |
| update_projectB | Update a project's fields. Only provided fields are changed. Args: uuid: Project UUID (required). title: New title. notes: New notes. schedule: 'inbox', 'anytime', or 'someday'. area_uuid: Move the project to this area. deadline: New deadline (Unix timestamp). start_date: New start date (Unix timestamp). tags: New tag list (replaces existing tags). |
| complete_projectC | Mark a project as completed. Args: uuid: Project UUID. |
| delete_projectA | Move a project to the trash. Args: uuid: Project UUID. |
| trigger_syncA | Trigger a full pull + push sync with Things Cloud. Call this after making changes so they appear on all your devices. |
| add_checklist_itemB | Add a checklist item (sub-task) to a task. Args: task_uuid: UUID of the parent task. title: Checklist item text. |
| complete_checklist_itemC | Check off a checklist item. Args: uuid: Checklist item UUID. |
| uncomplete_checklist_itemC | Uncheck a checklist item. Args: uuid: Checklist item UUID. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nkootstra/things'
If you have feedback or need assistance with the MCP directory API, please join our Discord server