Rather not touch your agent’s code? Install Fidacy as an MCP server. An MCP-native host (Claude Desktop, Cursor, any MCP client) loads it and your agent gets the tools directly. One install wires two things: a signed verdict on any action, and the non-custodial payment firewall. Same engine, same signed proof as the SDK.
Two surfaces onto the same engine. Pick by how you want to integrate, not by what you get.
HowImport @fidacy/sdk and call it in code (SDK), or the host installs the server with no code change (MCP).
FitsYou own the agent source → SDK. You run an MCP-native agent → MCP.
GivesSDK: signed verdict. MCP: signed verdict + payment firewall.
ProofBoth emit the same verifiable JWS.
They are not exclusive. Use the SDK in one service and the MCP in another — both emit the same signed, verifiable artifacts.
Add one server to your MCP host config. It speaks MCP over stdio. The only thing you need to start is an engine key for verdicts:
{
"mcpServers": {
"fidacy": {
"command": "npx",
"args": ["-y", "@fidacy/mcp"],
"env": {
"FIDACY_ENGINE_URL": "https://api.fidacy.com",
"FIDACY_ENGINE_API_KEY": "fky_test_…"
}
}
}
}Use a fky_test_… key while you build (sandbox, never counts as live), then swap to fky_live_…. Mint one at app.fidacy.com scoped to assess:write.
To also gate real payments, point the firewall tools at a firewall-core service you run (the live reference deployment is https://fidacy-core.vercel.app). Add three env vars to the same server:
"FIDACY_MODE": "http", "FIDACY_API_URL": "https://your-core.example.com", "FIDACY_API_KEY": "…" // the MCP -> core shared secret
One install exposes four tools. assess_action calls the engine; the rest call your firewall core.
assess_actionReturns a signed trust verdict (approve / review / deny) on a proposed action. The proof is a JWS, verifiable by anyone.
request_paymentGates a payment against a signed mandate. ALLOW mints a short-lived Ed25519 grant; DENY returns the violated rule. No money moves here.
verify_mandateReturns the active mandate for a subject — the rules the agent is bound to.
get_audit_proofReturns the append-only, hash-chained audit proof for a decision.
Moving the money is a separate, deliberate step. The companion @fidacy/executor exposes one tool, execute_payment, that you couple to your PSP. It refuses anything without a valid grant bound to that exact request, so a hijacked agent cannot pay past it.
/v1/assess{
"decision": "approve", // approve | review | deny
"score": 0.12,
"assessmentId": "…",
"riskPayloadJws": "eyJ…", // the signed receipt
"signingKeyId": "…",
"mandate": { /* carries risk_data */ },
"outcome": { /* signals, reasons */ }
}approve execute the action. review step up to a human before clearing — never a soft approve. deny block the action and surface the reasons. Fail safe: on any error, treat it as review, never approve.
The riskPayloadJws, and every firewall grant, is signed with the engine’s Ed25519 key. Any party verifies it offline against the public JWKS, with zero calls back to Fidacy. Copy-paste verification is on the Verify a Payload page.
/.well-known/jwks.json