Skip to main content
Glama

Anamnesis MCP

"Learning is not acquiring new knowledge. It is recollecting what was already known."
— Plato

Anamnesis is a Model Context Protocol (MCP) server that gives AI coding agents persistent, traceable memory across all your projects and sessions.

Not summaries. Not lossy compression. Cue-pointer records that link back to the full original context — the conversations, decisions, and breakthroughs you already had — so your agent can recollect them when they matter.


The Problem

Every AI agent session starts cold. Your agent has no memory of:

  • The Lambda cold-start issue you debugged together last week

  • The architectural decision you made in a different project that applies here

  • The pattern that worked in CutIndex that would save two hours right now

  • The conversation yesterday where you figured out exactly this problem

Claude Code can search your local session files — but it searches blind, without knowing what's inside. What's missing is an index of meaning: lightweight cue records that fire when context is similar and point the agent back to the full original artifact.

That is Anamnesis.


Related MCP server: Memory MCP

How It Works

Anamnesis does not store summaries of your conversations. It stores cue vectors that point at full traceable artifacts.

Memory record = {
  cue_vector:    embedding of "what this context felt like"
  context_tags:  ["aws-lambda", "cold-start", "python", "2026-03"]
  project:       "CutIndex"
  artifact_type: "conversation" | "diff" | "trace" | "decision"
  artifact_ptr:  path to full original → ~/.claude/sessions/uuid.jsonl
  outcome:       "solved" | "eureka" | "abandoned" | "partial"
  summary:       "Solved Lambda cold-start by increasing reserved concurrency"
}

The vector is not the memory. The vector is the trigger that tells the agent where to look. The full conversation is preserved, untouched, on your machine.

When similar context fires in a new session, Anamnesis surfaces the cue and fetches the original artifact. The agent recollects — it does not guess.


The Memory SDLC

Memories in Anamnesis go through a lightweight review process before they become trusted context — exactly like code changes go through a PR review before they merge.

Agent detects significant event (Eureka, decision, pattern)
  → writes proposed memory to pending/ queue

Reviewer agent scans pending/ (scheduled or on-demand)
  → checks for secrets, evaluates quality, flags duplicates
  → proposes accept / modify / reject

Human reviews (one-click in most cases)
  → accepts → memory promoted to confirmed/ store
  → rejects → discarded

Periodic maintenance agent
  → scans confirmed/ for staleness and redaction needs

This means Anamnesis memories are earned, not automatic. The confirmed store is a curated record of what you and your agent have genuinely learned together — not a dump of everything that was ever said.


Security: The Moral Compass

Agents encounter secrets in conversation. Anamnesis strips them before they reach the memory store.

Fast redaction runs at write time using pattern matching:

REDACT_PATTERNS = [
    r"(api_key|secret|password|token|credential)\s*[=:]\s*\S+",
    r"[A-Za-z0-9+/]{40,}={0,2}",   # base64 blobs
    r"[0-9a-f]{32,}",               # hex keys
    r"aws_\w+\s*=\s*\S+",           # AWS credentials
    r"(sk|pk|rk)[-_][a-zA-Z0-9]{20,}",  # API key prefixes
]

Deeper LLM-assisted redaction runs periodically against the confirmed store. The agent's standing instruction in any JARVIS.md or AGENTS.md configuration is explicit: store the shape of what happened, never the values.


MCP Tools

Tool

Description

anamnesis_recall

Primary read tool. Called at session start or when context feels familiar. Searches confirmed memories by cue similarity. Returns matched summaries and optionally fetches full artifacts.

anamnesis_remember

Primary write tool. Called when the agent solves something significant, recognises a pattern, or makes a non-obvious decision. Writes to pending queue for review.

anamnesis_search

Lightweight keyword + tag search. Faster than recall for when you know what you're looking for.

anamnesis_review

Returns pending memory queue for human review.

anamnesis_confirm

Human accepts, rejects, or edits a pending memory.

anamnesis_stats

Usage overview: memories by project, by outcome, recent activity, top tags.

Tool Descriptions (Engineered for Agent Triggering)

The descriptions below are crafted so that a properly configured agent reaches for the right tool at the right moment — not only when explicitly instructed.

anamnesis_recall

Use this tool at the start of any non-trivial problem, and whenever the current context feels familiar — a similar error, a similar architecture pattern, a similar library issue. This is your long-term memory across all projects. Do not rely only on training data when you may have directly relevant experience stored here.

anamnesis_remember

Use this tool when you solve something that took real effort, discover a pattern that wasn't obvious, make an architectural decision with non-obvious reasoning, or find a fix that contradicted what documentation said. Do not use for routine work. Set eureka_flag=true if this is something the broader developer community would benefit from knowing.


Installation

Requirements

  • Python 3.11+

  • uv (recommended) or pip

  • OpenAI API key (for remote embeddings) OR Ollama running locally (for private local embeddings)

Install

# Via uv (recommended)
uv tool install anamnesis-mcp

# Via pip
pip install anamnesis-mcp

Configure in Claude Code

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "anamnesis": {
      "command": "uvx",
      "args": ["anamnesis-mcp"],
      "env": {
        "EMBEDDING_MODEL": "text-embedding-3-small",
        "OPENAI_API_KEY": "sk-...",
        "ANAMNESIS_STORE": "~/.anamnesis"
      }
    }
  }
}

Configure in GitHub Copilot (.agent.md)

Create ~/.config/github-copilot/agents/jarvis.agent.md:

---
name: jarvis
description: Personal developer context engine with persistent memory
tools:
  - anamnesis_recall
  - anamnesis_remember
  - anamnesis_search
---

You are a persistent developer assistant with access to long-term memory
across all projects via Anamnesis.

Before starting any non-trivial problem, call anamnesis_recall with the
current context. When you solve something significant or discover a
non-obvious pattern, call anamnesis_remember. Never store secrets,
credentials, or proprietary business logic in memories.

File Structure

~/.anamnesis/
├── config.json          # Embedding model, API keys, optional AIOverflow connection
├── memories.db          # SQLite — all memory records and cue vectors
├── artifacts/           # Full original artifacts (Markdown, preserved verbatim)
│   ├── [uuid].md
│   └── ...
├── pending/             # Memory PRs awaiting human review
│   ├── [uuid].json
│   └── ...
└── exports/             # Human-readable exports

All data is local. Nothing leaves your machine unless you configure a hosted sync (see Roadmap).


Roadmap

Phase 1 — Core MCP (current)

  • Repo setup and BUSL 1.1 licence

  • SQLite memory store with cue-pointer schema

  • Embedding pipeline (remote: OpenAI, local: Ollama/nomic-embed-text)

  • anamnesis_recall tool with cue similarity search

  • anamnesis_remember tool with redaction at write time

  • anamnesis_search keyword + tag search

  • Memory SDLC: pending → review → confirmed lifecycle

  • anamnesis_review and anamnesis_confirm tools

  • Claude Code session ingestion (~/.claude/ JSONL parser)

  • CLI review interface (Rich terminal UI)

  • PyPI publish as anamnesis-mcp

  • Submit to MCP registries (mcp.so, pulsemcp.com, awesome-mcp-servers)

Phase 2 — Enriched Sources

  • claude.ai conversation export ingestion (JSON dump parser)

  • Git diff and commit message ingestion

  • Local Ollama embedding support (fully private, no API cost)

  • anamnesis_stats tool

  • Web review UI (lightweight local server)

  • Periodic maintenance agent (staleness detection, deep redaction)

Phase 3 — Hosted Sync

  • Encrypted cloud sync across devices (hosted service, commercial licence)

  • Team/shared memory namespace

  • AIOverflow MCP integration (Eureka flag → community post draft)

  • Cross-device review interface


Architecture

The Cue-Pointer Record (Schema)

@dataclass
class MemoryRecord:
    id: str                    # UUID
    cue_vector: list[float]    # 1536-dim embedding (text-embedding-3-small)
                               # or 768-dim (nomic-embed-text local)
    context_tags: list[str]    # Technology and domain tags
    project: str               # Project name (auto-detected from cwd)
    project_path: str          # Absolute path to project root
    artifact_type: str         # conversation | diff | trace | decision | note
    artifact_ptr: str          # Pointer to full original artifact
    summary: str               # 1-3 sentences, human-readable, no secrets
    outcome: str               # solved | eureka | abandoned | partial
    eureka_flag: bool          # True = community-worthy, triggers AIOverflow draft
    status: str                # pending | confirmed | archived
    redacted: bool             # True if redaction was applied
    created_at: datetime
    confirmed_at: datetime | None

Artifact Pointer Format

file:///home/user/.anamnesis/artifacts/uuid.md   # stored locally
claude-code:///session/uuid                       # Claude Code JSONL session
git:///path/to/repo@commitHash                    # git commit reference
aioverflow:///post/id                             # published community post

Tech Stack

Component

Choice

Rationale

MCP server

Python + FastMCP

Fastest to build, native to Claude Code ecosystem

Memory store

SQLite + sqlite-vss

Zero dependencies, local-first, portable

Remote embeddings

OpenAI text-embedding-3-small

$0.02/million tokens — effectively free

Local embeddings

nomic-embed-text via Ollama

Fully private, no API cost

Vector search

sqlite-vss or numpy cosine

Lightweight, no external DB required

Redaction

Python regex + scheduled LLM pass

Fast at write time, deep on schedule

CLI

Rich (Python)

Clean terminal UI for memory review


Licence

Anamnesis MCP is licensed under the Business Source License 1.1 (BUSL-1.1).

You may:

  • Use Anamnesis freely for personal use and development

  • Self-host Anamnesis for non-commercial purposes

  • Read, modify, and contribute to the source code

  • Use Anamnesis internally within your organisation

You may not (without a commercial licence):

  • Offer Anamnesis as a hosted or managed service to third parties

  • Embed Anamnesis in a commercial product you sell or license to others

  • Use Anamnesis to build a competing offering

Change Date: 2030-03-15
Change License: Apache License 2.0

After the Change Date, this software will be available under Apache 2.0.

For commercial licensing enquiries: [contact details]

See LICENSE for full terms.


Why "Anamnesis"?

In Platonic philosophy, anamnesis is the doctrine that learning is not the acquisition of new knowledge but the recollection of what the soul already knew. The knowledge was always there — it needed only the right context to surface it.

Your agent already spoke to you about this. The conversation happened. The solution was found. Anamnesis gives it back.


Contributing

Contributions are welcome under the BUSL terms above. Please open an issue before submitting a PR for significant changes.

A Contributor Licence Agreement (CLA) will be required for contributions — this is standard practice for BUSL projects and protects both contributors and the project. Details in CONTRIBUTING.md (coming soon).


Built by Arek Kulpa · Part of the SDLC.AI developer tooling ecosystem

Available Tools

7 tools
anamnesis_create_memoryB

Store a new memory that you have crafted from reading a source or from the current conversation. The summary should be 2-3 focused sentences emphasizing keywords for future recollection. Include relevant technology names, pattern types, and problem descriptions. If source_id is provided, the source chunk will be marked as processed.

ParametersJSON Schema
NameRequiredDescriptionDefault
outcomeNosolved
projectYes
summaryYes
source_idNo
artifact_ptrNo
context_tagsYes
project_pathNo
artifact_typeNonote

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full burden. It usefully discloses a side effect: providing source_id marks the source chunk as processed. However it says nothing about permissions, whether existing memories are overwritten, deduplication, or mutation scope for the remaining parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the core action and the format requirement. Mostly every sentence earns its place, though the keyword/technology-name guidance is somewhat list-like and could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with 0% schema coverage and no annotations, the description is thin: it explains summary content and one side effect but leaves most parameters and the overall mutation model unexplained. An output schema exists, so return values need not be covered, but the input contract is largely unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 8 parameters, so the description must compensate, but it only addresses summary (format guidance) and source_id (processed-marking side effect). The six other parameters (outcome, project, artifact_ptr, context_tags, project_path, artifact_type) get no explanation at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Store a new memory") and clarifies the two sources it can come from (reading a source or the current conversation). An agent can distinguish it from the read-oriented siblings (recall, search, fetch_source), though it doesn't name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage context (after crafting a memory from a source or conversation), which frames when to call it, but never states when NOT to use it or how it differs from sibling write paths like split_source. The condition for providing source_id is given, which is helpful, but overall usage guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

anamnesis_fetch_sourceA

Read the raw text of a source chunk by its ID. Returns the actual conversation or plan text from the file at the registered line range. After reading and understanding the content, call anamnesis_create_memory to store a summary as a memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It reveals useful behavior — that the returned text is the raw chunk from the file at the registered line range and that the intended follow-up is create_memory — but it says nothing about permissions, whether fetching is side-effect free, or handling of invalid source IDs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences that are front-loaded with the core action, followed by the return payload and the next-step directive. No filler, though the workflow sentence is somewhat tangential to defining the tool itself.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be spelled out, yet the description still characterizes the content helpfully. For a one-parameter read tool with no annotations, the description covers what it does, what comes back, and the intended follow-up, leaving only minor gaps in IDs/permissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required parameter, so the description must compensate. It only implies that source_id identifies a 'source chunk' and mentions the 'registered line range', adding modest meaning without explaining ID format or how a chunk ID is obtained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Read the raw text of a source chunk by its ID', and clarifies the return is actual conversation or plan text from a registered line range. It is clear what the tool does, though it never names the siblings (recall/search) it might be confused with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied through the pipeline hint: read the content, then call anamnesis_create_memory to store a summary. There is no explicit statement of when to choose this over anamnesis_recall or anamnesis_search, so routing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

anamnesis_pingA

Quick health check — returns server status and whether the embedding model is loaded. Use this to verify the MCP server is running before calling heavier tools like anamnesis_recall.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It does disclose the operation's nature (read-only, lightweight, 'quick') and its return content, but since an output schema already exists, the return description adds limited value; there is no explicit statement about side effects, auth, or rate limits, though a ping implies none.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the purpose and followed by the routing guidance. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-argument health check with an output schema present, the description covers everything an agent needs: what it does, what it returns, and when to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('health check') and enumerates exactly what it returns: server status and embedding-model load state. An agent can distinguish it from anamnesis_recall/search/fetch_source purely from the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit condition ('before calling heavier tools') and names the sibling that condition applies to (anamnesis_recall). This is exactly the when-to-use routing guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

anamnesis_recallA

Search your long-term memory by semantic similarity. Use this at the start of any non-trivial problem, when the current context feels familiar, or when the user asks what you remember about a topic. Pass a natural-language description of what you're working on or looking for.

ParametersJSON Schema
NameRequiredDescriptionDefault
cueYes
top_kNo
projectNo
thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden. It implies a read-only recall operation and supplies usage context, but never explicitly confirms no side effects, nor does it explain ranking, scoping, or result-volume behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, then triggers, then the call pattern. Each sentence carries distinct information and nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return values need not be described. Still, for a four-parameter tool with no annotations and no schema descriptions, the definition leaves the numeric parameters and the overlap with anamnesis_search unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning, yet it only explains cue (natural-language query). top_k, project, and threshold — including what a 0.3 threshold means or how project scopes results — are left entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) plus resource (long-term memory) and mechanism (semantic similarity), which is more than a restatement of the name. However, it never distinguishes itself from the sibling anamnesis_search, leaving the agent to guess which search flavor applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives three concrete trigger conditions — start of a non-trivial problem, context feels familiar, user asks what you remember — which is unusually actionable. It omits when NOT to use it and never names anamnesis_search as the alternative for keyword/other lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

anamnesis_scan_sourcesA

Discover Claude session and plan files that have not yet been imported into Anamnesis. Returns a paginated list of files with their paths, types, projects, and line counts. Use this as the first step when importing the user's conversation history into memory. Call again with offset to get more.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It reveals the return fields (paths, types, projects, line counts), the paginated nature, and the offset continuation pattern, but says nothing about permissions/auth needs, rate limits, or whether the scan has any side effects on the filesystem.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler: what it discovers, what it returns, and how to page. The scope constraint and first-step guidance are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only scan with an output schema present, the description covers purpose, pagination, and workflow position adequately. Minor gaps remain around read-only safety guarantees and the handoff to fetch_source, but nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for both parameters. It explains the offset continuation pattern ('Call again with offset to get more'), which gives real semantics for `offset`, but `limit` is never mentioned and its default of 20 is left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Discover') on a specific resource ('Claude session and plan files that have not yet been imported into Anamnesis'), with a scope filter (not-yet-imported) that separates it from sibling tools like anamnesis_fetch_source and anamnesis_split_source. An agent knows exactly what this returns without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly positions the tool as 'the first step when importing the user's conversation history into memory' and explains the pagination follow-up ('Call again with offset to get more'). It gives clear usage context but does not name the downstream alternative (e.g. fetch_source) or state when NOT to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

anamnesis_split_sourceA

Register a source file in the Anamnesis database, split into chunks by line range. Call this after anamnesis_scan_sources to break a large file into manageable pieces for reading and memory creation. Each chunk becomes a source record that can be fetched and processed into a memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
chunksYes
projectYes
file_pathYes
file_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that each chunk becomes a source record that can be fetched and processed into a memory, and that it must follow scan_sources. However, it does not cover permissions, idempotency, duplicate handling, error behavior, or other side effects an agent would want for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: the first states the action, the second gives the workflow context, and the third explains the outcome. The purpose is front-loaded and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. But for a tool with four required, undocumented parameters and no annotations, the description omits critical operational details: expected parameter formats, chunk object structure, and file_type/project semantics. An agent could not invoke this reliably without inspecting the schema and guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for all four required parameters. The description hints that chunks are split by line range, but it never explains the format of chunks, the meaning of file_path, file_type, or project, or expected values. It adds minimal semantic value over an entirely undocumented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Register') and resource ('source file'), plus the key mechanism ('split into chunks by line range'). It also distinguishes this from the sibling scan tool by naming anamnesis_scan_sources as the prerequisite, so an agent can tell what this tool does versus alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit timing and context: 'Call this after anamnesis_scan_sources to break a large file into manageable pieces for reading and memory creation.' This tells the agent when to use it and what workflow it belongs to, though it does not state when not to use it or name other alternatives beyond the prerequisite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.0
    • First observedanamnesis_create_memory
    • First observedanamnesis_fetch_source
    • First observedanamnesis_ping
    • First observedanamnesis_recall
    • First observedanamnesis_scan_sources
    • First observedanamnesis_search
    • First observedanamnesis_split_source

TDQS

A3.6/5.0

Scored across 7 tools

Disambiguation4/5

Each tool has a distinct role in a clear import-then-recall pipeline (scan → split → fetch → create_memory, plus recall/search/ping). The only mild overlap is anamnesis_recall vs anamnesis_search, but the descriptions clearly differentiate semantic vs keyword/tag lookup.

Naming Consistency4/5

All tools share the anamnesis_ prefix and use a verb_noun pattern (fetch_source, scan_sources, split_source, create_memory). Minor deviations are the single-word ping and recall/search, which are still readable and consistent in style.

Tool Count5/5

Seven tools is well-scoped for a memory store: a coherent import pipeline plus retrieval and a health check, with each tool earning its place and no redundancy.

Completeness3/5

The ingest-and-retrieve lifecycle is largely covered, but memory lifecycle operations are missing—no update_memory, delete_memory, or fetch_memory-by-id—so agents cannot correct or prune stored memories. These are notable gaps, though the core workflow still functions.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Gives AI coding agents persistent, evolving knowledge about a codebase, enabling them to store and retrieve observations about architecture, conventions, gotchas, and recent work context.
    10
    40 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides persistent, searchable memory and knowledge capture for AI-assisted development, enabling agents to retain decisions, bugs, and patterns across sessions and projects.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Persistent memory for AI coding tools, enabling AI assistants to store and recall project decisions, conventions, and context across sessions.
    26 npm
    MIT