Brain MCP server for Telos — exposes the markdown brain as queryable tools. Manages founder's problem hypothesis, motivation, interviews, evidence, and stage progression for startup validation.
Server has 16 tools with consistent naming (verb_noun pattern) and descriptions present for all. However, descriptions are often terse (20-80 chars), parameter descriptions are minimal or absent, and output schemas are not formally documented. Input schemas exist but lack detail, most parameters are simple strings without format constraints, enums, or validation guidance. Error handling is basic (string returns, no recovery guidance). Security is reasonable (path traversal prevention in _safe_filename), but no permission gates or audit logging. Composition is sound, tools are single-responsibility and chainable. Overall: functional but below production baseline for agent-facing tools.
Create a new evidence file in brain/evidence/.
Create a new interview file in brain/interviews/. Filename should not include path.
Append an entry to brain/journey.md (the founder's emotional record).
Calculate believer density and segment concentration from interviews. Returns metrics + verdict.
Read brain/believers/index.md.
Read a specific interview file from brain/interviews/.
Read the current problem hypothesis from brain/problem.md.
Parameter descriptions are minimal or absent. Most parameters (e.g., 'content', 'filename', 'keywords') lack guidance on format, constraints, or expected values. LLMs cannot infer whether 'content' should be markdown, plain text, or structured data.
Output schemas are not formally documented. Tools return strings, lists, or dicts, but the structure and fields are not declared. Agents cannot plan downstream calls or extract data reliably without seeing the schema.
Error handling is generic. Tools return plain error strings (e.g., 'Error: filename already exists') with no recovery guidance. Agents cannot determine if an error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Get the current stage from brain/stage.md. Returns '0', '1', '2', '3', or '4'. Defends against corrupted stage.md by validating the value — out-of-range or non-numeric stage values fall back to '0'.
Read the founder's motivation from brain/why.md. Surfaces 'what would make me quit' anchor.
List all evidence files in brain/evidence/.
List all interview files in brain/interviews/ with metadata from frontmatter.
Search across brain/evidence/ for entries matching any of the keywords. Returns ranked matches with snippets.
Update the current stage. Stage must be 0-4. Reason is logged to history.
Replace brain/believers/index.md with new content.
Replace brain/problem.md with new content. Caller assembles the markdown.
Replace brain/why.md with new content.
No input validation or constraint documentation. Parameters like 'new_stage' accept strings but lack enum constraints in the schema. 'filename' has no length or character restrictions documented. Agents may pass invalid values.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish read-only tools from destructive ones without parsing descriptions. This violates current MCP spec patterns for tool safety.