AI CBT Exercise Creator - An MCP server that generates Cognitive Behavioral Therapy exercises and protocols using a multi-agent LangGraph workflow with safety checking, clinical critique, and human-in-the-loop approval.
Single tool with adequate naming and description, but critical gaps in schema documentation, parameter descriptions, and error handling. The tool name 'generate_cbt_exercise' follows verb_noun convention. The description is reasonably detailed (194 chars, within the p10-p90 baseline of 34-392). However, input parameters lack individual descriptions in the visible schema, and the output schema is entirely undocumented. The tool performs a complex multi-step orchestration (drafting, safety checking, clinical critiquing) which is appropriate for the domain, but the error handling returns generic catch-all messages rather than actionable recovery guidance. No output structure is documented for the LLM to understand what fields to expect.
Generates a CBT (Cognitive Behavioral Therapy) exercise or protocol based on the topic and instructions. Use this tool when the user asks to create an exercise, protocol, or therapeutic content. The process involves an AI agent drafting, safety checking, and clinical critiquing the content.
Input parameter 'instructions' lacks a description in the schema. The instructions parameter has a default value but no explanation of what instructions are expected, their format, length, or constraints. This violates the pattern that every parameter must have a description explaining what it controls.
Output schema is completely undocumented. The tool returns a string, but the LLM has no way to know the structure, format, or fields it should expect. The actual return statement shows it may return different formats (FINAL APPROVED CONTENT, GENERATED DRAFT, INCOMPLETE/BLOCKED), but this is not documented in the tool definition. The LLM cannot plan downstream tool calls or extract structured data without this information.
Error handling returns generic catch-all messages that do not guide the LLM toward recovery. The except clause returns 'Error executing Cerina workflow: {str(e)}' which provides no actionable next steps. Per the error-classification pattern, error responses should tell the LLM whether to retry, ask the user for clarification, or if the failure is unrecoverable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 0 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
No input validation documented. The 'topic' parameter is required and accepts a string, but there are no constraints on length, format, or allowed values. The code does not explicitly validate inputs before passing them to the graph. An LLM could pass an empty topic, an extremely long string, or special characters without guidance on what will succeed.
The 'instructions' parameter default is an empty string, which is reasonable, but the description should explain when this parameter is used versus when it is optional, and what kinds of instructions are expected. Currently there is no guidance for the LLM on how to populate this field.