EMILIA Protocol MCP Server

Ask for human sign-off on one exact consequential agent action, then check and verify its receipt

Official · EMILIA Protocol JavaScript Local · stdio SecurityAI and ML

38 popularity score ★ 554 ↓ 74/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs EP_API_KEY. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add emilia-protocol -e EP_API_KEY=<EP_API_KEY> -- npx -y @emilia-protocol/mcp-server
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "emilia-protocol": {
      "command": "npx",
      "args": [
        "-y",
        "@emilia-protocol/mcp-server"
      ],
      "env": {
        "EP_API_KEY": "<EP_API_KEY>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "emilia-protocol": {
      "command": "npx",
      "args": [
        "-y",
        "@emilia-protocol/mcp-server"
      ],
      "env": {
        "EP_API_KEY": "<EP_API_KEY>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "emilia-protocol": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@emilia-protocol/mcp-server"
      ],
      "env": {
        "EP_API_KEY": "<EP_API_KEY>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.emilia-protocol]
command = "npx"
args = ["-y", "@emilia-protocol/mcp-server"]

[mcp_servers.emilia-protocol.env]
EP_API_KEY = "<EP_API_KEY>"
Gemini CLITerminal
gemini mcp add --scope user -e EP_API_KEY=<EP_API_KEY> emilia-protocol npx -- -y @emilia-protocol/mcp-server

Settings 6

EP_API_KEY Required: EMILIA API key (ep_live_...); needed by ep_guard_action, ep_check_signoff and all write tools.
EP_BASE_URL Optional: EMILIA API address; defaults to https://www.emiliaprotocol.ai and must be HTTPS except on loopback.
EP_INCLUDE_PROTOCOL_TOOLS Optional: Set to true to add the 12 handshake, commit and delegation tools.
EP_INCLUDE_REGISTRY_TOOLS Optional: Set to true to add the older registry, reputation and dispute tools.
EP_AUTO_RECEIPT_OPT_IN Optional: Set to true to turn on automatic receipts from tool-call events.
EP_AUTO_RECEIPT_ENTITY_ID Optional: Entity id that automatic receipts are recorded for.

What it does

This is the MCP server of EMILIA Protocol, a service for authorising high-stakes agent actions such as payments, deletions or production deploys. Before acting, the assistant describes the exact action (type, target, amount, destination, a summary) and the server sends it to the EMILIA service, which evaluates its policy, mints a receipt and, where the policy asks for it, opens a sign-off for a named person. The assistant then polls that sign-off and can verify the stored receipt and its anchor.

Out of the box the server advertises three tools: ep_guard_action, ep_check_signoff and ep_verify_receipt. The package holds 36 tools in total (index.ts): setting EP_INCLUDE_PROTOCOL_TOOLS=true adds 12 handshake, commit and delegation tools, and EP_INCLUDE_REGISTRY_TOOLS=true adds the remaining older registry tools for trust profiles, receipts, disputes, leaderboards, commitment proofs and package install pre-checks.

The server itself only orchestrates the approval. It does not hold the credentials of whatever performs the action and does not consume the receipt at the moment of effect; its makers point to their separate @emilia-protocol/mcp-guard and @emilia-protocol/scan packages for that part. It runs locally over stdio and makes HTTPS calls to the EMILIA API at www.emiliaprotocol.ai unless EP_BASE_URL points elsewhere.

What it needs

RuntimeNode.js 20+

Node.js 20 or later (the package's engines field) to run it with npx. An EMILIA Protocol API key (EP_API_KEY, keys start ep_live_) for the default guard and sign-off tools; the server starts without one, but those tools return an error. Network access to the EMILIA service. A person able to approve sign-offs, for example with a passkey, when the policy requires one.

Limits

Without EP_API_KEY, the guard, sign-off and other write tools return an error; only public reads work. Installing it does not stop another tool from acting: the executor must match and consume the receipt itself. EP_BASE_URL must be HTTPS (HTTP only on loopback) or the server will not start. API calls time out after 15 seconds and responses over 8 MB are rejected (index.ts). The README's config example sets EP_BASE_URL to https://emiliaprotocol.ai; the source notes that host redirects to www and the redirect drops the Authorization header, so signed-in calls fail with 401. Leave EP_BASE_URL unset (default https://www.emiliaprotocol.ai). ep_install_preflight is marked experimental.

Who it suits

Teams that let an assistant prepare payments, deletions or deploys and want a named person to approve the exact action, with a receipt they can check later. It needs an account on the EMILIA service, and approvals pass through that service, so it does not suit offline or self-contained setups. It also does not block anything on its own: if you need the tool that performs the action to refuse calls that lack a receipt, the makers point to their @emilia-protocol/mcp-guard wrapper instead.

Tools 36

ep_guard_action
Submit an exact action for policy evaluation; mints a receipt and opens a human sign-off when required
ep_check_signoff
Report whether a sign-off is pending, denied, approved or already consumed
ep_verify_receipt
Check a stored receipt and its anchor through the EMILIA service
ep_initiate_handshake
Start an identity exchange between parties (protocol set)
ep_add_presentation
Add an identity proof to an open handshake (protocol set)
ep_verify_handshake
Evaluate a handshake's proofs against a policy (protocol set)
ep_get_handshake
Fetch the full state of a handshake (protocol set)
ep_revoke_handshake
Revoke an active handshake (protocol set)
ep_issue_commit
Issue a signed commit ahead of a high-stakes action (protocol set)
ep_verify_commit
Check a commit's signature, status and validity (protocol set)
ep_get_commit_status
Read the current state of a commit (protocol set)
ep_revoke_commit
Revoke an active commit (protocol set)
ep_bind_receipt_to_commit
Attach a post-action receipt to a commit (protocol set)
ep_create_delegation
Record that a principal authorises an agent to act for them (protocol set)
ep_verify_delegation
Check a delegation covers a given action (protocol set)
ep_trust_profile
Fetch an entity's trust profile (registry set)
ep_trust_evaluate
Evaluate an entity against a trust policy with reasons (registry set)
ep_trust_gate
Allow/review/deny check on an entity before an action (registry set)
ep_submit_receipt
Record the outcome of a transaction with an entity (registry set)
ep_batch_submit
Submit up to 50 outcome receipts at once (registry set)
ep_domain_score
Trust scores per domain such as financial or code (registry set)
ep_search_entities
Find registered entities by name, type or capability (registry set)
ep_register_entity
Register a new entity and receive its first API key (registry set)
ep_leaderboard
List entities ranked by trust confidence (registry set)
ep_install_preflight
Experimental check before installing a plugin or package (registry set)
ep_dispute_file
Challenge a receipt as wrong or fraudulent (registry set)
ep_dispute_status
Check where a dispute stands (registry set)
ep_appeal_dispute
Appeal a dispute decision (registry set)
ep_report_trust_issue
File a trust report without an API key (registry set)
ep_principal_lookup
Find the principal that stands behind entities (registry set)
ep_lineage
Show an entity's predecessors and continuity flags (registry set)
ep_delegation_judgment
Score how well a principal picks and oversees agents (registry set)
ep_configure_auto_receipt
Turn automatic receipts from tool-call events on or off for the session (registry set)
ep_generate_zk_proof
Create a commitment proof for a score claim (registry set)
ep_verify_zk_proof
Verify a commitment proof by its id (registry set)
ep_list_policies
List the available trust policies (registry set)

Similar servers