MCP server exposing D‑Tools System Integrator workflows for AV integration projects and analytics.
23 tools with consistent naming (verb_noun pattern) and complete input schemas. Descriptions are present but generic (avg ~60 chars, well below the 194-char baseline for A+ tools). All tools have typed parameters with descriptions, but lack depth on WHEN to use each tool, prerequisites, and error recovery guidance. No output schemas documented. Missing tool annotations (readOnlyHint, destructiveHint). Error handling is minimal, no recovery guidance or actionable error messages visible in definitions.
Analyze project profitability based on item costs and prices
Archive or unarchive projects
Create a new client
Create a new project with optional items
Create a new service order
Create a new task
Retrieve a single catalog entry by ID
Descriptions are generic and lack LLM-optimization. Average ~60 chars vs. 194-char baseline. Missing WHEN to use, prerequisites, and error recovery guidance. E.g., 'Retrieve a single project or change order by ID' does not explain when to call get_project vs. list_projects or what happens on 404.
No output schemas documented. LLMs cannot infer what fields to expect from responses, forcing them to guess at downstream tool parameters. E.g., does get_project return project_id or id? Does list_projects return total_count or count?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Retrieve a single client by ID
Get equipment summary grouped by category
Retrieve a single project or change order by ID
Retrieve a single purchase order by ID
Retrieve a single service order by ID
Retrieve a single task by ID
Check the health and connectivity of the D-Tools API
List clients with optional filters and pagination
List projects with optional filters and pagination
List purchase orders with optional filters and pagination
List service orders with optional filters and pagination
List tasks with optional filters and pagination
Search product catalog with optional filters and pagination
Update an existing client
Update an existing project
Update an existing task
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes without explicit hints. E.g., archive_project and update_project should be marked destructiveHint=true; get_project should be readOnlyHint=true.
No error handling guidance in tool definitions. If a project ID is not found, what should the LLM do? Retry? Call list_projects? No recovery path is documented.
Pagination parameters (pageNumber, pageSize) lack constraints. No min/max specified. LLMs could pass pageSize=999999 or pageNumber=0, causing API errors or unexpected behavior.