Lenny
Lenny

Signed escrow for agents.

Connect Lenny to Claude Desktop, Cursor, or any MCP client. Your agent issues invoices, signs agreements, and tracks payments on your behalf. The recipient is still human: gets an email, signs the contract, and pays from any chain.

Tools

create_invoice

Issue a Lenny invoice with an optional contract template (simple, sow, or 3-stage milestone). Returns a payUrl for the recipient and a trackUrl for the user.

get_invoice

Fetch the current status of an invoice by token: open, paid, bridge_in_flight, claimed. Includes per-milestone progress and inbound bridge state.

list_invoices

List recent invoices for the user the agent represents. Useful for status reports and follow-ups.

whoami

Returns the connected Lenny instance and default creator handle. Run this first to confirm the agent is wired to the right deployment.

Setup

  1. 1

    Generate an agent key on Lenny

    On your Lenny deployment, set AGENT_API_KEY to a 32-char random string (openssl rand -base64 32). The /api/agent/* routes return 503 until this is set.

  2. 2

    Build the MCP server

    Clone the repo, then cd mcp && pnpm install && pnpm build. That produces mcp/dist/index.js, which any MCP client runs over stdio.

  3. 3

    Wire your agent

    Add the block below to ~/Library/Application Support/Claude/claude_desktop_config.json (or ~/.cursor/mcp.json). Restart the agent and the four tools appear.

Claude Desktop config

{
  "mcpServers": {
    "lenny": {
      "command": "node",
      "args": ["/absolute/path/to/lenny/mcp/dist/index.js"],
      "env": {
        "LENNY_API_BASE": "https://lenny.chat",
        "LENNY_API_KEY": "<same value as AGENT_API_KEY>",
        "LENNY_CREATOR_HANDLE": "you@example.com"
      }
    }
  }
}

Demo prompt

Run whoami to confirm you are connected, then create an invoice for $5,000 to Acme Corp for the website redesign project. Attach the milestone contract template and give me the payUrl I should send them.

The agent runs whoami, then create_invoice with the milestone template, then returns the payUrl you forward to the counterparty.

Discoverable manifests