MCP server for managing durable agent context, memories, sessions, projects, handoffs, and workspace operations with authentication and rate limiting
Mindstate demonstrates solid tool design with 15 well-named, verb-prefixed tools covering memory, session, project, and handoff management. All tools have descriptions (avg ~80 chars) and input schemas with type definitions. However, output schemas are undocumented, responses are returned as JSON strings without formal schema declarations. Parameter descriptions are present but often terse (e.g., 'Session ID (UUID format)' lacks context on when/why to use). Error handling is minimal; no recovery guidance or actionable error messages visible. Security patterns (permission checks via actor() function) are implemented server-side but not declared in tool metadata. Composition is strong, tools chain logically (start_session → heartbeat_session → complete_session). Naming follows verb_noun convention consistently.
Take exclusive ownership of an open handoff. Requires a live session; the claim is released automatically if that session stops heartbeating.
Mark an agent session completed.
Create a durable handoff with optional project and session context.
Create an owner-scoped project.
What to know before working on a project: current decisions and preferences, open handoffs, and any unresolved contradictions. Superseded memories are listed separately and never presented as current. Prefer this over search at the start of a session.
Retrieve recent context for a project or session. Returns memories in recency order without weighing supersession; prefer get_briefing when starting work.
Output schemas undocumented. Tools return JSON strings without formal response schema declarations. LLMs cannot predict response structure for downstream planning.
Error handling absent. No recovery guidance, error classification, or actionable messages visible. Errors like 'Unauthorized' or 'Forbidden' provide no next steps for the LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2025-06-18+ | v2 |
Keep a running session live.
List durable agent handoffs, including whether each is currently held by a live agent.
List projects with live related-record counts.
List live, stale, and completed sessions.
Record that one memory supersedes or contradicts another. Superseding marks the older memory stale without deleting it, so the change stays visible. Use contradicts when both may be true or neither clearly wins.
Give up a claimed handoff so another agent can take it.
Persist a decision, context, preference, or handoff.
Search durable context owned by the authenticated workspace.
Start a durable agent work session with live presence.
Parameter descriptions lack context. 'Session ID (UUID format)' and 'Project ID (UUID format)' repeat across tools but do not explain when/why to use each parameter or how to obtain values.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint metadata. LLMs cannot infer which tools are safe to retry or have side effects.
Permission scopes not declared in tool metadata. actor() function enforces permissions server-side, but tools do not advertise required scopes (e.g., 'memory:read', 'memory:write'). Limits audit clarity and least-privilege configuration.