MCP server for Tracetify — trace how any product actually grew, from inside Claude Code or Cursor.
Single tool 'dynamic_from_manifest' with inferred definitions loaded from tools.generated.json. Tool name lacks action verb (should be verb_noun pattern). Description is generic and does not explain WHAT the tool does, WHEN to use it, or what it returns. No visible input schema in source code, schemas are dynamically loaded from external JSON file not provided for review. Cannot verify parameter descriptions, types, or constraints. This server loads tools dynamically, making static analysis impossible.
Tools are dynamically loaded from tools.generated.json manifest file. Each tool definition includes name, title, description, parameters, REST endpoint mapping, and annotations (readOnly, destructive).
Tool name 'dynamic_from_manifest' lacks action verb. Should follow verb_noun pattern (e.g., 'call_tracetify_api', 'get_tracetify_report'). LLMs infer intent from names, 'dynamic_from_manifest' is opaque.
Tool description 'Tools are dynamically loaded from tools.generated.json manifest file...' is implementation detail, not user-facing guidance. Does not answer: What does this tool do? When should the LLM call it? What does it return? Descriptions must be LLM-optimized (50-200 chars), not technical.
Input schemas not visible in source code. tools.generated.json is referenced but not provided for review. Cannot verify parameter types, descriptions, constraints, or enums.
Tool definitions are dynamically loaded and inferred, not explicitly registered in source. Static analysis cannot verify definition quality.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
No output schema documented. LLMs cannot plan downstream calls or extract required fields without knowing response structure. Responses are JSON-stringified but structure is opaque.