MCP SERVER

Your agent speaks APPEN natively.

APPEN ships a stdio MCP server, so Claude (Desktop, Code) and any MCP-capable agent can declare purchases, manage envelopes, and place holds as first-class tools, with no HTTP plumbing in your prompt. The security model is the point: the server process holds the agent key; the model sees only decisions. No key, no card number, and no approval power ever enter the context window.

Hook it up

Claude Desktop / Claude Code — mcp config
{
  "mcpServers": {
    "appen": {
      "command": "python",
      "args": ["-m", "services.mcp_server"],
      "env": {
        "APPEN_API_BASE": "<your API base>",
        "APPEN_AGENT_KEY": "ak_live_..."
      }
    }
  }
}

The tools your agent gets

declare_intent        # ask to buy: merchant, category, amount → decision + per-rule trace
confirm_intent        # close the loop with the actual total
list_intents          # read its own decision history (including declines + reasons)
set_envelope          # propose a category budget (subject to its key's tool scope)
list_envelopes
list_attached_cards   # handles + last-four only — never a number
create_hold / capture_hold / release_hold / list_holds   # the auth-hold pattern

Note what's absent: no approve tool, no key-minting tool, no card-number tool. The human gates stay human: a parked purchase waits for you in the dashboard, the TUI, or one API call, no matter what the model asks for.

Why the decline trace matters for agents

A denied intent returns the exact rules that fired. The trace doubles as feedback the agent can use: "$412 exceeds the $30 ceiling" teaches it to re-plan inside the budget instead of hammering retries into a black box.

WHERE THIS RUNS TODAY

The rule engine decides every declared intent today — live in the API, the MCP server, and the demo. Enforcement on real card swipes begins at our BIN connection with our issuing partner, when the same pre-authorized, user-directed policies execute inside the network authorization step. Card issuance opens by invite once our issuing-partner sandbox is live.