Skip to main content
Glama

Bilinc

PyPI Python License MCP Release CI

Hosted memory infrastructure for AI agents: commit, recall, and inspect agent state through one API key, with verification, provenance, and recovery around every write.

Retrieval answers "what is similar to this?". Long-running agents also need to answer "who wrote this state, was it verified, did it contradict what we already knew, and can we undo it?" — that is the layer Bilinc provides.

Bilinc 2.3.11 on PyPI is the public cloud-only package: a thin Python SDK, CLI, and MCP adapter for Bilinc Cloud. It does not ship the local StatePlane, storage backends, eval, observability, integrations, or server runtime internals.

Frozen regression receipt — LongMemEval-s cleaned retrieval fixture, 500 questions: Hit@5 98.0%, NDCG@5 0.913, no LLM reranker, no paid API. This is an isolated retrieval guardrail, not a current hosted SLA, end-to-end agent score, or competitor ranking — see Benchmark receipt for the full scope and qualification.

The short version

Bilinc is the state layer between an agent and the things it must remember. It keeps memory writes attributable, correctable, and recoverable instead of treating retrieval as a bag of similar text.

If your agent needs to...

Bilinc gives it...

Recall a decision before acting

Key-scoped recall with explicit profiles and evidence metadata

Correct a bad memory

revise, contradiction-aware state, and provenance-preserving updates

Recover from an unsafe run

Snapshots, diffs, and confirmed rollback

Work across any MCP-compatible agent

A Python SDK, CLI, and stdio MCP adapter

The fastest path is pip install -U bilinc, bilinc login, then bilinc quicktest against Bilinc Cloud.

Related MCP server: mnemo

Use Bilinc when

  • A long-running agent — coding, support, research, or a personal assistant — needs to recall prior decisions before a risky action.

  • You need to know which run, tool, or operator produced a piece of agent state.

  • A bad agent run wrote incorrect state and you need a recovery path, not a manual cleanup.

  • Several agents or teammates share one memory surface and you need key-scoped access and usage visibility.

Do not use Bilinc when

  • You only need semantic search over documents — a vector database is the simpler primitive.

  • You require an Apache-2.0 licensed, fully self-hosted runtime. The public package is cloud-only and licensed BUSL-1.1.

  • You want the memory layer to also be your agent framework. Bilinc is the state layer your runtime calls; it does not orchestrate agents.

Choose your surface

You want...

Use...

A hosted memory API for an agent or MCP client

The public cloud-only package from PyPI

Local StatePlane, SQLite/PostgreSQL, benchmarks, or internals

This repository and the architecture guide

A hosted MCP connection without a Python install

The remote MCP setup guide

The public package is intentionally smaller than this repository. It does not bundle the internal StatePlane or local storage runtime.

Start in 60 Seconds

Claude connector, without installing Python

Open Customize → Connectors → Add custom connector in Claude, name it Bilinc, and paste https://mcp.bilinc.space/mcp. Sign in and choose read-only or read and write access. The setup guide is bilinc.space/mcp.

For the remote connector in Claude Code:

claude mcp add --transport http --scope user bilinc https://mcp.bilinc.space/mcp

Then run /mcp and authenticate. The remote connector has ten tools; the Python stdio adapter below has eleven. Both connect to hosted Bilinc memory.

Recall in the remote connector shows how long ago each memory was last confirmed and marks entries that are past their review window (90 days for facts, decisions, how-tos and places; 1 day for working notes; events are never marked) as possibly outdated. Nothing is hidden or deleted. Revising a memory with the same value confirms it.

Remote tool

Access

What it does

recall

read

Look up memories before acting, with when each was last confirmed.

list_snapshots

read

List saved checkpoints, newest first.

diff

read

Compare current memory with a checkpoint, showing before → after values.

status

read

Workspace, plan, credits, usage, and whether this connection can write.

remember

read and write

Store a new memory. It never overwrites an existing key.

revise

read and write

Change an existing memory; pass the version you read to refuse the change if it moved since.

forget

read and write

Remove a memory from recall, with a reason.

create_snapshot

read and write

Save a checkpoint before risky work.

preview_rollback

read and write

Show what a rollback would change and issue its confirmation token.

rollback

read and write

Restore a checkpoint with that token.

A read-only connection lists only the four read tools.

SDK and CLI

pip install -U bilinc
bilinc login
bilinc quicktest

bilinc login opens your browser. Sign in with Google, GitHub, or email (free, no card required) and approve this computer; the CLI saves its own API key with owner-only permissions. The key never appears in a URL or your terminal. bilinc quicktest then performs one hosted commit, one hosted recall, and one Cloud status check.

  • No browser on this machine (SSH, servers, containers): bilinc login --device prints a short code to approve from any browser.

  • CI and scripts: bilinc login --api-key bil_live_..., or set BILINC_API_KEY.

To reproduce this release exactly:

pip install -U bilinc==2.3.11

If you prefer a browser guide, open https://bilinc.space/install and follow the same three-step path.

MCP Adapter

Bilinc exposes a standard Model Context Protocol server over stdio, so any MCP-compatible client can connect — Claude Code, Codex, Cursor, Hermes-Agent, opencode, and others.

After bilinc login, let the CLI write the setup for your client:

bilinc mcp install --client claude-code     # prints a ready `claude mcp add ...` command
bilinc mcp install --client claude-desktop  # prints the config and where Claude Desktop keeps it
bilinc mcp install                          # plain mcpServers JSON for any other client
{
  "mcpServers": {
    "bilinc": {
      "command": "/path/to/python3",
      "args": ["-m", "bilinc.cloud_mcp"]
    }
  }
}

command is the interpreter that has Bilinc installed, and the adapter reads the key saved by bilinc login, so the config carries no key. On a machine without a saved key, add "env": { "BILINC_API_KEY": "bil_live_..." }.

Eleven tools: the eight-step memory lifecycle plus three review tools.

Tool

What it does

commit_mem

Write durable agent state. Each write carries provenance — which run, tool, or operator produced it — and returns a version for optimistic concurrency.

recall

Retrieve prior context and decisions before acting. profile selects retrieval quality; smart retrieval is that argument, not a separate tool.

revise

Deliberately correct something already known. It never creates, so a correction stays distinguishable from an accidental overwrite.

forget

Destructive. Remove obsolete state from active recall. A reason is required and is audited; the deleted value is never returned.

status

Report the authenticated workspace, plan, capabilities, recall profiles, limits, and usage. Never billed.

snapshot

Checkpoint a project before risky work, or list existing checkpoints.

diff

Compare a checkpoint against another checkpoint or current state. Values are redacted by default.

rollback

Destructive in execute mode. Restore a checkpoint through a free preview plus an explicitly confirmed execute.

list_memories

Browse what is stored, ordered by key, with prefix, type and updated-time filters. Read-only and free.

history

Show one memory's recorded changes, newest first, with the value before and after. Read-only and free.

confirm

Record that a memory is still accurate without resending its value. Costs one write.

Operator and debug tooling — health probes, benchmarks, bulk import, workspace replay — stays local-only, as do the epistemic read tools for claims, contradictions, and graph queries. The hosted adapter does not bundle local runtime internals.

Documented client setups: Claude Code · Codex · Cursor · any MCP client

Python SDK

from bilinc import CloudClient

client = CloudClient()  # reads BILINC_API_KEY or a key saved by `bilinc login`

# Write, and keep the version for optimistic concurrency.
written = client.commit("agent.goal", {"ship": "reliable memory"}, memory_type="semantic")
results = client.recall("agent goal", limit=5)

# Correct something you already know. Fails if it does not exist.
client.revise("agent.goal", {"ship": "verifiable memory"},
              reason="scope corrected", expected_version=written["entryVersion"])

# Checkpoint before risky work, then see what changed.
snapshot = client.create_snapshot(label="before-autonomous-run")["snapshot"]
client.diff(snapshot["id"])

# Drop obsolete state. A reason is required and is audited.
client.forget("agent.goal", reason="superseded by the planner service")

# Recover. Preview is free; execute is destructive and needs the token.
preview = client.rollback_preview(snapshot["id"], reason="undo bad agent run")
client.rollback(snapshot["id"], confirmation_token=preview["confirmationToken"],
                reason="undo bad agent run")

client.status()   # what can this key do?
client.health()   # is the service reachable?

Review what Bilinc remembers

Listing, history and export are reads and are not billed. Confirming costs one write.

page = client.list_memories(prefix="agent.", limit=50)       # one page, ordered by key
for entry in client.iter_memories(memory_type="semantic"):   # every page
    print(entry["key"], entry["updatedAt"])

client.history("agent.goal")   # newest changes first (20 by default, up to 100); "truncated" marks older ones
client.confirm("agent.goal", expected_version=page["entries"][0]["entryVersion"])  # still true

backup = client.export()       # every stored memory with its full value, as one dict

Forgetting a memory removes its value from history as well: earlier values of a forgotten memory are not returned.

For server, CI, and hosted agent runtimes, store the key as BILINC_API_KEY.

CLI

bilinc status                 # authenticated plan, capabilities, limits, usage
bilinc health                 # public service health
bilinc commit --key agent.goal --value '{"ship":"reliable memory"}'
bilinc recall --query "agent goal"
bilinc revise --key agent.goal --value '{"ship":"verifiable memory"}' --reason "scope corrected"
bilinc snapshot create --label before-autonomous-run
bilinc snapshot list
bilinc diff --from-snapshot snap_...
bilinc forget --key agent.goal --reason "superseded by the planner service"
bilinc doctor

Review what is stored:

bilinc list --prefix agent.          # table of keys, types, update times, value previews
bilinc list --all --json             # every page as JSON
bilinc history agent.goal            # recorded changes, newest first
bilinc confirm agent.goal            # still accurate; the value is unchanged
bilinc export -o bilinc-export.json  # full values; the file is readable only by you

Rollback is two stages. Execute takes the token from the preview and never prompts interactively, so it stays safe inside automation:

bilinc rollback preview --snapshot snap_... --reason "undo bad agent run"
bilinc rollback execute --snapshot snap_... --reason "undo bad agent run" \
  --confirmation-token <token-from-preview>

Useful first-run commands:

bilinc login              # browser sign-in; --device without a browser
bilinc quicktest
bilinc mcp install
bilinc start              # prints the first-run guide

Hosted Endpoints

Endpoint

Notes

GET /api/cloud/health

Public service health. No key, no billing.

GET /api/cloud/status

Authenticated capabilities for one key. Never billed.

POST /api/cloud/memory/commit

Write.

POST /api/cloud/memory/recall

Read.

POST /api/cloud/memory/revise

Replace an existing memory.

POST /api/cloud/memory/forget

Destructive. Reason required.

GET /api/cloud/memory/snapshots

List checkpoints. Free.

POST /api/cloud/memory/snapshots

Create a checkpoint.

POST /api/cloud/memory/diff

Compare checkpoints. Free.

POST /api/cloud/memory/rollback/preview

Free. Mints a confirmation token.

POST /api/cloud/memory/rollback

Destructive. Requires that token.

All hosted endpoints share https://bilinc.space. Authenticated memory operations require an active Bilinc Cloud entitlement.

Send an Idempotency-Key header on any write you might retry: the same key with the same payload replays the original result and is billed once, and the same key with a different payload is refused with 409 idempotency_conflict.

Benchmark receipt

Frozen regression receipt, LongMemEval-s cleaned retrieval fixture, 500 questions: Hit@5 98.0%, NDCG@5 0.913, with no LLM reranker and no paid API.

This is a frozen isolated retrieval guardrail — not a current hosted SLA, not an end-to-end agent score, and not a competitor ranking. Published memory-system scores use different metrics, datasets, and levels of LLM assistance, so they are not directly comparable. Present this receipt only with this isolated scope attached.

Evidence map

The repository keeps dated manifests with source state, dataset provenance, runner and metric semantics. These are traceability artifacts, not claims that Bilinc is universally first place.

Lane

Publicly stored evidence

Scope

LongMemEval-s

frozen manifest

Isolated retrieval guardrail

AMB legacy v3

current Modal manifests

Historical generic harness; not Vectorize AMB RAG/judge

Official LoCoMo

retrieval manifests

Retrieval component; not end-to-end QA/F1

Evidence contract

validation rules

Hashes, limitations, and reproducibility boundaries

For the engineering rationale, read Why vector search is not enough for agent memory.

Compare

Answer guides

Contributing

Start with CONTRIBUTING.md. Use Discussions for design questions and roadmap feedback; use an issue for a reproducible bug or a scoped implementation task.

Security reports should follow SECURITY.md. Please do not include private memory values, API keys, or production logs in issues, pull requests, benchmark fixtures, or screenshots.

License

BUSL-1.1. See LICENSE.

Available Tools

11 tools
commit_memAInspect

Write a memory entry to hosted Bilinc Cloud.

    Creates the entry if it is new and revises it if the key already
    exists. Returns an opaque entry version you can pass to `revise` or
    `forget` as `expected_version` for optimistic concurrency.

    Pass `idempotency_key` when retrying: the same key with the same
    payload returns the original result instead of writing twice.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
ttlNo
valueYes
sourceNo
metadataNo
priorityNo
canonicalNo
importanceNo
session_idNo
memory_typeNosemantic
idempotency_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behaviors: upsert semantics, returning an opaque version for optimistic concurrency, and idempotent behavior via `idempotency_key`. These are important beyond what annotations would provide. It doesn't mention failure modes or limitations, but the disclosed traits are significant and clearly described.

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

Conciseness4/5

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

The description is concise and front-loaded, with the main purpose stated first. It uses three short paragraphs that each add value: purpose, upsert/version behavior, and idempotency. It is not overly verbose, though it could be slightly tighter by merging related thoughts. Overall, it is well-structured and efficient.

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

Completeness2/5

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

Given the tool's complexity (11 parameters, 0% schema coverage, no annotations), the description is incomplete. It covers the core upsert and idempotency behavior but leaves many parameters unexplained, which could lead an agent to misuse the tool. The presence of an output schema helps with return values, but the input side is under-documented. A more comprehensive description should at least summarize the role of key parameters like `memory_type`, `priority`, and `ttl`.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only explains `idempotency_key` in detail; the other 10 parameters (e.g., `key`, `value`, `ttl`, `priority`, `metadata`, `memory_type`) are not elaborated. The description does not clarify what `value` should be, how `memory_type` affects behavior, or the meaning of fields like `canonical` and `importance`. This is a significant gap for a tool with 11 parameters.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Write a memory entry to hosted Bilinc Cloud.' It further explains the upsert behavior ('Creates the entry if it is new and revises it if the key already exists'), which distinguishes it from siblings like `revise` and `recall`. This is a specific verb+resource with differentiation.

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

Usage Guidelines4/5

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

The description gives context by explaining that the returned version can be passed to `revise` or `forget`, implying when those tools are appropriate. It also explains idempotency usage for retries. However, it does not explicitly state when NOT to use this tool or name alternatives for read/delete scenarios, so it falls short of a 5.

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

confirmConfirm a memory is still accurateAInspect

Record that an existing memory is still accurate.

    The stored value is not changed; the memory's updated time moves to now
    and its history gains a confirm entry. Costs one write operation.
    Fails with `memory_not_found` when the key does not exist, and with
    `version_conflict` when `expected_version` no longer matches.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
reasonNo
idempotency_keyNo
expected_versionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

Annotations only declare the safety profile (readOnly=false, destructive=false, idempotent=false); the description goes well beyond that by stating exactly what mutates (updated time, history entry), what does not (stored value), the write cost, and two concrete error codes with their trigger conditions. That is precisely the extra behavioral context annotations cannot convey.

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

Conciseness5/5

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

Front-loaded with the core action in the first sentence, followed by only the details an agent needs: mutation semantics, cost, and failure modes. No repetition of the title or schema, and every sentence earns its place.

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

Completeness4/5

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

For a mutation tool with an output schema present, the description covers behavior, side effects, and error conditions thoroughly enough to call it safely. The remaining gap is the unexplained reason and idempotency_key parameters, which neither the schema nor the description defines.

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

Parameters3/5

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

Schema description coverage is 0% across 4 parameters, so the description must carry the burden. It explains expected_version well (an optimistic-concurrency check that yields version_conflict), but says nothing about key, reason, or idempotency_key — notably that idempotency_key is the dedupe mechanism even though annotations declare idempotentHint=false. Partial compensation only.

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

Purpose4/5

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

The description states a specific verb+resource (record that a memory is still accurate) and immediately clarifies the key distinction from a value-changing edit: 'The stored value is not changed.' That implicitly separates it from siblings like revise and rollback. It never names a sibling explicitly, so it falls just short of the top band.

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

Usage Guidelines3/5

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

Usage is implied by 'Record that an existing memory is still accurate,' and the failure modes give implicit preconditions (the key must exist, and expected_version must match). However, there is no explicit when-to-use/when-not guidance or named alternative (e.g., revise when the value actually changed), leaving the routing decision to inference.

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

diffAInspect

Compare a checkpoint against another checkpoint or current state.

    Read-only and free. Leave `to_snapshot_id` empty to see what has
    changed since the checkpoint was taken. Values are redacted unless
    `include_values` is set; a value-bearing diff that would be too large
    is refused rather than silently truncated.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
include_valuesNo
to_snapshot_idNo
from_snapshot_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses that the operation is read-only and free, values are redacted unless include_values is set, and overly large diffs are refused rather than silently truncated. This gives the agent important behavioral expectations.

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

Conciseness5/5

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

The description is concise, with the main purpose in the first line and additional key behaviors following. Every sentence adds value, and it is not padded with fluff.

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

Completeness4/5

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

The description covers essential behavioral context: read-only, free, redaction behavior, and refusal of large diffs. The output schema exists, so return format need not be detailed. However, it does not mention the limit parameter or edge cases, which would make it fully complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains the semantics of to_snapshot_id (optional, defaults to current state) and include_values (controls value redaction), but does not explain limit or from_snapshot_id in detail. This partial coverage earns a 3.

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

Purpose5/5

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

The description clearly states the primary action: 'Compare a checkpoint against another checkpoint or current state.' This uses a specific verb ('Compare') and resource ('checkpoint'), and the mention of 'current state' distinguishes it from sibling tools like snapshot or rollback.

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

Usage Guidelines4/5

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

Provides clear context for when to use the tool: to compare checkpoints or see changes since a checkpoint. It also explains the key behavior of leaving to_snapshot_id empty. However, it does not explicitly mention alternatives or when not to use it, which keeps it from a 5.

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

forgetAInspect

Remove a memory from active recall. DESTRUCTIVE.

    This is a destructive operation: the entry stops influencing every
    future recall in this project. `reason` is required and is written to
    the audit trail. The deleted value is never returned.

    Use this for state that is genuinely obsolete. To correct a memory
    rather than remove it, use `revise`.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
reasonYes
idempotency_keyNo
expected_versionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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 clearly discloses the destructive nature, that the entry stops influencing future recall, that `reason` goes to the audit trail, and that the deleted value is never returned. This is thorough behavioral disclosure.

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

Conciseness5/5

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

The description is concise and well-structured, with a bold DESTRUCTIVE warning and short paragraphs. Every sentence earns its place, front-loading the purpose and then adding necessary details.

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

Completeness4/5

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

The description covers essential aspects: destructive behavior, audit trail, and the alternative tool. An output schema exists, so return values need not be explained. It leaves out edge-case behavior (e.g., key not found) but overall is complete for the tool's complexity.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It adds meaning for `reason` (required, audit trail) and implicitly clarifies `key` (the memory to remove). However, it says nothing about `idempotency_key` or `expected_version` beyond their schema defaults. Partial compensation, adequate but with gaps.

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

Purpose5/5

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

The description clearly states the action: 'Remove a memory from active recall' with a specific verb and resource. It also distinguishes itself from the sibling tool `revise` by explicitly saying 'To correct a memory rather than remove it, use revise.'

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

Usage Guidelines5/5

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

Explicitly states when to use: 'Use this for state that is genuinely obsolete.' It also names an alternative (`revise`) and explains when not to use it (when correcting rather than removing), satisfying the when/when-not/alternatives criterion.

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

historyShow a memory's historyA
Read-onlyIdempotent
Inspect

Show the recorded changes to one memory key, newest first.

    Read-only and free. Each entry has the operation (create, update,
    confirm, forget or delete), its time, the recorded reason and source,
    and the value before and after unless `values` is "none". A change
    made by a rollback keeps its create, update or delete operation and
    also carries `rollbackSnapshotId`.
    Values recorded before a memory was forgotten are not returned.
    `exists` is false when the key is not currently stored.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
limitNo
valuesNofull

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, but the description goes far beyond by describing entry structure (operation, time, reason, source, before/after values), the rollbackSnapshotId behavior, the 'values: none' suppression, and that forgotten values are withheld. This is substantial behavioral context.

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

Conciseness4/5

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

Front-loaded with the core action and ordering, then structured detail. It is a bit list-like but every sentence conveys useful semantics; no filler.

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

Completeness5/5

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

An output schema exists, so return format need not be explained, but the description still enriches it with field-level semantics and edge cases (rollback operations, forgotten values, exists=false). Complete for an agent to call correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the parameter burden. It explains the `values` parameter's semantics ("none" suppresses before/after values) and the `key` parameter's scope, compensating for the bare schema.

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

Purpose5/5

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

The description opens with 'Show the recorded changes to one memory key, newest first', a precise verb+resource+ordering statement. It is clearly distinguishable from siblings like diff or snapshot by specifying the auditable change log of a single key.

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

Usage Guidelines3/5

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

It implicitly tells when to use the tool (auditing past changes to a key) but never names or contrasts with alternatives such as diff or snapshot. No explicit 'use this instead of X when Y' guidance.

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

list_memoriesList stored memoriesA
Read-onlyIdempotent
Inspect

List the memories stored in this Bilinc Cloud project, ordered by key.

    Read-only and free. Filters: key `prefix`, `memory_type`, and ISO-8601
    `updated_after` / `updated_before`. Returns up to `limit` entries
    (1-100) with key, type, importance, source, created and updated times,
    entry version, and a value whose size follows `values` ("preview" by
    default, "full", or "none"). `total` counts all matches; `nextCursor`
    is the `cursor` for the next page and is null on the last page.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
prefixNo
valuesNopreview
memory_typeNo
updated_afterNo
updated_beforeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so the safety profile is covered; the description adds real context beyond that: cost ('free'), page-size bound (1-100), value-sizing modes, and the pagination contract ('nextCursor is null on the last page'). It omits anything about rate limits or ordering guarantees beyond 'by key', but the added detail is substantive.

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

Conciseness4/5

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

Front-loaded with purpose, then filters, then return/pagination semantics in a compact block. Every sentence carries information; the only slight redundancy is restating read-only, which annotations already assert.

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

Completeness5/5

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

For a 7-parameter, zero-coverage, paginated list tool, the description covers filtering, ordering, page sizing, value sizing, and the cursor contract. An output schema exists so return fields need not be spelled out, yet the description summarizes them anyway, leaving nothing essential missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the burden and largely does: it explains prefix, memory_type, ISO-8601 updated_after/updated_before, the limit range, and the meaning of the three 'values' modes. The 'cursor' parameter itself is only implied via the nextCursor explanation, which is a minor gap.

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

Purpose4/5

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

States a specific verb and resource ('List the memories stored in this Bilinc Cloud project') plus ordering ('ordered by key'), which is far more than a tautology. It does not, however, differentiate itself from the sibling 'recall' or 'history' tools, so an agent must infer which retrieval tool applies.

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

Usage Guidelines3/5

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

The description enumerates the available filters and notes the tool is read-only and free, which implies the browse/filter use case. It never states when to prefer list_memories over recall, history, or diff, and gives no exclusions or prerequisites, leaving usage selection implicit.

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

recallAInspect

Retrieve memories from hosted Bilinc Cloud.

    `profile` selects retrieval quality and cost: fast, balanced,
    verified, or deep. Higher profiles do more reflection and return more
    provenance, and are gated by the workspace plan — call `status` to see
    which profiles this key may use. Smart retrieval is this argument, not
    a separate tool.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
explainNo
profileNobalanced
memory_typesNo
query_timestampNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description takes on the burden of explaining behavior. It discloses that higher profiles 'do more reflection and return more provenance' and are 'gated by the workspace plan,' which is valuable context. It also mentions cost implications. However, it does not explicitly state whether recall is read-only or describe other side effects, leaving some ambiguity for a no-annotation tool.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose. Each sentence earns its place: the first states the core action, and the second explains the profile parameter's nuances and its relationship to the status tool. There is no redundant fluff or repetition of schema information.

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

Completeness3/5

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

Given the tool's complexity (6 parameters, one required), the description covers only the retrieval purpose and profile specifics. The output schema exists and can explain return values, but the description does not clarify other parameters or edge cases. It is adequate for a basic retrieval tool but feels incomplete for an agent needing to use memory_types, query_timestamp, or explain effectively.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for parameter meaning. It only explains the 'profile' parameter in detail, covering just one of six parameters. The description does not address query, limit, explain, memory_types, or query_timestamp, leaving the agent without sufficient guidance for these parameters despite their self-explanatory names.

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

Purpose5/5

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

The description states a specific verb and resource: 'Retrieve memories from hosted Bilinc Cloud.' It clearly distinguishes from siblings like commit_mem, revise, and forget by focusing on retrieval. The additional note that 'Smart retrieval is this argument, not a separate tool' further disambiguates from potential alternatives.

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

Usage Guidelines4/5

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

The description provides practical guidance: 'call `status` to see which profiles this key may use' indicates a prerequisite for using higher profiles. It also clarifies that profile-based retrieval is not a separate tool. However, it does not explicitly state when to use recall vs. other memory operations or list exclusions, so it misses some explicit alternative guidance.

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

reviseAInspect

Deliberately replace an existing memory, preserving belief revision.

    Use this instead of `commit_mem` when you intend to correct or
    supersede something you already know, so the change is recorded as a
    revision rather than an accidental overwrite.

    Fails with `memory_not_found` if the key does not exist: revise never
    creates. Pass `expected_version` from a previous write to fail with
    `version_conflict` instead of clobbering a concurrent change.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes
reasonNo
strategyNoentrenchment
importanceNo
idempotency_keyNo
expected_versionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden. It reveals important behaviors: never creates, fails with memory_not_found, supports expected_version for concurrency (version_conflict). It does not mention auth or reversibility, but for a memory tool these are less critical. Slightly incomplete but strong.

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

Conciseness5/5

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

Four sentences, each adding substantive value: purpose, alternative differentiation, failure mode, concurrency behavior. No filler or repetition, well front-loaded.

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

Completeness3/5

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

Given 7 parameters and zero schema descriptions, the description is too thin. It covers core use cases and error scenarios, but omits guidance on the optional parameters and does not describe the response shape (though an output schema exists). It is minimally adequate but has clear gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only explains `expected_version` and implies `key` must exist, but does not clarify the meaning or usage of `value`, `reason`, `strategy`, `importance`, or `idempotency_key`. This leaves most parameters under-specified.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Deliberately replace an existing memory.' It clearly distinguishes the tool from siblings by stating it is for corrections/superseding rather than creating, which aligns with the sibling context.

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

Usage Guidelines5/5

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

Explicitly says to use this instead of `commit_mem` when correcting or superseding existing knowledge, and notes that it never creates (fails with memory_not_found). This provides clear when-to-use and when-not-to-use guidance.

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

rollbackAInspect

Restore the project to a checkpoint. DESTRUCTIVE in execute mode.

    Two stages, and you must run them in order:

    1. `mode="preview"` is free and changes nothing. It reports what would
       be created, updated, and removed, and returns a short-lived
       `confirmation_token`.
    2. `mode="execute"` requires that token and permanently discards every
       memory created or changed since the checkpoint.

    Execute fails with `state_changed_since_preview` if the project
    changed after the preview, so review the preview and act on it
    promptly rather than reusing an old one. `reason` is required in both
    modes and is written to the audit trail.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
modeNopreview
reasonYes
snapshot_idYes
idempotency_keyNo
confirmation_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the burden of behavioral disclosure. It explicitly warns 'DESTRUCTIVE in execute mode,' explains that preview changes nothing, requires a confirmation token for execute, permanently discards memories, and mentions the failure mode `state_changed_since_preview` and audit trail writing.

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

Conciseness4/5

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

The description is well-structured with a clear summary, numbered steps, and a note on failure handling. It is somewhat long but each sentence adds necessary value for a destructive two-stage tool.

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

Completeness5/5

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

Given the tool's complexity (5 parameters, no annotations, output schema present), the description is complete. It covers the full workflow, danger, token requirement, failure condition, and audit trail without needing to explain return values due to the output schema.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains the semantics of mode, confirmation_token, and reason, and implies snapshot_id as the checkpoint identifier. However, it does not explicitly describe idempotency_key, though it is optional. This is a minor gap given the strong coverage of the critical parameters.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Restore the project to a checkpoint.' This is a specific verb+resource combination that distinguishes it from siblings like snapshot (creating checkpoints) and diff (comparing states).

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

Usage Guidelines4/5

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

The description provides clear procedural context: two stages must run in order (preview then execute), and it explains the requirements for each mode. It doesn't explicitly compare to alternatives or state when not to use the tool, but the workflow guidance is strong.

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

snapshotAInspect

Create or list project checkpoints.

    Take a checkpoint with `action="create"` before risky work so you can
    inspect or restore it later; `action="list"` returns existing
    checkpoints newest first and is free. Neither returns the checkpoint's
    contents.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo
limitNo
actionNocreate
metadataNo
idempotency_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, but the description discloses key behavior: list is free, ordering is newest-first, and neither action returns checkpoint contents. This adds meaningful context beyond the schema, though it does not cover side effects of creation or permission requirements.

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

Conciseness5/5

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

Three concise sentences cover purpose, usage advice, and a behavioral caveat with no redundancy. Information is front-loaded and the description is appropriately sized.

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

Completeness4/5

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

The tool has an output schema and a moderate parameter count; the description covers the main workflows. It lacks detail on parameter meanings and restore mechanics, but overall is sufficient for basic usage.

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

Parameters2/5

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

The description explains the action parameter values (create/list) but does not clarify label, limit, metadata, or idempotency_key. Schema coverage is 0%, so these parameters remain ambiguous despite self-explanatory titles.

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

Purpose5/5

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

Clearly states the tool creates or lists project checkpoints, with specific action values. Differentiates from sibling tools by focusing on checkpoint capture/list rather than memory/commit/rollback operations.

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

Usage Guidelines4/5

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

Explicitly advises using create before risky work, and notes list is free and returns newest first. Does not name alternative tools but provides context for when each action is appropriate.

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

statusAInspect

Report the authenticated Bilinc Cloud workspace, plan, and capabilities.

Read-only and never billed. Use this to discover which lifecycle operations and recall profiles the current API key may use before attempting them. Secrets are never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool is 'Read-only and never billed' and that 'Secrets are never returned,' which are important safety traits. It does not elaborate on caveats like rate limits, but the disclosed traits are strong for a status tool.

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

Conciseness5/5

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

The description is three sentences and every sentence earns its place: the first states the purpose, the second conveys safety and usage, and the third reassures about secrecy. It is front-loaded with the most important information and contains no redundant words.

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

Completeness5/5

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

Given the tool has no parameters, an output schema is present, and the tool is simple (status report), the description fully covers what an agent needs to know. It states what the tool returns (workspace, plan, capabilities), when to use it, and that it is safe and read-only. The existence of the output schema eliminates the need to describe return formats.

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

Parameters4/5

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

The tool has zero parameters, so the schema provides no parameter semantics. Per the rubric, a baseline of 4 is appropriate for 0-parameter tools. The description adds no parameter information because there is nothing to add.

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

Purpose5/5

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

The description opens with 'Report the authenticated Bilinc Cloud workspace, plan, and capabilities,' which uses a specific verb and clearly identifies the resource and scope. This distinguishes it from sibling lifecycle tools like commit_mem and forget, which perform mutations. The purpose is unambiguous and immediately understood.

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

Usage Guidelines4/5

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

The description provides explicit guidance: 'Use this to discover which lifecycle operations and recall profiles the current API key may use before attempting them.' This makes the intended use case clear. It does not explicitly exclude other uses or name alternatives, but the context is sufficient for an agent to know when to call this tool.

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

Tool Schema Changelog

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

  1. 3 tool updatesv2.3.11
    • Addedconfirm
    • Addedhistory
    • Addedlist_memories
  2. 1 tool updatev2.1.9
    • Changedrecall1 field changed
      • addedInput schema / properties / query_timestamp
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Query Timestamp"
        +}
  3. 7 tool updatesv2.1.6
    • Changedcommit_mem6 fields changed
      • addedInput schema / properties / canonical
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Canonical"
        +}
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Idempotency Key"
        +}
      • addedInput schema / properties / priority
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Priority"
        +}
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • addedInput schema / properties / source
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Source"
        +}
      • addedInput schema / properties / ttl
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Ttl"
        +}
    • Addeddiff
    • Addedforget
    • Changedrecall2 fields changed
      • addedInput schema / properties / explain
        Added value: +{
        +  "default": false,
        +  "title": "Explain",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / memory_types
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Memory Types"
        +}
    • Addedrevise
    • Addedrollback
    • Addedsnapshot
  4. 3 tool updatesv1.0.0
    • First observedcommit_mem
    • First observedrecall
    • First observedstatus

TDQS

A4.1/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have clearly distinct purposes: recall vs list_memories, diff vs history, and snapshot vs rollback are unambiguous. The main overlap is commit_mem vs revise, both updating existing keys, though the descriptions explicitly guide when to use revise instead of commit_mem.

Naming Consistency3/5

Names mix single verbs (diff, confirm, forget), nouns (history, snapshot, status), and two snake_case verb_noun forms (list_memories, commit_mem). The set remains readable, but there is no consistent naming convention.

Tool Count5/5

11 tools is well-scoped for a memory and checkpoint service. Each tool earns its place, with no obvious bloat or missing essential operation.

Completeness5/5

The surface covers the full memory lifecycle (create, read, update, confirm, forget), version history, checkpointing (snapshot, diff, rollback), and workspace discovery (status). No critical gaps are apparent.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI coding agents to persist project memory across sessions by compiling decisions, progress, and pitfalls into git-linked, evidence-backed entries. It lets clients add, query, inject, scan for stale, check assertions on, and compute ROI of those memories over stdio.
    367 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Serves local-first project memory over stdio, exposing tools to inspect project state, search and retrieve context, report memory, and create Git-aware checkpoints for coding agents.
    1
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Exposes repo-native, self-verifying memory to coding agents over stdio MCP, letting them recall ranked past decisions, record new claims with verifiable receipts, and check the health and stats of stored memory. Keeps agent context honest by surfacing memories whose evidence no longer holds.
    7 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides a local stdio MCP server that gives AI coding agents a typed, temporal, evidence-backed memory on embedded SQLite, letting them record decisions and constraints, ask why something happened, navigate memory by time, trace proof paths between refs, and export or supersede stored state without rewriting it. It also exposes read-only ChronoLoom view tools so a person and their agent can steer the same multidimensional memory view by semantic intent rather than raw coordinates.
    Apache 2.0