About policyrecall
policyrecall is a CLI and stdio MCP server for agents that need policy-checked tool calls. It registers an agent identity and signs recall and live-policy calibration requests with a locally held Ed25519 key.
Key features
- 01Register agent identity with Ed25519
- 02Recall compliant tool-call versions
- 03Calibrate calls against live policy
- 04CLI and stdio MCP server
Use cases
- 01Check a proposed payment call against fintech policy
- 02Calibrate a tool call before execution
- 03Register an agent before making signed requests
MCP support
Its stdio MCP server exposes identity registration, policy-verified recall, and live-policy calibration as tools.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
3Saved tool list · updated 1w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_confirmed | boolean | Yes | Must be true: the user confirmed registering a new agent identity. |
Details
From the project READMEpolicyrecall
policyrecall is a client for a hosted operational-memory service. Once an agent identity is registered, the service can recall a policy-verified compliant version of a tool call you are about to make, and it can calibrate a call against live policy. Requests are signed with a locally held Ed25519 key, so the service can tell that a call really came from the registered agent. One binary serves a command-line interface and a stdio MCP server.
Identity and configuration
Before recall or calibration can work, an identity must exist:
policyrecall achromat_register_identity --user-confirmed true
Registration generates a fresh Ed25519 keypair, computes a small
proof-of-work over the public key, and sends the public key to the
service. The private key is saved only after the service accepts,
as a PKCS#8 PEM file with owner-only permissions (0600).
Registering again while a key file already exists is an error —
the existing key is never overwritten. Recall and calibrate with
no key file fail with an error that says identity setup is
required and names the registration step.
Two environment variables configure the client:
| Variable | Default |
|---|---|
ACHROMAT_BASE_URL | https://mom.achromat.ai |
ACHROMAT_AGENT_KEY_FILE | ~/.achromat/achromat_agent_key.pem |
Unlike the original server, which offers its tools dynamically depending on key state, policyrecall always lists all three tools and applies the state check when a tool is called.
Install
npx @reneturcios/policyrecall --version
Or run the container image:
docker run -i ghcr.io/cloudcorprecords/policyrecall
The container defaults to the MCP server (see below). Pass CLI arguments to use it as a CLI instead.
CLI
The subcommands mirror the MCP tool names:
policyrecall achromat_register_identity --user-confirmed true
policyrecall achromat_recall \
--domain fintech \
--tool-name send_payment \
--task-description "Pay a verified vendor invoice on time" \
--arguments '{"amount": 42, "currency": "USD"}'
policyrecall achromat_calibrate \
--domain robotics \
--tool-name move_arm \
--task-description "Move the arm to the loading position" \
--arguments '{"joint": 2, "angle": 45}' \
--trap-id trap-7
policyrecall --version
--arguments takes a JSON object. Results print the upstream
JSON payload. Exit codes: 0 on success, 1 when a call fails
(including a missing identity or an upstream error), 2 for
usage errors.
MCP server
The mcp subcommand starts a stdio MCP server:
npx -y @reneturcios/policyrecall mcp
MCP client configuration:
{
"mcpServers": {
"policyrecall": {
"command": "npx",
"args": ["-y", "@reneturcios/policyrecall", "mcp"],
"env": { "ACHROMAT_BASE_URL": "https://mom.achromat.ai" }
}
}
}
Tools
| Tool | Input | What it does |
|---|---|---|
achromat_register_identity | user_confirmed (required, must be true) | Generate an Ed25519 keypair, solve a small proof-of-work, register the public key, and save the private key locally. |
achromat_recall | domain, tool_name, task_description, arguments (all required) | Recall a policy-verified compliant version of the described tool call. |
achromat_calibrate | domain, tool_name, task_description, arguments (required), trap_id (optional) | Calibrate the described tool call against live policy. |
domain is one of fintech, industrial_iot, robotics, or
devsecops. task_description is 16 to 1000 characters, and
arguments is the call's argument object, which must not be
empty. Recall and calibrate requests are signed with the local
key; the service receives the tool name under its tool field.
Development
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, fake fetch only
npm run dev # run the CLI from source via tsx
Tests use a fake fetch plus real local key generation and signing in temporary directories; no live service call is made.
License
MIT — see LICENSE.
Comments
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.