MotionMCP
Motion MCP Server
Motion es una aplicación de calendario y gestión de tareas impulsada por IA que programa automáticamente tu trabajo. Este servidor MCP conecta la API de Motion con LLMs como Claude y ChatGPT a través del Model Context Protocol, para que puedas gestionar tareas, buscar proyectos, consultar tu agenda y más, todo mediante conversación natural. Funciona en escritorio, web y móvil.
Vista previa
Haz clic en la imagen para verla a tamaño completo
Related MCP server: Motion MCP Server
Primeros pasos
Requisitos previos: Node.js 20+ y una clave de API de Motion.
Configuración local (npx)
Para clientes MCP de escritorio: Claude Desktop, Claude Code, Cursor y similares.
Añade a tu claude_desktop_config.json:
{
"mcpServers": {
"motion": {
"command": "npx",
"args": ["motionmcp"],
"env": {
"MOTION_API_KEY": "your_api_key"
}
}
}
}Prueba desde la línea de comandos:
MOTION_API_KEY=your_api_key npx motionmcpConsejo:
npxsiempre ejecuta la última versión publicada; no es necesario instalar nada.
Configuración remota (Cloudflare Workers)
Para clientes móviles y web: Claude móvil/web, ChatGPT móvil/web o cualquier cliente MCP HTTP.
Despliegue con un clic
Tras el despliegue, configura tus secretos en el panel de Cloudflare (Workers > tu worker > Settings > Variables):
MOTION_API_KEY— tu clave de API de MotionMOTION_MCP_SECRET— una cadena aleatoria (genérala conopenssl rand -hex 16)
Despliegue manual
# Set secrets
npx wrangler secret put MOTION_API_KEY
npx wrangler secret put MOTION_MCP_SECRET # use: openssl rand -hex 16
# Deploy
npm run worker:deployTu URL MCP será:
https://motion-mcp-server.YOUR_SUBDOMAIN.workers.dev/mcp/YOUR_SECRETUsa exactamente esa dirección. El secreto va al final de la ruta y nada lo sigue: el servidor anuncia sus propias sub-rutas (como el endpoint de mensajes) durante una sesión, así que no añadas /sse ni ninguna otra sub-ruta al secreto.
Conexión desde Claude
Ve a claude.ai > Settings > Connectors
Añade tu URL MCP
El servidor se sincroniza automáticamente con la aplicación móvil de Claude
Conexión desde ChatGPT
Ve a ChatGPT Settings > Connectors
Añade tu URL MCP
Seguridad: El secreto en la URL evita el descubrimiento casual. Trata la URL completa como una contraseña: no la compartas públicamente.
La configuración de herramientas funciona igual que en el servidor local. Establece MOTION_MCP_TOOLS en wrangler.toml bajo [vars], o sobrescríbelo mediante wrangler secret put MOTION_MCP_TOOLS.
Para el desarrollo local de Workers, consulta DEVELOPER.md.
Clave de API
El servidor lee tu clave de API de Motion desde la variable de entorno MOTION_API_KEY.
En línea (npx):
MOTION_API_KEY=your-key npx motionmcpArchivo .env (cuando se ejecuta desde el código fuente mediante npm):
MOTION_API_KEY=your-keyCuando uses
npx, prefiere la variable de entorno en línea, ya quenpxno leerá un archivo.envlocal.
Configuración de herramientas
Las 10 herramientas están habilitadas por defecto. Si ejecutas varios servidores MCP y quieres reducir el ruido de selección de herramientas, puedes limitar cuáles se exponen mediante la variable de entorno MOTION_MCP_TOOLS:
Nivel | Herramientas | Descripción |
minimal | 3 | Solo tareas, proyectos y espacios de trabajo |
essential | 8 | Añade usuarios, búsqueda, comentarios, horarios y estados |
complete (default) | 10 | Acceso completo a la API, incluidos campos personalizados y tareas recurrentes |
custom | varía | Elige exactamente las herramientas que necesites |
Ejemplo personalizado:
MOTION_MCP_TOOLS=custom:motion_tasks,motion_projects,motion_search npx motionmcpReferencia de herramientas
motion_tasks
Operaciones: create, list, list_all_uncompleted, get, update, delete, move, unassign
La herramienta principal para la gestión de tareas. Admite todos los parámetros de la API de Motion, incluidos name, description, priority, dueDate, duration, labels, assigneeId y autoScheduled. Puedes referenciar espacios de trabajo y proyectos por nombre; el servidor los resuelve automáticamente.
list_all_uncompleted abarca todos los espacios de trabajo en una sola llamada (ignora workspaceId/workspaceName) y respeta los filtros dueDate y priority, de modo que "¿qué vence esta semana en todos mis espacios de trabajo?" se resuelve directamente. En list, dueDate es un límite inclusivo de "en o antes de ese día" que incluye tareas vencidas (así que dueDate: "today" responde a "¿qué vence hoy?"), y completedAfter / completedBefore acotan por fecha de finalización en la zona horaria de tu cuenta para "¿qué hice esta semana?". Las fechas se interpretan en la zona horaria de tu cuenta de Motion, y las respuestas de listado comienzan con un encabezado que indica esa zona y la fecha local de hoy.
{
"operation": "create",
"name": "Complete API integration",
"workspaceName": "Development",
"projectName": "Release Cycle Q2",
"dueDate": "2025-06-15T09:00:00Z",
"priority": "HIGH",
"labels": ["api", "release"]
}motion_projects
Operaciones: create, list, get
Gestiona proyectos de Motion. Los nombres de espacios de trabajo y proyectos se comparan de forma difusa, y el servidor selecciona automáticamente tu espacio de trabajo "Personal" si no se especifica ninguno.
{"operation": "create", "name": "New Project", "workspaceName": "Personal"}motion_workspaces
Operaciones: list, get
Lista e inspecciona espacios de trabajo.
motion_users
Operaciones: list, current
Lista usuarios en un espacio de trabajo u obtiene el usuario autenticado actual.
motion_search
Operaciones: content
Busca tareas y proyectos por consulta en un espacio de trabajo.
{"operation": "content", "query": "API integration", "workspaceName": "Development"}motion_comments
Operaciones: list, create
Lee y añade comentarios en tareas y proyectos.
{"operation": "create", "taskId": "task_123", "content": "Updated the API endpoints as discussed"}motion_schedules
Operaciones: list
Recupera los horarios de los usuarios, mostrando las horas de trabajo de cada día (inicio-fin por día) y las zonas horarias. Estos son solo plantillas recurrentes de horas de trabajo; no exponen eventos o reuniones reales del calendario, por lo que por sí solos no pueden mostrar una imagen real de disponibilidad; combínalos con scheduledStart/scheduledEnd de las tareas para ver lo que Motion ha reservado automáticamente.
motion_custom_fields
Operaciones: list, create, delete, add_to_project, remove_from_project, add_to_task, remove_from_task
Define y gestiona campos personalizados en espacios de trabajo, proyectos y tareas.
{
"operation": "create",
"name": "Sprint",
"type": "DROPDOWN",
"options": ["Sprint 1", "Sprint 2", "Sprint 3"],
"workspaceName": "Development"
}motion_recurring_tasks
Operaciones: list, create, delete
Gestiona plantillas de tareas recurrentes.
{
"operation": "create",
"name": "Weekly Team Standup",
"recurrence": "WEEKLY",
"projectName": "Team Meetings",
"daysOfWeek": ["MONDAY", "WEDNESDAY", "FRIDAY"],
"duration": 30
}motion_statuses
Operaciones: list
Lista los estados disponibles para un espacio de trabajo.
Configuración avanzada
Configuración mínima (solo 3 herramientas):
{
"mcpServers": {
"motion": {
"command": "npx",
"args": ["motionmcp"],
"env": {
"MOTION_API_KEY": "your_api_key",
"MOTION_MCP_TOOLS": "minimal"
}
}
}
}Selección de herramientas personalizadas:
{
"mcpServers": {
"motion": {
"command": "npx",
"args": ["motionmcp"],
"env": {
"MOTION_API_KEY": "your_api_key",
"MOTION_MCP_TOOLS": "custom:motion_tasks,motion_projects,motion_search"
}
}
}
}Uso de tu espacio de trabajo local (npm):
{
"mcpServers": {
"motion": {
"command": "npm",
"args": ["run", "mcp:dev"],
"cwd": "/absolute/path/to/your/MotionMCP",
"env": {
"MOTION_API_KEY": "your_api_key"
}
}
}
}Consulta la configuración completa para desarrolladores en DEVELOPER.md.
Depuración
Los registros se emiten a
stderren formato JSONComprueba si faltan claves, nombres de espacios de trabajo/proyectos y permisos
Usa
motion_workspaces(list) ymotion_projects(list) para validar IDs
{
"level": "info",
"msg": "Task created successfully",
"method": "createTask",
"taskId": "task_789",
"workspace": "Development"
}Licencia
Apache-2.0 License
Para más información, consulta la documentación completa de la API de Motion o la documentación del Model Context Protocol.
Available Tools
10 toolsmotion_commentsC
Manage comments on tasks
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Pagination cursor for list operation (optional) | |
| taskId | Yes | Task ID to comment on or fetch comments from (required) | |
| content | No | Comment content (required for create operation) | |
| operation | Yes | Operation to perform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Manage' does not indicate whether operations are read-only or mutating, what side effects occur, or if permissions are needed. The agent cannot assess safety or impact from the description alone.
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, but it is under-specified rather than genuinely concise. A single vague phrase does not earn its place because it omits critical operational information that would cost the agent more effort to discover.
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 has four parameters, no output schema, and no annotations, so the description must provide substantial context. It fails to mention the two operations, expected return values, or any behavioral constraints, making it inadequate for an agent to invoke the tool confidently without opening the schema.
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 100%, with each parameter (cursor, taskId, content, operation) having a descriptive comment and operation having an enum. Since the schema fully documents parameters, the baseline of 3 applies even though the description adds no parameter-level detail.
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 phrase 'Manage comments on tasks' identifies the resource (comments on tasks), which distinguishes it from sibling tools like motion_tasks or motion_projects. However, 'Manage' is a general verb and does not specify the actual operations (list/create) that the schema reveals, so purpose is only partially clear.
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 guidance on when to choose this tool over alternatives or when to use list versus create. It merely states the resource without any context, exclusions, or conditions, leaving the agent to infer usage from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_custom_fieldsB
Manage custom fields for tasks and projects. Required params per operation: list: workspaceId or workspaceName. create: workspaceId/workspaceName + name + field (type); options[] also required for select/multiSelect. delete: workspaceId/workspaceName + fieldId. add_to_project: projectId + fieldId. remove_from_project: projectId + valueId. add_to_task: taskId + fieldId. remove_from_task: taskId + valueId.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Field name. Required for: create. | |
| field | No | Field type. Required for: create. Also needed for add_to_project/add_to_task when providing a non-null value. | |
| value | No | Field value to set. Optional for add_to_project/add_to_task. When provided and non-null, the field param (type) is also required. | |
| taskId | No | Task ID. Required for: add_to_task, remove_from_task. | |
| fieldId | No | Custom field definition ID. Required for: delete, add_to_project, add_to_task. For remove operations, use valueId instead. | |
| options | No | Option labels. Required for: create when field is select or multiSelect (at least one). | |
| valueId | No | Custom field value assignment ID (not the field definition ID). Required for: remove_from_project, remove_from_task. | |
| required | No | Whether field is required on tasks/projects. | |
| operation | Yes | Operation to perform | |
| projectId | No | Project ID. Required for: add_to_project, remove_from_project. | |
| workspaceId | No | Workspace ID. Required for: list, create, delete. | |
| workspaceName | No | Workspace name (alternative to workspaceId). Required for: list, create, delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals useful conditional behavior (e.g., options[] is mandatory when create uses select/multiSelect, and valueId is used for removals while fieldId is used for additions) but is silent on side effects: delete's destructive nature, whether add/remove operations impact existing tasks and projects, reversibility, or what list returns. The mutating operations are never flagged as writes.
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 purpose is front-loaded and the rest is a dense per-operation parameter matrix with zero fluff; every clause earns its place. The single-paragraph format is less scannable than a structured list would be for a 7-operation dispatcher, but the information density and lack of redundancy make it 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 12-parameter, 7-operation tool with no annotations and no output schema, the description thoroughly covers the required-parameter matrix, which is the primary invocation risk. It leaves meaningful gaps: no indication of return values (especially for list), no warning about the destructive effect of delete or the side effects of add/remove operations, and no error behavior for conflicting inputs.
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 100%, so the baseline is 3. The description mostly consolidates constraints already present in the schema (workspaceId/workspaceName alternatives, fieldId vs valueId distinction, options required for select/multiSelect), but it adds value by organizing these constraints into a per-operation quick-reference matrix that reduces the risk of passing the wrong parameter combination.
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 a specific resource ('custom fields for tasks and projects') and enumerates seven concrete operations, which clearly distinguishes it from all siblings (none of which concern custom fields). The verb 'Manage' is generic, but the per-operation breakdown with required params makes the purpose concrete and actionable.
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?
There is no explicit guidance on when to choose this tool over siblings like motion_tasks or motion_projects, so tool-selection usage is only implied by the resource name and operation list. However, the description does give strong intra-tool routing guidance by specifying which params are required for each of the seven operations, effectively telling an agent how to invoke it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_projectsC
Manage Motion projects - supports create, list, and get operations
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Project name (required for create) | |
| operation | Yes | Operation to perform | |
| projectId | No | Project ID (required for get operation) | |
| description | No | Project description | |
| workspaceId | No | Workspace ID | |
| allWorkspaces | No | List projects from all workspaces (for list operation only). When true and no workspace is specified, returns projects from all workspaces. | |
| workspaceName | No | Workspace name (alternative to ID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It only restates the operation names and does not mention side effects of create, authentication/permission needs, pagination behavior for list, error cases, or response shapes.
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 sentence that front-loads the resource and then lists the supported operations. There is no redundant detail or filler, making it appropriately concise and easy to parse.
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?
This is a multi-operation tool with 7 parameters, operation-dependent requirements, no output schema, and no annotations. The description does not explain which parameters apply to which operation in practice, what a successful create returns, how list results are delivered, or any operational limitations.
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 already provides descriptions for all 7 parameters, so the baseline is 3. The description adds no additional parameter-level meaning, but it does not need to because the schema coverage is complete and self-explanatory.
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 identifies the target resource, 'Motion projects', and enumerates the exact supported operations: create, list, and get. This makes the tool's scope reasonably obvious and distinguishes it from the sibling tools, which target other Motion resources. However, the verb 'Manage' is broad and could imply update/delete operations that are not actually supported.
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, nor when each operation should be selected. An agent is left to infer usage from the operation enum and parameter descriptions in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_recurring_tasksA
Manage recurring tasks. Required params per operation: list: workspaceId or workspaceName. create: workspaceId/workspaceName + name + assigneeId + frequency (with frequency.type). delete: recurringTaskId.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Task name. Required for: create. | |
| duration | No | Task duration in minutes (non-negative number) or REMINDER | |
| priority | No | Task priority (default: MEDIUM) | |
| schedule | No | Schedule name (default: Work Hours) | |
| frequency | No | Frequency configuration (required for create) | |
| idealTime | No | Ideal time in HH:mm format | |
| operation | Yes | Operation to perform | |
| projectId | No | Project ID. | |
| assigneeId | No | User ID, or the 'me' shortcut for the current user. Required for: create. | |
| startingOn | No | Start date (ISO 8601 format) | |
| description | No | Task description. | |
| workspaceId | No | Workspace ID. Required for: list, create. | |
| deadlineType | No | Deadline type (default: SOFT) | |
| workspaceName | No | Workspace name (alternative to workspaceId). Required for: list, create. | |
| recurringTaskId | No | Recurring task ID. Required for: delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden, and it does disclose the three operation modes, letting an agent infer read (list) versus mutating (create/delete) behavior. It does not state side effects of delete (e.g., whether the entire recurrence series is removed) or any return/error behavior, leaving a meaningful gap.
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, all high-signal: first names the resource, second gives operation-specific required params. No fluff, and the most actionable information is 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?
For a tool with 15 params, nested frequency objects, and three operations, the description provides the critical operation routing but relies heavily on the schema for optional params and frequency semantics. With no output schema and no annotations, it omits return-value and delete side-effect context, so completeness is adequate but not thorough.
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?
Input schema coverage is 100%, so the baseline is 3; the description's required-param mapping largely duplicates 'Required for: create/list/delete' already present in the schema properties. It usefully highlights frequency.type as part of create but adds no semantic detail 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 identifies the resource (recurring tasks) and enumerates three concrete operations (list/create/delete) in the required-params sentence. It is distinguishable from sibling tools like motion_tasks by the 'recurring' qualifier, though the opening verb 'Manage' is generic.
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 required-params-by-operation breakdown gives clear invocation rules for each operation, which helps an agent choose the operation and fill required fields. It does not, however, explain when recurring tasks should be handled here versus motion_tasks or motion_search, so exclusion/alternative guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_schedulesA
Get all schedules showing each day's working hours (start-end per day) and time zones. The Motion API returns all schedules with no filtering options. These are recurring working-hour templates only — they do NOT expose actual calendar events or meetings, so they cannot by themselves show a true free/busy picture; combine with tasks' scheduledStart/scheduledEnd to see what Motion has auto-booked.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | No | Operation to perform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does so thoroughly: it states all schedules are returned, there is no filtering, the data is limited to recurring working-hour templates, and calendar events/meetings are not exposed. This prevents the agent from misusing the result as free/busy data.
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?
Three tight sentences front-load the core purpose, then add the no-filtering constraint and the important usage limitation. Every sentence earns its place with no repetition.
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 list-all tool with no required parameters and no output schema, the description is complete: it names the return contents, scope, limitations, and how to get the missing free/busy picture. An agent has enough to invoke it correctly and interpret results.
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 already documents the single operation parameter with 100% coverage. The description adds the useful fact that the API supports no filtering, but it does not elaborate on the operation parameter beyond what the enum already conveys.
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 opens with a specific verb and resource — 'Get all schedules' — and defines the payload as each day's working hours and time zones. It is clearly distinguishable from sibling tools like motion_tasks or motion_statuses because it names schedules as recurring working-hour templates.
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?
It explicitly notes there are no filtering options and that the result cannot show true free/busy availability, instructing the agent to combine with tasks' scheduledStart/scheduledEnd. This gives clear context for when to use it, though it does not name a sibling tool as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_searchB
Search Motion tasks and projects by query
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results | |
| query | No | Search query (required) | |
| operation | Yes | Operation to perform | |
| searchScope | No | What to search (default: both) | |
| workspaceId | No | Workspace ID to limit search | |
| workspaceName | No | Workspace name (alternative to workspaceId) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavior disclosure. 'Search' implies read-only and the description names the searched resource types, but it doesn't disclose default scope, operation constraint, result shape, or workspace behavior. It is minimally transparent but not misleading.
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?
One concise, front-loaded sentence with no filler. It earns its place, though the brevity means some context is handled by the schema rather than the description.
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 6-parameter tool with no output schema and no annotations, a single generic sentence is not enough. Missing return-format information, guidance on operation/content, default searchScope, and how to limit by workspace leaves the agent under-informed for correct invocation.
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 100%, so the parameters are already documented. The description adds no additional meaning beyond 'query' being central, and there is an internal schema inconsistency: query is described as required but is not in the required array. Baseline 3 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?
States a clear action ('Search') and a specific resource set ('Motion tasks and projects'), which distinguishes it from the resource-specific sibling tools like motion_tasks and motion_projects. It doesn't explicitly say it searches across both at once, but the plural scope is reasonably clear.
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 about when to choose this search tool over the dedicated task/project/comment tools, no mention of scoping with workspaceId/workspaceName, and no exclusions. The agent is left to infer usage from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_statusesA
Get available task/project statuses for a workspace
| Name | Required | Description | Default |
|---|---|---|---|
| operation | No | Operation to perform | |
| workspaceId | No | Workspace ID to get statuses for (optional, returns all statuses if not specified) | |
| workspaceName | No | Workspace name (alternative to workspaceId, resolved to an ID automatically) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a read operation, but the description does not mention response shape, whether results include both task and project statuses, authentication needs, or any limits; it only adds the workspace-scoping information already present in the schema.
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, front-loaded sentence with no filler or redundant content. Every word contributes to identifying the tool's purpose and scope.
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 read-only lookup with no required parameters and no output schema, the description is largely sufficient: it states what is returned and for which scope. It does not describe return formatting or the list-only operation, but those are low-risk gaps given the schema's full parameter documentation.
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 100%, so the schema already documents operation, workspaceId, and workspaceName. The description adds minimal meaning beyond the schema, naming only the workspace concept; the baseline of 3 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 states a specific verb ('Get'), a clear resource ('available task/project statuses'), and a scope ('for a workspace'). This distinguishes it from all listed siblings, which target different resources such as tasks, projects, comments, or custom fields.
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 the tool is used when statuses are needed, but it provides no explicit when-to-use guidance, prerequisites, or comparison with alternative tools. Since no sibling covers statuses, the lack of explicit exclusions is not critical, but the guidance remains only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_tasksC
Manage Motion tasks - supports create, list, get, update, delete, move, unassign, and list_all_uncompleted operations
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Task name (required for create, optional for list as case-insensitive substring search, filtered client-side) | |
| limit | No | Maximum number of tasks to return (for list and list_all_uncompleted) | |
| labels | No | Array of label names. Applied to the task on create/update; filters results on list | |
| status | No | Filter by status (for list). Single string or array of strings (e.g., ["Todo", "Completed"]). Without status or includeAllStatuses, only active (non-resolved) tasks are returned. Use motion_statuses to list valid values per workspace. | |
| taskId | No | Task ID (required for get/update/delete/move/unassign) | |
| dueDate | No | Due date (for create/update) or filter (for list and list_all_uncompleted). Format: YYYY-MM-DD, a full ISO 8601 timestamp with offset, or relative like 'today', 'tomorrow'. FILTER (list, list_all_uncompleted): an inclusive upper bound at day granularity in the account timezone — returns every task due ON OR BEFORE that day, which INCLUDES overdue tasks. So dueDate:'today' answers "what's due today?" (including anything overdue) in a single call. There is no exact-date or date-range filter; to show only tasks due exactly on a day, filter the returned results by their Due Date yourself. CREATE/UPDATE: a date-only value is stored as end of day (23:59:59) in the account's schedule timezone when all schedules agree on one, so it renders back as the same calendar day; it falls back to end-of-day UTC when no single zone is resolvable. Pass an explicit ISO timestamp with an offset to control the exact instant. Relative keywords resolve against the same account timezone, falling back to UTC otherwise. | |
| assignee | No | Assignee name, email, or the 'me' shortcut. Resolved to an ID automatically for list, list_all_uncompleted, create, update, and move. A name that cannot be resolved returns an error. Must be non-empty; use the unassign operation to clear a task's assignee. | |
| duration | No | Minutes (as number) or 'NONE'/'REMINDER' (as string) | |
| priority | No | Task priority: ASAP, HIGH, MEDIUM, LOW. Set on create/update; filters results on list and list_all_uncompleted (filtered client-side) | |
| operation | Yes | Operation to perform | |
| projectId | No | Filter by project (for list) | |
| assigneeId | No | Assignee user ID, or the 'me' shortcut for the current user. Filters on list/list_all_uncompleted; sets the assignee on create/update; reassigns on move. The 'me' shortcut is resolved to a concrete ID for all of these. Must be non-empty; use the unassign operation to clear a task's assignee. | |
| description | No | Task description | |
| projectName | No | Project name (alternative to projectId) | |
| workspaceId | No | Filter by workspace (for list). Ignored by list_all_uncompleted, which always spans every workspace. | |
| autoScheduled | No | Auto-scheduling configuration. Can be either: - A schedule name string: "Work Hours" (simple, no start date) - An object for full control: {"schedule": "Work Hours", "startDate": "2025-03-05", "deadlineType": "SOFT"} When the user specifies a start date, you MUST use the object form. Use motion_schedules to see available schedule names. | |
| workspaceName | No | Filter by workspace name (for list). Ignored by list_all_uncompleted, which always spans every workspace. | |
| completedAfter | No | Filter (for list): keep only tasks COMPLETED on or after this local calendar date. Format: YYYY-MM-DD or relative like 'today', 'yesterday'. Filtered client-side and auto-includes completed/resolved tasks, so 'what did I get done this week?' is completedAfter set to the week's start date. Combine with completedBefore for a window. Note: this filters on completion date, not due date; a very high-volume window can be capped by pagination (reported in the response), not silently. | |
| completedBefore | No | Filter (for list): keep only tasks COMPLETED on or before this local calendar date. Format: YYYY-MM-DD or relative like 'today'. Filtered client-side; pair with completedAfter to bound a completion window. | |
| targetWorkspaceId | No | Target workspace ID (required for move operation). Move transfers a task between workspaces — project-level targeting is not supported by the Motion API. | |
| includeAllStatuses | No | When true, returns tasks across all statuses including completed/resolved (for list). Cannot be combined with status filter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the main description carries the full burden of behavioral disclosure, but it only lists operation names. It does not mention client-side filtering, that list_all_uncompleted spans every workspace, that move is workspace-only, or that delete is destructive. Those details exist in parameter descriptions, but the main description does not provide them.
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 front-loaded sentence with no filler, enumerating the supported operations efficiently. It could be more informative without becoming bloated, but there is no redundancy or wasted wording.
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 21-parameter, eight-operation tool with no annotations and no output schema, this one-line summary is significantly under-specified. Missing high-level context includes operation-specific behavior, return information, and when to use alternative tools; an agent would need to read every parameter description to use it safely.
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 main description adds no parameter-level meaning, but schema description coverage is 100%, so the baseline of 3 applies. All 21 parameters, including operation, status, dueDate, assignee, and autoScheduled, already have detailed explanations in the input 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 names a concrete resource (Motion tasks) and explicitly lists eight operations, so an agent can recognize this as the task-management tool. It is less crisp than a focused verb-plus-scope phrase because 'Manage' is generic, but the operation list clearly distinguishes it from siblings like motion_comments, motion_search, or motion_recurring_tasks.
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?
There is no guidance on when to use this tool versus its siblings. The description does not mention alternatives, exclusions, or prerequisites, and it leaves the agent to infer from operation names which request should go here rather than to motion_search, motion_statuses, or motion_recurring_tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_usersC
Manage users and get current user information
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | No | Team ID to filter users by (optional for list operation) | |
| operation | Yes | Operation to perform | |
| workspaceId | No | Workspace ID (optional for list operation, ignored for current) | |
| workspaceName | No | Workspace name (alternative to workspaceId, ignored for current) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. 'Manage users' misleadingly implies mutating operations, while the schema reveals only read-style operations (list/current). It also does not disclose authentication requirements, side effects, or any limitations.
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 compact and front-loads the resource. However, the vague word 'Manage' earns less than a fully tight description like 'List users or get current user information' would, so it is concise but slightly imprecise.
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?
With no output schema and no annotations, the description leaves important context—operation semantics, filter behavior, and return expectations—unstated. An agent would need to infer most behavior from the input schema alone, making this incomplete for a multi-operation 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?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds no extra meaning beyond loosely implying the 'current' operation via 'get current user information', which matches the baseline of 3.
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 identifies the resource ('users') and one specific operation ('get current user information'), but the leading verb 'Manage' is vague and overstates the scope—the schema only supports 'list' and 'current', not general user management. It does distinguish the tool from sibling tools by resource, but not by operation.
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?
There is no guidance on when to choose 'list' vs 'current', nor any mention of team/workspace filtering or when this tool should be preferred over alternatives. The only implicit usage signal is that it is user-related, which is not enough for correct operation selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_workspacesA
Manage Motion workspaces - supports list and get operations
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| workspaceId | No | Workspace ID (required for get operation) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It states the operations are list and get, which implies read-only behavior and no destructive side effects, but it provides no additional context about permissions, errors, rate limits, or response behavior.
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, front-loaded sentence with no filler. It wastes little space, though 'Manage' is somewhat redundant given the operation list.
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 two-operation tool with a clear schema, the description is adequately complete for selection and invocation. It does not describe return shapes, but no output schema exists and the operations' semantics are straightforward enough to infer.
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 already documents the operation enum and the workspaceId parameter at 100% coverage. The description adds little beyond restating that list and get are supported, so it meets the baseline but does not enhance parameter understanding.
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 identifies the resource (Motion workspaces) and enumerates the supported operations (list and get), which clearly differentiates it from sibling tools operating on other resources. The word 'Manage' is vague, but the operation list makes the actual scope explicit.
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 this tool is for reading workspace data, but it does not explicitly state when to prefer it over alternatives or mention any exclusions. Since the sibling tools target different resources, the usage context is largely inferable rather than explicitly guided.
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.
10 tool updates
v2.9.0- First observed
motion_comments - First observed
motion_custom_fields - First observed
motion_projects - First observed
motion_recurring_tasks - First observed
motion_schedules - First observed
motion_search - First observed
motion_statuses - First observed
motion_tasks - First observed
motion_users - First observed
motion_workspaces
TDQS
Scored across 10 tools
Each tool targets a distinct Motion resource (tasks, projects, workspaces, users, search, comments, custom fields, recurring tasks, schedules, statuses), with operations namespaced inside each tool. There is no meaningful overlap that would cause misselection; even search vs. list is clearly separated by intent.
All tool names follow a consistent motion_<resource> snake_case pattern. The convention is uniform across all 10 tools, making the set predictable and easy to scan.
10 tools map cleanly to the major Motion API resource groups. The count is well within the ideal 3–15 range, and each tool covers a distinct area without redundant wrappers.
Tasks are thoroughly covered (create, list, get, update, delete, move, unassign, list all uncompleted), but projects only support create/list/get with no update or delete, and recurring tasks plus custom fields lack update operations. These are notable lifecycle gaps that could force agents to work around missing operations.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn open-source MCP server enabling AI assistants to interact with the Motion API for intelligent task and project management.5MIT
- FlicenseNot gradedqualityFmaintenanceA Model Context Protocol (MCP) server that provides AI assistants full access to the Motion task and project management API, enabling task, project, and schedule management.-
- AlicenseBqualityDmaintenanceEnables natural language management of Motion tasks, projects, schedules, and more via the Model Context Protocol, integrating with LLMs like Claude and ChatGPT.10Apache 2.0
- AlicenseBqualityDmaintenanceThis MCP server bridges Motion's API with LLMs like Claude and ChatGPT via the Model Context Protocol, so you can manage tasks, search projects, check your schedule, and more — all through natural conversation.10Apache 2.0