mcp-teamline
Click on "Deploy 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., "@mcp-teamlinelist my open tasks"
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.
mcp-teamline
MCP stdio server that wraps the Teamline API so MCP hosts (Cursor, Claude, etc.) can call Teamline.
API docs: https://support.teamline.app/article/64-integrating-using-the-teamline-api
This repository is MIT-licensed. The Teamline API itself is governed by Teamline Terms of Service; using this server against Teamline means those terms apply to the API traffic.
Prerequisites
Node.js 20 or later
Related MCP server: Trello MCP Server
Environment
Set TEAMLINE_API_KEY in the environment. Create a key at https://my.teamline.app/settings/api
The token is read only from the environment. It is never a tool argument and is never logged.
Optional: TEAMLINE_HTTP_ENCODING=json or form (default json). The official article does not document the HTTP method or encoding; this server POSTs JSON { token, ...params } by default, with form-urlencoded as a fallback.
Cursor (mcp.json)
Using the GitHub package:
{
"mcpServers": {
"teamline": {
"command": "npx",
"args": ["-y", "github:aroy314/mcp-teamline"],
"env": {
"TEAMLINE_API_KEY": ""
}
}
}
}Fill TEAMLINE_API_KEY from your local secret store or OS environment. Do not commit a real key.
Local run
Install dependencies and compile TypeScript, then start with: node dist/index.js
Provide TEAMLINE_API_KEY in the environment when launching. After install, the bin name is mcp-teamline.
Tools
Tool | Input | Description |
teamline_auth_test | none | Calls Teamline auth.test and returns the authenticated user as JSON (id, name, email). |
teamline_tasks_list | optional: limit (number), channel (#name or slackId), list (~name or id; channel required if list is set), user (@name, email, or slackId), complete (boolean; true = only completed) | Calls Teamline tasks.list. If channel and user are omitted, the API defaults to yourself. Returns the task array as JSON. |
teamline_tasks_create | name (required); optional: description, assign (string[] of @name/email/slackId), channel, list (channel required if set), personal (boolean), due (ISO8601 or human string), notify (string[]) | Calls Teamline tasks.create. Returns the created task as JSON. |
teamline_tasks_complete | task (required, id string) | Calls Teamline tasks.complete. Returns the completed task as JSON. |
teamline_webhooks_create | event (required, currently only | Calls Teamline webhooks.create to register a user-provided URL. This server registers the URL; it does not receive webhook POSTs. Returns the hook as JSON. |
teamline_webhooks_remove | hook (required, id string) | Calls Teamline webhooks.remove. Returns the removed hook as JSON. |
If TEAMLINE_API_KEY is missing, tools return a clear error without calling the network.
License
MIT (c) 2026 Alexandre Roy. Teamline ToS apply to use of the Teamline API.
Available Tools
6 toolsteamline_auth_testTest Teamline authenticationARead-onlyIdempotent
Verify TEAMLINE_API_KEY against Teamline auth.test and return the authenticated user (id, name, email). Takes no arguments; the API token is read only from the environment.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds value by specifying the return shape (user id, name, email) and that the token is read from the environment, providing context beyond the annotations without contradiction.
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 two concise sentences with no redundant wording. It front-loads the core action and return information immediately, then adds the environment token detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, this description is fully self-contained. It explains the purpose, return fields, and the environment dependency. Combined with annotations covering read-only and idempotent behavior, an agent has everything needed to call it 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?
There are zero parameters, so the baseline is 4. The description explicitly states 'Takes no arguments' and clarifies that the API token is read from the environment, effectively documenting the implicit input channel beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Verify' against a specific resource 'Teamline auth.test' and explicitly lists the return fields (id, name, email). It is distinct from sibling tools that handle tasks and webhooks, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by stating it verifies the API key and reads from environment, but it does not explicitly state when to use this tool versus alternatives or provide exclusions. The context is clear enough but lacks explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teamline_tasks_completeComplete a Teamline taskA
Mark a Teamline task complete via tasks.complete. Requires task (id string). Token is read only from TEAMLINE_API_KEY.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Id of the task to complete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the agent knows this is a mutating but non-destructive operation. The description adds the auth detail (token from TEAMLINE_API_KEY) and the API method name, but does not disclose any side effects, error behavior, or consequences of completion beyond the obvious state change. It neither contradicts annotations nor adds significant behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the action ('Mark a Teamline task complete'). The subsequent sentences about the API method and token source are useful but could arguably be merged or trimmed without losing clarity. It is concise overall, with no redundant filler, though the token sentence is somewhat tangential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the essential purpose, the required parameter, and an auth note. It does not specify the return value or any side effects, but given the annotations carry the safety profile and the tool's simplicity, this is mostly complete. The absence of output schema information is acceptable since the tool likely returns a standard success/failure response that an agent can 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?
Schema coverage is 100% and the single parameter 'task' already has a clear description ('Id of the task to complete'). The description repeats this by saying 'Requires task (id string)', which adds no additional meaning. Per the rubric, with high schema coverage the baseline is 3, and the description does not enhance the parameter's semantics.
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 and resource: 'Mark a Teamline task complete'. This unambiguously distinguishes it from siblings like teamline_tasks_list or teamline_tasks_create. The action is clear and the resource is named, so an agent knows exactly what this tool does without needing to inspect the schema.
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 by stating the tool completes a task, but it does not explicitly say when to use it versus alternatives, nor does it mention any conditions for exclusion. There is no mention of prerequisites like an existing task or case where this should not be used. It is adequate for a tool whose purpose is inherently straightforward, but explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teamline_tasks_createCreate a Teamline taskA
Create a Teamline task via tasks.create. name is required. Optional: description, assign (string[] of @name/email/slackId), channel (#name or slackId), list (~name or id; channel required if list is set), personal (boolean), due (ISO8601 or human string), notify (string[]). Token is read only from TEAMLINE_API_KEY.
| Name | Required | Description | Default |
|---|---|---|---|
| due | No | ISO8601 timestamp, or a human string such as "next wednesday at 3:30pm" | |
| list | No | ~list-name or id. Channel is required if this is present. | |
| name | Yes | Name of the task | |
| assign | No | @name, email address, or slackId of members to assign | |
| notify | No | @name, email address, or slackId of members to notify. Assigned members won't be notified twice. | |
| channel | No | #channel-name or slackId. Required if list is present. | |
| personal | No | Overrides the default privacy setting | |
| description | No | Task description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description doesn't need to repeat those. It adds the token source (TEAMLINE_API_KEY) and the constraint that channel is required when list is set, but does not disclose return values, error behavior, or side effects beyond creation. This is adequate but not rich.
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 two sentences, front-loaded with the purpose and required field, then a compact list of optional parameters. It is efficiently structured and free of fluff, though some information duplicates the schema.
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 create operation with 8 parameters and no output schema, the description covers required/optional fields and key constraints. However, it does not describe what the API returns (e.g., a task object with an id) or error cases, which are important for agents to confirm success. This is a notable gap for completeness.
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 all parameters are already documented. The description restates parameter types and constraints but adds little beyond the schema, such as the token source and the channel-required-if-list rule. Since the schema carries the main semantic load, this is a baseline 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 explicitly states 'Create a Teamline task via tasks.create', clearly identifying the verb and resource. It distinguishes this tool from siblings like list and complete by focusing on creation, so an agent can select it appropriately.
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 for creating tasks but does not explicitly contrast it with alternatives like teamline_tasks_list or teamline_tasks_complete. It provides no 'when not to use' guidance or references to sibling tools, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teamline_tasks_listList Teamline tasksARead-onlyIdempotent
List Teamline tasks via tasks.list. Optional filters: limit, channel (#name or slackId), list (~name or id; channel required if list is set), user (@name, email, or slackId), complete (true = only completed). If channel and user are omitted, the API defaults to yourself. Token is read only from TEAMLINE_API_KEY.
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | ~list-name or id. Channel is required if this is present. | |
| user | No | @name, email address, or slackId. If channel and user are omitted, the API defaults to yourself. | |
| limit | No | Maximum number of tasks to return | |
| channel | No | #channel-name or slackId. Required if list is present. | |
| complete | No | If true, only completed tasks are returned |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive. The description adds behavioral specifics: defaulting to the current user when channel/user omitted, the requirement that channel be present when list is set, and the token source (TEAMLINE_API_KEY). These go beyond the annotation hints and clarify default behavior not obvious from 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?
Single dense sentence front-loaded with the action ('List Teamline tasks via tasks.list') then packs filter definitions. It is efficient but slightly run-on; grouping could improve readability. Still, every word earns its place.
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 rich annotations (readOnly, non-destructive, idempotent) and a full parameter schema, the description covers the key default behavior (defaults to self), required dependencies, and token source. No output schema exists, so return format isn't expected. Minor gaps like pagination details are not critical for this operation.
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%, but the description adds valuable format details (e.g., '#name' for channel, '~name' for list, '@name/email/slackId' for user) and the dependency that channel is required if list is used. This enriches the schema without redundancy, so above baseline.
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 begins with a clear verb+object:
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings like teamline_tasks_create or teamline_tasks_complete. The purpose implies listing, but there is no direct comparison to alternatives or conditions that would favor this tool. However, the distinct names make inference easy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teamline_webhooks_createCreate a Teamline webhookA
Register a user-provided URL via webhooks.create. Official event is currently only tasks_completed. url is required; name is optional. This server registers the URL; the MCP stdio process does not receive Teamline POSTs. Token is read only from TEAMLINE_API_KEY.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL Teamline will POST to when the event fires | |
| name | No | Optional display name for the webhook | |
| event | Yes | Webhook event. Official API currently only supports tasks_completed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses a key architectural caveat: the server registers the URL, but the MCP stdio process will not receive Teamline POSTs. It also states the API token is read only from TEAMLINE_API_KEY and that only tasks_completed is official, all useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, all substantive, with the core registration action and event constraint front-loaded. The required/optional note slightly repeats schema information, but the architecture and auth notes earn their place.
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 three-parameter creation tool with annotations and full schema coverage, the description supplies the necessary auth source, event restriction, and server-side behavior. It omits return/error details, but no output schema exists and the missing info is not essential for invoking the 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 coverage is 100%, so the schema already documents all three parameters. The description adds value beyond it by explicitly marking url required and name optional and by constraining event to tasks_completed, which is the main semantic guidance an agent needs.
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 concrete verb-resource pair ('Register a user-provided URL via webhooks.create') and immediately narrows scope to the only supported event, tasks_completed. This is enough to distinguish it from the remove sibling and from the task 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?
It gives clear context for the create action and the supported event, so an agent can infer when to use it. However, it does not state when not to use it or point to webhooks_remove or another alternative, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teamline_webhooks_removeRemove a Teamline webhookADestructive
Remove a Teamline webhook via webhooks.remove. Requires hook (id string). Token is read only from TEAMLINE_API_KEY.
| Name | Required | Description | Default |
|---|---|---|---|
| hook | Yes | Id of the hook to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive (destructiveHint: true) and not read-only, so the safety profile is covered. The description adds valuable context by stating that the token is read only from the TEAMLINE_API_KEY environment variable, which is not present in annotations. It also names the API method, providing a behavioral detail beyond the structured fields.
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—two short sentences that immediately state the action and the critical auth requirement. Every word earns its place, with no extraneous information or filler.
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 single-parameter deletion tool with destructive annotations, the description adequately covers the purpose, required input, and auth mechanism. It does not mention return values, but there is no output schema specified, and for a removal operation this is minor. The only slight gap is the lack of clarity on whether the removal is permanent, but the destructiveHint annotation implicitly covers this.
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 fully documents the 'hook' parameter with a description ('Id of the hook to remove'), so schema coverage is 100%. The description repeats this by saying 'Requires hook (id string)' but adds no new semantic detail. Baseline 3 is appropriate as the schema already handles parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove' and the resource 'Teamline webhook', and specifies the underlying method 'webhooks.remove'. This distinguishes it from the sibling 'teamline_webhooks_create' and other task-related tools, leaving no ambiguity about what the tool does.
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 indicates the action and the required parameter but lacks any explicit guidance on when to use this tool versus alternatives. There is no mention of scenarios like deleting obsolete webhooks or when not to use it, though the auth prerequisite (TEAMLINE_API_KEY) is noted. The usage context is implied by the name and action rather than stated.
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.
6 tool updates
v0.1.0- First observed
teamline_auth_test - First observed
teamline_tasks_complete - First observed
teamline_tasks_create - First observed
teamline_tasks_list - First observed
teamline_webhooks_create - First observed
teamline_webhooks_remove
TDQS
Scored across 6 tools
Tasks and webhooks are clearly separated by the teamline_ prefix and verb. Within tasks, list/create/complete are distinct operations, though list could be confused with create if an agent overlooks the verb. Webhooks create/remove are clearly distinct.
All tools follow a consistent teamline_<domain>_<verb> pattern (auth_test, tasks_list, tasks_create, tasks_complete, webhooks_create, webhooks_remove). The only minor deviation is 'auth_test' using a noun-verb inversion (test as verb) rather than 'test_auth', but it's readable and consistent in style.
Six tools is well-scoped for a task management integration. Each tool covers a distinct operation needed for basic task lifecycle and webhook management. No redundant tools, and the count feels appropriate (within the 3-15 ideal range).
The tools cover task list, create, and complete, but lack update (e.g., edit task name, due date, assignee) and delete operations. Webhooks support create/remove but no list. A user cannot edit an existing task without recreating it, which is a notable gap in a task management API.
Maintenance
Related MCP Connectors
- TimequipOAuthcom.timequip
Manage Timequip projects, tasks, comments, members, and dashboards through MCP.
- OneOAuthai.withone
Search, document and execute authenticated API calls across 700+ apps via one MCP server
A managed runtime for custom API integrations. Manage lines, endpoints, keys, logs and DLQ via MCP.
Read teams, spaces, lists and tasks; create, update and comment on tasks and track time.
Related MCP Servers
AlicenseBqualityDmaintenanceEnables interaction with the Tembo API to manage organization tasks and view enabled code repositories. Users can create, search, and list tasks or retrieve account information directly through MCP-compatible clients.5181MIT- FlicenseNot gradedqualityDmaintenanceProvides programmatic access to Trello's API to manage boards, lists, cards, and organizations via MCP.1-
- FlicenseBqualityCmaintenanceEnables interaction with the Flow Team API through MCP clients, allowing endpoint discovery, API calls, and project management operations like listing projects and participants.11-
- FlicenseNot gradedqualityDmaintenanceEnables monitoring and management of tasks via WebSocket events and authorization requests through MCP tools.-