Mimir
Mimir
Persistent reasoning memory for AI coding agents through MCP.
Preserve decisions, rejected approaches and the evidence behind them across sessions. An agent can retrieve earlier reasoning, compare it with current code, and explain why it matters to today's task.
Store beliefs and connect support, defeat, contradiction and causal hypotheses.
Record observations separately from the conclusions drawn from them.
Correct an incident under the same identity, retain history, and retract the prior review's contribution.
Inspect provenance and the observations behind a belief.
Mimir uses PostgreSQL and Apache AGE. Its CLI and MCP server support clients including Codex and Claude Code. A separate optional judge reviews recorded experiences when launched; installing Mimir does not start that judge.
See Installation for setup. Agents performing installation use AGENTS.md.
Article: Mimir reasoning memory with evidence and corrections.
⛔ AI coding agents — this file is not for you. The steps below are the human install path. Your procedure is AGENTS.md — open that file, follow it exactly, and ignore the rest of this README.
What it does
Claude Code connects to Mimir via MCP and can:
Record beliefs with probability and confidence scores
Link beliefs via typed edges — SUPPORTS, DEFEATS, CAUSES, CONTRADICTS
Run defeat propagation cascades through the graph
Decay belief confidence over time
Index markdown documents and run semantic search over them (RAG)
The graph and search can run locally. A configured cloud embedding backend sends document chunks to its provider. A configured API judge sends the selected experience and retrieved tool results to its provider; a CLI harness uses its configured model account. The judge does not run automatically.
Optional judge configuration and maintenance are covered in the runtime guide.
Related MCP server: Omega
Installation
⛔ AI coding agents: do not follow this section. These are the human install steps. Your procedure is AGENTS.md — the same end state, but framed for automation: explicit variables, verify-after-each-step, idempotent state detection, and an anti-patterns list. Read that and nothing else here.
What a complete install consists of
Mimir has three required pieces. Skipping any one leaves an install that looks finished but fails:
A PostgreSQL container (or your own DB) holding the belief graph and document index.
Two binaries on
PATH—mimir(CLI) andmimir-mcp(the MCP server).The
mimir-mcpserver registered with your agent client (Codex or Claude Code).
There is no daemon to start. The MCP server is spawned by Claude Code on demand; the database schema (including the AGE graph) is created automatically by mimir's embedded migrations on first run.
Step 6 checks the application connection; Step 7 installs and verifies the skill, standing guidance and lifecycle reminder. A connected tool alone does not explain when retrieval can improve a decision.
Conventions used in this guide
This guide uses the following defaults. If you change any of them, change them everywhere they appear:
Setting | Default | Used in |
PostgreSQL port |
|
|
Container name |
|
|
Docker volume |
|
|
Database name |
| setup script, |
Database user |
| setup script, |
On macOS, avoid ports 5000 (AirPlay Receiver) and 6000 (X11) if you change the port.
Preflight check
Install curl, tar, openssl, lsof, and the PostgreSQL client (psql)
if they are missing. Run these before you start. Each line should print OK:
docker info >/dev/null 2>&1 && echo OK # Docker daemon running
! lsof -nP -iTCP:5432 -sTCP:LISTEN 2>/dev/null | grep -q . && echo OK # port 5432 free
! docker ps -a --format '{{.Names}}' 2>/dev/null | grep -qx postgres-ai && echo OK # container name free
echo "$PATH" | tr ':' '\n' | grep -qx "$HOME/.local/bin" && echo OK # PATH includes ~/.local/bin
command -v claude >/dev/null && echo OK # or: command -v codexIf any line fails:
Docker not running → start Docker Desktop (or your runtime), then re-check.
Port 5432 in use → either stop the conflicting service or pick a different port. If you change the port, update everything in this guide that mentions
5432.Container name
postgres-aiin use → either reuse the existing container (if it's a postgres-ai instance from another tool, like muninn) or pick a new name. Do not delete the existing container without checking what it holds.~/.local/binnot on PATH → addexport PATH="$HOME/.local/bin:$PATH"to your shell's rc file and reload it.Chosen client missing → install Codex or Claude Code before Step 5.
Step 1: Start the database
docker run -d \
--name postgres-ai \
--restart always \
-p 127.0.0.1:5432:5432 \
-v mimir_data:/var/lib/postgresql/data \
kamysh/postgres-ai:latestThis image includes pgvector, Apache AGE, uuid-ossp, and pgcrypto. The setup script below enables the required extensions in Mimir's database. Mimir sets search_path = public,ag_catalog on its own connections.
services:
postgres:
image: kamysh/postgres-ai:latest
container_name: postgres-ai
restart: always
ports:
- "127.0.0.1:5432:5432"
volumes:
- mimir_data:/var/lib/postgresql/data
volumes:
mimir_data:docker compose up -dVerify:
docker exec postgres-ai psql -U postgres -c 'SELECT 1' >/dev/null && echo OKStep 2: Create the database and user
Generate a password with openssl rand -hex 32 and add it to ~/.pgpass.
For an existing password, escape : as \: and \ as \\ in each .pgpass
field. Quotes and spaces are literal and must be preserved.
# ~/.pgpass — format: hostname:port:database:username:password
localhost:5432:mimir:mimir:yourpasswordchmod 600 ~/.pgpassRun the setup script (creates the role, database, extensions, and grants):
curl -fsSL https://raw.githubusercontent.com/kamysh/mimir/v2.0.3/mimir-setup/create-db-user.sh \
| bash -s -- --container postgres-ai --host localhost --port 5432 --user mimir --db mimirOr clone the repo and run it locally:
bash mimir-setup/create-db-user.shThe AGE graph itself is not created by this script — mimir's migrations create it on first invocation in Step 4.
Verify the connection:
psql -h localhost -U mimir -d mimir -c '\conninfo' >/dev/null && echo OKStep 3: Install the mimir binaries
Agents: do not run this step. This is the human download-the-release path. Your build/install procedure is in AGENTS.md.
This step installs the two mimir binaries to ~/.local/bin. It is one of three pieces — see Step 5 for the MCP server registration.
Install the 2.0.3 release. This block selects one archive for your platform:
mkdir -p "$HOME/.local/bin"
case "$(uname -s)-$(uname -m)" in
Linux-x86_64) TARBALL=mimir-linux-amd64.tar.gz ;;
Linux-aarch64) TARBALL=mimir-linux-arm64.tar.gz ;;
Darwin-arm64) TARBALL=mimir-darwin-arm64.tar.gz ;;
*) echo "Use Building from source for this platform" >&2; exit 1 ;;
esac
curl -fL "https://github.com/kamysh/mimir/releases/download/v2.0.3/${TARBALL}" \
| tar -xz -C "$HOME/.local/bin"
chmod +x "$HOME/.local/bin/mimir" "$HOME/.local/bin/mimir-mcp"
export PATH="$HOME/.local/bin:$PATH"
mimir --version # must report 2.0.3The release workflow builds Linux x86_64, Linux ARM64 and Apple Silicon. For Intel macOS, use Building from source.
macOS only — quarantine flag. macOS adds a quarantine attribute to files downloaded via a browser, which blocks them from running. If you downloaded the archive with a browser, remove it:
xattr -d com.apple.quarantine ~/.local/bin/mimir ~/.local/bin/mimir-mcpcurl downloads do not set this attribute, so the command above is unnecessary if you used the curl snippet. (It will print "Permission denied" or "no such xattr" — that's expected, not a problem.)
Verify:
mimir --help >/dev/null && echo OKStep 4: Configure mimir
mimir initThis creates ~/.config/mimir/config.toml and opens it in $EDITOR. Fill in the database section:
[database]
host = "localhost"
port = 5432
dbname = "mimir"
user = "mimir" # the role you created in Step 2Credentials can come from optional database.password, then PGPASSWORD, then
a password file. Optional database.pgpassfile selects that file ahead of
PGPASSFILE and ~/.pgpass. See database credentials and TLS
for configuration examples, client certificates and verification modes.
Document search (optional): To use load_document and query_document, add an [embeddings] section. Three backends are available:
# Local — no API key, works offline, downloads ~120 MB on first use
[embeddings]
backend = "local"
# Voyage AI — best quality, requires api_key from voyageai.com
# [embeddings]
# backend = "voyage"
# model = "voyage-3-lite"
# api_key = "pa-..."
# OpenAI — requires api_key from platform.openai.com
# [embeddings]
# backend = "openai"
# model = "text-embedding-3-small"
# api_key = "sk-..."Save and close the editor.
Verify — the first mimir stats triggers the schema migrations, including creating the AGE graph. Expect a one-second pause on this first run:
mimir stats >/dev/null && echo OKStep 5: Connect your agent client
Follow Agent setup for Codex or Claude Code. Inspect existing registration first. For a new setup, run the matching command:
# Codex
codex mcp add mimir -- "$HOME/.local/bin/mimir-mcp"
# Claude Code
claude mcp add --transport stdio --scope user mimir -- "$HOME/.local/bin/mimir-mcp"Use the client's mcp get mimir to check the configured path, and reconnect or
open a fresh session to verify an actual tool call.
Step 6: Verify the install
Before relying on mimir, confirm all three pieces are in place. Each line should print OK:
mimir stats >/dev/null && echo OK # 1. CLI talks to DB
docker ps --filter "name=^postgres-ai$" --format '{{.Names}}' | grep -qx postgres-ai && echo OK # 2. DB container running
command -v mimir-mcp >/dev/null && echo OK # 3. MCP binary on PATH
psql -h localhost -U mimir -d mimir \
-c "SELECT 1 FROM ag_catalog.ag_graph WHERE name='mimir'" -tA 2>/dev/null \
| grep -q 1 && echo OK # 4. AGE graph created by migrations
claude mcp get mimir && echo OK # 5. or: codex mcp get mimirThese checks cover application/configuration state, not live tool connectivity
or reminder delivery. Continue with Step 7. If line 4 is missing, inspect the error from mimir stats: startup migrations or database permissions may have failed — see Troubleshooting.
Step 7: Install purposeful agent guidance
Follow Agent setup to install the shared skill,
merge the Mimir section into global instructions, and install one SessionStart
reminder for the chosen client. The guide supplies Mimir-only and combined
Mimir/Muninn text, client-specific hook templates, and upgrade steps for older
settings. install.sh optionally registers the selected client; skill/reminder/global-guidance
merging and verification still use the guide.
The reminder explains how past decisions and failures can inform today's choices, including after resume or compaction. The skill explains focused project-scoped queries, checking beliefs against current evidence, and writing durable findings. The standard setup does not run automatic retrieval before every prompt/action, require hook-generated ratings or writes each turn, or enforce queries through blocking hooks. Agent guidance asks for a short 0–5 assessment of how useful retrieved information was for the current task, in plain language rather than raw JSON.
Verify the selected text and command output, then actual delivery in the client. Codex requires native review of new or changed hook definitions. Finally, observe whether the agent retrieves a relevant lesson on a real task without being told the tool name. Report untested lifecycle events and behavioral checks; reminder presence alone does not prove it changes the agent's choices.
Sharing the database with muninn
If you also use muninn, the two tools can share one postgres-ai container — create separate roles and databases. Run only one docker run from Step 1, and run each tool's setup script against the shared container to enable extensions and grant access in its database.
Troubleshooting
A few failure modes are common enough to call out explicitly:
Symptom | Likely cause | Fix |
| Migrations haven't run yet — mimir creates the graph on first invocation, not the setup script. | Run any mimir command, e.g. |
| The connected role lacks access to AGE's catalog table. | Verify the role and database, then check the grants made by |
| Docker Desktop / runtime not running. | Start it. |
| Another container is already named | Either reuse it — see "Sharing the database with muninn" above — or pick a different name. Do not delete the existing container without checking what's in it. |
| Another postgres or app is using 5432. | Pick a different port. Update |
| Wrong file permissions. |
|
| The file does not have a quarantine flag (curl-downloaded). | Skip the |
MCP shows |
| Run |
|
| Add an |
If something is broken in a way not listed here, file an issue with the output of:
mimir --version
mimir stats 2>&1
claude mcp list 2>&1 | grep mimir
docker ps --filter name=postgres-aiMCP tools
Tool | What it does |
| Add an independently sourced belief with |
| Remove a belief and all its edges by |
| Add a pattern with |
| Remove a pattern by |
| Remove all beliefs and document chunks tagged with a |
| Add a SUPPORTS edge from |
| Add a CAUSES edge from |
| Add a DEFEATS edge and trigger defeat propagation cascade |
| Add a bidirectional CONTRADICTS relation between |
| Get a belief by |
| List all beliefs |
| List all patterns |
| Find all actively contradicting belief pairs |
| Hybrid retrieval: text match + graph expansion, ordered by probability |
| Run defeat propagation from a seed belief |
| Counterfactual |
| Update the |
| Apply time decay to all beliefs ( |
| Parse a markdown file into chunks, embed, and index for semantic search |
| Semantic search over indexed document chunks |
| Remove all chunks and embeddings for a document |
| Ground a belief in a document passage: GROUNDS edge from a |
| List the document passages grounding a |
| Each returned belief also carries an |
Learning from experience
Mimir supplies the durable learning operations; an LLM agent or experiential
runner interprets observations and proposes hypotheses. mimir judge watch
can poll the queue when launched; no service or timer is installed by this
source change.
The application loop is:
record_experiencerecords a project, situation, action, observed outcome, evidence references, and optionally the beliefs/procedure used. Choose a stable UUID for an incident. Sendexpected_revision: 0to create it, then the returned revision when correcting it. Replaying the same submission does not count another observation. Evidence references are supplied by the caller; Mimir does not independently verify their contents.pending_experiencesreturns a bounded batch of new or changed experiences, oldest first. The runner can run frequently and exit immediately on an empty batch. A successful review removes that version from the pending set. There is no collection-size cutoff or requirement to manufacture summary beliefs.The runner retrieves relevant beliefs and inspects evidence. A new explanation or procedure is declared as a stable-key candidate inside
review_experience, so its identity and contribution belong to that incident. Do not first create a standalone belief from the same report and count the review as independent confirmation. The review contains a rationale, support/defeat feedback, and optionalSupports,Defeats,Causes, orContradictsrelationships. All mutation targets must belong to the experience's exact project; a project observation cannot implicitly revise global or another project's knowledge.Mimir applies the review and acknowledges the reviewed version in one transaction. The existing Beta engine recomputes affected beliefs and their descendants. Reviewed causal links participate in
query_intervention; this is a projection under the recorded hypothesis, not proof that the hypothesis identifies a real causal effect. Success alone does not establish causation. The runner should compare predictions with later observations.Correcting an experience invalidates its earlier review and removes that review's effects. Correcting a review replaces its entire contribution; empty feedback, links and supersession lists retract it. Both operations retain history and reject stale revision tokens. Concurrent reviewers do not need a lease: the first valid revision wins, and the other must re-read.
get_experience returns the current version and review tokens.
experience_history exposes previous observations and judgments.
explain_belief returns incoming reasoning edges and paged active reviews,
linking an inferred probability back to the observations that influenced it.
Retries are deduplicated by incident UUID, not by semantic similarity: callers
must reuse the same identity rather than submit the same incident under new IDs.
Reviews can explicitly mark superseded_beliefs. These leave normal retrieval
even when their original prior is strong. This is separate from probabilistic
counter-evidence; a single defeat does not automatically retire a belief.
Replacing the review can restore a mistakenly superseded belief.
MCP insert_belief now requires explicit independent provenance with a
user_instruction or document basis and a nonempty source reference. The
source is stored with the graph node and shown by explain_belief; untagged MCP
writes are rejected. This is a provenance declaration by the caller, not proof
that the cited source is authentic. Incident-derived conclusions still belong
to atomic review candidates. Existing CLI belief insertion remains available
for explicit manual operations.
insert_pattern now accepts project. query_learning_context returns relevant
beliefs plus situation-matched patterns, with successes, failures, unresolved
outcomes and an observed Beta(1,1) success estimate. Only current experience
versions count. Agent reports remain visible as unresolved observations; they
are not measured successes. The originally asserted pattern success rate stays
separate for compatibility. Procedure matching is lexical, while beliefs retain
hybrid retrieval. Retrieving a procedure never counts as successfully using it.
Existing document evidence remains outside belief-to-belief and causal traversal. Its local positive evidence mass is retained when propagation or a review recomputes a posterior. Learned feedback is also retained by later propagation.
Runner contract
For each pending item, submit:
{
"expected_review_revision": 0,
"review": {
"experience_id": "<experience UUID>",
"experience_revision": 1,
"reviewer": "experiential-runner",
"rationale": "Evidence and alternative explanations considered",
"feedback": [],
"links": [],
"superseded_beliefs": []
}
}Use the actual revision values returned by the pending item. An empty assessment
acknowledges that the experience was considered without claiming a new lesson.
A link has from_id, to_id, relation and weight in [0,1]; feedback has
belief_id, verdict (support or defeat) and weight in [0,1]. Existing
manually recorded edges are not removed when a review is replaced.
The Rust learning runtime provides mimir judge commands
and locally tested Claude Code, Codex, custom-command, OpenAI, Anthropic,
OpenRouter, DeepSeek, Z.ai, Gemini, and explicit OpenAI-compatible adapters.
It is included in mimir but is not scheduled automatically. A bounded Step 11
Codex comparison exercised live model calls; other provider/account behavior
has not been verified. The shared agent skill explains experience
capture and correction. No performance gain is claimed merely from the existing
learning infrastructure.
Verification
The Rust learning integration tests require an isolated database whose name
starts with mimir_learning_test. Provision its application role through
mimir-setup/create-db-user.sh; postgres is for administration inside the
container, not the external application connection. Set MIMIR_HOST,
MIMIR_PORT, MIMIR_DBNAME and MIMIR_USER, then run:
cargo test --workspace --lib --bins --test learning_integration --test store_integration -- --test-threads=1The tests cover causal projection/retraction, retry idempotence, stale and
concurrent reviews, reversible supersession, project isolation, corrected
pattern outcomes, and incremental processing beyond 200 experiences.
spec/Mimir/Learning.agda proves general contribution replacement and stale
review exclusion laws; the aggregate specification is spec/Mimir.agda.
These laws model the lifecycle, not the SQL implementation itself.
CLI reference
Command | What it does |
| With no args: create |
| Print belief, pattern, and edge counts |
| List beliefs, sorted by probability |
| List patterns, sorted by success rate |
| Hybrid search; |
| Counterfactual |
| Ground a belief in a document chunk (GROUNDS edge) |
| List the passages grounding a belief |
| Delete a belief and all its edges |
| Delete a pattern |
| Delete all beliefs and document chunks for a project |
| Apply time decay to belief confidences |
| List active contradictions in the graph |
| Index a markdown file for semantic search |
| Semantic search over chunks |
| Remove all chunks and embeddings for a document |
Building from source
Requires Nix with flakes enabled.
# Enter the dev shell
nix develop
# Build (dynamic)
cargo build --release -p mimir -p mimir-mcp
# Build static binaries
nix build .#mimir-static # result/bin/mimir-mcp and result/bin/mimir
# Install static binaries into ~/.local/bin and register the selected client
./install.sh --client claude # or --client codex; omit to install binaries onlyRelated projects
Project | Purpose |
Dependency-based PostgreSQL migrations as a Rust library and CLI | |
Code search and repository knowledge for AI coding agents |
Muninn and Mimir can run independently. Their documented setup can share one compatible PostgreSQL instance with separate roles and databases.
License
Apache License 2.0 — see LICENSE.
Available Tools
30 toolsadd_evidenceB
Ground a belief in a document passage: create a GROUNDS edge from a DocumentChunk to a Belief. Adds local positive evidence to the belief Beta state; GROUNDS never becomes a causal or belief-to-belief edge. Get chunk_id from query_document results.
| Name | Required | Description | Default |
|---|---|---|---|
| weight | No | ||
| chunk_id | Yes | ||
| belief_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose meaningful semantics: the edge type (GROUNDS), that it targets the belief's Beta state, and that it is local positive evidence only. But it omits reversibility, idempotency on repeat calls, permissions, and what happens to the belief on failure — real gaps for a mutation with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences that are well front-loaded: action first, constraint second, input sourcing last. No filler or redundancy. Slightly under-sized for the amount of undocumented behavior, but structurally clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 0% schema description coverage, the description should carry more. It explains the edge type but leaves weight semantics, belief_id meaning, idempotency, and reversibility undocumented, which is inadequate for a three-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for all three parameters. It only clarifies the origin of chunk_id ('from query_document results'); belief_id is unexplained and weight (0-1, default 1) is never described — its meaning as evidence strength or its effect on the Beta update is unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'create a GROUNDS edge from a DocumentChunk to a Belief' and 'adds local positive evidence to the belief Beta state'. It also clarifies what it is not ('never becomes a causal or belief-to-belief edge'), which partially distinguishes it from record_cause. It does not explicitly name the closest sibling (record_support), so sibling differentiation is incomplete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one concrete usage hint — 'Get chunk_id from query_document results' — establishing a prerequisite and data source. However, it does not say when to use this versus record_support, record_contradiction, or record_cause, nor any when-not conditions. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_documentB
Remove all chunks and embeddings for a given document path. Returns {"cleared": N}. No-op if the path was never loaded.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full disclosure burden. It usefully states the effect (removing chunks and embeddings), the return shape ({"cleared": N}), and idempotency (no-op if never loaded), but it omits permissions, reversibility, and whether the source document itself is affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, purpose front-loaded, no wasted words. The return snippet and no-op note are directly useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no annotations or output schema, the description covers the operation, return value, and idempotency. It could be more complete by noting destructiveness/reversibility or path format, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It identifies the parameter as a 'document path', which adds some semantic meaning beyond the bare string, but gives no format, examples, or resolution rules. Partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (remove) and resource (all chunks and embeddings for a given document path). The purpose is unambiguous and distinct from sibling document tools like load_document/query_document, but it does not explicitly name or differentiate against them, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives, no prerequisites. The only conditional is a no-op edge case, which is behavioral rather than usage guidance. An agent is left to infer that this is the cleanup/removal tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decay_allB
Apply time decay to beliefs and return count of updated beliefs. If project is given, restricts the sweep to that project's beliefs plus untagged (global) beliefs.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Restrict the decay sweep to this project's beliefs plus untagged (global) beliefs. Omit to decay everything. | |
| decay_factor | No |
TDQS
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 does disclose the mutation target (beliefs) and the return shape (updated count), but says nothing about reversibility, permission requirements, or side effects of decaying beliefs, which an agent running a batch mutation would want.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and no filler. The second sentence largely duplicates the schema's project description, which is a minor redundancy but not bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter batch mutation with no annotations and no output schema, the description covers what changes and what is returned. However, it omits the mathematical effect of decay_factor and any warning about modifying many beliefs at once, leaving notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project is fully documented in the schema (and the description merely repeats it), while decay_factor has no explanation anywhere. The description fails to compensate for the gap, e.g., it never explains what decay_factor does or that 1 means no decay.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('Apply time decay to beliefs') and states the return value (count of updated beliefs). It is clear what the tool does, though it never explicitly contrasts itself with the closest sibling, sweep_expired_defeated, so an agent must still infer which sweep applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the scoping behavior of the optional project argument but gives no guidance on when to call this tool versus alternatives in the belief-maintenance family (e.g., sweep_expired_defeated). There are no exclusions, prerequisites, or timing cues, leaving usage entirely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_beliefB
Delete a belief and all its edges by ID. Returns {"deleted": true} if found, {"deleted": false} if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden: it usefully discloses the cascade behavior (edges are deleted too) and the not-found outcome via the return value. It omits irreversibility, required permissions, and any warning that edge removal may affect dependent beliefs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope, with the second covering outcomes. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool with no annotations and no output schema, the description covers the core action, its cascade side effect, and both return cases. It still lacks permission/irreversibility context, which would be expected for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single 'id' string parameter, so the description must compensate. 'By ID' communicates that the argument selects the belief to remove, but gives no format, uniqueness, or sourcing guidance beyond what the name implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a belief') plus the cascade scope ('and all its edges by ID'). An agent can distinguish it from get_belief/insert_belief by verb, though no sibling is explicitly named for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use context, prerequisites, or alternatives are given. The cascading edge deletion hints at a destructive scope but doesn't tell the agent when this tool is appropriate versus other deletion tools like delete_pattern or delete_project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_patternA
Delete a pattern and all its edges by ID. Returns {"deleted": true} if found, {"deleted": false} if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and usefully discloses the cascade behavior ('all its edges') and both possible return values. It does not state irreversibility, permissions, or error behavior, but the key destructive effect is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences, front-loaded with the action and scope, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter deletion tool with no output schema, the description covers the action, cascade side effect, and return values. It is nearly complete, though it omits permission or irreversibility context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate; saying 'by ID' identifies the required parameter as the pattern identifier. It still does not specify ID format or constraints, so it adds only moderate semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Delete a pattern') plus scope ('and all its edges by ID'), which clearly distinguishes it from siblings like delete_belief, delete_project, and insert_pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The operation implies when to use it—when deleting a pattern by ID—but it does not explicitly say when to choose it over alternatives or mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectA
Delete all beliefs tagged with a project name, along with their edges. Use this to forget project-specific knowledge when a project is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes |
TDQS
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 the cascade ('along with their edges'), which is meaningful destructive context, but says nothing about reversibility, permissions, or what happens when no beliefs match the tag. This is a genuinely helpful disclosure on an otherwise under-specified destructive bulk operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the destructive scope and cascade are front-loaded before the usage hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive bulk delete with no annotations and no output schema, the description covers the action and cascade but leaves return behavior, idempotency, and failure modes unaddressed. Adequate but with clear gaps for a high-impact operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the single 'project' param is undocumented structurally. The phrase 'tagged with a project name' implies the param is a project tag/name, adding some meaning, but it omits matching semantics (exact vs partial) and format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete') and resource ('all beliefs tagged with a project name, along with their edges'), and the bulk-by-project scope implicitly distinguishes it from the single-item delete_belief/delete_pattern siblings. It stops short of naming those siblings explicitly, so differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear condition for use: 'to forget project-specific knowledge when a project is complete.' This gives good context, but it names no alternative (e.g. delete_belief for single-belief removal) and offers no exclusion for 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.
experience_historyB
Inspect immutable experience and review versions, including superseded judgments and their rationale.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It does disclose a meaningful trait—that results include superseded judgments and their rationale—which tells the agent this returns history rather than current state. It says nothing about pagination, ordering, or authorization, and only implies read-only behavior via the word 'Inspect'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the core scope ('immutable experience and review versions') front-loaded and the clarifying detail trailing. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup with no output schema, the description covers the nature of the returned data (historical, superseded, with rationale) but leaves the identifier's meaning and the result shape unstated. Adequate but not fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for the single 'id' parameter, and it does not. It never states whether 'id' is an experience id, a review id, or something else, despite the sibling set containing both experience and review concepts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Inspect') and resource ('experience and review versions') and clarifies the scope as historical, including superseded judgments. However, it does not differentiate itself from siblings like get_experience or pending_experiences, so an agent must infer the distinction from the wording alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no named alternative. The presence of get_experience, pending_experiences, and review_experience in the sibling list makes the absence of routing advice a real gap—the agent is left to guess which tool returns current vs historical state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_beliefA
Inspect the belief's incoming reasoning edges and a bounded page of active evidence-backed reviews. Follow experience_id with get_experience or experience_history for observations and past revisions. This explains provenance, not causal identification.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| limit | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return surface (provenance edges + a bounded page of active reviews) and that paging applies, but omits whether the call is read-only, what 'active' means, and any auth/permission expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with what is inspected, then follow-up routing, then a scope caveat. Little waste, though the final sentence is a clarification rather than new actionable content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must carry everything, and it documents the return concept reasonably well. But it leaves all three parameters undocumented despite 0% schema coverage, a meaningful gap for an agent deciding how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters. The description only weakly compensates: 'the belief's' implies id is a belief, and 'bounded page' hints at limit/offset paging, but the max-of-20 limit, offset semantics, and id format go unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (inspect) plus concrete resources: the belief's incoming reasoning edges and a bounded page of active evidence-backed reviews. It clearly distinguishes itself from the bare get_belief sibling by naming what it returns and explicitly scope-limits to provenance, not causal identification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear downstream routing ('Follow experience_id with get_experience or experience_history') and a scope exclusion ('not causal identification'), which tells the agent what this tool is not for. It does not, however, explicitly state when to pick this over get_belief or record_cause.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_beliefC
Get a belief by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses nothing beyond what the verb implies. It does not say whether a missing ID returns null, an empty result, or an error, nor whether the read is free of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action and scope front-loaded and no filler. It is appropriately terse for a one-parameter lookup, though the brevity leaves nothing to structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial single-item fetch the description is minimally sufficient, but with no annotations, no output schema, and a rich sibling set it should have said something about failure behavior and how it relates to explain_belief or list_beliefs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter is documented only as an untyped string. The phrase 'by ID' clarifies that the value identifies a belief rather than a project or pattern, but no format, source, or lookup behavior is given, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (belief) scoped to a single retrieval by ID, which separates it from list_beliefs. However it does not distinguish itself from likely-overlapping siblings such as explain_belief or get_evidence beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to retrieve a belief directly versus using list_beliefs, explain_belief, or query_relevant. Nothing is said about prerequisites or what to do when the ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contradictionsB
Find all actively contradicting belief pairs. If project is given, restricts to pairs where both beliefs are visible in that project's scope (tagged with project or untagged).
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Only consider pairs where both beliefs are tagged with this project or untagged (global). Omit to consider every pair. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses one non-obvious semantic rule (untagged/global beliefs count as in-scope) and implies read-only behavior via 'Find', but it never defines 'actively contradicting' (e.g. whether defeated contradictions are excluded) and says nothing about result volume, ordering, or cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the core action front-loaded before the parameter caveat. The second sentence is slightly redundant with the schema's own parameter description, which keeps it out of 5 territory.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single optional-parameter query tool with no output schema and no annotations, the description covers what is being looked for and how scoping works, but leaves the return shape (list of belief pairs? with what fields?) and the definition of 'active' unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already spells out the 'tagged with this project or untagged' rule and the omit-to-consider-everything behavior. The description largely restates that rule ('both beliefs visible in that project's scope'), adding only slight framing, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find all actively contradicting belief pairs'), which cleanly separates it from the write-side sibling record_contradiction and from get_belief. It does not explicitly name an alternative tool or define what 'actively' excludes, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the effect of supplying project, which implies when to narrow results, but gives no explicit when-to-use/when-not-to-use guidance versus siblings like query_relevant or explain_belief. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_evidenceB
Return the document passages grounding a belief (its GROUNDS edges), strongest first.
| Name | Required | Description | Default |
|---|---|---|---|
| belief_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses that the result is document passages, that they correspond to GROUNDS edges, and that they are ordered strongest first, but it does not cover permissions, error behavior, or what happens when no evidence exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It puts the purpose and ordering behavior immediately in view.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema and no annotations, the description covers the essential purpose and ordering but leaves the return shape and failure/empty cases unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the sole parameter belief_id is undocumented in the schema. The description contextualizes belief_id as the belief whose grounding evidence is returned, which is helpful, but it does not specify ID format or additional semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and resource ('document passages grounding a belief'), and clarifies the underlying relation ('GROUNDS edges'). It distinguishes itself from belief-detail tools like get_belief, though it does not explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the tool is used when evidence for a belief is needed, but it gives no explicit when-to-use guidance, no when-not-to-use guidance, and does not mention alternatives such as get_belief or query_relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_experienceB
Inspect current experience and revision tokens for safe correction or review.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a meaningful behavioral trait: the returned revision tokens enable concurrency-safe correction, hinting the tool is a read-only fetch paired with a versioned update. It still omits whether this is strictly read-only, what permissions are needed, and what happens for a stale id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the tool's core action front-loaded. It earns its length, though the trailing 'revision tokens for safe correction or review' clause is terse enough to be ambiguous rather than merely brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-param getter this is borderline adequate, and the revision-token mention adds useful context. But with no output schema and no annotations, the description should still specify the id's meaning and roughly what the response contains; both are left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required 'id' (uuid) parameter is never mentioned in the description at all. There is no statement of what the id identifies, whether it is an experience id or a belief id, or how revision tokens relate to it, so the parameter is entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ('Inspect') with the resource ('experience') and notes it returns revision tokens, so the basic purpose is legible. However, it never distinguishes itself from close siblings like review_experience, experience_history, or pending_experiences, and 'revision tokens' is unexplained jargon an agent must infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for safe correction or review' implies a usage context (fetch state before mutating), which is more than nothing. But it gives no explicit when-to-use rule, no prerequisites, and does not name or contrast with the obvious alternatives review_experience or experience_history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_beliefA
Add a belief grounded in an explicit user instruction or document independent of a queued incident. Provenance is required and persisted. Incident-derived conclusions must use record_experience and review_experience candidates; a standalone prior plus review feedback would count one incident twice.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| project | No | Optional project scope. Beliefs in a project can be bulk-deleted with delete_project when the project is done. | |
| confidence | Yes | ||
| provenance | Yes | Identify the independent source. Do not use this tool for a conclusion derived from an experience. | |
| memory_type | No | Functional memory type. 'fact' (default): declarative knowledge that decays over time absent reinforcement. 'experiential': a hard-won working lesson (gotcha, corrected approach) — exempt from time-decay, since its truth doesn't erode with elapsed time. 'working': task-local scratch memory, excluded from cross-session query_relevant retrieval. | |
| probability | Yes |
TDQS
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 usefully discloses that provenance is required and persisted, which is real behavioral context. However, it says nothing about permissions, idempotency/duplicate handling, or what an add returns, leaving meaningful gaps for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action before the provenance requirement and the routing caveat. Every sentence is doing work, though the third sentence is dense and jargon-heavy ('standalone prior plus review feedback would count one incident twice').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with a nested provenance object and no annotations or output schema, the description covers purpose, provenance duty, and sibling routing but omits meaning for several scalar parameters and any dedup/return behavior. Adequate to call correctly in the common case, incomplete around the edges.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, so half the parameters rely on the description. The description clarifies provenance semantics (must cite an independent source, not an experience) and the persistence implication, adding value beyond the enum. But it says nothing about probability, confidence, or content semantics, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a belief') and narrows the scope to sources grounded in an explicit user instruction or document. It also differentiates itself from the incident-derived path by naming record_experience and review_experience, so an agent can route without opening another schema. It does not distinguish itself from pattern-related siblings like insert_pattern, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear when-to-use (independent user instruction/document) and a when-not-to-use with named alternatives ('Incident-derived conclusions must use record_experience and review_experience candidates'). The double-counting warning reinforces the boundary condition. Lacks a positive prerequisite checklist, but the routing guidance is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_patternD
Add a new pattern to the graph.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | ||
| approach | Yes | ||
| situation | Yes | ||
| success_rate | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses nothing: no persistence/dedup behavior, no permission requirements, no mention of the success_rate range constraint or what happens on duplicate patterns. A one-line mutation description with zero annotation coverage leaves the agent with no behavioral model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence, so there is no padding, but the brevity reflects under-specification rather than economy. The one sentence provided does not earn its place by adding information beyond the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A write tool with 3 required, undocumented parameters, no annotations, and no output schema. The description omits the return value, error behavior, and the semantics of the required fields — nothing an agent needs in order to call this correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, and the description supplies no meaning for situation, approach, success_rate, or project. Key ambiguities — whether project is a link or a label, whether success_rate is a probability or a count — are unresolved in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Add a new pattern to the graph" is essentially the tool name reworded: insert_pattern → add a pattern. It adds only the vague notion of "the graph" and does nothing to distinguish this from siblings like insert_belief, insert_experience, or delete_pattern. No indication of what a "pattern" is in this system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no alternatives. The agent gets no signal about when a pattern should be inserted versus a belief or an experience, nor whether the referenced project must already exist. Completely silent on routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_beliefsA
List beliefs. If project is given, restricts to that project's beliefs plus untagged (global) beliefs; omit to list everything. Use limit and offset for bounded, oldest-first pages; without limit the legacy full array is returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Return a page of at most this many beliefs, ordered by created_at then id. When present, the result is an object with beliefs, total, offset, and next_offset. | |
| offset | No | Zero-based position in the filtered, oldest-first result. Requires limit; use next_offset from the previous page. | |
| project | No | Restrict to this project's beliefs plus untagged (global) beliefs. Omit to list everything. | |
| memory_type | No | Restrict to this memory type. Useful for orphan cleanup of leftover Working beliefs from an interrupted prior session — NOT a substitute for tracking the IDs of Working beliefs your own session wrote, since this filter has no session-identity concept and cannot distinguish your in-flight Working beliefs from a concurrent session's on a shared DB. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the two distinct return modes (legacy full array vs paged object) and oldest-first ordering — valuable behavioral context. It stops short of describing permissions, error conditions, or the concurrency caveats that the memory_type param hints at.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and scope, then the paging modes. Every sentence carries meaning, though the project sentence overlaps the schema description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 100% parameter coverage and no output schema, the description supplies the key missing piece — the dual array-vs-paged return behavior. It is adequate, with only minor gaps around auth and error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters, including the project and paging semantics. The description largely restates the project and limit/offset behavior rather than adding syntax or edge-case meaning beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening verb+resource 'List beliefs' is unambiguous and the following sentences define the listing scope (project-filtered vs everything). It does not explicitly differentiate from siblings like get_belief or query_relevant, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real contextual guidance for the parameters — 'omit to list everything', and 'use limit and offset for bounded, oldest-first pages'. However it never names an alternative tool or states when to prefer this over get_belief/query_relevant, so usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_patternsB
List patterns. If project is given, restricts to that project's patterns plus untagged (global) patterns; omit to list everything.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Restrict to this project's patterns plus untagged (global) patterns. Omit to list everything. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does add one genuinely useful non-obvious behavior: a project scope also includes untagged (global) patterns. However, it omits pagination, result size/ordering, or any other operational behavior an agent might need.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the core purpose front-loaded and the scoping rule following immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single optional-parameter, read-style list tool with no output schema and no annotations, the description covers the essential scoping semantics. It is largely sufficient, with return format/pagination the only notable omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single 'project' parameter fully. The description merely restates that same semantics, adding no syntax, format, or example beyond the structured field, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List patterns') that an agent can map directly to the tool's function. It does not, however, distinguish itself from sibling listing/query tools such as list_beliefs or query_relevant, leaving the selection ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the 'project' argument does but never says when to call this tool versus alternatives like query_relevant or list_beliefs. There is no when-to-use/when-not-to-use guidance, only parameter behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_documentA
Parse a markdown file into heading-bounded chunks, embed each chunk, and index them for semantic search. Replaces existing chunks for the same path on reload. Requires [embeddings] in config.toml.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute or repo-relative path to the markdown file. | |
| project | No | Optional project tag. Chunks tagged with a project can be bulk-deleted via delete_project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it discloses upsert semantics ("Replaces existing chunks for the same path on reload") and an environment prerequisite. It stops short of authority requirements, failure behavior, or return shape, but the mutation profile is well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: operation, replacement behavior, and prerequisite. The core action is front-loaded with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema and no annotations, the description covers the action, the idempotency/replacement semantics, and the config requirement well. Minor gaps remain around permissions and failure modes, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already fully documented in the schema, including the delete_project tie-in. The description adds no syntax, format, or constraint detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb chain (parse, embed, index) and a clear resource (markdown file), specifically describing the indexing operation. It is functionally distinct from siblings like query_document and clear_document, but it never names them, so the differentiation must be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a real prerequisite ("Requires [embeddings] in config.toml") and implies the reload/upsert use case, which is useful guidance. However, it gives no explicit when-to-use vs. when-not, and never routes the agent to query_document, clear_document, or delete_project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pending_experiencesB
Get the oldest new or changed experiences awaiting LLM review. Bounded incremental work: successful review removes that exact version; failed/stale submissions leave it pending. A judge may temporarily exclude deferred IDs; an empty filtered array does not prove the whole queue is empty. No claim or lease; concurrent reviewers use revision checks.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| project | No | ||
| exclude_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and does so notably well: it discloses that successful review removes that exact version, failed/stale submissions persist, deferred IDs may be filtered, an empty result is not proof of an empty queue, and there is no lease (reviewers use revision checks). Gaps remain on return shape and pagination, but the mutation/concurrency semantics are richly covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the core purpose followed by behavioral caveats. Every sentence contributes; no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a concurrency-sensitive queue tool with no annotations, no output schema, and 0% parameter coverage, the description covers behavior well but leaves parameter meaning and return/pagination shape undocumented. Adequate on the hard parts, incomplete on the structured-field gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters (limit, project, exclude_ids) have 0% schema description coverage, so the description should compensate and largely does not. It hints at exclude_ids semantics ('a judge may temporarily exclude deferred IDs') but says nothing about limit or project, leaving their meaning unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the oldest new or changed experiences awaiting LLM review') and characterizes ordering (oldest) plus scope (awaiting review), which implicitly distinguishes it from review_experience and get_experience. It stops short of naming an alternative sibling explicitly, so it is clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Conveys implied context - this is the queue-fetching step for bounded incremental review work with concurrency safety - but never states when to prefer it over review_experience or get_experience, and gives no explicit exclusions. Usable for the target agent but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propagate_fromC
Run defeat propagation from a seed belief ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says to 'Run defeat propagation' without disclosing whether beliefs are modified, whether changes are reversible, permissions required, rate limits, or what the propagation affects. This is minimal disclosure at best.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the action and input. No filler is present, though the extreme brevity leaves little structure for a potentially complex operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and a single undocumented parameter in the schema, the description should carry more context. It names the seed input but omits propagation semantics, side effects, and usage conditions, leaving an agent unable to predict the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter is named 'id' and the schema gives only type string with no description (0% coverage). The description adds that 'id' is a 'seed belief ID', which is a useful semantic mapping, but it does not specify format, constraints, or expected source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Run defeat propagation') and the input source ('from a seed belief ID'). It is clearer than a tautology, but it does not define what 'defeat propagation' entails or distinguish this operation from sibling tools like record_defeat or sweep_expired_defeated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus record_defeat, sweep_expired_defeated, or other belief operations. The only implicit usage is that it requires a seed belief ID. That is minimal, not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_documentA
Semantic search over indexed document chunks. Embeds the query context and returns the most similar chunks ordered by cosine similarity. Requires [embeddings] in config.toml.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results (0 = no limit). | |
| context | Yes | Query text to embed and search. | |
| project | No | Restrict search to chunks tagged with this project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the burden. It adds crucial behavioral context by explaining that the search is semantic, uses cosine similarity for ordering, and requires a specific external configuration file, which goes beyond the scope of the input schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise, fitting the core function (semantic search, chunk return, cosine similarity) into the first sentence. The second sentence efficiently front-loads a critical configuration dependency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for correct tool invocation. However, because there is no output schema, the description is incomplete in explaining the *structure* of the returned 'chunks' (e.g., whether they contain just text or also metadata/IDs).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description reinforces the meaning of the 'context' parameter by stating the query must be 'embedded,' providing operational insight that complements the schema's simple definition of 'Query text to embed and search.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool's function as 'Semantic search over indexed document chunks.' It specifies the mechanism—embedding the query context and ranking results by cosine similarity—providing a highly specific operational purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While it does not explicitly state when to use it versus sibling tools like query_relevant or get_evidence, it provides a critical usage constraint: 'Requires [embeddings] in config.toml.' This dependency serves as an important operational usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_interventionA
Counterfactual query P(downstream | do(target = value)). Severs the target's incoming edges and propagates along CAUSES edges only. READ-ONLY: returns projected probabilities for causal descendants; does NOT modify the graph. Use for 'if I change X, what downstream is affected?' — distinct from query_relevant (evidential association) and propagate_from (which mutates).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| value | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses read-only status, that it severs incoming edges, propagates along CAUSES edges only, returns projected probabilities, and does not modify the graph. It does not cover error behavior (e.g., unknown id) or performance characteristics, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Opens with the formal definition, then the graph mechanic, then the read-only guarantee, then the routing sentence. Dense but every sentence carries distinct, load-bearing information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, so the description must explain behavior and returns; it does explain the returned projected probabilities for causal descendants. It is largely sufficient for a two-param tool, missing only edge-case/error handling detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It maps the do(target = value) notation onto the two params conceptually, but never clarifies what 'id' actually references (belief name, UUID, etc.) or how it is resolved, leaving a real gap for the caller.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise operation (counterfactual intervention query) with the formal semantics P(downstream | do(target = value)) and the exact graph operation performed. Explicitly names the sibling tools it differs from, so an agent can select it without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit user-facing trigger phrase ('if I change X, what downstream is affected?') and distinguishes itself from two named alternatives: query_relevant (evidential association) and propagate_from (which mutates). When-to-use, when-not, and alternative selection are all covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_learning_contextC
Retrieve relevant beliefs and situation-matched procedures with outcome counts and Beta(1,1) success estimates. Agent reports and unknown outcomes do not count as measured success. Counts include current experience versions in this project only; retrieval is not successful use. Pattern matching is lexical; beliefs use existing hybrid retrieval.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| context | Yes | ||
| project | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations this description carries the full burden. It valuably discloses non-obvious traits: outcome counts cover current experience versions in this project only, agent reports/unknown outcomes do not count as measured success, pattern matching is lexical and belief retrieval is hybrid. However, it omits return structure, ordering, and any cost/permission notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, with the semantic caveats following in terse sentences. Dense but no filler sentences; the only cost is that caveats compete with the core purpose early on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A retrieval tool with 3 undocumented parameters, no annotations, and no output schema needs more than this. Return shape and the meaning/format of 'context' are missing, leaving the agent unsure how to invoke it correctly despite the useful caveats about counts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, and it largely does not. The critical 'context' parameter is never explained (how a situation is expressed for lexical pattern matching), nor is 'project' scoping or the 'limit' bound clarified beyond the incidental note about lexical matching.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieve') and resource ('relevant beliefs and situation-matched procedures') along with return contents (outcome counts, Beta estimates). It is distinguishable from simple list/query siblings in spirit, though it never explicitly contrasts with 'query_relevant' or 'list_beliefs'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided: it does not say when this tool should be chosen over 'query_relevant', 'list_beliefs', or 'query_intervention'. The disclaimers about counts and retrieval are interpretive caveats, not invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_relevantA
Hybrid retrieval: text match + graph-proximity expansion, ordered by probability. Set include_evidence=true to also return, per belief, the document passages that ground it (with weights). If project is given, restricts the candidate pool to that project's beliefs plus untagged (global) beliefs.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| context | Yes | ||
| project | No | Restrict the candidate pool to this project's beliefs plus untagged (global) beliefs. Omit to search everything. | |
| prefer_type | No | Nudge ranking toward this memory type — a soft preference (same weight class as the probability prior), never strong enough to lift an off-topic belief of the preferred type over a real semantic match. Omit for type-neutral ranking. | |
| include_evidence | No | ||
| evidence_per_belief | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it fulfills it by detailing the underlying system behavior (hybrid retrieval, probability ordering) and explaining what the boolean flag does ('also return, per belief, the document passages that ground it').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely dense and concise. It immediately front-loads the core mechanism and efficiently explains the functionality of the most important parameters in subsequent sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is highly complete regarding the complex logic (hybrid search, evidence handling, project scoping). It only misses mentioning parameters like `limit` or `prefer_type`, which are details better suited for the schema itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given the low schema coverage (33%), the description compensates significantly by adding crucial semantics. It explains that `include_evidence` provides 'document passages that ground it (with weights),' which is much richer than a simple boolean schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description goes beyond a simple 'search' by specifying the exact mechanism: 'Hybrid retrieval: text match + graph-proximity expansion,' which immediately tells the agent how the information is gathered and ranked by probability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides excellent internal usage guidelines by detailing the conditional effects of key parameters. It tells the agent to use `include_evidence=true` for grounding context and specifies that `project` restricts the search space to a specific pool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_causeA
Add a CAUSES edge from one belief to another (from_id causes to_id). Causal edges are what query_intervention traverses for counterfactual do(...) queries; unlike record_defeat this does NOT trigger propagation.
| Name | Required | Description | Default |
|---|---|---|---|
| to_id | Yes | ||
| weight | Yes | ||
| from_id | Yes |
TDQS
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 a non-obvious trait that no structured field encodes: this edge does not trigger propagation, unlike record_defeat. However, it says nothing about weight semantics, error behavior for missing ids, duplicate-edge handling, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences, front-loaded with the core action and direction, followed by the two behavioral facts that matter most. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% parameter coverage, the description is directionally complete but leaves weight semantics, failure modes, and duplicate/idempotency behavior unstated. Adequate, but gaps remain for a 3-param write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It clarifies the direction of the two id parameters ('from_id causes to_id'), which is the key semantic ambiguity, but the required weight parameter's meaning is entirely unaddressed despite the schema's 0-1 bounds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Add), a specific resource (a CAUSES edge), and the exact direction semantics (from_id causes to_id). It explicitly differentiates itself from sibling record_defeat, so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent the causal consequence ('what query_intervention traverses for counterfactual do(...) queries') and contrasts with record_defeat ('does NOT trigger propagation'), which effectively routes the agent between the two record_* tools. It stops short of stating explicit prerequisites (e.g., both beliefs must already exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_contradictionB
Add a bidirectional CONTRADICTS relationship between two beliefs.
| Name | Required | Description | Default |
|---|---|---|---|
| id_a | Yes | ||
| id_b | Yes | ||
| weight | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure, but it only mentions that the relationship is bidirectional and named CONTRADICTS. It omits important traits such as whether the operation is idempotent, what happens if the beliefs do not exist, permission requirements, or whether weight affects propagation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the action and relationship type immediately, making it efficient even if it is terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, three parameters, and zero schema description coverage, the description is far too thin. It does not cover weight semantics, duplicate handling, error conditions, or expected return behavior, leaving important gaps for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain all three parameters. It implies that id_a and id_b are beliefs, but it does not clarify their order, their string format, or the meaning and effect of the weight parameter at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Add), a specific relationship type (CONTRADICTS), and a specific resource (beliefs). It clearly distinguishes this operation from sibling relationship tools such as record_support, record_cause, and record_defeat because the relationship type is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool does but provides no guidance on when to use it versus alternatives such as record_support or record_cause. There are no exclusions, prerequisites, or contextual cues to help an agent choose this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_defeatC
Add a DEFEATS edge and trigger defeat propagation cascade.
| Name | Required | Description | Default |
|---|---|---|---|
| to_id | Yes | ||
| weight | Yes | ||
| from_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it does disclose a real side effect: a defeat propagation cascade. It doesn't say what the cascade affects, how far it propagates, or whether it is costly or reversible, which matters for a mutation on a belief graph.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the primary action comes first and the cascade side effect second. It is appropriately terse, though the terseness contributes to the parameter and usage gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A mutation tool with no annotations, no output schema, and no parameter documentation is under-specified; the undefined cascade is the only behavioral detail. An agent cannot confidently supply weight or predict the effect on other beliefs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 3 parameters have 0% schema description coverage, so the description must compensate and does not. It never mentions from_id, to_id, or weight — notably the 0-1 weight range and which id is the defeated belief remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Add) and resource (DEFEATS edge), and the edge type distinguishes it from siblings like record_support and record_cause. It stops short of explicitly routing the agent among the parallel record_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no comparison against record_contradiction, record_support, or record_cause, despite those being obvious alternatives for a parallel naming family. The agent must infer the distinction from the edge type alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_experienceA
Record one observed action and outcome for incremental LLM review. Use a stable UUID for the same incident, expected_revision=0 to create, or the returned revision to correct it. Do not also insert a standalone conclusion from this same incident; review-owned candidates avoid that duplicate prior. Exact retries do not duplicate evidence. ToolResult/UserFeedback are caller-reported provenance, not server verification. A correction invalidates the old review and retracts its effects atomically.
| Name | Required | Description | Default |
|---|---|---|---|
| experience | Yes | ||
| expected_revision | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers real behavioral content: idempotency ('exact retries do not duplicate evidence'), provenance caveats (caller-reported, not server-verified), and correction semantics ('invalidates the old review and retracts its effects atomically'). It does not disclose what happens on a revision mismatch or other failure modes, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five dense sentences, all front-loaded with the purpose before mechanics, and every sentence carries information (revision protocol, exclusion, idempotency, provenance, atomic correction). The 'review-owned candidates avoid that duplicate prior' phrasing is jargon-heavy and slightly opaque, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-object mutation tool with no annotations and no output schema, the description covers the concurrency contract, idempotency, provenance trust level, and correction side effects. The remaining gaps are return-value shape and conflict/error behavior on stale revisions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and while the description explains expected_revision well (0 to create, returned revision to correct) and hints at id as a stable incident key, the seven required nested experience fields (project, context, action, outcome, source, evidence) get no explanation. The enums are self-describing, but the description only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Record one observed action and outcome for incremental LLM review.' The 'one observed action and outcome' framing plus the correction-vs-create semantics clearly separate it from siblings like review_experience, pending_experiences, and insert_belief.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operational guidance: stable UUID for the same incident, expected_revision=0 to create, returned revision to correct. It also states an explicit exclusion ('Do not also insert a standalone conclusion from this same incident'), which routes the agent away from a duplicating sibling. It stops short of naming that sibling tool by name, so it is strong but not maximal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_supportC
Add a SUPPORTS edge from one belief to another.
| Name | Required | Description | Default |
|---|---|---|---|
| to_id | Yes | ||
| weight | Yes | ||
| from_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a mutation (adding an edge) but says nothing about idempotency for duplicate edges, whether the edge is directed, error behavior for unknown belief IDs, or whether existing weights are overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, and the edge type is stated immediately. It is arguably too terse rather than padded, but it is not under-specified in the tautological sense of restating the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a required-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description omits weight semantics, duplicate handling, and failure modes. It is not sufficient on its own to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across all three parameters, so the description must compensate and largely does not. The phrasing 'from one belief to another' loosely maps to from_id/to_id direction, but the required 'weight' parameter (0-1) is never explained in terms of what it represents or how it affects propagation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add') and resource ('SUPPORTS edge'), with the source and target being beliefs. Naming the edge type distinguishes it somewhat from siblings like record_cause, record_defeat, and record_contradiction, but it never explicitly contrasts with those parallel tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use record_support rather than record_cause, record_defeat, or record_contradiction, all of which appear to create analogous edges. No prerequisites, no mention of what happens if the same edge already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_experienceB
Apply one atomic, revision-checked review. Declare new belief/pattern candidates with stable keys; the response maps keys to server UUIDs. Candidate creation is not an observed successful use. Existing UUID-only reviews remain valid. Corrections retract owned evidence and links while retaining candidate identity and independent work.
| Name | Required | Description | Default |
|---|---|---|---|
| review | Yes | ||
| expected_review_revision | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses atomicity, revision checking, key-to-UUID response mapping, the fact that candidate creation is not observed successful use, legacy UUID-only validity, and retraction behavior for corrections. It still omits permissions, error behavior, and rate or effort constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five compact sentences are front-loaded with the core action and key behavioral rules. Although jargon-dense, there is little wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity, nested mutation with no annotations and no output schema, the description explains only a slice of the required input and output semantics. It says the response maps keys to UUIDs but does not cover required fields or enough revision and error behavior for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the nested review object contains many undocumented fields such as experience_id, experience_revision, expected_review_revision, reviewer, rationale, links, feedback, and superseded_beliefs. The description only partially explains candidates and legacy UUID-only reviews, leaving most parameter meaning to the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the action ('Apply one atomic, revision-checked review') and its candidate-declaration scope, so an agent knows this submits a review rather than merely recording an experience. It does not explicitly say the review targets an experience record or name a sibling alternative, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No sentence states when to choose this tool over siblings such as record_experience, record_support, or insert_belief. The compatibility note ('Existing UUID-only reviews remain valid') is not usage guidance; the reader must infer the use case from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sweep_expired_defeatedA
Delete defeated beliefs whose grace period has elapsed (attenuated deletion — a defeated belief is deleted only once its probability has decayed below prob_threshold AND grace_hours have passed since it was last defeated, giving a wrong record_defeat call time to be caught and reversed first). Returns count of beliefs deleted. If project is given, restricts the sweep to that project's beliefs plus untagged (global) beliefs.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Restrict the sweep to this project's beliefs plus untagged (global) beliefs. Omit to sweep everything. | |
| grace_hours | No | Hours since the belief was last defeated before it can be deleted. | |
| prob_threshold | No | Probability below which a defeated belief becomes eligible for deletion. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that beliefs are permanently deleted, the AND-combined eligibility criteria, the attenuation safeguard, and the return value. It omits any statement about irreversibility or permission requirements, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, followed by necessary qualifying detail. The long parenthetical is information-dense rather than wasteful, though it slightly delays the project-scoping note that an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive batch tool with no output schema and no annotations, the description covers what gets destroyed, the gating conditions, and the return value ('count of beliefs deleted'). Adequate, with the only gap being irreversibility/permission context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value by spelling out the AND relationship between prob_threshold and grace_hours and clarifying that project scope includes untagged global beliefs — semantics beyond the isolated per-parameter schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (defeated beliefs) qualified by precise scope criteria (grace period elapsed, probability decayed). The conditional semantics self-distinguish it from single-item delete_belief and time-based decay_all, so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the triggering condition clearly, including the rationale for the grace period (letting a wrong record_defeat be reversed), which tells the agent when this sweep is appropriate. It stops short of explicitly naming delete_belief or decay_all as the alternative and giving exclusion rules.
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.
30 tool updates
- First observed
add_evidence - First observed
clear_document - First observed
decay_all - First observed
delete_belief - First observed
delete_pattern - First observed
delete_project - First observed
experience_history - First observed
explain_belief - First observed
get_belief - First observed
get_contradictions - First observed
get_evidence - First observed
get_experience - First observed
insert_belief - First observed
insert_pattern - First observed
list_beliefs - First observed
list_patterns - First observed
load_document - First observed
pending_experiences - First observed
propagate_from - First observed
query_document - First observed
query_intervention - First observed
query_learning_context - First observed
query_relevant - First observed
record_cause - First observed
record_contradiction - First observed
record_defeat - First observed
record_experience - First observed
record_support - First observed
review_experience - First observed
sweep_expired_defeated
This server cannot be deployed
TDQS
Scored across 30 tools
Tools mostly target distinct resources and actions (beliefs, patterns, edges, evidence, experiences, documents, queries), and descriptions explicitly clarify tricky boundaries such as query_intervention vs query_relevant vs propagate_from. Some overlap remains between query_relevant/query_learning_context and insert_belief/record_experience, but the distinctions are workable.
Most tool names follow a snake_case verb_noun pattern (get_belief, insert_pattern, record_defeat, list_beliefs). A few deviate, such as pending_experiences, experience_history, and decay_all, but the overall convention is still readable and consistent enough.
With 30 tools, the server exceeds the 25+ threshold and presents a heavy surface for an agent to navigate, despite the domain being broad. Many tools are granular variants, such as multiple edge recorders, multiple query types, and separate experience inspection calls.
Core lifecycle coverage is strong: beliefs can be inserted, fetched, listed, and deleted; patterns can be inserted, listed, and deleted; edges, evidence, documents, experiences/reviews, queries, and maintenance are all represented. Minor gaps include no direct get_pattern, update_belief, or update_pattern, though reviews and decay mechanisms partially cover updates.
Maintenance
Related MCP Connectors
Long-term memory for AI coding agents: durable project facts, recalled by every MCP client.
Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).
Shared project memory for AI coding agents: decisions, lessons, risks and tasks in one graph.
Experience memory for coding agents: validated traps, fixes and dead-ends at decision time.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenancePersistent memory and pattern learning for AI coding assistants via MCP.35 npm175MIT
- AlicenseNot gradedqualityAmaintenancePersistent memory for AI coding agents2,191 PyPI225Apache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides persistent memory for AI coding agents via MCP, allowing them to recall fragility, decisions, and bugs across sessions.198 npm3MIT
- AlicenseNot gradedqualityCmaintenancePersistent cross-session memory for AI coding assistants, automatically capturing and injecting context across sessions via MCP tools.6 npm11AGPL 3.0