A stdio MCP server with image processing and S3 upload tools.
The server has 8 well-named tools with mostly complete input schemas and descriptions. Tool names follow verb_noun convention (image_compress, content_latest, upload_to_s3, notify_task_complete). Input schemas are properly typed with enums, min/max constraints, and per-parameter descriptions. However, output schemas are completely undocumented, the code shows no indication of what these tools return, which is critical for agent composition and chaining. Error handling guidance is absent from descriptions. The content tools (content_latest, content_list, content_read, content_search) have good pagination/limits. Image tools have comprehensive format enums. S3 upload tool exposes metadata as object type but lacks guidance on expected structure. Descriptions are generally 30-100 characters (within baseline range), but lack WHEN to use each tool and what downstream operations become possible. No recovery guidance for failures.
Read latest blog entries.
List blog entries with pagination.
Read one blog article by id or slug.
Search blog entries by title, slug, and description.
Compress an image file and optionally resize it.
Convert an image to a target format.
Send a task completion notification via system notification or webhook.
Output schemas are completely undocumented. No tool in the provided source shows what it returns to the agent. For example, content_latest should document return structure (array of BlogEntry with fields: id, title, slug, summary, date, etc.). Without documented outputs, agents cannot plan multi-step operations or extract the right fields for downstream tool calls.
Error handling provides no recovery guidance in tool descriptions. A tool description should indicate: what errors can occur, how to distinguish them (retryable vs user-fixable vs fatal), and what the LLM should do next. E.g., 'content_read' could fail with 'Not found' but the description doesn't say 'Try content_search() first to verify the blog exists'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Upload a file to Amazon S3.
notify_task_complete lacks clear description of when/why to use it. The description says 'Send a task completion notification via system notification or webhook' but doesn't explain: Is this for logging completion? Notifying users? Triggering downstream pipelines? When should an agent call this vs ending the conversation?
upload_to_s3 accepts 'metadata' as an object but provides no schema or guidance on expected key-value types. Description says 'S3 object metadata key-value pairs' but doesn't clarify: are values strings? Can they be nested? What AWS metadata headers does this map to?
content_read has two optional parameters (id, slug) that are mutually exclusive but this dependency is not documented. Description should state: 'Either id or slug must be provided; if both are given, id takes precedence' (or equivalent behavior).
image_compress and image_convert both operate on images but lack guidance on when to choose one vs the other. If both can reduce file size, when should an agent call compress vs convert? The descriptions don't distinguish use cases.