com.teamwork/mcp
OCI · DOCKER.IO/TEAMWORK/MCP:V1.43.2 · 3 COMPONENTS · SCANNED SEP 20
The Teamwork.com official MCP server helps teams efficiently manage client projects with AI.
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- Malware scan not yet available for this package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency35
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 4 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability73
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 39357 tokens (~183/item across 214 items; 213 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage96
- 93% of tools have a non-trivial description (not blank, and not just the tool's name).Partial
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (33% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 214 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
- Supports UI / widget rendering.Pass
Unverified: 2 categories
Categories scored 0 because we could not verify them: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
How do I install the com.teamwork/mcp server?
com.teamwork/mcp runs locally as a container image, launched with docker run --rm -i docker.io/teamwork/mcp:v1.43.2. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · docker.io/teamwork/mcp:v1.43.2
claude mcp add com-teamwork-mcp -- docker run --rm -i docker.io/teamwork/mcp:v1.43.2
{
"mcpServers": {
"com-teamwork-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/teamwork/mcp:v1.43.2"
]
}
}
} {
"servers": {
"com-teamwork-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/teamwork/mcp:v1.43.2"
]
}
}
} codex mcp add com-teamwork-mcp -- docker run --rm -i docker.io/teamwork/mcp:v1.43.2
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-teamwork-mcp": {
"type": "local",
"command": [
"docker",
"run",
"--rm",
"-i",
"docker.io/teamwork/mcp:v1.43.2"
],
"enabled": true
}
}
} mcp_servers:
com-teamwork-mcp:
command: "docker"
args: ["run", "--rm", "-i", "docker.io/teamwork/mcp:v1.43.2"] {
"McpServers": {
"com-teamwork-mcp": {
"Transport": "stdio",
"Command": "docker",
"Arguments": [
"run",
"--rm",
"-i",
"docker.io/teamwork/mcp:v1.43.2"
]
}
}
} {
"mcpServers": {
"com-teamwork-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/teamwork/mcp:v1.43.2"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 15 Sept 26 38
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed oci/docker.io/teamwork/mcp:v1.43.2
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | oci |
| Reason | Verification failed |
| Discovered via | OCI referrers API |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
twprojects-list_projects ~794
List projects with structured filters (membership, progress state, health, category, tag, company, owner). For "my projects" pass user_ids with the ID from twprojects-get_user_me, or only_starred. For projects that have slipped pass project_statuses=["late"] — a project row carries no late flag, so this filter is the only way to ask.
| Name | Type | Req | Description |
|---|---|---|---|
| company_ids | array | – | Filter projects by the company that owns them. |
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching projects, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each project, from the listed names. |
| hide_observed | boolean | – | If true, leave out the projects the calling user only observes, keeping the ones they actually work on. |
| include_archived | boolean | – | If true, return archived projects alongside the active ones; excluded by default. |
| include_subcategories | boolean | – | If true, project_category_ids also matches the categories nested under the ones given. |
| include_tentative | boolean | – | If true, return tentative projects alongside the normal ones; excluded by default. |
| match_all_tags | boolean | – | If true, match all tags; if false, match any. |
| only_admin_access | boolean | – | If true, only return the projects the calling user administers. |
| only_archived | boolean | – | If true, only return archived projects. |
| only_starred | boolean | – | If true, only return the projects the calling user has starred. |
| order_by | string | – | The field to sort the projects by. Omit to keep the ordering the API applies by default. |
| order_by_custom_field_id | integer | – | The custom field to sort the projects by. Required when order_by is "customfield", and ignored otherwise. |
| order_mode | string | – | The direction to sort the results in. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| project_category_ids | array | – | Filter projects by category. |
| project_healths | array | – | Filter projects by the health rating set on them, matching any of the values given. "not_set" matches the projects nobody has rated. |
| project_owner_ids | array | – | Filter projects by the user who owns them. |
| project_statuses | array | – | Filter projects by progress state, matching any of the values given. "late" is past its end date and not yet completed, "upcoming" has not started yet, "current" is running now, and "active" is every… |
| search_term | string | – | A search term to filter projects by name or description. |
| tag_ids | array | – | A list of tag IDs to filter projects by tags. |
| team_ids | array | – | Filter projects by team, matching the projects any member of those teams belongs to. |
| updated_after | – | – | Only include projects whose last activity is strictly after this moment; the boundary itself does not match. Any activity in the project counts, not just edits to the project record. Accepts an RFC 3… |
| user_ids | array | – | Filter projects by the users holding an explicit membership of them. For "my projects", pass the ID returned by twprojects-get_user_me. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| included | object | – | – |
| meta | object | – | – |
| projects | null|array | – | – |
| suggestions | array | – | Present only when search_term was supplied and the result list came back empty. Entities whose name matches the term, most relevant first, so the term can be recognised instead of treated as unknown.… |
No examples provided.
twprojects-list_skills ~204
List skills.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching skills, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each skill, from the listed names. |
| order_mode | string | – | The direction to sort the results in. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| search_term | string | – | A search term to filter skills by name, or assigned users. The skill will be selected if each word of the term matches the name, or assigned user first or last name, not requiring that the word match… |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| meta | object | – | – |
| skills | null|array | – | – |
No examples provided.
twprojects-list_tags ~230
List tags.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching tags, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each tag, from the listed names. |
| item_type | string | – | Filter tags by item type. |
| order_by | string | – | The field to sort the tags by. Omit to keep the ordering the API applies by default. |
| order_mode | string | – | The direction to sort the results in. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| project_ids | array | – | Filter by project. |
| search_term | string | – | A search term to filter tags by name. Each word from the search term is used to match against the tag name. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| meta | object | – | – |
| tags | null|array | – | – |
No examples provided.
twprojects-list_tasklist_budgets ~218
List tasklist budgets nested under a project budget. Requires project_budget_id.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching tasklist budgets, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each tasklist budget, from the listed names. |
| order_by | string | – | The field to sort the task list budgets by. Omit to keep the ordering the API applies by default. |
| order_mode | string | – | The direction to sort the results in. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| project_budget_id | integer | yes | The ID of the project budget to list tasklist budgets for. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| included | object | – | – |
| meta | object | – | – |
| tasklistBudgets | null|array | – | – |
No examples provided.
twprojects-list_tasklists ~255
List tasklists. Scope by project_id or omit for site-wide.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching tasklists, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each tasklist, from the listed names. |
| order_by | string | – | The field to sort the task lists by. Omit to keep the ordering the API applies by default. |
| order_mode | string | – | The direction to sort the results in. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| project_id | integer | – | The ID of the project from which to retrieve tasklists. Omit to list tasklists across all projects. |
| search_term | string | – | A search term to filter tasklists by name. |
| show_completed | boolean | – | If true, include completed tasklists; excluded by default. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| meta | object | – | – |
| suggestions | array | – | Present only when search_term was supplied and the result list came back empty. Entities whose name matches the term, most relevant first, so the term can be recognised instead of treated as unknown.… |
| tasklists | null|array | – | – |
No examples provided.
twprojects-list_tasks ~1,488
List tasks with structured filters (tasklist_id, project_id, or site-wide). For keyword search use search. Completed tasks and tasks in completed tasklists are excluded unless show_completed is true, so an empty result may mean the matching work is already done rather than missing. Ask for "late", "overdue", "due today", "started" or "upcoming" work through date_filter, and leave people out through exclude_assignee_user_ids, rather than reading rows and filtering them yourself.
| Name | Type | Req | Description |
|---|---|---|---|
| assignee_user_ids | array | – | Filter tasks by assignee. |
| completed_after | – | – | Only include tasks completed at or after this moment; the boundary itself matches. Setting it narrows the result to completed tasks. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YY… |
| completed_before | – | – | Only include tasks completed at or before this moment; the boundary itself matches. Setting it narrows the result to completed tasks. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain Y… |
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching tasks, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| created_after | – | – | Only include tasks created at or after this moment; the boundary itself matches. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers that whole… |
| created_before | – | – | Only include tasks created at or before this moment; the boundary itself matches. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers that whole… |
| created_by_user_ids | array | – | Filter tasks by creator. |
| date_filter | string | – | Where the task's dates fall relative to today, in your own timezone. This is the filter for "late", "overdue", "due today", "started" and "upcoming"; omit it for no date restriction. overdue: due bef… |
| due_after | string | – | Only include tasks due after this date, excluding the day itself — unless due_before is set too, which makes both bounds inclusive. A task with no due date is matched on its milestone's. |
| due_before | string | – | Only include tasks due before this date, excluding the day itself — unless due_after is set too, which makes both bounds inclusive. A task with no due date is matched on its milestone's. |
| exclude_assignee_user_ids | array | – | Leave out tasks assigned to any of these users. A task is dropped when any one of the listed users is assigned to it, even when it also carries assignees you did not exclude. A user reached only thro… |
| fields | array | – | The attributes to return for each task, from the listed names. |
| match_all_tags | boolean | – | If true, match all tags; if false, match any. |
| only_completed | boolean | – | If true, return only completed tasks. It combines with every other filter, date_filter included — except date_filter=overdue, which never matches a completed task and so returns nothing. Tasks in com… |
| only_unassigned | boolean | – | If true, only return tasks that have no assignee. |
| only_unplanned | boolean | – | If true, only return tasks that are unplanned, meaning they are missing an assignee, a due date, or estimated time. |
| order_by | string | – | The field to sort the tasks by. Omit to keep the ordering the API applies by default. |
| order_by_custom_field_id | integer | – | The custom field to sort the tasks by. Required when order_by is "customfield", and ignored otherwise. |
| order_mode | string | – | The direction to sort the results in. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| project_id | integer | – | The ID of the project from which to retrieve tasks. Omit to list tasks across all projects. |
| search_term | string | – | A search term to filter tasks by name. |
| show_completed | boolean | – | If true, include completed tasks and tasks belonging to completed tasklists; both excluded by default. |
| start_after | string | – | Only include tasks whose own start date falls on or after this date; the day itself matches. A task with no start date never matches — there is no milestone fallback. There is no upper bound on the s… |
| tag_ids | array | – | A list of tag IDs to filter tasks by tags. |
| tasklist_id | integer | – | The ID of the tasklist from which to retrieve tasks. Takes precedence over project_id. |
| updated_after | – | – | Only include tasks updated strictly after this moment; the boundary itself does not match. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers t… |
| updated_before | – | – | Only include tasks updated strictly before this moment; the boundary itself does not match. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers… |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| included | object | – | – |
| meta | object | – | – |
| suggestions | array | – | Present only when search_term was supplied and the result list came back empty. Entities whose name matches the term, most relevant first, so the term can be recognised instead of treated as unknown.… |
| tasks | null|array | – | – |
No examples provided.
twprojects-list_teams ~217
List teams. Scope by company_id or project_id, or omit for site-wide.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | integer | – | The ID of the company from which to retrieve teams. Omit to list teams across all companies. |
| fields | array | – | The attributes to return for each team, from the listed names. |
| order_by | string | – | The field to sort the teams by. Omit to keep the ordering the API applies by default. |
| order_mode | string | – | The direction to sort the results in. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| project_id | integer | – | The ID of the project from which to retrieve teams. Omit to list teams across all projects. |
| search_term | string | – | A search term to filter teams by name or handle. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| teams | null|array | – | – |
No examples provided.
twprojects-list_timelogs ~636
List timelogs. Scope by project_id or task_id, or omit for site-wide.
| Name | Type | Req | Description |
|---|---|---|---|
| assigned_company_ids | array | – | Filter timelogs by assigned company. |
| assigned_team_ids | array | – | Filter timelogs by assigned team. |
| assigned_user_ids | array | – | Filter timelogs by assigned user. |
| billable_type | string | – | Restrict the results to billable or non-billable timelogs. Omit, or pass all, to include both. For billable hours rather than the entries themselves, twprojects-summarize_timelogs reports them withou… |
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching timelogs, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| end_date | – | – | End of the timelog window; the boundary itself is included, and a plain date covers that whole day. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which… |
| fields | array | – | The attributes to return for each timelog, from the listed names. |
| invoiced_type | string | – | Restrict the results to timelogs that have or have not been added to an invoice. Omit, or pass all, to include both. Invoiced is not the same as billed: noninvoiced answers "what is still to be invoi… |
| match_all_tags | boolean | – | If true, match all tags; if false, match any. |
| order_by | string | – | The field to sort the timelogs by. Omit to keep the ordering the API applies by default. |
| order_mode | string | – | The direction to sort the results in. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| project_id | integer | – | The ID of the project from which to retrieve timelogs. Omit to list timelogs across all projects. |
| start_date | – | – | Start of the timelog window; the boundary itself is included. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers that whole day in UTC. |
| tag_ids | array | – | A list of tag IDs to filter timelogs by tags. |
| task_id | integer | – | The ID of the task from which to retrieve timelogs. Omit to list timelogs across all tasks. |
| ticketIds | array | – | Filter timelogs by associated desk ticket. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| meta | object | – | – |
| timelogs | null|array | – | – |
No examples provided.
twprojects-list_timers ~233
List timers.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching timers, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each timer, from the listed names. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| project_id | integer | – | The ID of the project to filter timers by. Only timers associated with this project will be returned. |
| running_timers_only | boolean | – | If true, only running timers are returned. |
| task_id | integer | – | The ID of the task to filter timers by. Only timers associated with this task will be returned. |
| user_id | integer | – | The ID of the user to filter timers by. Only timers associated with this user will be returned. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| meta | object | – | – |
| timers | null|array | – | – |
No examples provided.
twprojects-list_users ~298
List users. Scope by project_id or filter by type (account/collaborator/contact).
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching users, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each user, from the listed names. |
| order_by | string | – | The field to sort the users by. Omit to keep the ordering the API applies by default. |
| order_mode | string | – | The direction to sort the results in. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| project_id | integer | – | The ID of the project from which to retrieve users. Omit to list users across all projects. |
| search_term | string | – | A search term to filter users by first or last names, or e-mail. The user will be selected if each word of the term matches the first or last name, or e-mail, not requiring that the word matches are… |
| type | string | – | Type of user to filter by. The available options are account, collaborator or contact. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| meta | object | – | – |
| people | null|array | – | – |
No examples provided.
twprojects-list_workflow_stages ~199
List workflow stages.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching workflow stages, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each workflow stage, from the listed names. |
| order_by | string | – | The field to sort the workflow stages by. Omit to keep the ordering the API applies by default. |
| order_mode | string | – | The direction to sort the results in. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| workflow_id | integer | yes | The ID of the workflow whose stages to list. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| meta | object | – | – |
| stages | null|array | – | – |
No examples provided.
twprojects-list_workflows ~150
List workflows.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching workflows, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each workflow, from the listed names. |
| page | integer | – | Page number for pagination of results (1-based). |
| page_size | integer | – | Number of results per page for pagination (1-500). |
| search_term | string | – | A search term to filter workflows by name. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| meta | object | – | – |
| workflows | null|array | – | – |
No examples provided.
twprojects-move_task_to_workflow_stage ~110
Move one or more tasks to a workflow stage.
| Name | Type | Req | Description |
|---|---|---|---|
| stage_id | integer | yes | The ID of the workflow stage to move the tasks to. |
| task_ids | array | – | The IDs of the tasks to move. At least one is needed; each is appended to the end of the stage in the order given. The workflow must be attached to the project the task belongs to. |
| workflow_id | integer | yes | The ID of the workflow that contains the target stage. |
No output schema declared.
No examples provided.
twprojects-move_tasks ~113
Move tasks and all their subtasks to another tasklist, preserving the parent/child structure. Subtasks move with their parent automatically, so only the topmost task of each subtree needs to be listed. A task whose parent is not part of the move is detached from it, becoming a top-level task in the destination.
| Name | Type | Req | Description |
|---|---|---|---|
| task_ids | array | yes | The IDs of the tasks to move. Subtasks are moved automatically. |
| tasklist_id | integer | yes | The ID of the destination tasklist. |
No output schema declared.
No examples provided.
twprojects-pause_timer ~42
Pause a running timer; can be resumed later. Use complete_timer to stop permanently.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The ID of the timer to pause. |
No output schema declared.
No examples provided.
twprojects-restore_allocation ~55
Restore a deleted allocation. Find the ID first with twprojects-list_allocations and show_deleted set, since a deleted allocation is otherwise not returned.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The ID of the allocation to restore. |
No output schema declared.
No examples provided.
twprojects-resume_timer ~33
Resume a paused timer back to running.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The ID of the timer to resume. |
No output schema declared.
No examples provided.
twprojects-search ~415
Cross-entity keyword search across projects, tasks, messages, comments, users and more; restrict which entity types are searched with types. Long content fields in the sideloaded records are truncated at 500 characters and marked where they are cut; the marker names the tool that returns the full record. Completed items are excluded unless include_completed_items is true, so an empty result may mean the matching work is already done rather than missing.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Cursor for pagination of results. |
| extended_search | boolean | – | Whether to perform an extended search, which includes items updated more than 5 years ago. |
| include_completed_items | boolean | – | Whether to include completed items in the search results. Excluded by default. |
| include_highlights | boolean | – | Whether to return why each result matched, as fragments under its meta.highlights. Unavailable on an extended search. |
| limit | integer | – | Number of results per page for pagination. |
| project_id | integer | – | The ID of the project to limit the search to. |
| search_term | string | – | A search term to to look for items. |
| sideload | array | – | Which of the matched records are expanded into full records under the response's included section. It never changes which records are found — use types for that. Defaults to every type listed; a hit… |
| types | array | – | Entity types to search. Only records of these types are found. Omit it to search every type. |
| updated_after | – | – | Only include items updated strictly after this moment; the boundary itself does not match. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers t… |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| included | object | – | – |
| meta | object | – | – |
| search | null|array | – | – |
No examples provided.
twprojects-summarize_timelogs ~486
Complete time totals for a date window, grouped by user, project or task (rows in groups) or by day, week or month (rows in periods). One call returns every row, in exact minutes and hours to 2 decimals. Prefer it over twprojects-list_timelogs for any total, sum or breakdown; list_timelogs is for individual entries. Minutes are authoritative, unbilledBillable = billable − billed, and rows sum to totals. One dimension per call: for hours per user per week, call once per user with user_ids. Task rows omit project-level and subtask time, so never add totals across group_by values. Period rows cover every period in order, zeros included, first and last clipped to the window; weeks follow the caller's start-of-week setting, so buckets can differ per user, and a weekend-only week with no time is dropped.
| Name | Type | Req | Description |
|---|---|---|---|
| company_ids | array | – | Filter to timelogs on projects of these companies/clients. |
| end_date | string | yes | Inclusive end of the report window (YYYY-MM-DD). |
| group_by | string | – | Dimension to group by. Defaults to user. user, project and task fill groups; day, week and month fill periods. Filter a task grouping on a busy account. |
| include_archived_projects | boolean | – | Include time from archived projects. Defaults to false. |
| order_by | string | – | The field to sort the summary rows by. Omit to keep the ordering the API applies by default. Rejected for day, week and month: period rows are chronological. |
| order_mode | string | – | The direction to sort the results in. Rejected for day, week and month: period rows are chronological. |
| project_ids | array | – | Filter to timelogs on these projects. |
| start_date | string | yes | Inclusive start of the report window (YYYY-MM-DD). |
| task_ids | array | – | Filter to timelogs on these tasks. |
| tasklist_ids | array | – | Filter to timelogs on these task lists. |
| team_ids | array | – | Filter to timelogs logged by members of these teams. |
| timelog_tag_ids | array | – | Filter to timelogs carrying these tags. |
| user_ids | array | – | Filter to timelogs logged for these users. |
| Name | Type | Req | Description |
|---|---|---|---|
| groups | null|array | yes | Entity rows; empty for a day, week or month grouping. |
| periods | null|array | yes | Period rows, chronological; empty for an entity grouping. |
| scope | object | yes | – |
| totals | object | yes | – |
No examples provided.
twprojects-unlink_task_from_allocation ~83
Remove the link between one task and an allocation. Only the association is removed: both the task and the allocation are left in place. This removes a single link and leaves the allocation's other links alone.
| Name | Type | Req | Description |
|---|---|---|---|
| allocation_id | integer | yes | The ID of the allocation. |
| task_id | integer | yes | The ID of the task to unlink. |
No output schema declared.
No examples provided.
twprojects-update_allocation ~578
Update an allocation. Changing end_date ADDS or REMOVES committed time rather than redistributing it, because the per-day rate is what is held constant.
| Name | Type | Req | Description |
|---|---|---|---|
| assigned_user_id | integer | – | The ID of the user whose time is committed. Accepts a real person or a placeholder user — a stand-in used to plan work before the person who will do it is known. Nothing in the response distinguishes… |
| color | string | – | The allocation's colour as six hexadecimal digits, with or without a leading '#'. |
| description | string | – | An optional description of the allocation, at most 255 characters. |
| end_date | string | – | The last day of the allocation (format: YYYY-MM-DD). Must not precede start_date. Extending it ADDS committed time rather than spreading the existing total: the per-day rate is what is held constant,… |
| id | integer | yes | The ID of the allocation to update. |
| ignore_collisions | boolean | – | Skip the capacity check altogether. Prefer inform_of_over_allocation: this one also lets the change through, but suppresses the over-allocation report with it, so nobody is told the person is over-bo… |
| inform_of_over_allocation | boolean | – | Accept a change that puts the user over their capacity and report it, rather than rejecting it. Defaults to true, and the result says so when it happens. Turning it off means an over-allocating chang… |
| is_billable | boolean | – | Whether the allocated time can be charged to a client. |
| linked_task_ids | array | – | The tasks to associate with the allocation. This REPLACES the whole set of linked tasks, so send every task that should stay linked. To add or remove one task without touching the rest, use twproject… |
| project_id | integer | – | The ID of the project to commit the time to. |
| seconds_per_day | integer | – | The time committed on each working day of the range, in SECONDS — 4 hours a day is 14400. Must be between 60 (one minute) and 86400 (24 hours). Seconds rather than hours because the hours form is a f… |
| start_date | string | – | The first day of the allocation (format: YYYY-MM-DD). |
| title | string | – | The name of the allocation, at most 100 characters. |
No output schema declared.
No examples provided.
twprojects-update_comment ~235
Update comment.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | The content of the comment. The content can be added as text or HTML. |
| content_type | string | – | The content type of the comment. It can be either 'TEXT' or 'HTML'. |
| id | integer | yes | The ID of the comment to update. |
| notify | – | – | Who to notify of the comment change. Omit it unless the user named who to notify: the default notifies every follower of the related entity, and a value here replaces that set rather than adding to i… |
| notify_current_user | boolean | – | Whether the current user should be notified about the comment change. |
No output schema declared.
No examples provided.
twprojects-update_company ~288
Update company (aka client).
| Name | Type | Req | Description |
|---|---|---|---|
| address_one | string | – | The first line of the address of the company. |
| address_two | string | – | The second line of the address of the company. |
| city | string | – | The city of the company. |
| country_code | string | – | The country code of the company, e.g., 'US' for the United States. |
| email_one | string | – | The primary email address of the company. |
| email_three | string | – | The tertiary email address of the company. |
| email_two | string | – | The secondary email address of the company. |
| fax | string | – | The fax number of the company. |
| id | integer | yes | The ID of the company to update. |
| industry_id | integer | – | The ID of the industry the company belongs to. |
| manager_id | integer | – | The ID of the user who manages the company. |
| name | string | – | The name of the company. |
| phone | string | – | The phone number of the company. |
| profile | string | – | A profile description for the company. |
| state | string | – | The state of the company. |
| tag_ids | array | – | A list of tag IDs to associate with the company. |
| website | string | – | The website of the company. |
| zip | string | – | The ZIP or postal code of the company. |
No output schema declared.
No examples provided.
twprojects-update_custom_field ~220
Update custom field.
| Name | Type | Req | Description |
|---|---|---|---|
| currency_code | string | – | The ISO currency code for 'currency' or 'financial' type custom fields. |
| description | string | – | An optional description for the custom field. |
| formula | string | – | The formula expression for 'formula' type custom fields. |
| id | integer | yes | The ID of the custom field to update. |
| name | string | – | The display name of the custom field. |
| options | – | – | Type-specific options for the custom field. For 'dropdown' and 'multiselect' types, provide {"choices": [{"value": "...", "color": "#rrggbb"}, ...]}. For 'rating' type, provide {"icon": "star|heart|.… |
| required | boolean | – | Whether the custom field must have a value when set on an entity. |
| unit | string | – | The unit associated with the custom field, when applicable. |
No output schema declared.
No examples provided.
twprojects-update_custom_field_value ~184
Update a custom field value on a task, project or company.
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | – | The country code for currency-type custom field values. |
| currency_code | string | – | The ISO currency code for currency-type custom field values. |
| custom_field_id | integer | yes | The ID of the custom field the value belongs to. |
| entity | string | yes | The type of entity the custom field value is attached to. |
| entity_id | integer | yes | The ID of the task, project or company the custom field value belongs to. |
| value | – | – | The value to assign, typed per the field: string (text), number (number), boolean (checkbox), choice value string (dropdown/status; array for multiselect), ISO-8601 string (date). |
| value_id | integer | yes | The ID of the custom field value entry to update. |
No output schema declared.
No examples provided.
twprojects-update_custom_item ~191
Update a custom item type's display name, description, or labels. Custom items are user-defined entity types — Contracts, Leads, Deals, or anything else a customer has set up on a project. Use these tools when the user refers to an entity that is NOT a built-in Teamwork concept (Task, Tasklist, Project, Milestone, Comment, Notebook, Company, Team, User, Tag). If you don't recognise an entity name in the user's request, assume it is a custom item and call twprojects-list_custom_items on the relevant project to confirm.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | New description for the custom item type. |
| display_name | string | – | New display name for the custom item type. |
| id | integer | yes | Custom item type ID to update. |
| label_plural | string | – | New plural label. |
| label_singular | string | – | New singular label. |
No output schema declared.
No examples provided.
twprojects-update_custom_item_field ~192
Update a field on a custom item type. Custom items are user-defined entity types — Contracts, Leads, Deals, or anything else a customer has set up on a project. Use these tools when the user refers to an entity that is NOT a built-in Teamwork concept (Task, Tasklist, Project, Milestone, Comment, Notebook, Company, Team, User, Tag). If you don't recognise an entity name in the user's request, assume it is a custom item and call twprojects-list_custom_items on the relevant project to confirm.
| Name | Type | Req | Description |
|---|---|---|---|
| custom_item_id | integer | yes | Custom item type ID the field belongs to. |
| definition | object | – | Replacement type-specific configuration as a JSON object. |
| display_name | string | – | New display name. |
| id | integer | yes | Field ID to update. |
| position_after_id | integer | – | Move this field after the given field ID. |
No output schema declared.
No examples provided.
twprojects-update_custom_item_record ~370
Update a record on a custom item type. Only the fields you supply are changed; others are left as-is. Set section_id to null to remove the record from any section. Custom items are user-defined entity types — Contracts, Leads, Deals, or anything else a customer has set up on a project. Use these tools when the user refers to an entity that is NOT a built-in Teamwork concept (Task, Tasklist, Project, Milestone, Comment, Notebook, Company, Team, User, Tag). If you don't recognise an entity name in the user's request, assume it is a custom item and call twprojects-list_custom_items on the relevant project to confirm.
| Name | Type | Req | Description |
|---|---|---|---|
| clear_section | boolean | – | Set to true to explicitly clear the record's section. Use this instead of section_id when you want null semantics. |
| custom_item_id | integer | yes | Custom item type ID the record belongs to. |
| field_values | array | – | Field values to set on the record. Each entry is {field_name, value}. Field names are matched case-insensitively against the custom item type's fields. Values are coerced by field type: dropdown/mult… |
| id | integer | yes | Record ID to update. |
| name | string | – | New display name for the record. |
| position_after_id | integer | – | Move the record after the given record ID. |
| section_id | integer | – | New section ID, or null to remove the record from any section. |
No output schema declared.
No examples provided.
twprojects-update_jobrole ~43
Update job role.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The ID of the job role to update. |
| name | string | – | The name of the job role. |
No output schema declared.
No examples provided.
twprojects-update_link ~271
Update link.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | The URL of the link. This is the actual web address that the link points to. |
| description | string | – | The description of the link. Longer text that provides detailed information about the link. |
| id | integer | yes | The ID of the link to update. |
| notify | – | – | Who to notify of the link update. Omit it unless the user named who to notify: the default notifies all project members, and a value here replaces that set rather than adding to it, so a narrower one… |
| notify_current_user | boolean | – | Whether the current user should be notified about the new link. |
| tag_ids | array | – | A list of tag IDs to associate with the link. |
| title | string | – | The title of the link, which provides a brief summary of the purpose of the link. |
No output schema declared.
No examples provided.
twprojects-update_message ~207
Update message.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | The body of the message. |
| id | integer | yes | The ID of the message to update. |
| notify | – | – | Who to notify of the message update. Omit it unless the user named who to notify: the default notifies all project members, and a value here replaces that set rather than adding to it, so a narrower… |
| notify_current_user | boolean | – | Whether the current user should be notified about the new message. |
| title | string | – | The title of the message. |
No output schema declared.
No examples provided.
twprojects-update_message_reply ~200
Update message reply.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | The body of the message reply. |
| id | integer | yes | The ID of the message reply to update. |
| notify | – | – | Who to notify of the reply update. Omit it unless the user named who to notify: the default notifies all project members, and a value here replaces that set rather than adding to it, so a narrower on… |
| notify_current_user | boolean | – | Whether the current user should be notified about the new messageReply. |
No output schema declared.
No examples provided.
twprojects-update_milestone ~132
Update milestone.
| Name | Type | Req | Description |
|---|---|---|---|
| assignees | object | – | Assignees for the milestone. |
| description | string | – | A description of the milestone. |
| due_date | string | – | The due date of the milestone (format: YYYYMMDD). Used for related tasks without their own due date. |
| id | integer | yes | The ID of the milestone to update. |
| name | string | – | The name of the milestone. |
| tag_ids | array | – | A list of tag IDs to associate with the milestone. |
| tasklist_ids | array | – | Tasklists to associate with the milestone. |
No output schema declared.
No examples provided.
twprojects-update_notebook ~94
Update notebook.
| Name | Type | Req | Description |
|---|---|---|---|
| contents | string | – | The contents of the notebook. |
| description | string | – | A description of the notebook. |
| id | integer | yes | The ID of the notebook to update. |
| name | string | – | The name of the notebook. |
| tag_ids | array | – | A list of tag IDs to associate with the notebook. |
| type | string | – | The type of the notebook. |
No output schema declared.
No examples provided.
twprojects-update_project ~171
Update project.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | integer | – | The ID of the category to which the project belongs. |
| company_id | integer | – | The ID of the company associated with the project. |
| description | string | – | The description of the project. |
| end_at | string | – | End date of the project (format: YYYYMMDD). |
| id | integer | yes | The ID of the project to update. |
| name | string | – | The name of the project. |
| owned_id | integer | – | The ID of the user who owns the project. |
| start_at | string | – | Start date of the project (format: YYYYMMDD). |
| status | string | – | The status of the project. |
| tag_ids | array | – | A list of tag IDs to associate with the project. |
No output schema declared.
No examples provided.
twprojects-update_project_category ~91
Update project category.
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | The color of the project category in hex format (e.g., #FF5733). |
| id | integer | yes | The ID of the project category to update. |
| name | string | – | The name of the project category. |
| parent_id | integer | – | The ID of the parent project category, if any. This allows for nested categories. |
No output schema declared.
No examples provided.
twprojects-update_skill ~54
Update skill.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The ID of the skill to update. |
| name | string | – | The name of the skill. |
| user_ids | array | – | The user IDs associated with the skill. |
No output schema declared.
No examples provided.
twprojects-update_tag ~95
Update tag.
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | The color of the tag. It must be a valid hex color code. |
| id | integer | yes | The ID of the tag to update. |
| name | string | – | The name of the tag. It must have less than 50 characters. |
| project_id | integer | – | The ID of the project to associate the tag with. This is for project-scoped tags. |
No output schema declared.
No examples provided.
twprojects-update_task ~637
Update task.
| Name | Type | Req | Description |
|---|---|---|---|
| assignees | object | – | Assignees for the task. To remove all assignees, use clear_assignees instead. |
| attachment_file_ids | array | – | IDs of files already in a project's files area to attach to the task, as returned by twprojects-add_project_file. Unlike a reference these can be used repeatedly, so this is how one file reaches seve… |
| attachment_refs | array | – | References of files to attach to the task, as returned by twprojects-create_upload_url or twprojects-create_file. Each is "tf_" followed by a UUID and the file extension, and can only be used once, s… |
| change_followers | object | – | Followers of any task changes. |
| clear_assignees | boolean | – | If true, removes all assignees from the task, leaving it unassigned. Cannot be combined with a non-empty assignees value. |
| clear_parent_task | boolean | – | If true, detaches the task from its parent, promoting it to a top-level task. Cannot be combined with parent_task_id. |
| comment_followers | object | – | Followers of any task comments. |
| complete_followers | object | – | Followers of any task completions. |
| description | string | – | The description of the task. Support for plain text and Markdown formatting. |
| due_date | string | – | The due date of the task. If omitted, falls back to the milestone due date when one is set. |
| estimated_minutes | integer | – | The estimated time to complete the task in minutes. |
| id | integer | yes | The ID of the task to update. |
| name | string | – | The name/title of the task. |
| notify | boolean | – | Whether to notify the task's assignees and followers, which sends them an email. Defaults to true. Set it to false for bulk or housekeeping changes nobody needs to hear about. |
| parent_task_id | integer | – | The ID of the parent task, making this task a subtask. A subtask must live in the same tasklist as its parent, so moving one with tasklist_id fails until the parent has moved or the link is cleared.… |
| predecessors | array | – | Task dependencies that must be completed before this task can start. |
| priority | string | – | The priority of the task. |
| progress | integer | – | The progress of the task, as a percentage (0-100). Only whole numbers are allowed. |
| start_date | string | – | The start date of the task. |
| tag_ids | array | – | A list of tag IDs to associate with the task. |
| tasklist_id | integer | – | The ID of the tasklist. Moving the task carries its subtasks along and detaches it from any parent staying behind. Use twprojects-move_tasks to move several tasks at once. |
No output schema declared.
No examples provided.
twprojects-update_tasklist ~75
Update tasklist.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | The description of the tasklist. |
| id | integer | yes | The ID of the tasklist to update. |
| milestone_id | integer | – | The ID of the milestone to associate with the tasklist. |
| name | string | – | The name of the tasklist. |
No output schema declared.
No examples provided.
twprojects-update_team ~183
Update team.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | integer | – | The ID of the company. This is used to create a team scoped for a specific company. |
| description | string | – | The description of the team. |
| handle | string | – | The handle of the team. It is a unique identifier for the team. It must not have spaces or special characters. |
| id | integer | yes | The ID of the team to update. |
| name | string | – | The name of the team. |
| parent_team_id | integer | – | The ID of the parent team, which places this team in a hierarchy. Pass 0 to move the team back to the top level. |
| project_id | integer | – | The ID of the project. This is used to create a team scoped for a specific project. |
| user_ids | array | – | Users to add to the team. |
No output schema declared.
No examples provided.
What is the com.teamwork/mcp server?
com.teamwork/mcp is listed in the public MCP registry as com.teamwork/mcp. The Teamwork.com official MCP server helps teams efficiently manage client projects with AI. This page covers its container image (docker.io/teamwork/mcp:v1.43.2).
Is the com.teamwork/mcp server safe to use?
com.teamwork/mcp scores 38 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the com.teamwork/mcp server expose?
com.teamwork/mcp exposes 213 tools: twprojects-get_task, twprojects-list_tasks, twprojects-create_task, twprojects-list_comments, twprojects-update_task, and 208 more. Their descriptions and schemas cost roughly 39,338 tokens of context every time the server is loaded.
Is the com.teamwork/mcp server still maintained?
com.teamwork/mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.