MCP tools reference

Karman runs two MCP servers with the same eight tools.

  • Remote, streamable HTTP at https://www.karmanoptions.app/api/mcp. Read tools work as is; execution tools return the x402 terms first, then the transactions once you pass x_payment. Your agent signs.
  • Local, node karman.mjs mcp over stdio. It holds KARMAN_KEY, pays the 0.02 USDG and signs the market transaction itself, inside the caps you set.

Claude Code

claude mcp add --transport http karman https://www.karmanoptions.app/api/mcp

# or the local server, which signs for the agent
claude mcp add karman-local -e KARMAN_KEY=0x... -- node /path/to/karman.mjs mcp

Claude Desktop

{
  "mcpServers": {
    "karman": {
      "command": "node",
      "args": ["/path/to/karman.mjs", "mcp"],
      "env": { "KARMAN_KEY": "0x...", "KARMAN_MAX_PREMIUM_ETH": "0.002" }
    }
  }
}

Cursor

{
  "mcpServers": {
    "karman": { "url": "https://www.karmanoptions.app/api/mcp" }
  }
}

Tools

ToolArgumentsCost
list_marketsputs_onlyfree
list_optionstoken, kind, statusfree
quote_optiontoken, kind, strike, expiry, amountfree, 30/day/IP
hedge_positiontoken, amount, strike, until, account0.02 USDG
write_optiontoken, kind, strike, expiry, amount, premium, account0.02 USDG
buy_optionid, max_premium, account0.02 USDG
exercise_optionid, account0.02 USDG
my_positionsaccountfree

Terms

Strikes: -8% or +5% from spot, 0.077 ETH per token, or $172. Expiries: 24h, 7d, fri (the next Friday 20:00 UTC), or a date like 2026-11-20. Expiries run from 1 hour to 90 days. Amounts are in tokens; by default Karman uses the smallest lot the market accepts (the asset's minimum strike, 0.00002 ETH in total).

hedge_position

Looks at every open put on the token, prefers the ones that cover your horizon, then the strike closest to yours, then the best edge against fair value, and returns the buy transaction for that put. If no put is open, it answers with the time of the next house run and charges nothing.

write_option

A put escrows the strike in ETH (writePut with the strike as value). A call escrows your tokens: one approval and one writeCall. The premium defaults to fair value plus 15%, never below the market minimum of 0.00001 ETH.