- Language
- Python
- Last commit
- 1h ago
- Forks
- 0
- Open issues
- 0
- Registry update
- Oct 13, 2026
Connect
pypi$claude mcp add abe \ -e ABE_POLICY=<abe-policy> \ -e ABE_RESOLVER=<abe-resolver> \ -e FLOW_API_KEY=<flow-api-key> \ -- uvx abe-ai==0.2.3
Environment variables
ABE_POLICYrequiredAbsolute path to your abe-policy.yaml (create one with: uvx abe-ai init)
ABE_RESOLVERSet to flow to send escalations to Flow (needs FLOW_API_KEY). Default: none, nothing leaves your machine.
FLOW_API_KEYsecretFlow Resolver key (fjp_live_...), only with ABE_RESOLVER=flow. https://fjp.flowinfo.co/credits
Security review
Review passedReviewed 24m ago.
- metadata
- scanned
- packages
- 1 checked
No findings.
Tools
This server runs on your machine, so its tool list is not fetched before install — the README below describes what it offers.
Abe (TypeScript / Node ≥ 18) — npm install abe-ai

Abe is one control point before an AI agent acts.
It checks a proposed action against your policy and returns ACT, BLOCK or ESCALATE, plus an immutable,
hash-verified Judgment-Grounded Record of why. It runs entirely on your machine: no account, no API key, no
network, no model. Median evaluation time is well under a millisecond.
npm install abe-ai
npx abe init # writes abe-policy.yaml + request.json
npx abe check request.json
Decision: ESCALATE
Reason: FINANCIAL_THRESHOLD_EXCEEDED
Rules: purchase_review_limit
Risk: MEDIUM
Record: jgr_01M3Q4...
Python
from abe import Abe
abe = Abe("abe-policy.yaml")
result = abe.check(
action={"type": "wire_transfer", "amount": 50000},
context={"agent_id": "finance-agent"},
)
if result.decision == "ACT":
... # execute exactly as evaluated
elif result.decision == "BLOCK":
... # do not execute; tell the user result.reason_code
else: # ESCALATE
... # hold; ask a human, or let a resolver decide
result.record.to_dict() # the Judgment-Grounded Record (store it, ship it to your SIEM)
TypeScript
import { Abe } from "abe-ai";
const abe = new Abe({ policy: "./abe-policy.yaml" });
const result = await abe.check({
action: { type: "purchase", amount: 12500, currency: "USD" },
context: { agent_id: "procurement-agent", principal_id: "user_123" },
});
console.log(result.decision); // "ESCALATE"
A policy
version: "0.1"
defaults: { unmatched: ESCALATE } # nothing matched -> needs judgment (fail closed)
rules:
- id: purchase_hard_limit
when: { all: [ { field: action.type, op: eq, value: purchase }, { field: action.amount, op: gt, value: 100000 } ] }
decision: BLOCK
reason_code: HARD_POLICY_VIOLATION
- id: purchase_review_limit
when: { all: [ { field: action.type, op: eq, value: purchase }, { field: action.amount, op: gt, value: 10000 } ] }
decision: ESCALATE
reason_code: FINANCIAL_THRESHOLD_EXCEEDED
- id: routine_purchase
when: { all: [ { field: action.type, op: eq, value: purchase }, { field: action.amount, op: lte, value: 500 } ] }
decision: ACT
judgment_required:
- action.type: terminate_employee
Also: authorization per agent, required evidence, risk and irreversibility thresholds, confidence minimums.
BLOCK beats ESCALATE beats ACT. Bad input or a broken rule returns ESCALATE / EVALUATION_FAILURE, never ACT.
Full reference: SPEC.md.
Every way to run it
| Library | pip install abe-ai · npm install abe-ai |
| CLI | abe check · validate-policy · validate-record · conformance · keygen |
| Local HTTP sidecar | abe serve --policy abe-policy.yaml → POST http://127.0.0.1:8787/v1/check (any language) |
| Docker sidecar | docker run -e ABE_TOKEN=… -v $PWD:/policy:ro -p 127.0.0.1:8787:8787 ghcr.io/flowinfosystems-index/abe |
| MCP server | pip install "abe-ai[mcp]" → abe mcp --policy /abs/abe-policy.yaml (tool: fjp_check_action) |
Records you can audit
Every call returns a record with the decision, every matched rule, the exact policy hash, the request hash,
and a SHA-256 record_hash (optionally Ed25519-signed with abe keygen). Records never change: outcomes and
resolutions are appended as linked records. Each one is a valid FJP-CONF v0.1 Judgment-Grounded Record.
abe check request.json --record-out jgr.json --sign-key abe-signing-key.pem
abe validate-record jgr.json --public-key abe-signing-key.pub.pem
When rules aren't enough: Flow
Abe is deliberately useful without Flow. When it returns ESCALATE, you can hand that one action to
Flow's judgment service and get a verb, a reason and a falsifiable record back:
from abe import Abe
from abe_flow import FlowResolver # pip install abe-flow
abe = Abe("abe-policy.yaml", resolver=FlowResolver(api_key=os.environ["FLOW_API_KEY"]))
ACT and BLOCK never leave your machine. Only escalations are sent (redacted), and if Flow is unreachable the
answer simply stays ESCALATE. Human-approval escalations are never auto-resolved.
Conformance
abe conformance --bench # FJP-CONF v0.1 Gate profile, Level 3 — 160 checks, offline
Repository
SPEC.md the normative specification
schemas/ JSON Schemas (request, response, record, policy)
python/ abe-ai (PyPI): core, CLI, HTTP, MCP, stores, signing, conformance
typescript/ abe-ai (npm): same API, same records, same hashes
flow-resolver/ abe-flow (PyPI): Gate → Flow for ESCALATE only
conformance/fixtures/ golden decisions + canonical-JSON vectors shared by every SDK
examples/ purchasing, software agent, physical agent, travel (+ Judd), Flow
Apache-2.0. FJP™, Abe™ (Abe) and FJP-CONF™ are trademarks of Flow Information Systems — see TRADEMARKS.md.
Notes for Node
check()is async; resolvers may be sync or async and are bounded byresolverTimeoutMs(default 15 s).- Records are deep-frozen objects: any mutation throws
TypeError. - Stores:
MemoryStore,FileStore(JSON Lines),CallbackStore, or implementRecordStore(save/get/linked). - Flow for Node: copy
examples/flow/flow-resolver.mjs(zero dependencies). - Records and hashes are byte-identical to the Python SDK (verified in CI).
From the server's repository — third-party content, read it before running anything it suggests.
More in Other
KI-Radar24
de.ki-radar24
Find AI tools, AI agencies and AI freelancers in Europe – search the KI-Radar24 directory.
DanceFlow
io.github.kieransimkin
Local KeywordMoves and PixelCue tools for agents. https://kieransimkin.co.uk/danceflow/
Evolize
com.evolize
Accessibility scans with evidence, public reports, and fresh checks after fixes.
Deep Agentic Core MCP
io.github.DeepAgentLabs
Unified MCP server for AgenticLens and Agentic Chaos capabilities.
firenum retirement planner
com.firenum
When can you retire? A FIRE plan from your numbers, graded by Monte Carlo and every year since 1872.
BridgeDays
io.github.maleksandrov
Plan annual leave around public holidays: bridge days and long weekends for 200+ countries.
Listing from the official MCP Registry · repository facts from GitHub, 26m ago.