Motion 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., "@Motion MCP ServerCreate a high-priority task for tomorrow morning to draft the project proposal"
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.
Motion MCP Server
Motion is an AI-powered calendar and task management app that auto-schedules your work. This 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. It works on desktop, web, and mobile.
Preview
Click the image above to view full size
Related MCP server: Motion MCP Server
Getting Started
Prerequisites: Node.js 18+ and a Motion API key.
Local Setup (npx)
For desktop MCP clients — Claude Desktop, Claude Code, Cursor, and similar.
Add to your claude_desktop_config.json:
{
"mcpServers": {
"motion": {
"command": "npx",
"args": ["motionmcp"],
"env": {
"MOTION_API_KEY": "your_api_key"
}
}
}
}Test from the command line:
MOTION_API_KEY=your_api_key npx motionmcpTip:
npxalways runs the latest published version — no install needed.
Remote Setup (Cloudflare Workers)
For mobile and web clients — Claude mobile/web, ChatGPT mobile/web, or any HTTP MCP client.
One-click deploy
After deploy, set your secrets in the Cloudflare dashboard (Workers > your worker > Settings > Variables):
MOTION_API_KEY— your Motion API keyMOTION_MCP_SECRET— a random string (generate withopenssl rand -hex 16)
Manual deploy
# 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:deployYour MCP URL will be:
https://motion-mcp-server.YOUR_SUBDOMAIN.workers.dev/mcp/YOUR_SECRETConnecting from Claude
Go to claude.ai > Settings > Connectors
Add your MCP URL
The server syncs automatically to the Claude mobile app
Connecting from ChatGPT
Go to ChatGPT Settings > Connectors
Add your MCP URL
Security: The secret in the URL prevents casual discovery. Treat the full URL like a password — don't share it publicly.
Tool configuration works the same as the local server. Set MOTION_MCP_TOOLS in wrangler.toml under [vars], or override via wrangler secret put MOTION_MCP_TOOLS.
For local Worker development, see DEVELOPER.md.
API Key
The server reads your Motion API key from the MOTION_API_KEY environment variable.
Inline (npx):
MOTION_API_KEY=your-key npx motionmcp.env file (when running from source via npm):
MOTION_API_KEY=your-keyWhen using
npx, prefer the inline environment variable sincenpxwon't read a local.envfile.
Tool Configuration
All 10 tools are enabled by default. If you run multiple MCP servers and want to reduce tool selection noise, you can limit which tools are exposed via the MOTION_MCP_TOOLS environment variable:
Level | Tools | Description |
minimal | 3 | Tasks, projects, workspaces only |
essential | 7 | Adds users, search, comments, schedules |
complete (default) | 10 | Full API access including custom fields, recurring tasks, statuses |
custom | varies | Pick exactly the tools you need |
Custom example:
MOTION_MCP_TOOLS=custom:motion_tasks,motion_projects,motion_search npx motionmcpTools Reference
motion_tasks
Operations: create, list, get, update, delete, move, unassign
The primary tool for task management. Supports all Motion API parameters including name, description, priority, dueDate, duration, labels, assigneeId, and autoScheduled. You can reference workspaces and projects by name — the server resolves them automatically.
{
"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
Operations: create, list, get
Manage Motion projects. Workspace and project names are fuzzy-matched, and the server auto-selects your "Personal" workspace if none is specified.
{"operation": "create", "name": "New Project", "workspaceName": "Personal"}motion_workspaces
Operations: list, get
List and inspect workspaces.
motion_users
Operations: list, current
List users in a workspace or get the current authenticated user.
motion_search
Operations: content
Search tasks and projects by query across a workspace.
{"operation": "content", "query": "API integration", "workspaceName": "Development"}motion_comments
Operations: list, create
Read and add comments on tasks and projects.
{"operation": "create", "taskId": "task_123", "content": "Updated the API endpoints as discussed"}motion_schedules
Operations: list
Retrieve user schedules and time zones. Supports prioritized scheduling with conflict detection and workload breakdowns by status, priority, and project.
motion_custom_fields
Operations: list, create, delete, add_to_project, remove_from_project, add_to_task, remove_from_task
Define and manage custom fields across workspaces, projects, and tasks.
{
"operation": "create",
"name": "Sprint",
"type": "DROPDOWN",
"options": ["Sprint 1", "Sprint 2", "Sprint 3"],
"workspaceName": "Development"
}motion_recurring_tasks
Operations: list, create, delete
Manage recurring task templates.
{
"operation": "create",
"name": "Weekly Team Standup",
"recurrence": "WEEKLY",
"projectName": "Team Meetings",
"daysOfWeek": ["MONDAY", "WEDNESDAY", "FRIDAY"],
"duration": 30
}motion_statuses
Operations: list
List available statuses for a workspace.
Advanced Configuration
Minimal setup (3 tools only):
{
"mcpServers": {
"motion": {
"command": "npx",
"args": ["motionmcp"],
"env": {
"MOTION_API_KEY": "your_api_key",
"MOTION_MCP_TOOLS": "minimal"
}
}
}
}Custom tools selection:
{
"mcpServers": {
"motion": {
"command": "npx",
"args": ["motionmcp"],
"env": {
"MOTION_API_KEY": "your_api_key",
"MOTION_MCP_TOOLS": "custom:motion_tasks,motion_projects,motion_search"
}
}
}
}Using your local workspace (npm):
{
"mcpServers": {
"motion": {
"command": "npm",
"args": ["run", "mcp:dev"],
"cwd": "/absolute/path/to/your/MotionMCP",
"env": {
"MOTION_API_KEY": "your_api_key"
}
}
}
}See the full developer setup in DEVELOPER.md.
Debugging
Logs output to
stderrin JSON formatCheck for missing keys, workspace/project names, and permissions
Use
motion_workspaces(list) andmotion_projects(list) to validate IDs
{
"level": "info",
"msg": "Task created successfully",
"method": "createTask",
"taskId": "task_789",
"workspace": "Development"
}License
Apache-2.0 License
For more information, see the full Motion API docs or Model Context Protocol docs.
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, the description must fully disclose behavior, but it only says 'manage comments.' It doesn't mention side effects of creating comments, permission requirements, or return formats. This is a significant gap for a tool with mutating and listing capabilities.
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 four words, front-loaded, and free of unnecessary words. However, the brevity sacrifices specificity, making it less helpful than a slightly longer, more informative 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?
The tool supports two operations (list and create) with pagination, but the description doesn't explain how the operation parameter controls behavior or what the response contains. No output schema exists to compensate, so the description is insufficient for an agent to use the tool correctly.
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 provides descriptions for all four parameters (operation, taskId, content, cursor), achieving 100% coverage. The description adds no extra parameter meaning beyond the schema, so the baseline of 3 applies.
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 the tool deals with comments on tasks, which is a clear resource, but uses the vague verb 'manage' instead of specifying concrete operations like list or create. It doesn't explicitly distinguish from sibling tools, though the name and resource imply a unique focus on comments.
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 usage guidance is provided. The description doesn't indicate when to use this tool instead of other motion_* tools, nor when to choose the 'list' operation versus 'create'. This leaves the agent without context for selecting this tool.
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. | |
| 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 does not explain the side effects of operations (e.g., deleting a custom field definition vs. removing an assignment), what happens on success/failure, or any permissions needed. The description only lists required parameters, which is already in the schema. This leaves significant ambiguity about the tool's actual 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 dense run-on sentence containing all required parameter mappings. It's concise in that there's no fluff, but the structure is poor—it would be far more readable as a bulleted list. The front-loaded purpose statement is good, but the subsequent list is hard to parse quickly. Scores 3 because every piece of information is relevant, but the layout hinders comprehension.
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 multi-operation tool with 12 parameters, the description prioritizes parameter requirements but omits the higher-level context of what each operation does and what the user should expect. There is no output schema, so the description should explain that list returns custom field definitions, create creates a new field, etc. The operation names give some hint, but behaviors like the difference between fieldId and valueId are not explained. The description is complete for parameter validation but not for operational understanding.
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 adds value by consolidating the required parameters per operation, but it introduces no new semantic meaning beyond what the schema already states. For example, it repeats that 'options[]' is required for select/multiSelect, which is already in the schema. Thus, it meets the baseline but does not exceed it.
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's purpose: 'Manage custom fields for tasks and projects.' It enumerates seven distinct operations (list, create, delete, add_to_project, etc.), giving a specific verb+resource scope. While it doesn't explicitly differentiate from sibling tools, the focus on custom fields is unique and the operation list makes the tool's role 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 provides operation-specific required parameter lists, which serves as clear when-to-use guidance for each operation. For example, 'create: workspaceId/workspaceName + name + field (type); options[] also required for select/multiSelect.' This helps an agent understand exactly what is needed for each scenario. However, it does not mention when to prefer this tool over siblings or provide exclusion criteria, so it's not a 5.
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?
With no annotations provided, the description must disclose behavioral traits, but it only lists operation names without explaining side effects, permissions, or result characteristics. It does not indicate, for example, whether create is idempotent, whether list returns all workspaces by default, or whether get requires a specific ID — information an agent needs to use the tool safely.
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 and contains no fluff, but it is underspecified for a multi-operation tool. The word 'Manage' is vague filler, and the enumeration of operations is useful but could be more structured (e.g., 'Create, list, or retrieve Motion projects'). It is concise but not optimally informative.
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 supports three distinct operations with 7 parameters and no output schema, the description is notably incomplete. It fails to explain the semantics of each operation (e.g., which parameters are required for create vs. get), the relationship to workspaces, or any behavioral expectations. The schema covers parameter details, but the high-level action context is missing.
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 of the 7 parameters having a description, so the baseline is 3. The tool description adds no parameter-level information beyond what the schema already provides, but it doesn't need to since the schema is fully self-descriptive.
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 the tool manages Motion projects and enumerates the supported operations (create, list, get), which clearly identifies the resource and core capabilities. However, 'Manage' is somewhat vague and doesn't distinguish between the operations beyond listing them, so it lacks the precision of a strong purpose statement.
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 alternatives or how to choose among the create, list, and get operations. The description does not mention sibling tools like motion_tasks or provide any exclusions/prerequisites, leaving the agent to infer usage entirely 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_recurring_tasksB
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 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 to assign the recurring task to. 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 carries the full burden of behavioral disclosure. It only lists required parameters per operation and does not mention side effects, permissions, rate limits, reversibility of delete, return format, or any other behavioral traits. This is a significant gap for a tool that creates and deletes recurring tasks.
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-loaded with the core purpose. It uses a semi-colon-separated list to convey operation dependencies efficiently, with no redundant or filler words. Though it could be structured with bullets for readability, it is suitably concise for the amount of information it carries.
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 complexity (15 parameters, nested frequency object, three operations, no output schema), the description covers the operation-parameter matrix but omits return behavior, error cases, and broader context. It does not explain what list returns, what create produces, or what delete affects (e.g., future occurrences). The schema fills in parameter details, but behavioral completeness is lacking.
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?
Although the schema has 100% parameter coverage, the description adds value by grouping parameters per operation (e.g., list: workspaceId or workspaceName; create: workspaceId/workspaceName + name + assigneeId + frequency). This clarifies which parameters are needed together, which is not immediately obvious from the schema alone. The mention of frequency.type as a required sub-field is also helpful.
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 'Manage recurring tasks' with a clear resource, and the required params list enumerates the operations (list, create, delete) which define the tool's scope. It distinguishes from the likely sibling motion_tasks by focusing specifically on recurring tasks, though it does not explicitly name the alternative.
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 operation-specific parameter requirements, which gives clear context for each operation. However, it does not explicitly state when to use this tool versus alternatives (e.g., motion_tasks for non-recurring tasks) or include exclusions or when-not-to-use guidance.
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 weekly working hours and time zones. The Motion API returns all schedules with no filtering options.
| 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 provided, the description carries the burden. It discloses that the API returns all schedules without filtering, which is useful. However, it does not explicitly confirm read-only safety, authentication needs, rate limits, or pagination, leaving modest gaps for a simple get-all 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?
Two short sentences effectively convey the purpose and a key limitation without redundancy. The description is front-loaded with the action and resource.
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 list tool with no output schema, the description captures the essential return content and unfiltered behavior. It lacks explicit details on response structure or authentication, but given the simplicity, it is nearly 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 100% for the single 'operation' parameter, which already has an enum and description. The tool description does not add extra parameter context, so the 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?
The description uses a specific verb 'Get' with the resource 'schedules' and specifies the key data returned ('weekly working hours and time zones'). This clearly differentiates it from sibling tools like motion_tasks or motion_projects.
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 use for retrieving schedule data, but it does not explicitly state when to use this over alternatives or mention any exclusions. The note about 'no filtering options' gives some contextual limitation but lacks direct usage guidance.
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?
No annotations are present, so the description carries the burden of behavioral disclosure. It only says 'Search', which suggests a read-only lookup, but it does not describe return format, pagination, defaults, auth needs, or other important operational 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 clear sentence with no filler words. It is front-loaded and easy to parse, earning high marks for conciseness even though it is minimal.
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 a rich schema, the tool has no output schema and no annotations, so the one-sentence description leaves significant gaps such as return value shape, default searchScope behavior, and the inconsistency around the required query parameter. The description is minimally viable but not fully contextual.
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 adds no extra semantic detail beyond the schema; it only names 'query' as the search mechanism, while the schema already documents each parameter fully.
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 the specific verb 'Search' and names the resource ('Motion tasks and projects'), making the tool's core purpose clear. It implicitly differentiates from sibling tools like motion_tasks and motion_projects by covering both entities, though it does not explicitly call out 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?
The description implies usage: an agent should use this tool when searching tasks and projects by query. However, it provides no explicit guidance about when to prefer sibling tools or when not to use this tool, so the usage context is only partially stated.
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 |
|---|---|---|---|
| workspaceId | No | Workspace ID to get statuses for (optional, returns all statuses if not specified) |
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. The description only says 'Get... statuses,' which implies a read operation, but it does not explicitly confirm this, mention any side effects, authentication requirements, rate limits, or what the response contains. For a tool with zero annotation coverage, this is a significant 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?
The description is a single, concise sentence that is front-loaded with the verb and resource. It contains no unnecessary words or repetition, making it highly 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?
The tool has low complexity (one optional parameter, no output schema, no annotations). The description provides the basic action and target but lacks information about return format, read-only nature, or when to use it. For a simple getter, this is adequate but not comprehensive, especially given the absence 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 input schema has one optional parameter (workspaceId) with a description, giving 100% schema coverage. The tool description itself adds no parameter-specific details beyond the schema. The schema fully documents the parameter, so the description does not need to compensate, earning the baseline score 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 clearly states the tool's purpose: 'Get available task/project statuses for a workspace.' It uses a specific verb ('Get') and identifies the resource (statuses) and scope (workspace). This distinguishes it from sibling tools like motion_tasks, motion_projects, and motion_workspaces, which focus on other entities.
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 you need statuses for tasks/projects, but it does not explicitly state when to use this tool versus alternatives. There is no mention of exclusions or alternative tools. Since the purpose is clear and sibling tools are distinct, the usage context is implied but not explicitly articulated.
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) | |
| limit | No | Maximum number of tasks to return (for list and list_all_uncompleted) | |
| labels | No | Filter by labels (for list). Array of label names | |
| 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, filtered client-side — returns tasks due on or before this date). Date-only values are stored as end-of-day UTC. Format: YYYY-MM-DD or relative like 'today', 'tomorrow' | |
| assignee | No | Filter by assignee name, email, or 'me' shortcut (for list and list_all_uncompleted). Resolved to an ID automatically | |
| duration | No | Minutes (as number) or 'NONE'/'REMINDER' (as string) | |
| priority | No | Filter by priority level (for list, filtered client-side): ASAP, HIGH, MEDIUM, LOW | |
| operation | Yes | Operation to perform | |
| projectId | No | Filter by project (for list) | |
| assigneeId | No | Filter by assignee (for list/list_all_uncompleted), set assignee (for create/update), or reassign (for move) | |
| description | No | Task description | |
| projectName | No | Project name (alternative to projectId) | |
| workspaceId | No | Filter by workspace (for list) | |
| 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) | |
| 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?
With no annotations provided, the description carries the full burden of behavioral disclosure. However, it only lists operations and does not mention side effects (e.g., deletion is permanent), required permissions, rate limits, or return behavior. For a tool that includes destructive operations like delete, this is a significant 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?
The description is a single sentence with front-loaded resource name and a compact list of operations. It is concise with no filler, but given the tool's complexity (19 params, 8 operations), the extreme brevity might be considered under-specification rather than effective conciseness.
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 no output schema, and the description does not describe return values, error handling, or operation-specific behavior. While the schema details parameters, the overall description is too sparse to fully orient an agent on a complex task management tool with multiple operations.
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 provides 100% coverage with detailed descriptions for all 19 parameters, including operation-specific constraints and examples. Since schema coverage is high, the baseline is 3; the description adds no parameter-level 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 explicitly names the resource ('Motion tasks') and enumerates eight specific operations, clearly distinguishing it from sibling tools like motion_projects or motion_schedules. The verb 'Manage' is generic but the operation list provides specificity.
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 use this tool versus alternatives such as motion_search or motion_comments. It merely lists operations without indicating typical use cases, prerequisites, or exclusions. The schema hints at per-operation parameter requirements, but the description itself is silent.
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 the full burden. It calls the tool 'manage users' which implies mutating operations, but the schema only exposes read-only operations (list, current). It doesn't disclose permissions, side effects, or return 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 short sentence, which is concise, but it lacks substance and doesn't effectively use its brevity to communicate key information. It's not poorly structured, but it's under-specified.
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 two distinct operations and multiple optional parameters, but the description provides no context for these. No output schema exists, so the description should clarify what to expect from 'list' and 'current', but it doesn't.
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 adds no parameter-level meaning beyond the schema; it doesn't explain operation selection or parameter relationships.
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 the vague verb 'manage' which suggests a broader CRUD scope than the actual operations (list and current). It does mention 'get current user information' which is specific, but overall it doesn't clearly define the tool's scope or distinguish it from sibling motion 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?
No guidance on when to use this tool versus alternatives or when to choose 'list' vs 'current'. The description provides no context about selection, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_workspacesC
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 full burden and only hints that operations are read-oriented ('list', 'get'). It does not disclose what happens during list vs get, permissions, or output structure.
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?
A single, front-loaded sentence with no redundant content. It efficiently states the resource and supported operations.
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 two parameters, no output schema, and no annotations, the description is too sparse. It lacks details about return values, required parameters for each operation, and potential errors.
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 100%, so the baseline is 3. The description adds minimal value beyond schema, only noting that workspaceId is required for 'get', while 'operation' is simply described as 'Operation to perform'.
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 resource (Motion workspaces) and explicitly lists supported operations ('list and get'). However, 'Manage' is a generic verb; the operation list provides the real clarity.
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 compared to siblings like motion_projects or motion_tasks. It does not state required conditions or alternative tool suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct entity (tasks, projects, workspaces, users, schedules, search, comments, custom fields, recurring tasks, statuses). Even with overlapping concepts like tasks and recurring tasks, descriptions clarify the boundary. No two tools appear to serve the same purpose.
All tools follow the consistent 'motion_<plural_noun>' pattern in snake_case. The prefix 'motion_' unifies the set, and each resource name is intuitive. There are no stylistic deviations or mixed conventions.
Ten tools is appropriate for a project management API covering major resources and capabilities. The count is neither excessive nor thin, and each tool represents a meaningful domain. Some tools bundle many operations, but this is reasonable.
The surface covers core entities: tasks, projects, workspaces, users, schedules, search, comments, custom fields, recurring tasks, and statuses. However, project management is incomplete with only create/list/get for projects, missing update/delete. Also, user management might lack full CRUD, but it's less critical. Overall, minor gaps but most workflows are covered.
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
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
AI-native project management for tasks, docs, collaboration, and agents.
GDPR-compliant calendar access for AI assistants. Google, Microsoft 365, Apple & more. EU-hosted.
Task management your AI agents can actually run. One line becomes a context-ready task over MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceBridges Motion's AI-powered calendar and task management platform with LLMs using the Model Context Protocol. It enables users to manage tasks, projects, and schedules through natural language conversation on desktop, web, and mobile.10Apache 2.0
- AlicenseNot gradedqualityNot gradedmaintenanceBridges Motion's AI-powered calendar and task management API with LLMs via the Model Context Protocol. It enables users to manage tasks, projects, schedules, and custom fields through natural language conversation.
- AlicenseBqualityCmaintenanceBridges Motion's API with LLMs via the Model Context Protocol, enabling natural language task, project, and schedule management.10Apache 2.0
- AlicenseAqualityCmaintenanceBridges Motion's AI-powered calendar and task management API with LLMs, enabling natural language management of tasks, projects, schedules, and more via the Model Context Protocol.10Apache 2.0
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/renzocarletti-lang/motion-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server