MCP server for introspecting a running ATLAS instance: conversations, mcp.json, workspaces, and custom prompts.
Strong foundation with 23 well-named tools following verb_noun convention (list_, get_, create_, update_, delete_, search_). All tools have descriptions (avg ~120 chars, within 10-1024 baseline). Input schemas present with types and descriptions for all parameters. Key strengths: clear naming, consistent parameter documentation, pagination support (limit/offset). Gaps: output schemas not formally documented; error handling lacks recovery guidance; no tool annotations (readOnlyHint/destructiveHint); some descriptions could be more LLM-optimized (e.g., 'Read one workspace' vs 'Retrieve workspace configuration including tools and settings').
Check that ATLAS is up and report what this server is pointed at. Start here when another tool fails: it distinguishes "ATLAS is down" from "the feature is disabled" from "this server is aimed at the wrong URL".
Create a new custom prompt.
Create a new on-disk system prompt file.
Create a new workspace.
Delete a custom prompt.
Remove a server entry from config/mcp.json (previous file is backed up).
Output schemas not formally documented. Tool descriptions state what is returned (e.g., 'Returns id, title, model, timestamps...') but no structured schema definition visible in code. LLMs cannot reliably parse unstructured responses or plan downstream tool chains.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are marked with Risk metadata in the spec but not exposed via MCP tool annotations. LLMs cannot distinguish safe read-only tools from destructive ones without explicit hints.
Error handling lacks recovery guidance. Code raises ToolError with raw exception messages (e.g., 'AtlasError as exc' → ToolError(str(exc))). LLMs receive no actionable next steps: should they retry? Call a different tool? Ask the user?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Delete an on-disk system prompt file.
Delete a workspace.
Read one full conversation, including its messages. Long messages are clipped per-message so a single large tool result cannot swamp the answer; raise `max_message_chars` when you need the full text of a specific turn.
Read one custom prompt.
Read config/mcp.json — the whole file, or one server entry.
Read one on-disk system prompt file.
Read one workspace, including its tools and settings.
List the tags this user has applied to conversations.
List saved conversations, newest first. Returns id, title, model, timestamps, message count, and a short preview. Use `get_conversation` for the messages themselves.
List custom prompts (the per-user prompt library from the API).
List the on-disk system prompt files in prompts/.
List workspaces this user can see.
Search conversations by title and message content.
Update a custom prompt.
Update an on-disk system prompt file.
Update a workspace's name or description.
Add or replace one server entry in config/mcp.json. The entry is replaced wholesale, not merged — read the current entry with `get_mcp_config` first and send it back with your change applied. The rest of the file is untouched, and the previous file is backed up.
Destructive operations (delete_*) lack confirmation/dry-run support. Agents can permanently delete conversations, workspaces, and prompts without a confirmation step. No pattern:confirmation-request implemented.
Some parameter descriptions are generic or incomplete. E.g., 'Filename (must end in .md)' lacks context on why .md is required or what happens if violated.