MCP tools
Give any agent a memory that can say “I’m not sure that’s still true.” Thirteen tools, one endpoint, and no way for the agent to approve its own mistakes.
The endpoint
| URL | https://YOUR-HOST/api/mcp |
| Transport | Streamable HTTP, stateless (a fresh server for every request, JSON responses) |
| Methods | POST for calls. GET and DELETE are also routed to the same handler. |
| Auth | Authorization: Bearer sk_… (an API key) |
| Role needed | member or higher. The key decides which workspace the agent can see. |
| Server name | stale-memory |
Connect a client
- Make a keyIn the app, open Settings → API keys and create one. It is shown once; Stale only keeps a hash.
- Add the serverPick your client below.
- Ask something“What is stale in memory right now?” should call
memory_overview.
The loop your agent should follow
The server ships these instructions to the agent automatically. In human words:
- Register sources, and mark untrusted ones honestly.
- Remember facts with a source, and derive beliefs and decisions from the nodes they rely on.
- Propose every action with
propose_actionbefore doing it. - Check with
check_actionright before acting. Never act on a blocked action. - Update with
update_factwhen the world changes, then repair withrepair_planandresolve, root-first.
Explore every tool
Pick a tool to see its arguments, when to call it, and a ready-to-send payload.
13 tools, grouped by the job they do.
remember
Store a fact, or a belief or decision derived from existing nodes.
Use it when: Whenever the agent learns something. Facts need a source. Beliefs and decisions need the nodes they depend on.
Arguments
| kind * | fact | belief | decision · Actions use propose_action instead. |
| content * | string · One clear statement. |
| source_id | string · Required for facts. |
| depends_on | string[] · Required for beliefs and decisions. Every dependency must be currently valid; you cannot build on stale knowledge. |
| confidence | number 0–1 · How sure you are. |
| id | string · Optional fixed id. Up to 64 characters: letters, digits, _ . : - |
Example call
Returns
The stored node.
approve_action. Overriding the firewall is a human decision, available only through the REST API. An agent cannot approve its own blocked action.When something goes wrong
Errors come back as an MCP tool result with isError: true and a JSON body the agent can read:
Typical causes: a dependency is stale or superseded (repair it first), a node id doesn’t exist, the id is already taken, or the action is blocked by the firewall (403).