Multi-tenant MCP server that dynamically exposes OpenAPI endpoints from the Context API as MCP tools. Provides durable memory and learning management for agents.
Three tools with significant definition gaps. Tool names lack action verbs (createLearning is acceptable, but listLearnings and getCurrentWorkspace are weak). Descriptions are present but generic (10-50 chars, below the 50-200 char LLM-optimized baseline). Input schemas exist but are overly generic: 'query' and 'body' parameters use record(z.any()) with minimal type specificity. No output schemas documented. Parameters lack granular descriptions, 'Query string parameters' is not actionable. No error handling guidance. Tools appear dynamically generated from OpenAPI spec, which limits schema precision and parameter validation.
POST /learnings — Create a new learning record in the Context API
GET /workspace — Get current workspace information
GET /learnings — List learnings from the Context API, scoped by product
Tool names lack clear action verbs. 'getCurrentWorkspace' is passive; 'getWorkspace' or 'fetchWorkspaceInfo' is clearer. 'listLearnings' is acceptable but 'getLearnings' is more consistent with REST conventions.
Descriptions are too short (10-50 chars) and lack context. 'GET /learnings, List learnings from the Context API, scoped by product' does not explain WHEN to use this tool, what it returns, or how it differs from other discovery tools. LLM-optimized descriptions should be 50-200 chars with clear intent.
Input schemas use generic record(z.any()) for 'query' and 'body' parameters. No type constraints, enums, or validation. 'confidence' in createLearning should be an enum (low|medium|high), not a free-form string. 'product' should be required and described as a stable identifier.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing what listLearnings returns (array of objects? fields?). createLearning response structure is unknown.
Parameter descriptions are placeholder text ('Query string parameters', 'JSON request body'). No guidance on required vs optional, valid ranges, or format constraints. 'product' parameter lacks explanation of what it scopes or how to choose a value.