Static source inference · medium confidence · detected: stateful session
Deprecated protocol patterns detected
Summary
Strong foundation with consistent naming, good verb-based tool names (create_, get_, list_, delete_, update_), and comprehensive parameter schemas. All 25 tools have descriptions and structured input schemas. Tool annotations (readOnlyHint, destructiveHint, openWorldHint) are present and correct. However, several issues prevent a higher score: (1) Parameter descriptions lack depth in many tools, they state WHAT a field is but rarely WHEN to use it or WHY it matters. E.g., 'Layer modifications' doesn't explain the animation sub-schema or when animations work. (2) Output schemas are not documented, callers cannot see what fields each tool returns. (3) No error handling guidance, when a render fails or a template is not found, there's no recovery path documented. (4) Some parameter relationships are underdocumented (e.g., the 'animation' property structure is described in prose within 'layers' description but not formally schematized). Average tool score: 72/100.
Tools (25)
clone_templatewriteauthsource verified85/100
Clone an existing template
create_folderwriteauthsource verified82/100
Create a new folder
create_renderwriteauthsource verified82/100
Create a render (image, video, or PDF) from a template. This is the main tool for generating content. Supports formats: jpg, png, webp, pdf, mp4.
Missing output schemas for all 25 tools. LLMs cannot infer what fields each tool returns, forcing blind calls and context-wasting lookups. E.g., create_render returns what? A render_id? A status? A URL? Undocumented returns break tool chaining.
Incorrect destructiveHint annotations on 5 delete tools. Tools delete_render, delete_template, delete_folder, delete_upload, delete_font all have destructiveHint: false, but these are destructive operations that should have destructiveHint: true. This misleads agents into treating irreversible deletions as safe.
Recommendations
Document output schemas for all 25 tools. For each tool, add a 'outputSchema' section specifying the returned object structure, field types, and what IDs/references are available for chaining. E.g., create_render should document: {render_id, status, file_url, created_at}.
Fix destructiveHint annotations: delete_render, delete_template, delete_folder, delete_upload, delete_font should all have destructiveHint: true. This correctly signals to agents that these operations are irreversible.
Expand parameter descriptions to 50-200 chars. For each parameter, state WHAT it does, WHEN to use it, WHAT format/values are valid, and any CONSTRAINTS. Example: 'format (required): Output format (jpg, png, webp, pdf, mp4). Use jpg for web, png for transparency, pdf for documents, mp4 for video animations. Default: jpg.'
Add error handling sections to tools that can fail (create_render, merge_renders, delete_folder, etc.). Document: (1) What can go wrong, (2) Is it retryable? (3) Can the user fix it? (4) What should the agent do next? Example: 'If render fails with timeout, retry up to 3 times. If it fails with invalid_template, call list_templates() to verify the template exists.'
Formalize sub-schemas. For 'layers' and 'animation' properties, define a proper JSON Schema object instead of describing in prose. Make animation an enum-constrained object with typed sub-properties: {in: {type, direction, duration}, loop: {type, duration}, out: {type, direction, duration}, start, end}.
For file uploads (create_upload, upload_font), add an enum or explicit examples showing the two valid formats: (1) 'https://example.com/image.png' (URL), or (2) 'data:image/png;base64,iVBORw0KG...' (base64). Clarify when to use each.
Spec posture evidence
Inferred effective spec: <=2025-11-25.
Relies on Stateful initialize / Mcp-Session-Id (removed; protocol is stateless) - make each request self-contained
Parameter descriptions lack actionable depth. Most parameters have 1-sentence descriptions stating WHAT they are (e.g., 'The template ID') but not WHEN or WHY an agent should use them, or what formats/constraints apply. E.g., 'Layer modifications' in create_render doesn't explain the animation sub-schema structure or when animations are valid. Descriptions should be 50-200 chars and include constraints (range, enum, format).
No error handling guidance. If a render fails, template is not found, or a folder delete conflicts, there is no documented recovery path. E.g., delete_folder doesn't state what happens if the folder is not empty. Agents need categorized errors (retryable, user-fixable, fatal) and next-step guidance.
Underdocumented sub-schemas. The 'layers' parameter in create_render and update_template accepts an 'animation' property with nested 'in', 'loop', 'out', 'start', 'end' sub-properties, but these are described in prose within the description, not as a formal JSON Schema. This forces LLMs to parse text to understand the structure. Also, animation constraints (e.g., 'duration in milliseconds') are described but not validated.
File upload parameters accept both URL and base64-encoded data but descriptions are overly technical ('data:mime/type;base64,' prefix). No enum, no example, no guidance for LLMs on when to use each format. Likely to cause hallucinated inputs.
Some tool descriptions are under 20 characters (e.g., 'Delete a template', 'Delete a folder'). Expand to include context: WHEN to use this instead of similar tools, WHAT the consequences are, and any PREREQUISITES.
Add pagination guidance to list_* tools. Document: (1) Default page size, (2) Max results per call, (3) How to get total count, (4) How to detect end of results. Example: 'Returns up to 25 items per page. Iterate page numbers until results are empty. Total count available in response metadata.'
Reduce required parameters by providing sensible defaults. E.g., create_render could default format='jpg', page/limit could default 0 and 25 in list tools, so simple invocations work without LLM reasoning.
Add a 'confirm_delete' or dry-run mode to destructive tools (delete_render, delete_template, delete_folder, delete_font, delete_upload). Agents make mistakes, a confirmation step prevents catastrophic deletions.
Document parameter relationships. E.g., 'If format is mp4, duration and fps are required. If format is pdf, flatten and cmyk apply. If format is png, transparent applies.' Currently undocumented, forcing LLMs to guess valid combinations.