Skip to main content
Glama

Zaxy

Production memory for agent teams that need receipts.

Zaxy turns agent context into an auditable project memory fabric. It captures parent missions, worker sessions, tool observations, cited findings, conflict review, approval packets, and accepted merge-back into one durable history that can be queried, replayed, and inspected.

Under the hood, Zaxy uses Eventloom append-only JSONL as the source of truth and an embedded LadybugDB graph projection for local reasoning. It is built for agents that need to remember what happened, cite where it came from, and avoid turning project state into a pile of markdown files and vector chunks.

The embedded LadybugDB graph projection is the default local runtime.

The plain install uses embedded LadybugDB. Install zaxy-memory[neo4j] only for the optional Neo4j sidecar, and zaxy-memory[pathlight] only for Pathlight tracing.

Why It Matters

  • Auditable memory: every accepted fact can point back to Eventloom history.

  • Agent-team coordination: parent and worker sessions stay isolated until findings are reviewed and merged.

  • Local-first runtime: the default path uses embedded LadybugDB, no Neo4j sidecar.

  • MCP-native integration: Codex, Claude Code, Cursor, VS Code, Hermes Agent, LangGraph, CrewAI, and AutoGen can use the same memory interface.

Benchmark claims withdrawn (2026-07-03). The prior LongMemEval numbers were withdrawn: they were produced in oracle mode (mean ~1.9 candidate sessions per question, so Recall@5/citation-coverage were ~1.0 by construction, not by retrieval) and the preference-question scores rested on a hardcoded answer table that has since been removed. Zaxy does not currently publish a LongMemEval score. A real, full-haystack LongMemEval run is planned; until it lands, treat the earlier 0.956/0.910/1.000 figures as retracted. The Harvey LAB claim is pending the same audit.

Related MCP server: midas-memory-mcp

Quick Start

Install, init, verify

pipx install zaxy-memory
zaxy init
zaxy memory log --eventloom-path .eventloom --limit 5
zaxy memory bootstrap --eventloom-path .eventloom
zaxy doctor --eventloom-path .eventloom

The PyPI distribution is zaxy-memory; the import package and console command are still zaxy. Bare zaxy init sets up the local embedded graph posture, repo-local profile, deterministic capture config, genesis event, heartbeat, and MCP guidance. For Codex, the printed activation launcher starts the managed capture watcher when the local capture config is present; pass --capture start only when you want init itself to start the watcher before opening Codex. The default human output is compact and action-first; add --verbose when you need the full setup diagnostics, optional checks, fallback commands, resume guidance, and notes. For automation, zaxy init --json keeps the raw onboarding fields and adds setup.status, setup.issues, setup.pending, readiness.status, readiness.reasons, readiness.actions, and structured readiness.action_items for both commands and non-command review tasks. Each structured action carries label, command, original source, and hints for compact-output tips such as activation <task> replacement and path-stable command guidance. Installers can render those tips without parsing prose. It also includes setup.summary, readiness.summary, readiness.required_action_count, and readiness.reason_count, so client UIs can render compact status without parsing human output. It also separates readiness.blocking_diagnostics from readiness.non_blocking_diagnostics so scripts can distinguish setup completion, required actions, and advisory doctor warnings before relying on live memory.

For Codex, zaxy init --codex-mcp-install auto is the default. It writes or reuses the user-level Codex MCP config when that can be done without replacing an existing zaxy server entry. If no safe config target exists, it prints the copyable codex mcp add command. If an existing zaxy entry differs, it asks you to review that config before replacing it because Codex can silently replace servers with the same name. Use an explicit mode when you need to force one side of that decision after review:

zaxy init --codex-mcp-install user
# or: zaxy init --codex-mcp-install command

Both Codex paths keep the server workspace-neutral. After init, start or restart Codex through the printed zaxy activate codex ... --launch command so the MCP server list and Zaxy activation packet are loaded together. The printed command includes explicit --eventloom-path and --workspace-root values, so it still targets the initialized repo when copied from another shell.

Run the single-agent memory example:

python examples/single_agent_memory.py

Your local data lives under .eventloom/ as one append-only JSONL file per session.

For Claude Code instead of Codex:

zaxy init . --domain my-project --preset local-claude --infra check

For Hermes Agent:

zaxy ide-config hermes --install

For repository development, use pip install -e ".[dev]", ./scripts/setup.sh, and zaxy status. Start Docker sidecars only for integration tests or explicit backend comparisons. Production setup writes Docker secret files under ./secrets/; see docs/deployment.md.

Architecture

Agent (LangGraph / Any MCP Client)
    |
    v
MCP Server — memory_append / memory_query / memory_feedback / memory_replay / memory_invalidate
    |
    v
Eventloom (immutable JSONL log)  →  Hybrid Extraction  →  Embedded LadybugDB graph
    |                                                               |
    +—————— Optional Pathlight traces ———————————————→  Query Router
                                                              |
                                                    Hybrid Retrieval
                                                    (exact + BM25 + vector + traversal)

Zaxy also includes an observe-only OpenAI-compatible packet analyzer for model call provenance. It forwards packets to one configured upstream endpoint and records llm.packet.completed events to Eventloom without acting as a router. See LLM Packet Analyzer.

Public Site and Documentation

  • Public static site: site/index.html

  • Why Zaxy: docs/why-zaxy.md

  • Getting started: docs/getting-started.md

  • MCP quickstart: docs/mcp-quickstart.md

  • Architecture: docs/architecture.md

  • Configuration: docs/configuration.md

  • MCP interface: docs/mcp.md

  • Memory export contract: docs/export-contract.md

  • Eventloom contract: docs/eventloom.md

  • Graph schema: docs/graph-schema.md

  • Retrieval: docs/retrieval.md

  • Benchmarks: docs/benchmarks.md

  • LLM packet analyzer: docs/packet-analyzer.md

  • Embeddings: docs/embeddings.md

  • Security: docs/security.md

  • Operations and deployment: docs/operations.md, docs/deployment.md, docs/runbook.md

  • Python API: docs/api.md

  • Stability commitment: docs/stability-commitment.md

  • Migration guide: docs/migration.md

  • Archived benchmark iteration notes, release drafts, and research notes live under docs/archive/, docs/announcements/, and docs/research/.

  • Contributing: CONTRIBUTING.md

Key Features

  • Immutable audit trail: Eventloom append-only JSONL with SHA-256 hash chains.

  • Bi-temporal graph: Facts have validity windows (valid_from, valid_to).

  • Hybrid extraction: Rule-based for typed events (60–80% cost reduction), LLM fallback.

  • Hybrid retrieval: Exact + keyword + vector + graph traversal with configurable fusion weights.

  • Session sharding: One Eventloom log per agent/session, with a shared graph.

  • MCP-native: Drop-in memory for any MCP-compatible agent framework over stdio or SSE.

  • Observable: Optional Pathlight traces, breakpoints, and diff support via zaxy-memory[pathlight].

  • Hardened local defaults: bounded MCP inputs, safe session IDs, no-sidecar embedded graph projection, and optional admin token support for replay/invalidation.

Project Structure

File

Purpose

src/zaxy/event.py

Eventloom JSONL I/O + hash chain integrity

src/zaxy/extract.py

Hybrid extraction engine + rule registry

src/zaxy/embedded_graph_store.py

Embedded LadybugDB projection store

src/zaxy/graph.py

Optional Neo4j bi-temporal wrapper via zaxy-memory[neo4j]

src/zaxy/query.py

Hybrid retrieval router

src/zaxy/mcp_server.py

MCP stdio/SSE server

src/zaxy/trace.py

Optional Pathlight observability hooks

src/zaxy/core.py

MemoryFabric orchestrator

src/zaxy/session.py

Per-session Eventloom log manager

src/zaxy/security.py

Shared validation and input bounds

src/zaxy/__main__.py

CLI (zaxy serve, zaxy replay, etc.)

Production Secrets

Zaxy supports Docker/Kubernetes-style secret files for sensitive settings:

Variable

Secret-file variant

NEO4J_PASSWORD

NEO4J_PASSWORD_FILE

MCP_ADMIN_TOKEN

MCP_ADMIN_TOKEN_FILE

PATHLIGHT_ACCESS_TOKEN

PATHLIGHT_ACCESS_TOKEN_FILE

Direct environment variables take precedence over their *_FILE variants. Use docker-compose.prod.yml as the production compose baseline.

Development

  • Tests first (Karpathy rule). Every public function has a test.

  • Unit tests mock external services. Integration tests use Docker for optional sidecar backends.

  • Coverage gate: ≥92% enforced by CI.

  • Lint/format: ruff. Types: mypy.

# Run full suite with coverage gate
pytest

# Run integration tests (requires Docker)
./scripts/generate-certs.sh .certs
docker compose --profile integration up -d neo4j-test neo4j-tls
pytest -m integration --no-cov

# Lint and type-check
ruff check src tests
mypy src

# LongMemEval benchmark numbers are WITHDRAWN (see the note at the top of this
# README). The `--dataset .cache/.../longmemeval_oracle.json` path only exercises
# the answer step over pre-selected gold sessions (oracle mode) and does NOT
# measure retrieval on the full LongMemEval haystack; do not publish figures from
# it as a LongMemEval score. A real full-haystack harness is TBD.

# Harvey LAB external memory-ablation comparison
# Consumes externally generated Harvey normalized-result artifacts for Zaxy;
# does not reuse LongMemEval statistics as legal-agent benchmark evidence.
# Current full external Harvey LAB evidence:
# reports/benchmarks/harvey-lab-memory-ablation/publishable-statistics.md
# reports/benchmarks/harvey-lab-memory-ablation/harvey-lab-benchmark.json
# 10/10 tasks, mean criterion pass rate 0.788, +0.184 vs regular/no-memory,
# +0.081 vs article-best task rows, 9/10 wins vs article-best rows.

# Production deployment preflight
scripts/validate-deployment.sh --root .

# Build and validate Python release artifacts
scripts/build-dist.sh --root .

# Verify local release metadata, PyPI Trusted Publishing, and LangGraph smoke
zaxy doctor --release-smoke

# Validate public site and documentation links
scripts/validate-docs.sh --root .

# Clean-repo beta UAT: install into a throwaway workspace and verify init,
# bootstrap, deterministic capture, doctor, and memory checkout.
scripts/beta-uat.sh

# Summarize beta readiness gates without external services.
zaxy doctor --beta-readiness

# Go-live release gate
scripts/release-check.sh --root .

The full suite must stay at or above 92% coverage before a sprint is complete.

Release Publishing

The PyPI distribution name is zaxy-memory because zaxy is already occupied on PyPI. Published releases build from GitHub Actions and upload to https://pypi.org/project/zaxy-memory/ using PyPI Trusted Publishing with GitHub OIDC. The import package and console command remain zaxy.

Before publishing, run zaxy doctor --release-smoke to verify the package version, changelog entry, release workflow, tokenless publishing posture, and dependency-light LangGraph example.

License

MIT

Available Tools

8 tools
context_assembleC

Assemble replay plus ranked retrieval into a prompt-ready context bundle. memory_checkout, the front door, wraps this assembly with current facts, citations, and a trust contract.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
max_tokensNoOptional prompt token budget; sections are greedily packed and elisions are reported in the budget payload.
session_idNo
replay_from_seqNo
max_recent_eventsNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions assembly of replay and retrieval but does not state whether the tool has side effects, requires authentication, or what happens on error. The mention of 'greedily packed' in the max_tokens schema description is not in the tool description.

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 two sentences, front-loading the core purpose. The second sentence provides useful context about the relationship with memory_checkout. It is concise without waste, but could be slightly more informative.

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 no output schema, six parameters (only one required), and no annotations, the description is insufficient. It does not explain the return value, the assembly process, parameter interactions, or how this tool differs from the sibling memory_checkout adequately.

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 only 17% (only max_tokens described). The tool description does not explain the parameters (query, session_id, replay_from_seq, limit, max_recent_events, max_tokens) beyond the vague mention of 'replay' and 'ranked retrieval.' It fails to compensate for low schema coverage.

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 clearly states the tool's action: 'Assemble replay plus ranked retrieval into a prompt-ready context bundle.' It distinguishes from siblings by mentioning 'memory_checkout, the front door, wraps this assembly,' implying this is a lower-level tool. However, it could be more explicit about the primary function.

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 implies that context_assemble is used internally or directly when the full wrapping of memory_checkout is not needed. No explicit guidance on when to use vs. alternatives, nor 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.

memory_appendA

Append a typed event to the agent's persistent memory log. Appended state becomes retrievable through memory_checkout, the front door for reading memory back.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesActor that emitted the event
threadNoLogical thread / session ID (legacy, use session_id)
payloadYesStructured payload
event_typeYesEvent type, e.g. 'goal.created'
session_idNoSession ID for multi-agent sharding

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description adds some behavioral context by stating that appended state becomes retrievable, but does not cover idempotency, error handling, or 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.

Conciseness5/5

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

Two sentences, no wasted words, efficiently communicates core functionality and a key linkage to a sibling tool.

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?

Given no output schema and moderate complexity, the description covers the essential purpose and retrieval linkage, though it omits details about return value or payload structure guidance.

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 100% with descriptions for each parameter; the tool description adds no additional parameter-level meaning beyond what the schema already provides.

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 appends a typed event to persistent memory, using specific verb and resource, and distinguishes it from the reading tool memory_checkout.

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 implicitly guides usage by noting that appended state is retrievable via memory_checkout, but lacks explicit when-not-to-use or alternative conditions.

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

memory_capabilitiesB

Discover Zaxy's memory surface: active capabilities, the ambient usage loop, the active tool profile, and which tools remain callable beyond the listed set. memory_checkout is the front door; call this at session start or whenever tool awareness is unclear.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo
current_taskNoCurrent task or question to seed checkout guidance

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the tool 'discovers' information, implying a read-only operation, but does not explicitly confirm no side effects or disclose permissions, rate limits, or any behavioral constraints. Some context is provided but incomplete.

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?

Two sentences with no waste: first lists what the tool does, second gives usage guidance. However, it uses jargon ('ambient usage loop') which slightly impacts clarity. Efficient overall.

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?

No output schema, so the description should describe return values. It mentions discovering capabilities, usage loop, etc., but does not specify the format or structure of the output. Also, parameter effects on output are not explained. Given the complexity (multiple memory siblings), the description provides a starting point but lacks completeness.

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 50%: current_task has a description in schema, session_id does not. The description adds no additional meaning for either parameter; it does not explain how to use session_id or how current_task affects behavior. The description fails to compensate for the gap in schema coverage.

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?

Description uses 'discover' as a specific verb and lists what is discovered (capabilities, usage loop, tool profile, callable tools). It provides a clear purpose and differentiates from siblings by referencing memory_checkout as the front door, though the relationship could be clearer.

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 calling 'at session start or whenever tool awareness is unclear,' providing clear context. Mentions memory_checkout as the front door, suggesting a distinction, but does not give explicit when-not-to-use or alternative tools beyond that.

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

memory_checkoutA

The front door to Zaxy memory: call this first, before substantial work, to checkout current, cited, prompt-ready memory state for a session. Start here; every other memory tool is plumbing or power use, discoverable through memory_capabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoMemory ref to checkout, e.g. HEAD or refs/heads/main
limitNo
queryYes
purposeNoPurpose profile name or object used to condition checkout guidance.
max_tokensNoOptional prompt token budget; sections are greedily packed and elisions are reported in diagnostics.
session_idNo
replay_from_seqNo
max_recent_eventsNo

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided; description calls it 'checkout' but does not disclose if it locks state, has side effects, or requires specific authorization. Lacks behavioral context beyond being an entry point.

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

Conciseness5/5

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

Two efficient sentences, front-loaded with key purpose, no filler.

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

Completeness2/5

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

For an 8-parameter tool with no output schema and no annotations, the description is too sparse. It lacks details on output format, parameter usage, and error conditions.

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

Parameters1/5

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

Description does not mention any of the 8 parameters. With 38% schema coverage, it fails to compensate; parameters like session_id, ref, and purpose remain unexplained.

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 'front door' and 'checkout current, cited, prompt-ready memory state'. Distinguishes from siblings by labeling them 'plumbing or power use'.

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 'call this first, before substantial work' and 'Start here', providing clear when-to-use guidance.

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

memory_feedbackA

After using retrieved context, record whether a memory item was useful, stale, corrected, or reinforced. This closes the loop on context surfaced by memory_checkout, the front door.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorNoActor recording feedbackzaxy
queryNoQuery that returned the context
scoreNoOriginal retrieval score
reasonNoShort rationale for the feedback
sourceNoRetrieval sourcemcp
outcomeNoOptional action outcome, e.g. supported_handoff or avoided_failed_path
purposeNoOptional purpose profile or preset that made this memory useful
citationNoEventloom citation for the retrieved context
feedbackYesRetrieval outcome to record
importanceNoOptional 0..1 reinforcement importance for positive feedback
session_idNoSession ID for multi-agent sharding
entity_nameYesRetrieved graph entity name
entity_typeYesRetrieved graph entity type

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral details. It only states that feedback is recorded, but lacks information on updates, side effects, permissions, or the mismatch between described feedback types ('useful, stale, corrected, reinforced') and the actual enum ('used', 'helpful', 'irrelevant').

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

Conciseness5/5

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

Two sentences, concise and front-loaded. The first sentence states the action, the second provides context. No unnecessary details.

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 has 13 parameters and no output schema, the description is insufficient. It does not explain the impact of feedback on future retrievals, how to choose between enum values, or the overall workflow. More context is needed for a comprehensive understanding.

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 descriptions cover all 13 parameters, so baseline is 3. The tool description adds no additional semantics beyond the schema, such as explaining how parameters like 'purpose' or 'outcome' should be used in context.

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: recording feedback on a memory item after using retrieved context. It specifies the possible feedback types (useful, stale, corrected, reinforced) and explicitly ties to sibling memory_checkout, distinguishing it from other tools.

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 indicates the tool should be used after memory_checkout, as it 'closes the loop' on that context. It does not explicitly state when not to use or list alternatives, but the context is clear enough for an agent to infer proper usage.

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

memory_feeling_of_knowingA

Experimental metamemory pre-check: predict whether memory_checkout would likely return something for a query, in roughly a millisecond, from in-memory session state only (no embedding call, no graph query). Returns a non-authoritative verdict (likely | possible | unlikely) with its signal breakdown and raw score. It is a cheap prediction about checkout, never a memory answer or evidence, and its calibration against real checkout outcomes is still being measured — when in doubt, call memory_checkout.

ParametersJSON Schema
NameRequiredDescriptionDefault
cuesNoOptional encoding-specificity cue fields (e.g. mission, workspace, tool, phase); cue values are probed against session memory alongside the query terms.
queryYesThe query you are considering sending to memory_checkout
session_idNoSession ID for scoped prediction

TDQS

A4.7/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 full burden. It fully discloses behavioral traits: the tool is non-authoritative, cheap (no embedding call or graph query), returns a verdict with breakdown, and its calibration is still being measured. This provides rich transparency beyond what annotations might offer.

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 at three sentences, front-loading the key purpose and constraints. Every sentence adds value, with no redundancy or fluff. It is well-structured for quick comprehension.

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?

Although there is no output schema, the description adequately explains the return value (a verdict with signal breakdown and raw score). It covers all necessary aspects for an agent to decide when to use this tool, including its limitations and relation to memory_checkout.

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 coverage is 100%, so baseline is 3. The description adds value by explaining cues as 'encoding-specificity cue fields' probed alongside query terms, which enriches understanding beyond the schema's 'Optional encoding-specificity cue fields' description. This justifies a slight increase.

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: an experimental metamemory pre-check to predict whether memory_checkout would return something for a query. It uses specific verbs ('predict') and resource ('memory_checkout result'), and distinguishes from sibling tools by emphasizing it is cheap, non-authoritative, and based only on in-memory session state.

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 usage context: use this tool for a quick, cheap prediction about memory_checkout. It explicitly advises 'when in doubt, call memory_checkout', giving a decision rule. However, it does not list specific scenarios where this tool should or should not be used compared to siblings, though the context is implied.

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

memory_invalidateA

Mark a fact as invalid at a given time (bi-temporal update). History is preserved; the correction surfaces in later memory_checkout (front door) results.

ParametersJSON Schema
NameRequiredDescriptionDefault
invalid_atYesISO-8601 timestamp
admin_tokenNoAdmin token if configured
entity_nameYes
entity_typeYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations provided, the description takes on full behavioral disclosure. It explains the bi-temporal update, history preservation, and that corrections surface in memory_checkout. This provides useful context about the tool's effect. However, it does not mention the need for an admin token or what happens if the entity doesn't exist.

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, containing only two sentences that are front-loaded with the core purpose. Every sentence adds value without redundancy.

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 (bi-temporal update with 4 parameters, no output schema), the description explains the core behavior and links to memory_checkout. However, it lacks details on error handling, prerequisites (e.g., entity must exist), and the optional admin_token parameter. It is adequate but has 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 50%, with only 'invalid_at' and 'admin_token' having descriptions. The tool description adds no extra meaning for the parameters 'entity_name' and 'entity_type', which lack schema descriptions. The description should have compensated for the missing parameter documentation but did not.

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 clearly states the tool's purpose: 'Mark a fact as invalid at a given time (bi-temporal update).' It identifies the verb 'Mark' and the resource 'fact', and mentions the bi-temporal nature. It references memory_checkout as a related tool where corrections appear, providing some differentiation, but does not explicitly distinguish from other siblings like memory_append or memory_query.

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 implies usage for invalidating facts while preserving history, but does not explicitly state when to use this tool versus alternatives. Sibling tools include memory_append (add facts) and memory_query (search), but no guidance on when to choose memory_invalidate over them.

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

memory_queryA

Query the temporal knowledge graph for relevant context. Power use behind the memory_checkout front door: reach for it when you need targeted hits, temporal filters, or pagination rather than a prompt-ready packet.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results
pagedNoReturn contexts with pagination metadata
queryYesNatural language query
cursorNoOpaque cursor from a prior paged memory_query call
session_idNoSession ID for scoped retrieval
session_idsNoLocal-only explicit cross-session query scope
temporal_filterNoISO-8601 point-in-time filter

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It does not disclose whether the tool is read-only, requires authentication, or has any side effects. While the name 'query' suggests read-only, the description fails to explicitly state this or any other behavioral traits.

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 extremely concise: one sentence stating the core action, followed by a usage guideline sentence. No wasted words, and the main purpose is 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?

Despite 7 parameters and no output schema, the description explains the tool's role and usage context adequately. However, it lacks behavioral transparency and does not describe return values or pagination behavior in detail, limiting completeness.

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 100%, so baseline is 3. The description adds overall context (e.g., 'targeted hits, temporal filters, pagination') but does not add specific parameter details beyond what the schema already provides.

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 'Query the temporal knowledge graph for relevant context,' specifying the verb and resource. It distinguishes itself from siblings like memory_checkout by noting it is for targeted hits, temporal filters, or pagination rather than a prompt-ready packet.

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?

The description explicitly says 'reach for it when you need targeted hits, temporal filters, or pagination rather than a prompt-ready packet,' providing clear when-to-use guidance and contrasting with an alternative tool (memory_checkout).

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. Dates show when Glama detected each change.

  1. 8 tool updates
    • First observedcontext_assemble
    • First observedmemory_append
    • First observedmemory_capabilities
    • First observedmemory_checkout
    • First observedmemory_feedback
    • First observedmemory_feeling_of_knowing
    • First observedmemory_invalidate
    • First observedmemory_query

TDQS

A3.5/5.0
Disambiguation4/5

Most tools have distinct purposes, but context_assemble and memory_checkout overlap in functionality since checkout wraps assembly. memory_feeling_of_knowing is clearly experimental and distinct. Descriptions guide usage, preventing major confusion.

Naming Consistency2/5

Naming is inconsistent: most tools start with 'memory_', but context_assemble does not. Verbs and nouns are mixed (e.g., memory_append vs memory_capabilities), and context_assemble uses noun_verb order instead of verb_noun.

Tool Count5/5

8 tools is appropriate for a memory management system. Each tool covers a core operation (append, invalidate, query, feedback, capabilities, prediction, assembly), without being excessive or sparse.

Completeness4/5

The tool set covers the memory lifecycle: add (append), retrieve (checkout/query), update (invalidate), feedback, and discovery (capabilities). Missing a dedicated delete tool, but invalidate handles temporal updates. Minor gaps, but core workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Audit-grade memory backbone for agent teams. Bi-temporal facts (event time + transaction time, with recall(as_of=...) replay), 6-step deterministic retrieval (no LLM in the critical path), conversation ingest with speaker-locked dual-pass extraction, per-tenant Postgres row-level security, and Ed25519-signed provenance. Postgres + pgvector + Neo4j defaults.
    14
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Local-first, source-traceable memory for AI agents — no LLM at ingest, $0 per message, zero data egress. Gives Claude Code, Cursor, and any MCP client one shared persistent memory with semantic recall, belief revision, selective forgetting, and a provenance guard that blocks acting on stale or unconfirmed memories.
    23
    14
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local-first, source-grounded memory for AI agents, with citations, bitemporal history, review-gated corrections, and MCP tools for search and recall.
    3
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/syndicalt/zaxy'

If you have feedback or need assistance with the MCP directory API, please join our Discord server