Self-hosted MCP server providing a shared development journal across projects.
Bramble demonstrates solid tool design with clear naming conventions (verb_noun pattern: journal_*, agent_guide), comprehensive parameter schemas, and detailed descriptions. All 8 tools have explicit input schemas with typed parameters and descriptions. Tool descriptions average ~180 chars, within the 10-1024 baseline. However, output schemas are not formally documented in the visible code, responses are inferred from _entry_to_dict() and _open_item_to_dict() serializers but not declared in tool registration. Error handling is present (translate_errors decorator) but recovery guidance is minimal. Security is well-considered (auth_validator, rate_limiter, token_project context binding per Phase-3 Decision B), but no tool annotations (readOnlyHint/destructiveHint) are visible in the FastMCP registration.
Retrieve the agent guide containing instructions and best practices for using the Bramble journal system.
Append a new journal entry to a project. Enforces write-scope binding when using bearer tokens scoped to specific projects (Phase-3 Decision B). Returns the created entry with its assigned ID.
Retrieve the curated context for a project, including recent entries, open items, recent bugfixes, recent decisions, related projects, and suggested searches. Content is previewed by default (500 chars) to avoid payload overflow; full bodies available via journal_read or journal_search.
Generate a digest of journal activity for a date range, including entry counts by project and status, and categorized entries (open items, bugfixes, decisions).
Create a link between two journal entries with a specified relation type (e.g., 'resolves', 'relates_to', 'blocks').
Output schemas not formally documented. Tool responses are serialized via _entry_to_dict() and _open_item_to_dict() but no explicit output schema is declared in tool registration. LLMs cannot plan downstream calls without knowing response structure.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint annotations visible in FastMCP registration. Agents cannot distinguish safe (read-only) from destructive operations without explicit hints.
Error recovery guidance incomplete. translate_errors decorator exists but visible error messages in descriptions lack actionable next steps. E.g., 'Invalid project' should suggest 'Call agent_guide for valid project format.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | <=2025-11-25 | v2 |
Retrieve a single journal entry by ID with full content and all metadata including links and backlinks.
Search journal entries across projects by query string, with optional filtering by project, status, phase, and tags. Returns matching entries with full content.
Update the status of a journal entry and optionally create resolves links to other entries when closing open items.
Pagination not documented for journal_search. No limit, offset, or cursor parameters visible; no indication of result capping. Large result sets could exhaust context window.
agent_guide has empty input schema (no parameters). Description is generic ('Retrieve the agent guide...'). Tool purpose and when to call it are unclear.