mcpField
S
StateJar memory

StateJar memory

Remote
statejar.comMemory & Knowledge0Updated 2d ago

About StateJar memory

StateJar integrations provide typed, versioned fact memory for coding agents and assistants, rather than storing conversation transcripts. They include plugins, skills, a CLI, and a hosted MCP server; the hosted server is stated to become available with StateJar's next release.

Key features

  1. 01Store type-checked facts
  2. 02Keep append-only version history
  3. 03Recall only question-relevant facts
  4. 04Record disclosures in an audit trail
  5. 05Verify content-addressed memory states

Use cases

  1. 01Save durable facts across agent sessions
  2. 02Retrieve only facts relevant to a query
  3. 03Review which memory was disclosed
  4. 04Check whether a memory copy matches its state handle

MCP support

A hosted HTTP MCP server is documented at `https://statejar.com/mcp`, with ten tools for remembering, searching, retrieving, managing, auditing, verifying, and exporting facts. The README says this endpoint is not yet live and is planned for StateJar's next release.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://statejar.com/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

All endpoints
Streamable HTTPhttps://statejar.com/mcpAuth required

Tools

Details

From the project README

StateJar integrations

Client code that connects AI coding agents and assistants to StateJar, the memory layer that stores facts instead of transcripts:

  • one value per field, checked by its type: a value that fails is refused, with a reason;
  • append-only versions: every change is a new version, and the old value stays in history;
  • minimal-disclosure recall: an assistant gets only what the question needs;
  • an audit trail of every disclosure;
  • a handle per state (shm_…, the SHA-256 of the canonical state), so any copy of the memory can be checked.
SurfaceWhereStatus
Hosted MCP server (any client that speaks MCP over HTTP)https://statejar.com/mcplive with StateJar's next release
Claude Code pluginplugins/statejar/, guide in claude-code/marketplace: this repository
Codex plugin (the same plugin)plugins/statejar/, guide in codex/marketplace: this repository
OpenCode pluginopencode/npm: opencode-statejar
Hermes Agent memory provider (memory.provider: statejar)hermes/statejar/hermes plugins install from this repository
OpenClaw memory-slot pluginopenclaw/npm: openclaw-statejar
Agent skill (any agent that reads SKILL.md)skills/statejar/copy into the agent's skills folder
CLI: statejar login, and init, add, search, list, forget, export, statusPyPI: statejarpip install statejar (0.6.0 has login, logout, whoami; the other seven come in 0.7.0)

Every integration uses a StateJar developer key (https://statejar.com/api-keys), scoped to your account. None of them stores a transcript. Each removes secrets before anything is sent.

Availability. Recall and capture call StateJar's REST API at https://api.statejar.com, which is live. The hosted MCP server at https://statejar.com/mcp, which the plugins' StateJar tools use, goes live with StateJar's next release. Until then those tools cannot connect, and recall and capture work as they are.

Any MCP client

Make a developer key at https://statejar.com/api-keys and put it in STATEJAR_API_KEY. Then:

# Claude Code
claude mcp add --transport http statejar https://statejar.com/mcp --header "Authorization: Bearer $STATEJAR_API_KEY"
# Codex
codex mcp add statejar --url https://statejar.com/mcp --bearer-token-env-var STATEJAR_API_KEY

OpenCode, in opencode.json:

{
  "mcp": {
    "statejar": {
      "type": "remote",
      "url": "https://statejar.com/mcp",
      "oauth": false,
      "headers": { "Authorization": "Bearer {env:STATEJAR_API_KEY}" }
    }
  }
}

Any other client: a remote (HTTP) MCP server at https://statejar.com/mcp with the header Authorization: Bearer <your key>. The ten tools are remember, search, get, list, update, delete, history, audit, verify and export.

Claude Code

claude plugin marketplace add KING-OF-FLAME/statejar-integrations
claude plugin install statejar@statejar

See claude-code/README.md.

Codex

codex plugin marketplace add KING-OF-FLAME/statejar-integrations
codex plugin add statejar@statejar

Then trust the plugin's hooks with /hooks. See codex/README.md.

OpenCode

Add "plugin": ["opencode-statejar"] and StateJar's MCP server to opencode.json. See opencode/README.md.

Hermes Agent

hermes plugins install KING-OF-FLAME/statejar-integrations/hermes/statejar --enable
hermes memory setup          # choose statejar

See hermes/statejar/README.md.

OpenClaw

openclaw plugins install openclaw-statejar
openclaw statejar init       # the memory slot, autoRecall, autoCapture

See openclaw/README.md.

Agent skill

Copy skills/statejar/ into your agent's skills folder (for Claude Code, ~/.claude/skills/). See skills/README.md.

How StateJar compares with Mem0, measured

On StateJar's memory-QA set (100 conversations, 300 questions), with the same small local model for both systems (Qwen3-4B-Instruct-2507 Q4, on one GPU), StateJar's memory held the answer for 248 of 300 questions and Mem0's (2.2.1, as shipped) for 152 of 300 (McNemar p = 1.4e-18). Answers written by one prompt from each system's memory were right 218 of 300 times for StateJar and 159 of 300 for Mem0. This is one benchmark, in that setting only. The method and the caveats: https://statejar.com/docs/mem0.html.

Tests

python -m pytest tests/
claude plugin validate ./plugins/statejar && claude plugin validate .

End to end, against a local or staging StateJar (never production): a fact stated in one session of the real client is recalled in a fresh one, through the hooks and through StateJar's MCP tools. Each run makes a throwaway account and deletes it. With no model on the machine, a scripted stand-in (e2e/scripted_model.py) answers "OK" or calls StateJar's search and repeats its output verbatim; codex_e2e.py --model ollama:<name> uses a real local model.

python e2e/codex_e2e.py --api http://127.0.0.1:8000/api/v1 --mcp http://127.0.0.1:8000/mcp --out /tmp/codex-e2e
python e2e/claude_code_e2e.py --api http://127.0.0.1:8000/api/v1 --mcp http://127.0.0.1:8000/mcp --out /tmp/cc-e2e
python e2e/opencode_e2e.py --api http://127.0.0.1:8000/api/v1 --mcp http://127.0.0.1:8000/mcp --out /tmp/oc-e2e
python e2e/hermes_e2e.py --api http://127.0.0.1:8000/api/v1 --out /tmp/hermes-e2e
python e2e/openclaw_e2e.py --api http://127.0.0.1:8000/api/v1 --out /tmp/openclaw-e2e     # Node 24.16+
python e2e/openclaw_discovery.py       # what OpenClaw itself loads from the plugin; no model, no StateJar
HERMES_PYTHON=/path/to/hermes/venv/bin/python python -m pytest tests/test_hermes_provider.py   # with Hermes's own loader
python e2e/codex_discovery.py          # what Codex itself loads from the plugin; no model, no StateJar

Licence

MIT (see LICENSE). The StateJar service these clients talk to has its own terms: https://statejar.com/terms.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.