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-get_link ~27
Get link.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The ID of the link to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| link | object | yes | – |
No examples provided.
twprojects-get_message ~46
Get message.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each message, from the listed names. |
| id | integer | yes | The ID of the message to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| message | object | – | – |
No examples provided.
twprojects-get_message_reply ~50
Get message reply.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each message reply, from the listed names. |
| id | integer | yes | The ID of the message reply to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| messageReply | object | – | – |
No examples provided.
twprojects-get_milestone ~48
Get milestone.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each milestone, from the listed names. |
| id | integer | yes | The ID of the milestone to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| milestone | object | – | – |
No examples provided.
twprojects-get_notebook ~47
Get notebook.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each notebook, from the listed names. |
| id | integer | yes | The ID of the notebook to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| notebook | object | – | – |
No examples provided.
twprojects-get_project ~46
Get project.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each project, from the listed names. |
| id | integer | yes | The ID of the project to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| included | object | – | – |
| project | object | – | – |
No examples provided.
twprojects-get_project_category ~50
Get project category.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each project category, from the listed names. |
| id | integer | yes | The ID of the project category to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| projectCategory | object | – | – |
No examples provided.
twprojects-get_skill ~27
Get skill.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The ID of the skill to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| skill | object | yes | – |
No examples provided.
twprojects-get_tag ~27
Get tag.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The ID of the tag to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| tag | object | yes | – |
No examples provided.
twprojects-get_task ~46
Get task.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each task, from the listed names. |
| id | integer | yes | The ID of the task to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| included | object | – | – |
| task | object | – | – |
No examples provided.
twprojects-get_tasklist ~50
Get tasklist.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each tasklist, from the listed names. |
| id | integer | yes | The ID of the tasklist to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| tasklist | object | – | – |
No examples provided.
twprojects-get_team ~27
Get team.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The ID of the team to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| team | object | yes | – |
No examples provided.
twprojects-get_timelog ~50
Get timelog.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each timelog, from the listed names. |
| id | integer | yes | The ID of the timelog to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| timelog | object | – | – |
No examples provided.
twprojects-get_timer ~46
Get timer.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each timer, from the listed names. |
| id | integer | yes | The ID of the timer to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| timer | object | – | – |
No examples provided.
twprojects-get_user ~46
Get user.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each user, from the listed names. |
| id | integer | yes | The ID of the user to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| person | object | – | – |
No examples provided.
twprojects-get_user_me ~17
Get the currently authenticated user.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| person | object | yes | – |
No examples provided.
twprojects-get_workflow ~47
Get workflow.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each workflow, from the listed names. |
| id | integer | yes | The ID of the workflow to get. |
| Name | Type | Req | Description |
|---|---|---|---|
| workflow | object | – | – |
No examples provided.
twprojects-get_workflow_stage ~68
Get workflow stage.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each workflow stage, from the listed names. |
| id | integer | yes | The ID of the workflow stage to get. |
| workflow_id | integer | yes | The ID of the workflow that owns the stage. |
| Name | Type | Req | Description |
|---|---|---|---|
| stage | object | – | – |
No examples provided.
twprojects-link_project_to_workflow ~63
Link a project to a workflow so its tasks track through workflow stages.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | integer | yes | The ID of the project to link to the workflow. |
| workflow_id | integer | yes | The ID of the workflow to link the project to. |
No output schema declared.
No examples provided.
twprojects-link_task_to_allocation ~109
Link one task to an allocation, showing what task work sits behind the committed time. The task and the allocation must be in the same project. This adds a single link and leaves the allocation's other links alone, unlike linked_task_ids on twprojects-update_allocation, which replaces the whole set.
| Name | Type | Req | Description |
|---|---|---|---|
| allocation_id | integer | yes | The ID of the allocation. |
| task_id | integer | yes | The ID of the task to link. Must belong to the allocation's project. |
No output schema declared.
No examples provided.
twprojects-list_activities ~468
List recent activity events. 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 activities, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| end_date | – | – | End of the activity 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), whic… |
| exclude_user_ids | array | – | Exclude activities created by these users. Pass the current user's ID to drop their own activity from the feed. |
| fields | array | – | The attributes to return for each activity, from the listed names. |
| item_ids | array | – | Filter activities by the IDs of the items they refer to, such as task, milestone or message IDs. Item IDs are only unique within an item type, so combine this with log_item_types to avoid matching ac… |
| log_item_types | array | – | Filter activities by item types. |
| order_by | string | – | The field to sort the activities 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 to retrieve activities from. Omit to list activities across all projects. |
| start_date | – | – | Start of the activity 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. |
| user_ids | array | – | Filter activities by the users who created them. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| activities | null|array | – | – |
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| meta | object | – | – |
No examples provided.
twprojects-list_allocations ~803
List scheduler allocations — who is committed to which project, and when. ALWAYS pass start_date and end_date: with neither set the endpoint returns only today through 30 days from today, and says nothing about having narrowed the range, so an unbounded call silently answers a question about a wider period with one month of data. Allocations are planned time and a separate plane from task estimates and logged time; the two are not summed. linkedTaskEstimatedTime counts each linked task whole and must not be summed across allocations.
| Name | Type | Req | Description |
|---|---|---|---|
| assigned_user_ids | array | – | Only return allocations assigned to these users. Accepts real people and placeholder users alike. |
| assigned_user_team_ids | array | – | Only return allocations whose assigned user belongs to one of these teams. |
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching allocations, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| deleted_after | – | – | Only return allocations deleted at or after this moment; the boundary itself matches, unlike updated_after. Pair it with show_deleted, which is what switches the results to deleted allocations. Accep… |
| end_date | string | – | Return allocations overlapping up to and including this day (format: YYYY-MM-DD). Defaults to 30 days from today when omitted. |
| fields | array | – | The attributes to return for each allocation, from the listed names. |
| include_financial_details | boolean | – | Include forecasted revenue and cost for the allocated time. Requires the scheduler rates entitlement and financial permission on the project; without either, the request still succeeds but the figure… |
| match_all_project_tags | boolean | – | Require a project to carry every tag in project_tag_ids rather than any of them. |
| order_by | string | – | The field to sort the allocations 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_category_ids | array | – | Only return allocations on projects in these categories. |
| project_company_ids | array | – | Only return allocations on projects belonging to these companies. |
| project_ids | array | – | Only return allocations on these projects. |
| project_owner_ids | array | – | Only return allocations on projects owned by these users. |
| project_status | string | – | Only return allocations on projects with this status. |
| project_tag_ids | array | – | Only return allocations on projects carrying these tags. |
| search_term | string | – | A search term to filter allocations by title. |
| show_deleted | boolean | – | Return ONLY deleted allocations instead of the active ones — this replaces the result set rather than adding to it, so a call with this set says nothing about what is currently scheduled. Deleting an… |
| start_date | string | – | Return allocations overlapping this day onwards (format: YYYY-MM-DD). Defaults to today when omitted. |
| updated_after | – | – | Only return allocations 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 cov… |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| allocations | null|array | – | – |
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| included | object | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_calendar_events ~328
List events from a calendar, including time-blocking events that link a calendar slot to a Teamwork project, task or timelog. Omit calendar_id to read the calling user's own calendar. Use twprojects-list_calendars to name a different one; the calendar of type 'blocked_time' holds the account's time-blocking events.
| Name | Type | Req | Description |
|---|---|---|---|
| calendar_id | integer | – | The ID of the calendar to list events from. Omit it for the calling user's own calendar: the connected Google or Outlook calendar when there is one, otherwise the calendar of type 'blocked_time'. Eve… |
| cursor | string | – | Cursor for fetching the next page of results. |
| ended_before_date | string | – | Only include events ending before this day starts, so the day named here is itself excluded — pass the day after the last one you want (format: YYYY-MM-DD). Note the asymmetry with started_after_date. |
| fields | array | – | The attributes to return for each calendar event, from the listed names. |
| limit | integer | – | Maximum number of events to return. |
| order_by | string | – | The field to sort the calendar events by. Omit to keep the ordering the API applies by default. |
| order_mode | string | – | The direction to sort the results in. |
| started_after_date | string | – | Only include events starting on or after this day, which is itself included (format: YYYY-MM-DD). |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| events | null|array | – | – |
| included | object | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_calendars ~212
List calendars. Calendars hold events such as meetings, out-of-office periods and time-blocking entries; the calendar of type 'blocked_time' holds the account's time-blocking events.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching calendars, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each calendar, from the listed names. |
| order_by | string | – | The field to sort the calendars 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| calendars | null|array | – | – |
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| meta | object | – | – |
No examples provided.
twprojects-list_comments ~474
List comments. Scope by one of task_id, milestone_id, notebook_id, link_id, or file_version_id; omit all for site-wide. Comment bodies are truncated at 500 characters and marked where they are cut; use twprojects-get_comment for the full text.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching comments, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each comment, from the listed names. |
| file_version_id | integer | – | The ID of the file version to retrieve comments for. Each file can have multiple versions, and comments can be associated with specific versions. |
| link_id | integer | – | The ID of the link to retrieve comments for. Provide this to scope comments to a link. |
| milestone_id | integer | – | The ID of the milestone to retrieve comments for. Provide this to scope comments to a milestone. |
| notebook_id | integer | – | The ID of the notebook to retrieve comments for. Provide this to scope comments to a notebook. |
| order_by | string | – | The field to sort the comments 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). |
| search_term | string | – | A search term to filter comments by name. |
| task_id | integer | – | The ID of the task to retrieve comments for. Provide this to scope comments to a task. |
| updated_after | – | – | Only include comments edited strictly after this moment; the boundary itself does not match. Defaults to the last 3 months. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD… |
| user_ids | array | – | A list of user IDs to filter comments by |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| comments | null|array | – | – |
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| meta | object | – | – |
No examples provided.
twprojects-list_companies ~281
List companies (aka clients).
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching companies, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each company, from the listed names. |
| match_all_tags | boolean | – | If true, match all tags; if false, match any. |
| order_by | string | – | The field to sort the companies by. Omit to keep the ordering the API applies by default. |
| order_by_custom_field_id | integer | – | The custom field to sort the companies 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). |
| search_term | string | – | A search term to filter companies by name. Each word from the search term is used to match against the company name. |
| tag_ids | array | – | A list of tag IDs to filter companies by tags. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| companies | null|array | – | – |
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| included | object | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_custom_field_values ~202
List the custom field values of a task, project or company.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching custom field values, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| custom_field_ids | array | – | Filter by custom field. |
| entity | string | yes | The type of entity to list custom field values for. |
| entity_id | integer | yes | The ID of the task, project or company to list custom field values for. |
| fields | array | – | The attributes to return for each custom field value, 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). |
| 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. |
| customfieldValues | null|array | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_custom_fields ~307
List custom fields.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching custom fields, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| entities | array | – | Filter custom fields by entity type. |
| fields | array | – | The attributes to return for each custom field, from the listed names. |
| ids | array | – | Custom field IDs to retrieve. |
| include_site_level | boolean | – | Whether to also include installation-level custom fields when filtering by project. |
| only_project_level | boolean | – | Whether to return only project-level custom fields. |
| only_site_level | boolean | – | Whether to return only installation-level custom fields. |
| order_by | string | – | The field to sort the custom fields 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 custom fields by project. |
| search_term | string | – | A search term to filter custom fields by name. |
| show_deleted | boolean | – | Whether to include deleted custom fields in the results. |
| 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. |
| customfields | null|array | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_custom_item_fields ~290
List fields on a custom item type. Each entry includes the twId you need when writing record values. 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 |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching custom item fields, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| custom_item_id | integer | yes | Custom item type ID to list fields for. |
| ids | array | – | Restrict to these field IDs. |
| 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 custom item fields by display name. |
| show_deleted | boolean | – | Include deleted fields. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| customItemFields | null|array | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_custom_item_records ~375
List records on a custom item type. Returns each record with field values keyed by display name. Use the section_ids filter to scope to a specific 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 |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching custom item records, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| custom_item_id | integer | yes | Custom item type ID to list records for. |
| ids | array | – | Restrict to these record IDs. |
| order_by | string | – | The field to sort the custom item records by. Omit to keep the ordering the API applies by default. |
| order_by_field_id | integer | – | The custom field to sort the records by. Required when order_by is "customitemfield", 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). |
| search_term | string | – | A search term to filter custom item records by name. |
| section_ids | array | – | Restrict to records in these sections. |
| show_deleted | boolean | – | Include deleted records. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| customItemRecords | null|array | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_custom_items ~333
List the custom item types defined on a project. Returns each type's id, display name and labels — call get_custom_item to see a type's fields and sections. 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 |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching custom items, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| ids | array | – | Restrict to these custom item type IDs. |
| order_by | string | – | The field to sort the custom items 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 | yes | Project ID to list custom item types for. |
| search_term | string | – | A search term to filter custom items by display name or labels. |
| show_deleted | boolean | – | Include deleted custom item types. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| customItems | null|array | – | – |
| included | object | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_files ~646
List the files in a project's files area, or across every project when no project_id is given. Files attached to tasks, comments and messages live there too, so task_id answers "what is attached to this task". Deleted files are left out unless show_deleted is true. Each row carries a downloadURL that needs the caller's own Teamwork session; use twprojects-download_file to read the content here.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | integer | – | Only files in this file category. |
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching files, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each file, from the listed names. |
| ids | array | – | Only files with these IDs. |
| order_by | string | – | The field to sort the files 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 whose files area to list. Omit to list files across every project the caller can access. |
| search_all_fields | boolean | – | Whether search_term also matches the file extension, the file category, the original file name and the name of the latest uploader. Defaults to false. |
| search_term | string | – | Only files whose name contains this term. Set search_all_fields to also match the extension, the category, the original name and the uploader's name. |
| show_deleted | boolean | – | Whether to also list deleted files. Defaults to false. |
| skip_external_files | boolean | – | Whether to leave out files that live in a linked cloud storage provider (Google Drive, Dropbox, Box, OneDrive, SharePoint) and list uploads only. Defaults to false. A row's fileSource tells the two a… |
| tag_ids | array | – | Only files carrying any of these tags. |
| task_id | integer | – | Only files attached to this task. |
| updated_after | – | – | Only files changed strictly after this instant, on the file or on its selected version. Accepts an RFC 3339 timestamp (2026-08-03T14:30:00Z) or a plain YYYY-MM-DD date (2026-08-03), which covers that… |
| uploaded_after | string | – | Only files whose selected version was uploaded on or after this day (YYYY-MM-DD). The day itself is included. |
| uploaded_before | string | – | Only files whose selected version was uploaded before this day (YYYY-MM-DD). The bound is the first instant of the day, so files uploaded during it are excluded; name the following day to include it. |
| user_ids | array | – | Only files uploaded by these users. |
| 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. |
| files | null|array | – | – |
| included | object | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_industries ~21
List supported company (aka client) industries.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| industries | null|array | yes | – |
No examples provided.
twprojects-list_jobroles ~245
List job roles. A verbose row carries the people assigned to the role under users, and those holding it as their primary role under primaryUsers; both are references, resolved to names under included.users.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching job roles, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each job role, 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 job roles by name, or assigned users. The job role will be selected if each word of the term matches the name, or assigned user first or last name, not requiring that the word… |
| 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 | – | – |
| jobRoles | null|array | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_links ~209
List links.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | The attributes to return for each link, from the listed names. |
| match_all_tags | boolean | – | If true, match all tags; if false, match any. |
| 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 links by. |
| search_term | string | – | A search term to filter links by title or description. Each word from the search term is used to match against the link title or description. The link will be selected if each word of the term matche… |
| tag_ids | array | – | A list of tag IDs to filter links by tags. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| links | null|array | – | – |
No examples provided.
twprojects-list_message_replies ~283
List replies under a message thread. Filter by message_ids or project_ids.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching message replies, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each message reply, from the listed names. |
| message_ids | array | – | Filter by message. |
| order_by | string | – | The field to sort the message replies 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 message replies by body or title. Each word from the search term is used to match against the message reply body or title. The message reply will be selected if each word of t… |
| 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. |
| messageReplies | null|array | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_messages ~307
List project messages (top-level posts). Use twprojects-list_message_replies for thread replies.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching messages, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each message, from the listed names. |
| match_all_tags | boolean | – | If true, match all tags; if false, match any. |
| order_by | string | – | The field to sort the messages 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 messages by project. |
| search_term | string | – | A search term to filter messages by body or title. Each word from the search term is used to match against the message body or title. The message will be selected if each word of the term matches the… |
| tag_ids | array | – | A list of tag IDs to filter messages by tags. |
| 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. |
| messages | null|array | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_milestones ~421
List milestones. Scope by project_id or omit for site-wide. Completed milestones are included by default; pass show_completed false to see only the outstanding ones. Use due_after and due_before to bound the deadline instead of listing everything and filtering afterwards.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching milestones, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| due_after | string | – | Only include milestones with a deadline on or after this date. |
| due_before | string | – | Only include milestones with a deadline on or before this date. |
| fields | array | – | The attributes to return for each milestone, from the listed names. |
| match_all_tags | boolean | – | If true, match all tags; if false, match any. |
| order_by | string | – | The field to sort the milestones 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 milestones. Omit to list milestones across all projects. |
| search_term | string | – | A search term to filter milestones by name. Each word from the search term is used to match against the milestone name and description. The milestone will be selected if each word of the term matches… |
| show_completed | boolean | – | If false, only return milestones that are not completed yet. Included by default, unlike the task and tasklist lists. |
| tag_ids | array | – | A list of tag IDs to filter milestones by tags. |
| 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 | – | – |
| milestones | null|array | – | – |
No examples provided.
twprojects-list_notebooks ~292
List notebooks.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching notebooks, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each notebook, from the listed names. |
| include_contents | boolean | – | If true, include notebook contents in the response. |
| match_all_tags | boolean | – | If true, match all tags; if false, match any. |
| order_by | string | – | The field to sort the notebooks 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 notebooks by project. |
| search_term | string | – | A search term to filter notebooks by name or description. The notebook will be selected if each word of the term matches the notebook name or description, not requiring that the word matches are in t… |
| tag_ids | array | – | A list of tag IDs to filter notebooks by tags. |
| 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 | – | – |
| notebooks | null|array | – | – |
No examples provided.
twprojects-list_project_budgets ~287
Lists top-level project budgets. Filters: project_ids, status.Returns only budgeted projects (diff with twprojects-list_projects for budgetless).Filter server-side via project_ids when known. 1-based page pagination (pageOffset = page - 1)
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching project budgets, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| cursor | string | – | Opaque cursor from a previous response, for cursor pagination. This is not an offset or a page number — never construct one. Setting it makes the endpoint ignore page and page_size. To walk pages, us… |
| fields | array | – | The attributes to return for each project budget, from the listed names. |
| limit | integer | – | Maximum number of budgets to return. Only applies alongside cursor; ignored when paging with page/page_size. |
| 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 budgets by project. |
| status | string | – | Filter budgets by status. |
| verbose | boolean | – | If false, returns id + name only — useful when scanning many results. |
| Name | Type | Req | Description |
|---|---|---|---|
| budgets | null|array | – | – |
| count | integer | – | Exact number of matches across every page. Returned instead of the rows when count_only. |
| included | object | – | – |
| meta | object | – | – |
No examples provided.
twprojects-list_project_categories ~154
List project categories.
| Name | Type | Req | Description |
|---|---|---|---|
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching project categories, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| fields | array | – | The attributes to return for each project category, 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 project categories 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 | – | – |
| projectCategories | null|array | – | – |
No examples provided.
twprojects-list_project_templates ~123
List project templates.
| Name | Type | Req | Description |
|---|---|---|---|
| match_all_tags | boolean | – | If true, match all tags; if false, match any. |
| 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 project templates by category. |
| search_term | string | – | A search term to filter project templates by name or description. |
| tag_ids | array | – | A list of tag IDs to filter project templates by tags. |
| 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_project_updates ~663
List project updates: the Markdown text on a project's dashboard and the health it reports. Nothing else returns either — a project row carries no health, and the activity log holds a preview of the text, not the text. Newest first. Only each project's current update is returned unless active_only is false, so an unfiltered call is not the whole history. Rows carry text (Markdown, in full, emoji codes already converted to characters), health (0 not set, 1 bad, 2 ok, 3 good), healthLabel (the name this installation gives that rating — read it, never build one from health) and color (hex, empty when the health is not set). The author and the project are bare IDs, sideloaded under included when verbose is true. Keep a response small with fields and page_size; verbose=false drops the text and returns the ratings.
| Name | Type | Req | Description |
|---|---|---|---|
| active_only | boolean | – | If true (the default), return only each project's current update. Set it to false to read the update history, which returns every past update in full. |
| count_only | boolean | – | If true, return only {"count": N}: the exact number of matching project updates, no rows — use for "how many". Ignores page, page_size, verbose, fields. |
| created_after | – | – | Only include updates posted 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… |
| fields | array | – | The attributes to return for each project update, from the listed names. |
| include_archived | boolean | – | If true, return the updates of archived projects alongside those of the active ones; excluded by default. Ignored when project_ids is set. |
| order_by | string | – | The field to sort the project updates 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_healths | array | – | Only return the updates reporting these health ratings, matching any of the values given. "not_set" matches an update that rates nothing. Ignored when project_ids is set. |
| project_ids | array | – | Only return the updates of these projects. Naming any project makes the endpoint ignore every other project filter, including project_healths and include_archived. |
| show_deleted | boolean | – | If true, return deleted updates alongside the live ones; excluded by default. |
| updated_after | – | – | Only include updates last edited 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 co… |
| 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 | – | – |
| projectUpdates | null|array | – | – |
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.