MCP server for Teamwork Desk API integration, providing tools to manage tickets, customers, companies, users, tags, ticket statuses, and ticket types
Server has 22 tools with consistent naming (verb_noun pattern) and complete input schemas. All tools have descriptions and parameters are typed with enums where appropriate. However, descriptions are generic and lack LLM-optimization guidance (e.g., 'List all companies' vs 'Retrieve paginated list of companies; use filters to narrow results by name or date'). Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal (generic error messages without recovery guidance). Missing tool annotations (readOnlyHint, destructiveHint). No documentation of which tools are idempotent or have side effects.
Count all filtered tickets
Create a new company
Create a new customer
Create a new tag
Create a new ticket
Create a new ticket status
Create a new ticket type
Output schemas not documented. LLMs cannot predict response structure or plan downstream tool calls. E.g., list_companies returns JSON but fields are undocumented.
Descriptions are generic and lack LLM-optimization guidance. 'List all companies' (18 chars) does not explain when to use this vs get_company, what filters are available, or what structure is returned. Baseline: 194 chars average.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe read-only tools from destructive writes. create_* tools should be marked destructiveHint=true.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Create a new user
Get a specific company by ID
Get a specific customer by ID
Get a specific tag by ID
Get a specific ticket by ID
Get a specific ticket status by ID
Get a specific ticket type by ID
Get a specific user by ID
List all companies
List all customers
List all tags
List all ticket statuses
List all ticket types
List all tickets
List all users
Error handling is minimal. All errors return generic mcp.NewToolResultError() with no recovery guidance. E.g., 'Failed to list companies: <error>' tells LLM nothing about retry strategy or next steps.
Filter parameter descriptions are verbose but lack actionable constraints. E.g., list_tickets filter accepts complex MongoDB-style operators ($eq, $gt, $or) but no examples or validation guidance for LLM.