{
  "schema_version": 1,
  "product": "Felix",
  "description": "Non-custodial real-money trading infrastructure for AI agents.",
  "base_url": "https://api.felix.trade",
  "runtime_status": "https://api.felix.trade/v1/status",
  "getting_started": "https://felix.trade/docs#getting-started",
  "legal": "https://felix.trade/legal",
  "mcp_resources": [
    "felix://getting-started",
    "felix://agent-index",
    "felix://operations/recovery",
    "felix://strategy/ctx-api",
    "felix://strategy/examples",
    "felix://market-data/websocket",
    "felix://support/agent"
  ],
  "rules": [
    "Never guess instrument identifiers; use search_markets or exhaust list_markets pagination and copy the returned canonical instrument.",
    "Call preview_order before a new live order shape; it is the authoritative minimum, collateral, leverage, liquidity, fee, and auto-funding preflight.",
    "Every executed order uses real money and requires owner-authorized live access.",
    "Reuse the original idempotency key after interruption or ambiguity and reconcile before any new intent.",
    "Treat unavailable account or balance state as unknown, never zero.",
    "MCP 2.0.96+ persists account selection per client process. A reconnect in the same client restores only that client's child; a new client starts on the launcher. Verify get_status.mcp.active_account_id before every money workflow.",
    "Autonomous Polymarket uses a separate deterministic venue-scoped wallet. Fund only the address returned by fund_polymarket_agent_wallet; Felix installs exact exchange approvals automatically.",
    "Resolved autonomous Polymarket positions redeem back into the same agent wallet. If redemption is reconcile_required, observe the existing intent and never submit a replacement close.",
    "A stop loss is optional. If requested, rely on it only when the venue reports that the selected server-side exit mechanism is supported.",
    "Registration and unfunded account reservation spend no chain gas. Felix covers initial wallet-activation gas only after the required deposit, without gaining wallet ownership or withdrawal authority.",
    "Never put owner keys, API keys, signatures, signed transactions, or intent tokens in prompts, logs, URLs, feedback, or source control."
  ],
  "workflows": {
    "cold_start": [
      "After the user reviews the terms, launch npx -y --package felix-mcp@2.0.110 felix-keys onboard --accept-terms --client claude. The agent completes registration, encrypted backup, Claude setup, and verification while all secrets remain in macOS Keychain outside model context.",
      "Call get_custody_recovery_status and require ready:true. It authenticates the encrypted file against the installed identity without exposing a key, recovery code, or file contents.",
      "Reconnect the MCP and read felix://getting-started.",
      "Create the real-money account with create_account and one stable idempotency_key."
    ],
    "first_trade": [
      "get_status",
      "get_money_map",
      "search_markets or complete list_markets pagination",
      "preview_order",
      "place_order",
      "get_situation plus positions and fills"
    ],
    "autonomous_polymarket": [
      "get_polymarket_wallet and verify the autonomous scoped wallet",
      "fund_polymarket_agent_wallet with an exact pUSD amount and durable idempotency_key",
      "deploy the live Polymarket agent; approvals are platform-managed",
      "use get_agent_log and wait_for_events instead of polling",
      "allow resolved positions to redeem into the scoped wallet; reconcile any ambiguous redemption before another close"
    ],
    "first_withdrawal": [
      "get_money_map and get_situation",
      "add_withdrawal_address with local owner signing",
      "list_withdrawal_addresses",
      "withdraw with source:auto and one durable idempotency_key",
      "for USDC.e, use a self-custody Polygon destination unless the receiving exchange explicitly supports contract 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
      "verify operation state, transaction hash, and destination balance"
    ]
  },
  "capability_boundaries": {
    "event_market_synthetic_backtest": "not_first_class",
    "parameter_sweep_and_walk_forward": "not_first_class",
    "portfolio_backtest": "not_first_class",
    "cross_venue_net_delta_and_gross_limit": "not_first_class",
    "tax_lot_statement_export": "not_first_class",
    "runtime_market_and_account_state": "query_runtime"
  }
}
