MCP server that exposes OKR (Objectives and Key Results) management functionality via the Model Context Protocol for consumption by API Agents. Integrates with Stytch B2B for organization and member management with RBAC enforcement.
The OKR Manager MCP server has 6 tools covering objective and key result management. All tools have descriptions and input schemas visible in the source code (api/OKRManagerMCP.ts). However, there are significant gaps in parameter descriptions, missing output schema documentation, and no error handling guidance. Tool names follow verb_noun convention reasonably well (listObjectives, addObjective, deleteObjective, addKeyResult, setKeyResultAttainment, deleteKeyResult), but parameter descriptions are minimal or missing entirely. The server lacks documentation of return types, pagination support, and error recovery patterns. Most tools are READ_ONLY or WRITE/DESTRUCTIVE, but there is no confirmation mechanism for destructive operations. Output formatting is hardcoded in formatResponse() but not formally documented as part of the tool contract.
Add a new key result to a specific objective
Add a new top-level objective for the organization
Remove a key result from a specific objective
Remove an existing top-level objective from the organization
View all objectives and key results for the organization
Set the attainment value for a specific key result in a specific objective
Output schemas are not documented. Tools return formatted text wrapped in {content: [{type: 'text', text: ...}]}, but the actual response structure (Objective[] contents, field names, types) is never explicitly declared. LLMs cannot plan downstream tool calls without knowing what fields are returned.
Parameter descriptions are missing or insufficient. 'okrID' is described only as 'ID of the objective to delete', no guidance on format (UUID? numeric? alphanumeric?). 'keyResultText' lacks constraints on length, required characters, or examples of valid input. LLMs cannot validate inputs without explicit format guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 59 | - | v1 |
No error handling guidance. Tools do not document what errors can occur (invalid ID, permission denied, conflict) or how the LLM should recover. Error responses are not shown to exist at all. Pattern 'recovery-guide' requires actionable error messages that guide the agent's next step.
Destructive operations (deleteObjective, deleteKeyResult) have no confirmation mechanism. An agent could accidentally delete all OKRs. Pattern 'confirmation-request' requires dry-run or confirmation step for irreversible operations.
No pagination or limit enforcement. 'listObjectives' returns all objectives with no offset/limit parameters and no indication of result cap. If an org has thousands of OKRs, the response could exhaust the context window. Pattern 'paginated-result' requires pagination support.
Permission checking is hidden in middleware (stytchRBACEnforcement) and not visible in tool definitions. Tool descriptions do not declare what permissions are required (e.g., 'read:objectives', 'write:objectives'). Pattern 'scope-declaration' requires explicit permission declarations.