Self-learning MCP proxy. Watches your Claude Code usage, generates optimized proxies, cuts token costs by 99%.
mcp-slim exhibits significant definition quality gaps. Tool names follow verb_noun convention (fetch_*, update_*, create_*), which is positive. However, descriptions are inconsistent in depth and specificity. Most critically, parameter schemas lack proper type constraints (no enums for constrained fields like 'status', 'priority', 'stage'), and several parameters have minimal or missing descriptions. Output schemas are not documented. Error handling is generic ('Error: {err.message}') with no recovery guidance. The server loads tools dynamically from modules, but tool definitions themselves are not validated for quality. Only 2 of 9 tools have required parameters explicitly marked; others omit 'required' arrays. No tool declares permissions, audit trails, or idempotency guarantees.
Create a new task in the Notion tasks database.
Fetch notes attached to a HubSpot deal. Returns date, owner, and note body.
HubSpot deal list with optional filters. Returns markdown table sorted by amount.
Fetch full details of a single item by ID.
Fetch items from My API. Returns a markdown table with name, status, and creation date.
HubSpot pipeline summary: deal counts and values by stage, plus top deals list.
No enum constraints on constrained parameters. 'status', 'priority', 'stage', 'owner' accept free-form strings with no validation. LLMs will hallucinate invalid values (e.g. 'urgent' instead of 'High').
Output schemas not documented. Callers cannot predict response structure. fetch_items returns 'markdown table' but no field list; fetch_deals returns 'markdown table sorted by amount' but no schema for downstream tool chaining.
Generic error handling. CallToolRequestSchema handler returns 'Error: {err.message}' with no recovery guidance. LLMs cannot determine if error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Fetch full details of a single task by page ID, including body content.
Fetch active tasks from Notion. Returns a markdown table sorted by priority.
Update the status and/or assignee of a Notion task.
Destructive tools (update_task_status, create_task) lack confirmation or dry-run support. No idempotency guarantees. Agents cannot safely retry without risking duplicate tasks or unintended state changes.
Parameter descriptions are minimal (10-30 chars). 'Filter by stage name' and 'Filter by owner name' lack context on valid values, format, or when to use. Descriptions should be 50-200 chars with examples of valid inputs.