Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

com.teamwork/mcp

REMOTE · MCP.AI.TEAMWORK.COM · 3 COMPONENTS · SCANNED SEP 20

The Teamwork.com official MCP server helps teams efficiently manage client projects with AI.

0 this week 86 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security78
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
  • HTTPS enforcement could not be verified: the plaintext port answered with HTTP 404, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
  • HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
  • DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
  • The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
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
Install

How do I install the com.teamwork/mcp server?

com.teamwork/mcp is a hosted endpoint at https://mcp.ai.teamwork.com/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.ai.teamwork.com

# add to Claude Code
claude mcp add --transport http com-teamwork-mcp 'https://mcp.ai.teamwork.com/'
// .cursor/mcp.json
{
  "mcpServers": {
    "com-teamwork-mcp": {
      "url": "https://mcp.ai.teamwork.com/"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-teamwork-mcp": {
      "type": "http",
      "url": "https://mcp.ai.teamwork.com/"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.com-teamwork-mcp]
url = "https://mcp.ai.teamwork.com/"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-teamwork-mcp": {
      "type": "remote",
      "url": "https://mcp.ai.teamwork.com/",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-teamwork-mcp --url 'https://mcp.ai.teamwork.com/' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-teamwork-mcp:
    url: "https://mcp.ai.teamwork.com/"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-teamwork-mcp": {
      "Transport": "http",
      "Url": "https://mcp.ai.teamwork.com/"
    }
  }
}
# add to Vellum
assistant mcp add com-teamwork-mcp -t streamable-http -u 'https://mcp.ai.teamwork.com/'
// mcp.json
{
  "mcpServers": {
    "com-teamwork-mcp": {
      "type": "http",
      "url": "https://mcp.ai.teamwork.com/"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

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 0
    • Server version: 1.43.1 → 1.43.2 functional
  • 14 Sept 26 0
    • Tool “twprojects-get_jobrole” rewrote its description, which is the text the model reads security
    • Tool “twprojects-list_jobroles” rewrote its description, which is the text the model reads security
    • Tool “twspaces-list_pages” rewrote its description, which is the text the model reads security
    • Server version: 1.43.0 → 1.43.1 functional
    • Server version: 1.42.0 → 1.43.0 functional
    • Server version: 1.41.1 → 1.42.0 functional
    • Server version: 1.41.0 → 1.41.1 functional
    • “twspaces-list_pages” added an optional parameter “includePrivate” cosmetic
    • “twspaces-list_pages” reworded the description of “pageOffset” cosmetic
    • “twspaces-list_pages” reworded the description of “pageSize” cosmetic
  • 11 Sept 26 0
    • Server version: 1.40.1 → 1.41.0 functional
    • New tool “twprojects-get_file” functional
    • New tool “twprojects-list_files” functional
    • New tool “twprojects-download_file” functional
  • 10 Sept 26 0
    • Stability: fail → pass security
    • Server version: 1.40.0 → 1.40.1 functional
  • 9 Sept 26 0

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

    • Server version: 1.39.3 → 1.40.0 functional
    • “twprojects-create_task” added an optional parameter “notify” cosmetic
    • “twprojects-update_task” added an optional parameter “notify” cosmetic
    • “twdesk-list_ticket_types” made “fields” optional cosmetic
    • “twdesk-list_helpdoc_sites” made “subdomain” optional cosmetic
    • “twdesk-list_inboxes” made “email” optional cosmetic
    • “twdesk-list_inboxes” made “fields” optional cosmetic
    • “twdesk-list_inboxes” made “name” optional cosmetic
    • “twdesk-list_inboxes” made “orderBy” optional cosmetic
    • “twdesk-list_inboxes” made “orderDirection” optional cosmetic
    • “twdesk-list_inboxes” made “page” optional cosmetic
    • “twdesk-list_inboxes” made “pageSize” optional cosmetic
    • “twdesk-list_priorities” made “color” optional cosmetic
    • “twdesk-list_priorities” made “fields” optional cosmetic
    • “twdesk-list_priorities” made “name” optional cosmetic
    • “twdesk-list_priorities” made “orderBy” optional cosmetic
    • “twdesk-list_priorities” made “orderDirection” optional cosmetic
    • “twdesk-list_priorities” made “page” optional cosmetic
    • “twdesk-list_priorities” made “pageSize” optional cosmetic
    • “twdesk-list_statuses” made “code” optional cosmetic
    • “twdesk-list_statuses” made “color” optional cosmetic
    • “twdesk-list_statuses” made “fields” optional cosmetic
    • “twdesk-list_statuses” made “name” optional cosmetic
    • “twdesk-list_statuses” made “orderBy” optional cosmetic
    • “twdesk-list_statuses” made “orderDirection” optional cosmetic
    • “twdesk-list_statuses” made “page” optional cosmetic
    • “twdesk-list_statuses” made “pageSize” optional cosmetic
    • “twdesk-list_tags” made “color” optional cosmetic
    • “twdesk-list_tags” made “fields” optional cosmetic
    • “twdesk-list_tags” made “inboxIDs” optional cosmetic
    • “twdesk-list_tags” made “name” optional cosmetic
    • “twdesk-list_tags” made “orderBy” optional cosmetic
    • “twdesk-list_tags” made “orderDirection” optional cosmetic
    • “twdesk-list_tags” made “page” optional cosmetic
    • “twdesk-list_tags” made “pageSize” optional cosmetic
    • “twdesk-list_ticket_types” made “inboxIDs” optional cosmetic
    • “twdesk-list_ticket_types” made “name” optional cosmetic
    • “twdesk-list_ticket_types” made “orderBy” optional cosmetic
    • “twdesk-list_ticket_types” made “orderDirection” optional cosmetic
    • “twdesk-list_ticket_types” made “page” optional cosmetic
    • “twdesk-list_ticket_types” made “pageSize” optional cosmetic
    • “twdesk-list_users” made “email” optional cosmetic
    • “twdesk-list_users” made “fields” optional cosmetic
    • “twdesk-list_users” made “firstName” optional cosmetic
    • “twdesk-list_users” made “inboxIDs” optional cosmetic
    • “twdesk-list_users” made “isPartTime” optional cosmetic
    • “twdesk-list_users” made “lastName” optional cosmetic
    • “twdesk-list_users” made “orderBy” optional cosmetic
    • “twdesk-list_users” made “orderDirection” optional cosmetic
    • “twdesk-list_users” made “page” optional cosmetic
    • “twdesk-list_users” made “pageSize” optional cosmetic
    • “twdesk-reply_ticket” made “bcc” optional cosmetic
    • “twdesk-reply_ticket” made “cc” optional cosmetic
    • “twdesk-reply_ticket” made “threadType” optional cosmetic
    • “twdesk-search_helpdoc_articles” made “categoryID” optional cosmetic
    • “twdesk-search_helpdoc_articles” made “page” optional cosmetic
    • “twdesk-search_helpdoc_articles” made “pageSize” optional cosmetic
    • “twdesk-search_helpdoc_articles” made “search” optional cosmetic
    • “twdesk-search_helpdoc_articles” made “siteID” optional cosmetic
    • “twdesk-search_helpdoc_articles” made “status” optional cosmetic
    • “twdesk-search_tickets” made “companyIDs” optional cosmetic
    • “twdesk-search_tickets” made “createdAfter” optional cosmetic
    • “twdesk-search_tickets” made “createdBefore” optional cosmetic
    • “twdesk-search_tickets” made “customerIDs” optional cosmetic
    • “twdesk-search_tickets” made “fields” optional cosmetic
    • “twdesk-search_tickets” made “inboxIDs” optional cosmetic
    • “twdesk-search_tickets” made “omitMerged” optional cosmetic
    • “twdesk-search_tickets” made “orderBy” optional cosmetic
    • “twdesk-search_tickets” made “orderDirection” optional cosmetic
    • “twdesk-search_tickets” made “page” optional cosmetic
    • “twdesk-search_tickets” made “pageSize” optional cosmetic
    • “twdesk-search_tickets” made “priorityIDs” optional cosmetic
    • “twdesk-search_tickets” made “search” optional cosmetic
    • “twdesk-search_tickets” made “statusIDs” optional cosmetic
    • “twdesk-search_tickets” made “tagIDs” optional cosmetic
    • “twdesk-search_tickets” made “userIDs” optional cosmetic
    • “twdesk-update_company” made “description” optional cosmetic
    • “twdesk-update_company” made “details” optional cosmetic
    • “twdesk-update_company” made “domains” optional cosmetic
    • “twdesk-update_company” made “industry” optional cosmetic
    • “twdesk-update_company” made “kind” optional cosmetic
    • “twdesk-update_company” made “name” optional cosmetic
    • “twdesk-update_company” made “note” optional cosmetic
    • “twdesk-update_company” made “permission” optional cosmetic
    • “twdesk-update_company” made “website” optional cosmetic
    • “twdesk-update_customer” made “address” optional cosmetic
    • “twdesk-update_customer” made “email” optional cosmetic
    • “twdesk-update_customer” made “extraData” optional cosmetic
    • “twdesk-update_customer” made “facebookURL” optional cosmetic
    • “twdesk-update_customer” made “firstName” optional cosmetic
    • “twdesk-update_customer” made “jobTitle” optional cosmetic
    • “twdesk-update_customer” made “lastName” optional cosmetic
    • “twdesk-update_customer” made “linkedinURL” optional cosmetic
    • “twdesk-update_customer” made “mobile” optional cosmetic
    • “twdesk-update_customer” made “notes” optional cosmetic
    • “twdesk-update_customer” made “organization” optional cosmetic
    • “twdesk-update_customer” made “phone” optional cosmetic
    • “twdesk-update_customer” made “twitterHandle” optional cosmetic
    • “twdesk-update_helpdoc_article” made “contents” optional cosmetic
    • “twdesk-update_helpdoc_article” made “description” optional cosmetic
    • “twdesk-update_helpdoc_article” made “isPrivate” optional cosmetic
    • “twdesk-update_helpdoc_article” made “status” optional cosmetic
    • “twdesk-update_helpdoc_article” made “title” optional cosmetic
    • “twdesk-update_priority” made “color” optional cosmetic
    • “twdesk-update_priority” made “name” optional cosmetic
    • “twdesk-update_status” made “color” optional cosmetic
    • “twdesk-update_status” made “displayOrder” optional cosmetic
    • “twdesk-create_company” made “description” optional cosmetic
    • “twdesk-create_company” made “details” optional cosmetic
    • “twdesk-create_company” made “domains” optional cosmetic
    • “twdesk-create_company” made “industry” optional cosmetic
    • “twdesk-create_company” made “kind” optional cosmetic
    • “twdesk-create_company” made “note” optional cosmetic
    • “twdesk-create_company” made “permission” optional cosmetic
    • “twdesk-create_company” made “website” optional cosmetic
    • “twdesk-create_customer” made “address” optional cosmetic
    • “twdesk-create_customer” made “email” optional cosmetic
    • “twdesk-create_customer” made “extraData” optional cosmetic
    • “twdesk-create_customer” made “facebookURL” optional cosmetic
    • “twdesk-create_customer” made “firstName” optional cosmetic
    • “twdesk-create_customer” made “jobTitle” optional cosmetic
    • “twdesk-create_customer” made “lastName” optional cosmetic
    • “twdesk-create_customer” made “linkedinURL” optional cosmetic
    • “twdesk-create_customer” made “mobile” optional cosmetic
    • “twdesk-create_customer” made “notes” optional cosmetic
    • “twdesk-create_customer” made “organization” optional cosmetic
    • “twdesk-create_customer” made “phone” optional cosmetic
    • “twdesk-create_customer” made “twitterHandle” optional cosmetic
    • “twdesk-create_file” made “disposition” optional cosmetic
    • “twdesk-create_helpdoc_article” made “contents” optional cosmetic
    • “twdesk-create_helpdoc_article” made “description” optional cosmetic
    • “twdesk-create_helpdoc_article” made “isPrivate” optional cosmetic
    • “twdesk-create_helpdoc_article” made “status” optional cosmetic
    • “twdesk-create_priority” made “color” optional cosmetic
    • “twdesk-create_status” made “color” optional cosmetic
    • “twdesk-create_status” made “displayOrder” optional cosmetic
    • “twdesk-create_tag” made “color” optional cosmetic
    • “twdesk-create_ticket” made “agentId” optional cosmetic
    • “twdesk-create_ticket” made “bcc” optional cosmetic
    • “twdesk-create_ticket” made “cc” optional cosmetic
    • “twdesk-create_ticket” made “customerEmail” optional cosmetic
    • “twdesk-create_ticket” made “customerId” optional cosmetic
    • “twdesk-create_ticket” made “files” optional cosmetic
    • “twdesk-create_ticket” made “notifyCustomer” optional cosmetic
    • “twdesk-create_ticket” made “priorityId” optional cosmetic
    • “twdesk-create_ticket” made “statusId” optional cosmetic
    • “twdesk-create_ticket” made “tags” optional cosmetic
    • “twdesk-create_ticket” made “typeId” optional cosmetic
    • “twdesk-create_ticket_type” made “displayOrder” optional cosmetic
    • “twdesk-create_ticket_type” made “enabledForFutureInboxes” optional cosmetic
    • “twdesk-get_company” made “fields” optional cosmetic
    • “twdesk-get_customer” made “fields” optional cosmetic
    • “twdesk-get_helpdoc_article” made “fields” optional cosmetic
    • “twdesk-get_helpdoc_site” made “fields” optional cosmetic
    • “twdesk-get_inbox” made “fields” optional cosmetic
    • “twdesk-get_priority” made “fields” optional cosmetic
    • “twdesk-get_status” made “fields” optional cosmetic
    • “twdesk-get_tag” made “fields” optional cosmetic
    • “twdesk-get_ticket” made “fields” optional cosmetic
    • “twdesk-get_ticket_type” made “fields” optional cosmetic
    • “twdesk-get_user” made “fields” optional cosmetic
    • “twdesk-list_companies” made “domains” optional cosmetic
    • “twdesk-list_companies” made “fields” optional cosmetic
    • “twdesk-list_companies” made “kind” optional cosmetic
    • “twdesk-list_companies” made “name” optional cosmetic
    • “twdesk-list_companies” made “orderBy” optional cosmetic
    • “twdesk-list_companies” made “orderDirection” optional cosmetic
    • “twdesk-list_companies” made “page” optional cosmetic
    • “twdesk-list_companies” made “pageSize” optional cosmetic
    • “twdesk-list_customers” made “companyIDs” optional cosmetic
    • “twdesk-list_customers” made “companyNames” optional cosmetic
    • “twdesk-list_customers” made “emails” optional cosmetic
    • “twdesk-list_customers” made “fields” optional cosmetic
    • “twdesk-list_customers” made “orderBy” optional cosmetic
    • “twdesk-list_customers” made “orderDirection” optional cosmetic
    • “twdesk-list_customers” made “page” optional cosmetic
    • “twdesk-list_customers” made “pageSize” optional cosmetic
    • “twdesk-list_helpdoc_sites” made “fields” optional cosmetic
    • “twdesk-list_helpdoc_sites” made “name” optional cosmetic
    • “twdesk-list_helpdoc_sites” made “orderBy” optional cosmetic
    • “twdesk-list_helpdoc_sites” made “orderDirection” optional cosmetic
    • “twdesk-list_helpdoc_sites” made “page” optional cosmetic
    • “twdesk-list_helpdoc_sites” made “pageSize” optional cosmetic
  • 26 Aug 26 +1

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

  • 23 Aug 26 +1

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

  • 22 Aug 26 84

    First indexed and scored.

Diagnostics

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 · Probed https://mcp.ai.teamwork.com

TLS valid

Negotiated TLS 1.2 with TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=*.eks.us.teamworkops.com CN=Amazon RSA 2048 M04,O=Amazon,C=US 21 Jun 2026 4 Jan 2027 RSA 2048 SHA256-RSA 55ecd7796e6cd7996d2683854dc6516
SANs: *.eks.us.teamworkops.com, *.teamwork.com, *.helpdocsite.com, *.us.teamworkops.com, *.helpdocs.com, *.teamworkdesk.com, *.ai.teamwork.com
CN=Amazon RSA 2048 M04,O=Amazon,C=US (CA) CN=Amazon Root CA 1,O=Amazon,C=US 23 Aug 2022 23 Aug 2030 RSA 2048 SHA256-RSA 773124f2a952e3ed18a58bdb85d1bc0ce5f27
CN=Amazon Root CA 1,O=Amazon,C=US (CA) CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US 25 May 2015 31 Dec 2037 RSA 2048 SHA256-RSA 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.ai.teamwork.com. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
teamwork.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://mcp.ai.teamwork.com/.well-known/oauth-protected-resource"

Bearer resource_metadata="https://mcp.ai.teamwork.com/.well-known/oauth-protected-resource"

Protected resource metadata

Document https://mcp.ai.teamwork.com/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://mcp.ai.teamwork.com
Authorisation server https://teamwork.com

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.ai.teamwork.com Verified 200
http (plaintext) http://mcp.ai.teamwork.com Inconclusive 404
MCP tools · 213 exposed · ~39,338 tokens

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 →

Tool Tokens
twprojects-get_link ~27

Get link.

NameTypeReqDescription
idintegeryesThe ID of the link to get.
NameTypeReqDescription
linkobjectyes

No examples provided.

twprojects-get_message ~46

Get message.

NameTypeReqDescription
fieldsarrayThe attributes to return for each message, from the listed names.
idintegeryesThe ID of the message to get.
NameTypeReqDescription
messageobject

No examples provided.

twprojects-get_message_reply ~50

Get message reply.

NameTypeReqDescription
fieldsarrayThe attributes to return for each message reply, from the listed names.
idintegeryesThe ID of the message reply to get.
NameTypeReqDescription
messageReplyobject

No examples provided.

twprojects-get_milestone ~48

Get milestone.

NameTypeReqDescription
fieldsarrayThe attributes to return for each milestone, from the listed names.
idintegeryesThe ID of the milestone to get.
NameTypeReqDescription
milestoneobject

No examples provided.

twprojects-get_notebook ~47

Get notebook.

NameTypeReqDescription
fieldsarrayThe attributes to return for each notebook, from the listed names.
idintegeryesThe ID of the notebook to get.
NameTypeReqDescription
notebookobject

No examples provided.

twprojects-get_project ~46

Get project.

NameTypeReqDescription
fieldsarrayThe attributes to return for each project, from the listed names.
idintegeryesThe ID of the project to get.
NameTypeReqDescription
includedobject
projectobject

No examples provided.

twprojects-get_project_category ~50

Get project category.

NameTypeReqDescription
fieldsarrayThe attributes to return for each project category, from the listed names.
idintegeryesThe ID of the project category to get.
NameTypeReqDescription
projectCategoryobject

No examples provided.

twprojects-get_skill ~27

Get skill.

NameTypeReqDescription
idintegeryesThe ID of the skill to get.
NameTypeReqDescription
skillobjectyes

No examples provided.

twprojects-get_tag ~27

Get tag.

NameTypeReqDescription
idintegeryesThe ID of the tag to get.
NameTypeReqDescription
tagobjectyes

No examples provided.

twprojects-get_task ~46

Get task.

NameTypeReqDescription
fieldsarrayThe attributes to return for each task, from the listed names.
idintegeryesThe ID of the task to get.
NameTypeReqDescription
includedobject
taskobject

No examples provided.

twprojects-get_tasklist ~50

Get tasklist.

NameTypeReqDescription
fieldsarrayThe attributes to return for each tasklist, from the listed names.
idintegeryesThe ID of the tasklist to get.
NameTypeReqDescription
tasklistobject

No examples provided.

twprojects-get_team ~27

Get team.

NameTypeReqDescription
idintegeryesThe ID of the team to get.
NameTypeReqDescription
teamobjectyes

No examples provided.

twprojects-get_timelog ~50

Get timelog.

NameTypeReqDescription
fieldsarrayThe attributes to return for each timelog, from the listed names.
idintegeryesThe ID of the timelog to get.
NameTypeReqDescription
timelogobject

No examples provided.

twprojects-get_timer ~46

Get timer.

NameTypeReqDescription
fieldsarrayThe attributes to return for each timer, from the listed names.
idintegeryesThe ID of the timer to get.
NameTypeReqDescription
timerobject

No examples provided.

twprojects-get_user ~46

Get user.

NameTypeReqDescription
fieldsarrayThe attributes to return for each user, from the listed names.
idintegeryesThe ID of the user to get.
NameTypeReqDescription
personobject

No examples provided.

twprojects-get_user_me ~17

Get the currently authenticated user.

Input schema present but exposes no named parameters.

NameTypeReqDescription
personobjectyes

No examples provided.

twprojects-get_workflow ~47

Get workflow.

NameTypeReqDescription
fieldsarrayThe attributes to return for each workflow, from the listed names.
idintegeryesThe ID of the workflow to get.
NameTypeReqDescription
workflowobject

No examples provided.

twprojects-get_workflow_stage ~68

Get workflow stage.

NameTypeReqDescription
fieldsarrayThe attributes to return for each workflow stage, from the listed names.
idintegeryesThe ID of the workflow stage to get.
workflow_idintegeryesThe ID of the workflow that owns the stage.
NameTypeReqDescription
stageobject

No examples provided.

twprojects-link_project_to_workflow ~63

Link a project to a workflow so its tasks track through workflow stages.

NameTypeReqDescription
project_idintegeryesThe ID of the project to link to the workflow.
workflow_idintegeryesThe 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.

NameTypeReqDescription
allocation_idintegeryesThe ID of the allocation.
task_idintegeryesThe 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.

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching activities, no rows — use for "how many". Ignores page, page_size, verbose, fields.
end_dateEnd 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_idsarrayExclude activities created by these users. Pass the current user's ID to drop their own activity from the feed.
fieldsarrayThe attributes to return for each activity, from the listed names.
item_idsarrayFilter 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_typesarrayFilter activities by item types.
order_bystringThe field to sort the activities by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_idintegerThe ID of the project to retrieve activities from. Omit to list activities across all projects.
start_dateStart 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_idsarrayFilter activities by the users who created them.
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
activitiesnull|array
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
metaobject

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.

NameTypeReqDescription
assigned_user_idsarrayOnly return allocations assigned to these users. Accepts real people and placeholder users alike.
assigned_user_team_idsarrayOnly return allocations whose assigned user belongs to one of these teams.
count_onlybooleanIf true, return only {"count": N}: the exact number of matching allocations, no rows — use for "how many". Ignores page, page_size, verbose, fields.
deleted_afterOnly 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_datestringReturn allocations overlapping up to and including this day (format: YYYY-MM-DD). Defaults to 30 days from today when omitted.
fieldsarrayThe attributes to return for each allocation, from the listed names.
include_financial_detailsbooleanInclude 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_tagsbooleanRequire a project to carry every tag in project_tag_ids rather than any of them.
order_bystringThe field to sort the allocations by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_category_idsarrayOnly return allocations on projects in these categories.
project_company_idsarrayOnly return allocations on projects belonging to these companies.
project_idsarrayOnly return allocations on these projects.
project_owner_idsarrayOnly return allocations on projects owned by these users.
project_statusstringOnly return allocations on projects with this status.
project_tag_idsarrayOnly return allocations on projects carrying these tags.
search_termstringA search term to filter allocations by title.
show_deletedbooleanReturn 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_datestringReturn allocations overlapping this day onwards (format: YYYY-MM-DD). Defaults to today when omitted.
updated_afterOnly 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…
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
allocationsnull|array
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
includedobject
metaobject

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.

NameTypeReqDescription
calendar_idintegerThe 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…
cursorstringCursor for fetching the next page of results.
ended_before_datestringOnly 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.
fieldsarrayThe attributes to return for each calendar event, from the listed names.
limitintegerMaximum number of events to return.
order_bystringThe field to sort the calendar events by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
started_after_datestringOnly include events starting on or after this day, which is itself included (format: YYYY-MM-DD).
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
eventsnull|array
includedobject
metaobject

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.

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching calendars, no rows — use for "how many". Ignores page, page_size, verbose, fields.
fieldsarrayThe attributes to return for each calendar, from the listed names.
order_bystringThe field to sort the calendars by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
calendarsnull|array
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
metaobject

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.

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching comments, no rows — use for "how many". Ignores page, page_size, verbose, fields.
fieldsarrayThe attributes to return for each comment, from the listed names.
file_version_idintegerThe ID of the file version to retrieve comments for. Each file can have multiple versions, and comments can be associated with specific versions.
link_idintegerThe ID of the link to retrieve comments for. Provide this to scope comments to a link.
milestone_idintegerThe ID of the milestone to retrieve comments for. Provide this to scope comments to a milestone.
notebook_idintegerThe ID of the notebook to retrieve comments for. Provide this to scope comments to a notebook.
order_bystringThe field to sort the comments by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
search_termstringA search term to filter comments by name.
task_idintegerThe ID of the task to retrieve comments for. Provide this to scope comments to a task.
updated_afterOnly 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_idsarrayA list of user IDs to filter comments by
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
commentsnull|array
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
metaobject

No examples provided.

twprojects-list_companies ~281

List companies (aka clients).

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching companies, no rows — use for "how many". Ignores page, page_size, verbose, fields.
fieldsarrayThe attributes to return for each company, from the listed names.
match_all_tagsbooleanIf true, match all tags; if false, match any.
order_bystringThe field to sort the companies by. Omit to keep the ordering the API applies by default.
order_by_custom_field_idintegerThe custom field to sort the companies by. Required when order_by is "customfield", and ignored otherwise.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
search_termstringA search term to filter companies by name. Each word from the search term is used to match against the company name.
tag_idsarrayA list of tag IDs to filter companies by tags.
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
companiesnull|array
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
includedobject
metaobject

No examples provided.

twprojects-list_custom_field_values ~202

List the custom field values of a task, project or company.

NameTypeReqDescription
count_onlybooleanIf 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_idsarrayFilter by custom field.
entitystringyesThe type of entity to list custom field values for.
entity_idintegeryesThe ID of the task, project or company to list custom field values for.
fieldsarrayThe attributes to return for each custom field value, from the listed names.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
customfieldValuesnull|array
metaobject

No examples provided.

twprojects-list_custom_fields ~307

List custom fields.

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching custom fields, no rows — use for "how many". Ignores page, page_size, verbose, fields.
entitiesarrayFilter custom fields by entity type.
fieldsarrayThe attributes to return for each custom field, from the listed names.
idsarrayCustom field IDs to retrieve.
include_site_levelbooleanWhether to also include installation-level custom fields when filtering by project.
only_project_levelbooleanWhether to return only project-level custom fields.
only_site_levelbooleanWhether to return only installation-level custom fields.
order_bystringThe field to sort the custom fields by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_idsarrayFilter custom fields by project.
search_termstringA search term to filter custom fields by name.
show_deletedbooleanWhether to include deleted custom fields in the results.
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
customfieldsnull|array
metaobject

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.

NameTypeReqDescription
count_onlybooleanIf 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_idintegeryesCustom item type ID to list fields for.
idsarrayRestrict to these field IDs.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
search_termstringA search term to filter custom item fields by display name.
show_deletedbooleanInclude deleted fields.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
customItemFieldsnull|array
metaobject

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.

NameTypeReqDescription
count_onlybooleanIf 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_idintegeryesCustom item type ID to list records for.
idsarrayRestrict to these record IDs.
order_bystringThe field to sort the custom item records by. Omit to keep the ordering the API applies by default.
order_by_field_idintegerThe custom field to sort the records by. Required when order_by is "customitemfield", and ignored otherwise.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
search_termstringA search term to filter custom item records by name.
section_idsarrayRestrict to records in these sections.
show_deletedbooleanInclude deleted records.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
customItemRecordsnull|array
metaobject

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.

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching custom items, no rows — use for "how many". Ignores page, page_size, verbose, fields.
idsarrayRestrict to these custom item type IDs.
order_bystringThe field to sort the custom items by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_idintegeryesProject ID to list custom item types for.
search_termstringA search term to filter custom items by display name or labels.
show_deletedbooleanInclude deleted custom item types.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
customItemsnull|array
includedobject
metaobject

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.

NameTypeReqDescription
category_idintegerOnly files in this file category.
count_onlybooleanIf true, return only {"count": N}: the exact number of matching files, no rows — use for "how many". Ignores page, page_size, verbose, fields.
fieldsarrayThe attributes to return for each file, from the listed names.
idsarrayOnly files with these IDs.
order_bystringThe field to sort the files by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_idintegerThe ID of the project whose files area to list. Omit to list files across every project the caller can access.
search_all_fieldsbooleanWhether 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_termstringOnly 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_deletedbooleanWhether to also list deleted files. Defaults to false.
skip_external_filesbooleanWhether 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_idsarrayOnly files carrying any of these tags.
task_idintegerOnly files attached to this task.
updated_afterOnly 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_afterstringOnly files whose selected version was uploaded on or after this day (YYYY-MM-DD). The day itself is included.
uploaded_beforestringOnly 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_idsarrayOnly files uploaded by these users.
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
filesnull|array
includedobject
metaobject

No examples provided.

twprojects-list_industries ~21

List supported company (aka client) industries.

Input schema present but exposes no named parameters.

NameTypeReqDescription
industriesnull|arrayyes

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.

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching job roles, no rows — use for "how many". Ignores page, page_size, verbose, fields.
fieldsarrayThe attributes to return for each job role, from the listed names.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
search_termstringA 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…
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
includedobject
jobRolesnull|array
metaobject

No examples provided.

twprojects-list_links ~209

List links.

NameTypeReqDescription
fieldsarrayThe attributes to return for each link, from the listed names.
match_all_tagsbooleanIf true, match all tags; if false, match any.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_idintegerThe ID of the project to filter links by.
search_termstringA 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_idsarrayA list of tag IDs to filter links by tags.
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
linksnull|array

No examples provided.

twprojects-list_message_replies ~283

List replies under a message thread. Filter by message_ids or project_ids.

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching message replies, no rows — use for "how many". Ignores page, page_size, verbose, fields.
fieldsarrayThe attributes to return for each message reply, from the listed names.
message_idsarrayFilter by message.
order_bystringThe field to sort the message replies by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_idsarrayFilter by project.
search_termstringA 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…
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
messageRepliesnull|array
metaobject

No examples provided.

twprojects-list_messages ~307

List project messages (top-level posts). Use twprojects-list_message_replies for thread replies.

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching messages, no rows — use for "how many". Ignores page, page_size, verbose, fields.
fieldsarrayThe attributes to return for each message, from the listed names.
match_all_tagsbooleanIf true, match all tags; if false, match any.
order_bystringThe field to sort the messages by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_idsarrayFilter messages by project.
search_termstringA 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_idsarrayA list of tag IDs to filter messages by tags.
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
messagesnull|array
metaobject

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.

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching milestones, no rows — use for "how many". Ignores page, page_size, verbose, fields.
due_afterstringOnly include milestones with a deadline on or after this date.
due_beforestringOnly include milestones with a deadline on or before this date.
fieldsarrayThe attributes to return for each milestone, from the listed names.
match_all_tagsbooleanIf true, match all tags; if false, match any.
order_bystringThe field to sort the milestones by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_idintegerThe ID of the project from which to retrieve milestones. Omit to list milestones across all projects.
search_termstringA 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_completedbooleanIf false, only return milestones that are not completed yet. Included by default, unlike the task and tasklist lists.
tag_idsarrayA list of tag IDs to filter milestones by tags.
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
metaobject
milestonesnull|array

No examples provided.

twprojects-list_notebooks ~292

List notebooks.

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching notebooks, no rows — use for "how many". Ignores page, page_size, verbose, fields.
fieldsarrayThe attributes to return for each notebook, from the listed names.
include_contentsbooleanIf true, include notebook contents in the response.
match_all_tagsbooleanIf true, match all tags; if false, match any.
order_bystringThe field to sort the notebooks by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_idsarrayFilter notebooks by project.
search_termstringA 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_idsarrayA list of tag IDs to filter notebooks by tags.
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
metaobject
notebooksnull|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)

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching project budgets, no rows — use for "how many". Ignores page, page_size, verbose, fields.
cursorstringOpaque 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…
fieldsarrayThe attributes to return for each project budget, from the listed names.
limitintegerMaximum number of budgets to return. Only applies alongside cursor; ignored when paging with page/page_size.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_idsarrayFilter budgets by project.
statusstringFilter budgets by status.
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
budgetsnull|array
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
includedobject
metaobject

No examples provided.

twprojects-list_project_categories ~154

List project categories.

NameTypeReqDescription
count_onlybooleanIf true, return only {"count": N}: the exact number of matching project categories, no rows — use for "how many". Ignores page, page_size, verbose, fields.
fieldsarrayThe attributes to return for each project category, from the listed names.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
search_termstringA search term to filter project categories by name.
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
metaobject
projectCategoriesnull|array

No examples provided.

twprojects-list_project_templates ~123

List project templates.

NameTypeReqDescription
match_all_tagsbooleanIf true, match all tags; if false, match any.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_category_idsarrayFilter project templates by category.
search_termstringA search term to filter project templates by name or description.
tag_idsarrayA list of tag IDs to filter project templates by tags.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
includedobject
metaobject
projectsnull|array
suggestionsarrayPresent 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.

NameTypeReqDescription
active_onlybooleanIf 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_onlybooleanIf 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_afterOnly 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…
fieldsarrayThe attributes to return for each project update, from the listed names.
include_archivedbooleanIf true, return the updates of archived projects alongside those of the active ones; excluded by default. Ignored when project_ids is set.
order_bystringThe field to sort the project updates by. Omit to keep the ordering the API applies by default.
order_modestringThe direction to sort the results in.
pageintegerPage number for pagination of results (1-based).
page_sizeintegerNumber of results per page for pagination (1-500).
project_healthsarrayOnly 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_idsarrayOnly return the updates of these projects. Naming any project makes the endpoint ignore every other project filter, including project_healths and include_archived.
show_deletedbooleanIf true, return deleted updates alongside the live ones; excluded by default.
updated_afterOnly 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…
verbosebooleanIf false, returns id + name only — useful when scanning many results.
NameTypeReqDescription
countintegerExact number of matches across every page. Returned instead of the rows when count_only.
includedobject
metaobject
projectUpdatesnull|array

No examples provided.

Common questions

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 hosted endpoint (https://mcp.ai.teamwork.com).

Is the com.teamwork/mcp server safe to use?

com.teamwork/mcp scores 86 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.

Does the com.teamwork/mcp server require authentication?

Yes. com.teamwork/mcp asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

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.