MCP server for TeamDynamix Web API — search tickets, KB articles, people, and assets via Claude.
This is a moderate-quality server with consistent naming conventions and reasonable schema coverage, but significant gaps in error handling, output documentation, and parameter validation guidance. All 34 tools follow a clear verb_noun naming pattern (tdx_<domain>_<action>), which is excellent. Descriptions are present for all tools and parameters, averaging 100-150 characters (within acceptable range). However, the server lacks output schema documentation, error recovery guidance, and detailed parameter constraints. Parameter descriptions are generic and do not specify ranges, formats, or validation rules. Security considerations (secrets in parameters) appear handled at the infrastructure level but are not documented in the tool definitions. No confirmation patterns for destructive operations. This server would benefit significantly from: (1) documented return types for every tool, (2) actionable error messages with recovery steps, (3) explicit parameter validation rules, and (4) confirmation steps for destructive tools like tdx_attributes_delete_choice and asset updates.
Create a new TeamDynamix asset. StatusID and FormID are required — omit them to select interactively.
Get full asset details by ID including serial number, custom attributes, and attachments.
Search TeamDynamix assets. Returns summary data — use tdx_assets_get for full details.
Add a new picklist choice to a custom attribute.
Remove a picklist choice from a custom attribute.
Get the picklist choices for a custom attribute. Only applicable to dropdown/choice-type attributes.
Output schemas are not documented. The code returns text-wrapped JSON via wrapToolHandler, but there is no schema or type definition showing what fields agents can expect from responses (e.g., what fields does an asset object contain? what are the pagination properties of search results?). This forces LLMs to parse unstructured JSON without guidance.
Destructive operations lack confirmation or dry-run patterns. tdx_attributes_delete_choice performs deletion without requiring explicit confirmation. Agents cannot preview the action or request user approval before irreversible changes.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 58 | - | v1 |
List custom attribute definitions for a component. Common component IDs: Ticket=9, Asset=27, CI=63, Project=12, Opportunity=35, Person=40.
Update an existing picklist choice on a custom attribute.
Create a new knowledge base article. Use tdx_kb_get_categories first to find a valid CategoryID.
Get full knowledge base article details by ID including body, custom attributes, tags, and attachments.
List all knowledge base categories. Use this to find CategoryID values when creating articles.
Search TeamDynamix knowledge base articles. Returns summary data — use tdx_kb_get_article for full details including body, attachments, and attributes.
Get full person details by UID including contact info, attributes, and role.
Search TeamDynamix people. Returns summary data — use tdx_people_get for full details.
Create a new TeamDynamix project.
Get full project details by ID including dates, budget, and status.
Search TeamDynamix projects. Returns summary data — use tdx_projects_get for full details.
Update an existing TeamDynamix project.
Execute a report and return the resulting data rows and column headers.
Get report details by ID (metadata only, not data).
Search TeamDynamix reports. Returns summary data — use tdx_reports_get for full details.
Create a new service in the TeamDynamix service catalog.
Create a new offering within a service.
Get full service details by ID including description and category.
Get full offering details by ID.
Search the TeamDynamix service catalog. Returns summary data — use tdx_services_get for full details.
Search offerings within a service. Returns summary data — use tdx_services_get_offering for full details.
Update an existing service in the service catalog.
Update an existing offering within a service.
Create a new TeamDynamix ticket.
Get full ticket details by ID including description, custom attributes, and attachments.
Add a reply/note to an existing ticket. When invoked with a verified portal identity, attribution is recorded cryptographically; otherwise the model-supplied acting user information is used.
Search TeamDynamix tickets. Returns summary data — use tdx_tickets_get for full details.
Update an existing TeamDynamix ticket.
Error handling provides no recovery guidance. The wrapToolHandler middleware catches errors but does not provide actionable messages. Agents see errors but have no guidance on what to do next (retry? ask user? call a different tool?). Example: if tdx_assets_search returns 'Not found', should the agent call search with different parameters or give up?
Parameter validation rules are not documented. Many numeric parameters (e.g., maxResults, formId, statusId) lack range constraints, enum values, or format specifications in descriptions. Parameter descriptions say 'Filter by status IDs' without stating what valid status IDs are or where to find them.
Search tools do not document pagination behavior. tdx_assets_search, tdx_kb_search, tdx_people_search, etc., accept maxResults but do not specify: (1) default result count if maxResults is omitted, (2) whether results are paginated or capped, (3) how to retrieve the next page of results. Agents cannot reliably retrieve large datasets.
Interactive parameter selection (statusId, formId, categoryId) is not well documented. Several tools state 'omit to select interactively' but do not explain what happens when an LLM omits a parameter, does the tool prompt the user? Block execution? Agents cannot plan multi-step workflows if interactive selection occurs.
Return references are not guaranteed for tool chaining. For example, tdx_tickets_create likely returns a ticket_id, but this is not documented in the tool definition. Similarly, tdx_assets_search returns summary data with asset IDs, but the response structure is not formally defined. Agents cannot reliably chain tools if they don't know what IDs will be returned.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). The MCP SDK supports annotations to help clients understand tool risk levels, but none are used. Clients cannot automatically flag or warn about destructive operations.