donto.org / mcp agents.md · llms.txt · mcp.json

donto-memory — MCP server verified

Give any agent a bitemporal, evidence-first long-term memory. donto_recall · donto_search · donto_memorize over the Model Context Protocol.

What it is

donto-memory is an agentic long-term memory built on donto, a bitemporal, paraconsistent, evidence-first claim substrate. This MCP server exposes it as native tools so an agent (Codex, Claude Code, or any MCP client) can remember across sessions and recall what matters at query time — deciding for itself when to do so.

Install & register

Run it instantly with npx — no clone, no install. Defaults to the hosted endpoint https://memories.apexpots.com; point it at your own donto-memory with DONTO_MEMORY_URL.

Codex CLI

codex mcp add donto-memory -- npx -y donto-memory-mcp

Claude Code

claude mcp add donto-memory -- npx -y donto-memory-mcp

Generic MCP client (config)

{
  "mcpServers": {
    "donto-memory": {
      "command": "npx",
      "args": ["-y", "donto-memory-mcp"],
      "env": { "DONTO_MEMORY_URL": "http://127.0.0.1:7900" }
    }
  }
}

npm package donto-memory-mcp (Node, official MCP SDK) · stdio JSON-RPC 2.0 · protocol 2024-11-05. A dependency-free Python single-file variant (donto_mcp.py) is also in the repo.

Tools

donto_recall

Recall a holder's OWN memories relevant to a query (hybrid FTS + vector, holder-scoped). Use to answer questions about what a user/agent said, did, or prefers over time.

paramtypenotes
holderstring (required)memory owner IRI, e.g. user:alice, agent:omega-bot
querystring (required)natural-language query
limitintegermax rows (default 10)

Returns ranked rows: {subject, predicate, object, valid_from, valid_to}. Prefer the row with the latest valid_from when an attribute has several values.

donto_search

Substrate-wide full-text search across ALL of donto (not holder-scoped). Use to find any claim/fact in the store.

paramtypenotes
querystring (required)
context_prefixstringoptional ctx: scope filter
limitintegerdefault 10

donto_memorize

Store a memory for a holder. Extracts claims (extract=true) or stores raw episodic text (extract=false). Set valid_from to the date the fact became true.

paramtypenotes
holderstring (required)
textstring (required)the content to remember
valid_fromstringISO date the fact became true (optional)
extractbooleanextract claims (default true) vs raw episodic (false)

Agent documentation

Guidance an LLM agent should follow when using these tools (also machine-readable at /agents.md):

How it works

Each memorize writes claims/episodic chunks anchored to the holder, with valid-time. recall runs holder-scoped lexical + vector retrieval, RRF-fused, with predicate alignment-closure expansion, and returns ranked evidence-anchored rows. The substrate is paraconsistent: contradictory claims are held (not overwritten) and re-ranked by recency/reality — which is why knowledge-updates and honest abstention are first-class.

Tested

The protocol handshake and every tool are verified, and an agent (Codex gpt-5.4) was confirmed to call the tools and ground its answer in recalled memories:

# protocol
initialize            -> serverInfo {name: donto-memory, version: 0.1.0}
tools/list            -> [donto_recall, donto_search, donto_memorize]
tools/call recall     -> rows (isError: false)

# agentic (codex exec, gpt-5.4)
"call donto_recall(holder=…, query=…) then answer"
  -> codex invoked mcp_tool_call:donto_recall (x2)
  -> answer grounded ONLY in recalled memories  ✓

donto-memory itself is independently benchmarked on LongMemEval (faithful, no-cheating; codex reader + judge).