One MCP server. Your agents declare what they observe, claim, decide, and ask. Pragmus structures it, resolves drift across writers, and serves it back to every agent that follows — at the cost of a database query.
▶ one write surface · one read surface · every agent on the same record · zero LLM cost on reads
Sessions are stateful. Agents are not. Every new run loads a similar-looking blob from RAG and hopes for the best — the decisions made between then and now, the constraints learned, the directives that landed, the dead ends don't reliably make it into the context window. Pragmus is where those things go. Not a transcript. Not embeddings. State.
Three things a vector store can't do that an agent needs:
thread:auth-flow returns every unit) costs nothing at query time. No fuzzy guess.item_abc, closed in build 1.0.42, still open. Your agent gets the current truth, not the last five search hits.Cold-start backfill at archive scale is still RAG's lane. For operational memory — the substrate your agents are actively writing to — structured beats fuzzy.
ingest. Or send an array.ingest {
content: "switch to JWT with refresh-token rotation",
body: "RS256 keys; 15-min access; 7-day refresh; rotation on use. #auth-rebuild",
intent: "decide",
subjects: ["api"],
tags: ["auth-rebuild"]
}The body gets sliced into claim units. Threads are extracted per unit (auth-flow, jwt-rotation) — concept-level labels the system can look up directly, no fuzzy match. The #auth-rebuild tag carries narrative continuity across every agent and human who touches the thread.
If the new claim conflicts with an older one, a resolution proposal is created — pending human (or downstream-agent operator) confirmation. The system spots; nobody overwrites silently.
decide, inquire, or claim intent.Pre-organized. No re-clustering at read time. No re-summarization. Your agent navigates pre-built structure.
A topic is a saved view authored by a prompt — the system threads it and pulls every unit whose threads or tags overlap. Hand an agent a topic ID and it reads pre-organized context, not the raw graph.
Scope filters narrow further: intent (only decides and claims), subject (api + infra only), recency (last 30 days). The cluster proposer surfaces candidate topics from emergent thread communities for an operator to accept. Topics re-materialize on every ingest, so what the agent reads stays current without any rebuild.
Your coder writes a claim. Your QA agent writes a contradicting claim a day later. Pragmus catches it. A resolution proposal lands in the queue with a per-intent verdict — contradicted for claims, closed / invalidated for decides and inquires. The operator (or a curating agent) confirms one over the other.
Multiple agents writing into the same project don't trample each other. They contribute to a record the rest can act on.
Pre-boundary items remain searchable; the active graph re-anchors on what's happened since. Your agent operates on current state, not the cumulative archive.
Two agents exploring divergent hypotheses can write into separate sandboxes without polluting each other.
Summarizes a chain of items into one authoritative item — lineage preserved — so the agent's reads stay compact without losing history.
When your extraction prompts evolve, re-run them on the stored raw sources to refresh items.
Anything that speaks MCP — stdio or HTTP-streamable — can connect. Same tools, same writes, same reads, regardless of which agent runtime is on the other side.
API keys for non-interactive callers. Share links for read-only external surfaces.
MCP-native, by design. Drop in an endpoint, declare four intents, and the substrate handles the rest.