# Felix MCP (npm · felix-mcp)

Non-custodial trading infrastructure for AI agents across prediction markets, crypto, and options.

- Trust score: 78/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-25

## Components

- npm · `felix-mcp`: 78/100 (this document), [markdown](https://verifymcp.io/servers/trade-felix-mcp/felix-mcp.md), [page](https://verifymcp.io/servers/trade-felix-mcp/felix-mcp)

## Channel facts

- Registry: `npm`
- Package: `felix-mcp`
- Version: `2.0.110`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-25.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 35 of 125 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 19/100
  - Repository check failed: no source repository is declared.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 22 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 88/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 12534 tokens (~94/item across 132 items; 125 tools + 7 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 80/100
  - Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 126 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Felix MCP server?

Felix MCP runs locally as an npm package, launched with npx -y felix-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add trade-felix-mcp -- npx -y felix-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "trade-felix-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "felix-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "trade-felix-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "felix-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add trade-felix-mcp -- npx -y felix-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "trade-felix-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "felix-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add trade-felix-mcp --command npx --arg -y --arg felix-mcp
```

### Hermes

```yaml
mcp_servers:
  trade-felix-mcp:
    command: "npx"
    args: ["-y", "felix-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "trade-felix-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "felix-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add trade-felix-mcp -t stdio -c npx -a -y felix-mcp
```

### Other

```json
{
  "mcpServers": {
    "trade-felix-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "felix-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-25 (score 78, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-24 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-22 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-20 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-18 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-13 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-11 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (125)

### `get_status` (~52 tokens)

Fast public platform, local MCP, and current-key status. Set deep:true before onboarding or diagnosing funding to include the sanitized readiness result.

Input parameters:

- `deep` (boolean): Include deep launch-readiness checks. Defaults to false.

### `get_health` (~17 tokens)

Public liveness check. No key required.

### `get_metrics` (~41 tokens)

Authenticated guide to client-observable reliability fields: request ID, server latency, retry timing, and the public status URL. Process and platform diagnostics are not returned.

### `get_custody_recovery_status` (~53 tokens)

Verify that guided onboarding created an encrypted local recovery file which authenticates to the currently installed owner and launcher identity. Returns status only; no key, recovery code, credential, or file contents are exposed.

### `get_strategy_guide` (~71 tokens)

Return the bundled think(ctx) API and hand-written strategy examples without an API key, network request, or generation quota. The same content is published as felix://strategy/ctx-api and felix://strategy/examples.

Input parameters:

- `section` (string): api, examples, or all. Defaults to all.

### `get_market_streaming_guide` (~50 tokens)

Return the bundled secure WebSocket protocol, subscription, reconnect, and backpressure contract without an API key or network request. The same guide is published as felix://market-data/websocket.

### `reload_launcher_key` (~42 tokens)

Reload the current launcher API key and owner signer from macOS Keychain, validate their encrypted workflow journal, and explicitly leave any child account. No secret is returned.

### `use_child_account` (~111 tokens)

Activate a previously created child account for this session by minting and installing its owner-signed live key. After this, fund_market/place_order/etc. operate on the child. The child owner key is derived locally and never reaches Felix.

Input parameters:

- `account_id` (string, required): Child account UUID to activate.
- `force_remint` (boolean): Discard any cached credential for this child and mint a fresh one. Use after the account's scopes, caps, or mandate change; otherwise the cached key is reused.

### `onboard_hyperliquid` (~57 tokens)

Complete Hyperliquid approveAgent onboarding for a child account (needed after the account is funded before it can trade). The owner key signs the approval locally and never reaches Felix.

Input parameters:

- `account_id` (string, required): Child account UUID.

### `derive_api_key` (~192 tokens)

Explicit paper-mode helper. Requires a registered local launcher identity plus paper:true, then creates an isolated zero-fund sandbox with a least-privilege paper key. For cold start read felix://getting-started; for real money use create_account.

Input parameters:

- `accept_terms` (boolean, required): Must be true to confirm acceptance of Felix Terms of Service, Privacy Policy, and Risk Disclosure.
- `activate` (boolean): Switch this local MCP session to the derived key without exposing it. Raw key export is disabled.
- `email` (string): Optional new email for the isolated child. Omit to generate a fresh internal child identity.
- `label` (string): Optional label, max 80 chars. Defaults server-side.
- `legal_version` (string): Current Felix legal bundle version. Omit to use the version bundled with this MCP build.
- `paper` (boolean, required): Required explicit simulation selection. Must be true.

### `search_markets` (~97 tokens)

Search across stocks, crypto, perps, options, and prediction markets with one fuzzy query. Use list_markets for complete venue enumeration.

Input parameters:

- `kind` (string): Optional filter: crypto|stock|perp|option|pm.
- `limit` (number): Max results. Defaults to 20.
- `q` (string, required): Ticker, name, or question, e.g. bitcoin, NVDA, fed rate cut.

### `list_markets` (~138 tokens)

Page deterministically through a venue's complete market catalog, including active, future, resolved, or inactive markets. Follow next_cursor until complete is true.

Input parameters:

- `cursor` (string): Opaque next_cursor from the previous page.
- `kind` (string): Optional venue product filter: Hyperliquid perp|spot; Derive option|perp|erc20.
- `limit` (integer): Page size, 1-200. Defaults to 100.
- `q` (string): Optional text filter within the paginated catalog.
- `status` (string): Lifecycle filter. Defaults to active.
- `venue` (string, required): Venue catalog.

### `get_quote` (~96 tokens)

Price for one instrument. Listed equity tickers can resolve to a live equity-perpetual execution mark rather than the delayed cash share price; inspect product_type, price_role, venue, tradeable, and data_class before using it. research_market provides cash-equity historical context.

Input parameters:

- `instrument` (string, required): Instrument, e.g. BTC, NVDA, option:BTC-20260711-70000-C, pm:<slug>.

### `get_orderbook` (~53 tokens)

Top-of-book/orderbook view for a tradeable instrument.

Input parameters:

- `instrument` (string, required): Instrument, e.g. BTC, NVDA, option:BTC-20260711-70000-C, pm:<slug>.

### `get_option_chain` (~75 tokens)

Option chain for BTC, ETH, SOL, etc: expiries, strikes, greeks, IV, quotes, and tightest_round_trip candidates ranked by quoted spread. Always use preview_order for an exact executable cost check before trading.

Input parameters:

- `underlying` (string, required): Underlying symbol, e.g. BTC, ETH, SOL.

### `research_market` (~88 tokens)

Real historical research cards and agent-ready market signals without using the strategy-generation token budget.

Input parameters:

- `bars` (integer): Historical bars. Free supports 750; paid tiers expose their larger limit in get_subscription.
- `interval` (string): Research timeframe. Defaults to 1h.
- `symbol` (string, required): Ticker such as BTC, ETH, AAPL, SPY, or NVDA.

### `screen_markets` (~56 tokens)

Screen a bounded liquid stock/crypto universe by momentum, trend, RSI, volatility, and dollar volume.

Input parameters:

- `kind` (string): Optional stock or crypto filter.
- `limit` (integer): Maximum rows. Defaults to 25.

### `get_earnings_calendar` (~37 tokens)

Upcoming earnings dates and estimates from the delayed market-data feed.

Input parameters:

- `limit` (integer): Maximum events. Defaults to 15.

### `get_fundamentals` (~41 tokens)

Period-labelled company fundamentals. Live/TTM snapshots and filed figures are returned separately, never silently blended.

Input parameters:

- `symbol` (string, required): Stock ticker.

### `get_equity_option_chain` (~80 tokens)

Delayed consolidated equity-option chain for stocks and ETFs. This is distinct from tradeable Derive crypto options.

Input parameters:

- `limit` (integer): Maximum normalized contracts.
- `max_expiries` (integer): Near-term expiries to load, 1-4. Defaults to 2.
- `symbol` (string, required): Stock or ETF ticker.

### `scan_options_flow` (~116 tokens)

Scan delayed consolidated equity-option chains for unusual volume/open-interest and premium. This is decision support, not tape-level sweep data.

Input parameters:

- `limit` (integer): Maximum rows.
- `min_premium` (integer): Minimum chain-derived premium in USD.
- `min_vol_oi` (number): Minimum volume/open-interest ratio.
- `min_volume` (integer): Minimum contract volume.
- `side` (string): Optional call or put filter.
- `symbols` (array): Optional stock/ETF watchlist. The active tier controls the maximum.

### `get_funding` (~49 tokens)

Perp funding rate for an instrument.

Input parameters:

- `instrument` (string, required): Instrument, e.g. BTC, NVDA, option:BTC-20260711-70000-C, pm:<slug>.

### `preview_order` (~296 tokens)

Preview an order before placing it. No money moves; returns estimated fill, fees, live minimum, collateral, selected venue, and projected Hyperliquid leverage. Set auto_fund:true to include the exact owner-to-venue funding plan without executing it.

Input parameters:

- `allow_leverage` (boolean): Set true only after reviewing collateral. Omitted or false blocks orders whose notional exceeds free Hyperliquid collateral.
- `auto_fund` (boolean): Include a read-only funding plan when venue collateral is short. This preview never moves money.
- `instrument` (string, required): Instrument, e.g. BTC, NVDA, option:BTC-20260711-70000-C, pm:<slug>.
- `limit_price` (number): Optional paper limit price. For live Polymarket market/FOK orders, this is an explicit maximum buy price or minimum sell price that Felix must match exactly; type:"limit" remains paper-only.
- `max_round_trip_loss_pct` (number): Maximum projected immediate round-trip loss for live Derive orders. Defaults to the server safety threshold.
- `reduce_only` (boolean): Only reduce an existing live position when supported.
- `side` (string, required): buy|sell|long|short|yes|no
- `size_usd` (number, required): Dollar notional to spend or trade.
- `type` (string): market|limit. Live supports market only; limit is paper-simulation only.

### `place_order` (~634 tokens)

Place a real-money order by default, optionally funding the selected venue first and attaching a server-monitored OCO exit plan. Set auto_fund:true for one-call local-signing fund-then-trade; it requires an idempotency_key and never exposes the owner key. Set paper:true explicitly to simulate. Leveraged Hyperliquid exposure is blocked unless allow_leverage:true is explicit.

Input parameters:

- `allow_leverage` (boolean): Set true only after reviewing collateral. Omitted or false blocks orders whose notional exceeds free Hyperliquid collateral.
- `auto_fund` (boolean): When true, preflight and locally sign the minimum owner-to-venue funding needed before placing the live order.
- `auto_swap_native_usdc` (boolean): Allow the auto-funding workflow to convert only the needed Polygon native USDC to USDC.e. Defaults to true.
- `break_even_after_pct` (number): After this profit fraction, close if price returns to entry.
- `idempotency_key` (string): Optional retry-safety key; required when attaching an exit plan.
- `instrument` (string, required): Instrument, e.g. BTC, NVDA, option:BTC-20260711-70000-C, pm:<slug>.
- `limit_price` (number): Optional paper limit price. For live Polymarket market/FOK orders, this is an explicit maximum buy price or minimum sell price that Felix must match exactly; type:"limit" remains paper-only.
- `max_auto_fund_usd` (number): Optional hard ceiling on venue funding. When omitted, auto_fund may move only the minimum amount disclosed by preview_order.auto_fund_plan; the separately disclosed network fee still applies.
- `max_holding_minutes` (number): Close after this many minutes regardless of PnL.
- `max_round_trip_loss_pct` (number): Maximum projected immediate round-trip loss for live Derive orders. Defaults to the server safety threshold.
- `paper` (boolean): Set true explicitly for a paper simulation. Omitted or false means real-money execution and requires a live-enabled key.
- `reduce_only` (boolean): Only reduce an existing live position when supported.
- `resume_reconciliation` (boolean): Resume this exact auto-funded order only after confirming its saved workflow state and current balances. Never use a new idempotency key.
- `side` (string, required): buy|sell|long|short|yes|no
- `size_usd` (number, required): Dollar notional to spend or trade.
- `stop_loss_pct` (number): Close when loss from entry reaches this decimal fraction, e.g. 0.05 for 5%.
- `take_profit_pct` (number): Close when profit from entry reaches this decimal fraction, e.g. 0.10 for 10%.
- `trailing_activation_pct` (number): Optional profit fraction required before the trailing stop arms. Defaults to immediate.
- `trailing_stop_pct` (number): Ratchet behind the favorable price by this decimal fraction.
- `type` (string): market|limit. Live supports market only; limit is paper-simulation only.

### `place_batch_orders` (~139 tokens)

Place orders in one explicit mode. mode:live executes real-money orders; mode:paper simulates every item. Mixed or implicit modes are rejected. The schema accepts up to 50 items, but the active tier's order-per-minute allowance applies to the entire batch (10 on free). Processing stops before later live items after the first failure.

Input parameters:

- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `mode` (string, required): Required batch mode: live or paper.
- `orders` (array, required): Orders: {instrument, side, size_usd, type?, limit_price?, allow_leverage?}.

### `cancel_order` (~45 tokens)

Request cancellation of an open/resting order. Filled paper orders are not cancellable; close the returned position_id instead.

Input parameters:

- `order_id` (string, required): Open/resting order id.

### `close_position` (~77 tokens)

Close a caller-owned position by id. Derive closes use a durable asynchronous operation and bounded polling; never resubmit a pending close with a new key.

Input parameters:

- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `position_id` (string, required): UUID position id returned by place_order or get_positions.

### `get_close_operation` (~45 tokens)

Poll a caller-owned asynchronous close operation by its idempotency UUID. This never submits or retries an order.

Input parameters:

- `operation_id` (string, required): Operation UUID returned by close_position.

### `set_exit_plan` (~172 tokens)

Create or replace one encrypted, server-monitored OCO exit plan on an owned Hyperliquid or Derive position.

Input parameters:

- `break_even_after_pct` (number): Profit fraction that activates a break-even exit.
- `idempotency_key` (string, required): Required retry-safety key.
- `max_holding_minutes` (number): Maximum position age in minutes.
- `position_id` (string, required): Owned position UUID.
- `stop_loss_pct` (number): Loss fraction from entry, e.g. 0.05 for 5%.
- `take_profit_pct` (number): Profit fraction from entry, e.g. 0.10 for 10%.
- `trailing_activation_pct` (number): Profit fraction required before trailing protection arms.
- `trailing_stop_pct` (number): Trailing distance as a decimal fraction.

### `get_exit_plan` (~31 tokens)

Read the encrypted exit plan attached to one owned position.

Input parameters:

- `position_id` (string, required): Owned position UUID.

### `list_exit_plans` (~47 tokens)

List this account's exit plans and trigger state.

Input parameters:

- `limit` (number): Maximum plans to return. Defaults to 100.
- `status` (string): Optional plan status filter.

### `cancel_exit_plan` (~49 tokens)

Cancel an armed exit plan. A plan already triggering cannot be cancelled.

Input parameters:

- `idempotency_key` (string, required): Required retry-safety key.
- `position_id` (string, required): Owned position UUID.

### `make_market` (~113 tokens)

Reserved two-sided quote tool. Live use is disabled until compensated two-leg execution ships.

Input parameters:

- `ask_price` (number, required): Ask price. Must be above bid_price.
- `bid_price` (number, required): Bid price.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `instrument` (string, required): Instrument, e.g. BTC, NVDA, option:BTC-20260711-70000-C, pm:<slug>.
- `size` (number, required): Contract/share amount.

### `get_positions` (~21 tokens)

Open paper and live positions, scoped to the key's account.

### `get_fills` (~34 tokens)

Entry/exit fills with prices, fees, and realized PnL.

Input parameters:

- `limit` (number): Optional max rows.

### `get_pnl` (~31 tokens)

Realized/unrealized PnL, fees, net PnL, and open/closed counts.

### `get_portfolio` (~19 tokens)

Portfolio summary: deployed paper capital and live balances.

### `get_balances` (~107 tokens)

Fast venue collateral snapshot plus Polygon cash and paper position count. Provider gaps are returned explicitly instead of hidden behind retries; set wait_for_complete:true to wait through the bounded Derive refresh cycle. This intentionally excludes marked Polymarket positions and owner-wallet balances on other chains; use get_money_map for canonical account-value and money-tracking decisions.

Input parameters:

- `wait_for_complete` (boolean): Wait through up to two bounded Derive refresh attempts. Defaults to false for a fast, explicitly partial response.

### `get_money_map` (~132 tokens)

One call that answers 'where is my money': every wallet, venue, and open-position balance as one flat list, each entry saying what it is for and which call moves it. Defaults to a fast snapshot with explicit freshness; set wait_for_complete:true to wait through bounded venue refreshes. Sources that cannot be verified are listed as unavailable, never assumed zero. Prefer this over get_balances for money-tracking decisions.

Input parameters:

- `wait_for_complete` (boolean): Wait through bounded venue refreshes. Defaults to false; fast snapshots still expose complete, total_complete, spendable_complete, stale_sources, and unavailable.

### `get_network_fee_status` (~47 tokens)

Inspect any active funding network-fee obligation, whether owner funds moved, and whether Felix can safely release it without payment.

Input parameters:

- `account_id` (string): Optional owned child account UUID.

### `resolve_network_fee` (~175 tokens)

Resolve one exact funding-fee obligation. action=release is allowed only when Felix proves no owner funds moved; action=pay locally signs the fixed gas-wallet fee only after a verified owner-value funding transaction.

Input parameters:

- `account_id` (string): Optional owned child account UUID.
- `action` (string): Resolution action. Defaults to release for backward compatibility.
- `confirm_no_owner_funds_moved` (boolean): Must be true for action=release after inspecting get_network_fee_status.
- `fee_obligation_id` (string, required): Obligation UUID returned by get_network_fee_status.
- `idempotency_key` (string, required): Required retry-safety key. Reuse it after any timeout.
- `max_payment_usd` (number): Required caller-approved ceiling for action=pay. The exact fixed gas-wallet fee must not exceed it.

### `swap_native_usdc` (~113 tokens)

Convert Polygon native USDC into USDC.e. This is owner-signed, same-chain, may receive gas assistance, and normally happens automatically inside fund_market.

Input parameters:

- `amount_usd` (number): Amount to swap. Defaults to the entire native USDC balance.
- `idempotency_key` (string, required): Required workflow replay key. Reuse it after any timeout or restart.
- `resume_reconciliation` (boolean): Set true only when resuming this exact interrupted workflow after reconciling its submitted transaction hash.

### `get_deposit_address` (~39 tokens)

Client-owned Polygon deposit address. It accepts native USDC or bridged USDC.e; fund_market automatically converts native USDC locally when needed.

### `verify_custody` (~47 tokens)

Verify this account's Safe owner, threshold, enabled V3 module, immutable bindings, and policy against Polygon chain state.

Input parameters:

- `account_id` (string): Optional owned child account UUID.

### `route_funds` (~215 tokens)

Route live funds from the owner wallet to one venue. The six source_market/destination_market RFQ pairs are discoverable now but execute only after router capabilities report cross_venue_execution_ready:true. Until then they fail before moving money and direct agents to bring_home then fund_market. Felix asks approved LPs first; only owner-wallet funding may use the approved protocol fallback. The owner key signs locally.

Input parameters:

- `account_id` (string): Optional owned child account UUID.
- `amount_usd` (number, required): Amount to route.
- `destination_market` (string): Destination venue for a venue-to-venue transfer. Must differ from source_market.
- `idempotency_key` (string, required): Required RFQ and funding replay key. Reuse it after any timeout.
- `market` (string): Destination for owner-wallet funding. Do not combine with source_market or destination_market.
- `minimum_receive_usd` (number): Optional minimum final venue credit.
- `source_market` (string): Source venue for a venue-to-venue transfer.

### `fund_market` (~238 tokens)

Route funds from the client-owned main EOA to prediction markets, crypto, or Derive options. Native Polygon USDC is automatically converted to USDC.e only as needed, with hashes disclosed. Felix may cover required gas; the owner key signs locally and never reaches Felix.

Input parameters:

- `account_id` (string): Target a specific child account (UUID) instead of the launcher's default account. The child owner key is derived locally; it never reaches Felix.
- `amount_usd` (number, required): Amount to fund.
- `auto_swap_native_usdc` (boolean): Automatically convert only the native Polygon USDC needed for this funding operation. Defaults to true; set false to require a separate explicit swap.
- `idempotency_key` (string, required): Required workflow replay key. Reuse it after any timeout or restart.
- `minimum_receive_usd` (number): Optional minimum final venue credit. The route fails closed before submission when its bounded quote cannot satisfy this floor.
- `resume_reconciliation` (boolean): Set true only after independently confirming the original workflow has no pending or unrecorded side effect.
- `venue` (string, required): Target market account.

### `start_fund_market` (~160 tokens)

Start durable venue funding and return immediately with an operation_id. Prefer this for crypto and options bridges; poll get_money_operation while the owner-signed route settles.

Input parameters:

- `amount_usd` (number, required): Amount to fund.
- `auto_swap_native_usdc` (boolean): Automatically convert only the native Polygon USDC needed for this operation. Defaults to true.
- `idempotency_key` (string, required): Required workflow replay key. Reuse it for the exact operation.
- `minimum_receive_usd` (number): Optional minimum final venue credit. The route fails closed before submission when its bounded quote cannot satisfy this floor.
- `resume_reconciliation` (boolean): Resume only this exact previously reconciled workflow.
- `venue` (string, required): Target market account.

### `get_derive_onboarding` (~42 tokens)

Read the current owner-signed Derive onboarding state. Never returns a private session key.

Input parameters:

- `account_id` (string): Optional owned child account UUID.

### `prepare_derive_onboarding` (~114 tokens)

Prepare exact Derive-chain transactions for the verified owner wallet to send. Felix never receives the owner key.

Input parameters:

- `account_id` (string): Optional owned child account UUID.
- `expiry_days` (number): Session lifetime in days, 1-30. Defaults to 30.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `max_deposit_usd` (number, required): Exact maximum Derive USDC allowance, up to the $1B protocol range.

### `submit_derive_onboarding` (~114 tokens)

Verify the owner's exact prepared Derive transactions after a browser wallet broadcasts them, or relay exact CLI-signed raw transactions.

Input parameters:

- `account_id` (string): Optional owned child account UUID.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `signed_raw_transactions` (array): Alternative CLI flow: exact 0x signed raw transactions. Never provide a private key.
- `transaction_hashes` (array): Three 0x transaction hashes returned by a browser wallet.

### `repair_derive_session` (~113 tokens)

Renew an expired or missing Derive session in one local, owner-signed workflow while preserving the existing subaccount and funds.

Input parameters:

- `account_id` (string): Optional owned child account UUID.
- `expiry_days` (number): Renewed session lifetime in days. Defaults to 30.
- `idempotency_key` (string, required): Required stable workflow key. Reuse it after interruption.
- `max_deposit_usd` (number): Owner-authorized Derive allowance; defaults to the $1B protocol range.

### `bring_home` (~210 tokens)

Return venue collateral to the original verified owner wallet. Omit amount_usd for a full prediction-market sweep. Crypto returns are long-running (usually 3-15 minutes), emit progress, and must be retried only with the same idempotency key after a client timeout. Derive has no caller-selected destination; prediction-market and crypto returns require the owner key locally.

Input parameters:

- `allow_high_fee_loss` (boolean): Crypto only: explicitly accept the fixed venue fee when returning less than $10. Never enabled by default.
- `amount_usd` (number): Amount to return. Omit to sweep the full spendable prediction-market balance.
- `idempotency_key` (string, required): Required workflow replay key. Reuse it after any timeout or restart.
- `resume_reconciliation` (boolean): Crypto only: with a fresh workflow key, resume a prior confirmed venue withdrawal only when the owner-held Arbitrum balance matches the bounded post-fee amount.
- `venue` (string, required): Source market account.

### `start_bring_home` (~147 tokens)

Start a durable bring-home operation and return immediately with an operation_id. Use this for crypto and other routes that can take minutes; owner signing remains local and encrypted recovery state survives MCP restarts.

Input parameters:

- `allow_high_fee_loss` (boolean): Crypto only: explicitly accept the fixed venue fee when returning less than $10.
- `amount_usd` (number): Amount to return. Omit to sweep the full spendable prediction-market balance.
- `idempotency_key` (string, required): Required workflow replay key. Reuse it for the exact operation.
- `resume_reconciliation` (boolean): Resume only this exact previously reconciled workflow.
- `venue` (string, required): Source market account.

### `get_money_operation` (~49 tokens)

Read durable progress or the terminal result for an asynchronous money operation without starting or repeating a transfer.

Input parameters:

- `operation_id` (string, required): Operation id returned by start_fund_market or start_bring_home.

### `list_recent_operations` (~49 tokens)

List durable local money operations for the active account, including progress, terminal results, and exact recovery instructions.

Input parameters:

- `limit` (integer): Maximum operations, 1-100. Defaults to 20.

### `wait_for_operation` (~113 tokens)

Wait inside one MCP call for a money or backtest operation to finish, avoiding repeated LLM polling. Returns early on completion, failure, interruption, or reconciliation-required state.

Input parameters:

- `operation_id` (string, required): fxop_ money-operation id or fxbt_ backtest-operation id.
- `poll_interval_ms` (integer): Internal poll interval, 250-5000ms. Defaults to 1000ms.
- `wait_seconds` (integer): Maximum wait, 1-120 seconds. Defaults to 30.

### `resume_money_operation` (~93 tokens)

Resume an interrupted asynchronous money operation with its original encrypted arguments and idempotency key. When a prior send may have happened, confirm_reconciled:true is required.

Input parameters:

- `confirm_reconciled` (boolean): Set true only after reconciling balances/hashes when the status reports money_moved true or unknown.
- `operation_id` (string, required): Operation id returned by start_fund_market or start_bring_home.

### `get_fee_balance` (~36 tokens)

Read prepaid execution-fee credit. Live Polymarket and Derive opens reserve this credit before submission; withdrawals never collect trading fees.

### `preview_fee_top_up` (~86 tokens)

Preview an owner-signed execution-fee credit top-up without signing or exposing Felix's collection address. Nothing moves until top_up_fee_balance is called.

Input parameters:

- `amount_usd` (number, required): USDC.e amount to prepay for future live execution fees.
- `idempotency_key` (string, required): Required workflow replay key. Reuse this exact key for top_up_fee_balance.

### `top_up_fee_balance` (~126 tokens)

Sign one bounded USDC.e transfer locally and credit it for live execution fees. By default this refuses to consume the recommended owner-wallet trading buffer. Orders reserve exact fees before submission; no fee debt is created.

Input parameters:

- `allow_low_owner_buffer` (boolean): Explicitly allow this top-up to leave owner USDC.e below the recommended trading buffer. Preview first.
- `amount_usd` (number, required): USDC.e amount to prepay for future live execution fees.
- `idempotency_key` (string, required): Required workflow replay key. Reuse it after any timeout or restart.

### `preview_fee_settlement` (~78 tokens)

Deprecated compatibility alias for preview_fee_top_up. It previews prepaid execution-fee credit and never exposes the collection address.

Input parameters:

- `amount_usd` (number, required): USDC.e amount to prepay for future live execution fees.
- `idempotency_key` (string, required): Required workflow replay key. Reuse this exact key for settle_fees.

### `settle_fees` (~109 tokens)

Deprecated compatibility alias for top_up_fee_balance. It adds prepaid credit; it does not settle debt and is never called by withdrawals.

Input parameters:

- `allow_low_owner_buffer` (boolean): Explicitly allow this top-up to leave owner USDC.e below the recommended trading buffer. Preview first.
- `amount_usd` (number, required): USDC.e amount to prepay for future live execution fees.
- `idempotency_key` (string, required): Required workflow replay key. Reuse it after any timeout or restart.

### `list_withdrawal_addresses` (~57 tokens)

List allowlisted withdrawal addresses and owner-authorization status. A launcher manage key may target one owned child with account_id.

Input parameters:

- `account_id` (string): Optional owned child account UUID. Reload the launcher key before targeting a child.

### `add_withdrawal_address` (~101 tokens)

Authorize a withdrawal address immediately. Felix prepares the exact destination, signs it with the local owner key, and activates it in one call; there is no waiting period and the key never leaves this process.

Input parameters:

- `account_id` (string): Optional owned child account UUID. Reload the launcher key before targeting a child.
- `address` (string, required): 0x Polygon address to allowlist.
- `chain` (string): Chain. Defaults to polygon.

### `confirm_withdrawal_address` (~69 tokens)

Re-authorize a legacy withdrawal-address entry immediately with the local owner key. New addresses need only add_withdrawal_address.

Input parameters:

- `account_id` (string): Optional owned child account UUID. Reload the launcher key before targeting a child.
- `addr_id` (string, required): Withdrawal address UUID.

### `withdraw` (~228 tokens)

Withdraw from the funded policy Safe or owner Polygon wallet. USDC.e withdrawals deliver bridged USDC.e on Polygon; many centralized exchanges do not support it, so prefer a self-custody Polygon wallet and convert to native USDC before an exchange deposit. Felix prepares one exact intent; the local owner key signs and the result is confirmed on-chain without exposing key material.

Input parameters:

- `account_id` (string): Optional owned child account UUID.
- `address` (string, required): Owner address or confirmed allowlisted Polygon destination.
- `amount` (number, required): Amount in USD/token units.
- `chain` (string): Chain. Defaults to polygon.
- `idempotency_key` (string, required): Required durable workflow key, 1-128 printable ASCII characters.
- `resume_reconciliation` (boolean): Set true only to retry the exact prepared request after reconciling an interrupted submit.
- `source` (string): auto|safe|owner_wallet. auto selects the Safe when funded and otherwise the owner wallet.
- `token` (string): USDC.e|USDC|pUSD. Defaults to USDC.e.

### `prepare_withdrawal` (~140 tokens)

Prepare an exact Safe withdrawal transaction after allowlist checks. USDC.e means bridged USDC.e on Polygon, which many centralized exchanges do not support; prefer a self-custody Polygon wallet and convert before an exchange deposit. Returns EIP-712 data for the owner to sign locally; no money moves yet.

Input parameters:

- `amount` (number, required): Amount in token units.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `to` (string, required): Confirmed allowlisted Polygon destination.
- `token` (string): USDC.e|USDC|pUSD. Defaults to USDC.e.

### `submit_withdrawal` (~94 tokens)

Relay an owner-signed Safe withdrawal prepared by prepare_withdrawal. Accepts only the request id and 65-byte signature, never a private key.

Input parameters:

- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `owner_signature` (string, required): 0x-prefixed 65-byte canonical EIP-712 signature.
- `request_id` (string, required): Prepared withdrawal UUID.

### `init_wallet_onboarding` (~197 tokens)

Start advanced client-owned Safe onboarding. The owner key must be generated and retained outside Felix; only public addresses are sent. Read felix://getting-started before implementing the signing flow.

Input parameters:

- `account_id` (string): Optional child account UUID.
- `daily_limit_usd` (number): Maximum autonomous daily total. Defaults to 500.
- `delegation_days` (integer): Owner-signed agent delegation lifetime. Defaults to 30 days; maximum 90.
- `home_address` (string): Optional fixed sweep-home address. Defaults to owner.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `lifetime_limit_usd` (number): Maximum cumulative autonomous total for this module. Defaults to daily limit multiplied by delegation days.
- `max_operation_usd` (number): Maximum autonomous operation size. Defaults to 100.
- `owner_address` (string, required): Client-owned EVM address.

### `deploy_wallet_onboarding` (~105 tokens)

Verify the owner's locally validated personal-sign challenge and activate the Safe policy wallet. Accepts a signature, never the owner key. Follow felix://getting-started.

Input parameters:

- `account_id` (string): Optional child account UUID.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `onboarding_id` (string, required): Onboarding UUID.
- `proof_signature` (string, required): 0x-prefixed 65-byte owner proof signature.

### `complete_wallet_onboarding` (~128 tokens)

Verify and relay the owner's locally validated exact Safe module-enable and fallback-handler signatures, then link the client-owned wallet. Follow felix://getting-started.

Input parameters:

- `account_id` (string): Optional child account UUID.
- `enable_signature` (string, required): 0x-prefixed 65-byte canonical Safe signature.
- `fallback_signature` (string, required): 0x-prefixed 65-byte canonical signature for the returned fallback_safetx.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `onboarding_id` (string, required): Onboarding UUID.

### `get_wallet_onboarding` (~42 tokens)

Read a caller-owned Safe onboarding request status.

Input parameters:

- `account_id` (string): Optional child account UUID.
- `onboarding_id` (string, required): Onboarding UUID.

### `migrate_wallet_to_v3` (~198 tokens)

Migrate a caller-owned legacy Safe to Felix V3 in one resumable local workflow: prove ownership, deploy only the V3 policy, locally execute enable/fallback/disable-V2, and confirm atomic account promotion.

Input parameters:

- `account_id` (string): Optional child account UUID.
- `daily_limit_usd` (number): Maximum autonomous daily total. Defaults to the legacy wallet limit.
- `delegation_days` (integer): Owner-signed V3 agent delegation lifetime. Defaults to 30 days; maximum 90.
- `idempotency_key` (string, required): Required durable workflow key, 1-128 printable ASCII characters.
- `lifetime_limit_usd` (number): Maximum cumulative autonomous total for this V3 module.
- `max_operation_usd` (number): Maximum autonomous operation size. Defaults to the legacy wallet limit.
- `resume_reconciliation` (boolean): Set true to resume the exact migration after checking an interrupted owner transaction.

### `prepare_wallet_policy` (~111 tokens)

Prepare an owner-signed Safe V3 pause, resume, renewal, or emergency lockdown. Lockdown atomically pauses the agent and revokes fixed Polymarket approvals.

Input parameters:

- `account_id` (string): Optional child account UUID.
- `action` (string, required): pause|resume|renew|lockdown.
- `delegation_days` (integer): Renewal lifetime in days. Valid only for renew; maximum 90.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.

### `submit_wallet_policy` (~105 tokens)

Relay an exact owner-signed Safe V3 policy transaction. Accepts only the sealed policy token and canonical Safe signature.

Input parameters:

- `account_id` (string): Optional child account UUID.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `owner_signature` (string, required): 0x-prefixed 65-byte canonical EIP-712 signature.
- `policy_token` (string, required): Opaque sealed policy intent returned by prepare_wallet_policy.

### `update_wallet_policy` (~141 tokens)

Locally verify, sign, and relay a Safe V3 pause, resume, renewal, or emergency lockdown in one replay-safe workflow. Lockdown also revokes fixed Polymarket approvals.

Input parameters:

- `account_id` (string): Optional child account UUID.
- `action` (string, required): pause|resume|renew|lockdown.
- `delegation_days` (integer): Renewal lifetime in days. Valid only for renew; maximum 90.
- `idempotency_key` (string, required): Required durable workflow key, 1-128 printable ASCII characters.
- `resume_reconciliation` (boolean): Set true to retry the exact signed submission after reconciling an interrupted attempt.

### `prepare_polymarket_withdrawal_grant` (~100 tokens)

Build the exact fixed-home Polymarket withdrawal message for the client-owned wallet to sign. This never signs or moves funds.

Input parameters:

- `account_id` (string): Optional child account UUID.
- `expires_in_seconds` (integer): Grant lifetime from 120 to 86400 seconds.
- `max_operation_usd` (number): Optional owner-authorized pUSD moved home per operation. Defaults to the $1B protocol range.

### `submit_polymarket_withdrawal_grant` (~112 tokens)

Store an owner-signed, fixed-home Polymarket withdrawal grant for venue-scoped policy checks. Never accepts a private key.

Input parameters:

- `account_id` (string): Optional child account UUID.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `message` (string, required): Exact message returned by prepare_polymarket_withdrawal_grant.
- `signature` (string, required): 0x-prefixed 65-byte owner personal-sign signature.

### `revoke_polymarket_withdrawal_grant` (~62 tokens)

Revoke the stored Polymarket fixed-home withdrawal authorization for the account.

Input parameters:

- `account_id` (string): Optional child account UUID.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.

### `init_hyperliquid_onboarding` (~93 tokens)

Prepare Hyperliquid approveAgent typed data for the caller-owned main wallet. Felix creates only a scoped API wallet that cannot withdraw or transfer funds.

Input parameters:

- `account_id` (string): Optional caller-owned Felix subaccount UUID.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `main_address` (string, required): Caller-owned Hyperliquid main-wallet address.

### `complete_hyperliquid_onboarding` (~105 tokens)

Submit the main wallet's exact approveAgent signature and verify the scoped API-wallet relationship on Hyperliquid.

Input parameters:

- `account_id` (string): Optional caller-owned Felix subaccount UUID.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `onboarding_id` (string, required): Hyperliquid onboarding UUID.
- `signature` (string, required): 65-byte EIP-712 signature from the stated Hyperliquid main wallet.

### `get_hyperliquid_onboarding` (~55 tokens)

Read and reconcile a caller-owned Hyperliquid API-wallet onboarding request.

Input parameters:

- `account_id` (string): Optional caller-owned Felix subaccount UUID.
- `onboarding_id` (string, required): Hyperliquid onboarding UUID.

### `get_local_wallet` (~52 tokens)

Show the public address of the client-held launcher or deterministically derived child owner key. The private key is never returned.

Input parameters:

- `account_id` (string): Optional child account UUID whose owner address should be derived locally.

### `get_polymarket_wallet` (~62 tokens)

Read the caller-owned Polymarket deposit wallet and setup state without deploying, approving, signing, or spending gas. Pass account_id to inspect an owned child account instead of the active one.

Input parameters:

- `account_id` (string): Optional owned child account UUID.

### `deploy_polymarket_wallet` (~66 tokens)

Deploy the caller-owned Polymarket deposit wallet without sending an owner key or signature to Felix.

Input parameters:

- `dry_run` (boolean): Read deployment state without deploying or spending gas.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.

### `approve_polymarket_wallet` (~88 tokens)

Locally sign and relay only the fixed pUSD/CTF exchange approval batch for the caller-owned deposit wallet. Requires FELIX_OWNER_PRIVATE_KEY in single-user stdio mode.

Input parameters:

- `dry_run` (boolean): Read approval state without signing or submitting a relayer operation.
- `idempotency_key` (string): Optional retry-safety key for preparation. Auto-generated when omitted.

### `fund_polymarket_agent_wallet` (~136 tokens)

Set up the caller's distinct venue-scoped autonomous Polymarket wallet, then locally sign one exact pUSD transfer to it. Felix cannot redirect the destination and never receives the owner key. Use this before deploying a live Polymarket agent; direct client-signed orders continue using the client-owned wallet.

Input parameters:

- `account_id` (string): Optional owned child account UUID.
- `amount_usd` (number, required): Exact pUSD amount to transfer from the client-owned Polymarket wallet to the autonomous agent wallet.
- `idempotency_key` (string, required): Required durable workflow key, 1-128 printable ASCII characters.

### `get_polymarket_order_status` (~45 tokens)

Reconcile a client-signed Polymarket intent after an uncertain or delayed venue response.

Input parameters:

- `intent_id` (string, required): Polymarket live-order intent UUID.

### `get_order_status` (~55 tokens)

Poll a caller-owned Hyperliquid or Derive live-order intent after an ambiguous venue response. Retry only when safe_to_retry is true.

Input parameters:

- `intent_id` (string, required): Hyperliquid or Derive live-order intent UUID.

### `reconcile_polymarket_order` (~102 tokens)

Resume the side-effect-free Felix commit/reconciliation step when Polymarket returned an order hash but the API response was interrupted. This never posts a venue order.

Input parameters:

- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `intent_id` (string, required): Polymarket live-order intent UUID.
- `order_id` (string, required): Exact 0x-prefixed Polymarket order hash returned by the local signer.

### `generate_strategy` (~67 tokens)

Turn a plain-English idea into a runnable def think(ctx) strategy. This uses the account's generation budget; get_strategy_guide or felix://strategy/ctx-api always provides the complete manual authoring contract for free.

Input parameters:

- `prompt` (string, required): Strategy idea under 4000 characters.

### `backtest` (~228 tokens)

Backtest a compiled or hand-written strategy on real historical data before deployment. Returns the chart-ready summary by default. Use start_backtest for large histories. Use get_strategy_guide or felix://strategy/examples for the code contract and working examples.

Input parameters:

- `bars` (integer): Historical bars; interval-specific limits apply and are validated locally.
- `capital` (number): Starting capital.
- `detail` (string): summary (default) or full raw result.
- `idempotency_key` (string): Optional retry-safety key. Reuse the exact key after an interrupted synchronous request.
- `interval` (string): 1m|5m|15m|1h|4h|1d
- `markets` (array): Optional instruments/markets, max 4.
- `name` (string): Display name, max 80 characters.
- `strategy` (object, required): Strategy from generate_strategy, or {config:{code:'def think(ctx): ...'}}.
- `years` (number): Historical years. Overrides bars; use interval=1d for up to 40 years.

### `start_backtest` (~207 tokens)

Start a durable long-running backtest and return immediately with an operation_id. Poll get_backtest_operation; API restarts can be recovered with resume_backtest_operation.

Input parameters:

- `bars` (integer): Historical bars; interval-specific limits apply and are validated locally.
- `capital` (number): Starting capital.
- `detail` (string): summary (default) or full raw result.
- `idempotency_key` (string): Optional fxbt operation key. Felix generates one when omitted.
- `interval` (string): 1m|5m|15m|1h|4h|1d
- `markets` (array): Optional instruments/markets, max 4.
- `name` (string): Display name, max 80 characters.
- `strategy` (object, required): Strategy from generate_strategy, or {config:{code:'def think(ctx): ...'}}.
- `years` (number): Historical years. Overrides bars; use interval=1d for up to 40 years.

### `get_backtest_operation` (~42 tokens)

Read progress or the terminal result for a durable asynchronous backtest without starting another computation.

Input parameters:

- `operation_id` (string, required): Operation id returned by start_backtest.

### `resume_backtest_operation` (~50 tokens)

Resume a durable backtest only after its operation lease expired, typically after an API restart. The encrypted original request is reused.

Input parameters:

- `operation_id` (string, required): Operation id returned by start_backtest.

### `report_feedback` (~100 tokens)

Report a Felix bug, product issue, or request. Content is encrypted at rest and never logged.

Input parameters:

- `category` (string, required): Problem area.
- `context` (object): Optional diagnostic identifiers only; never include secrets.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `message` (string, required): Problem description, 10-4000 characters.
- `severity` (string): Severity. Defaults to medium.

### `list_feedback` (~31 tokens)

List feedback reports belonging to this Felix account.

Input parameters:

- `limit` (integer): Maximum reports, 1-50.

### `get_feedback` (~28 tokens)

Get one feedback report belonging to this Felix account.

Input parameters:

- `feedback_id` (string, required): Feedback UUID.

### `create_support_ticket` (~135 tokens)

Open an encrypted two-way Felix support ticket. The ticket is account-scoped, idempotent, rate-limited, and readable only by this account and Felix support.

Input parameters:

- `category` (string): Problem area. Defaults to support.
- `context` (object): Optional diagnostic identifiers only; never include secrets.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `message` (string, required): Problem description, 10-4000 characters.
- `severity` (string): Severity. Defaults to medium.
- `subject` (string, required): Short problem summary, 4-160 characters.

### `list_support_tickets` (~49 tokens)

List encrypted support tickets for the active Felix account.

Input parameters:

- `limit` (integer): Maximum tickets, 1-50. Defaults to 20.
- `status` (string): Optional ticket status.

### `get_support_ticket` (~34 tokens)

Read one caller-owned support ticket and its complete two-way message thread.

Input parameters:

- `ticket_id` (string, required): Support ticket UUID.

### `reply_support_ticket` (~68 tokens)

Add an encrypted message to an open caller-owned support ticket.

Input parameters:

- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `message` (string, required): Reply text, 1-4000 characters.
- `ticket_id` (string, required): Support ticket UUID.

### `close_support_ticket` (~56 tokens)

Close a caller-owned support ticket. This does not delete its encrypted audit thread.

Input parameters:

- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `ticket_id` (string, required): Support ticket UUID.

### `deploy_agent` (~592 tokens)

Deploy a compiled or hand-written strategy as a live agent by default. markets binds every open to one of 1-4 owner-selected instruments and should match the backtest. Stop loss and other server-monitored exits are optional on Hyperliquid and Derive; omit them to let the strategy manage exits. Polymarket does not support server exit plans, so omit those fields and let the strategy or market resolution close exposure. If a requested supported exit plan cannot be armed after a fill, Felix pauses and attempts a reduce-only unwind. Hyperliquid leverage is blocked unless allow_leverage:true is explicit. Set mode:paper explicitly to simulate. Live supports Hyperliquid, Derive, and Polymarket through venue-scoped execution signing. A Polymarket binding such as btc-updown-5m authorizes only its current timestamped child. See felix://strategy/ctx-api for the think(ctx) contract.

Input parameters:

- `allow_leverage` (boolean): Explicitly permit a live Hyperliquid perp agent to exceed free collateral. Omitted or false blocks leveraged exposure before signing.
- `break_even_after_pct` (number): Optional profit fraction that activates a break-even exit.
- `budget_usd` (number, required): Explicit agent capital budget.
- `cycle_seconds` (number): Loop interval. Polymarket supports 5-86400 seconds; other venues support 30-86400 seconds.
- `idempotency_key` (string): Optional retry-safety key. Reuse it to recover an interrupted deployment without creating a second agent.
- `markets` (array, required): One to four owner-authorized instruments. Every live open outside this list fails before signing.
- `max_daily_loss_usd` (number): Explicit live realized-loss ceiling per UTC day; cannot exceed budget_usd or the active key's daily cap.
- `max_holding_minutes` (number): Optional maximum position age in minutes.
- `max_position_usd` (number): Explicit live per-position ceiling; cannot exceed budget_usd or the active key's order cap.
- `mode` (string): paper|live. Defaults to live; set paper explicitly to simulate.
- `name` (string): Agent name.
- `prompt` (string): Optional source prompt for audit/history.
- `stop_loss_pct` (number): Optional server-monitored hard-stop loss fraction for Hyperliquid and Derive agents, e.g. 0.05 for 5%. Omit it to run without a server stop.
- `strategy` (object, required): Compiled strategy from generate_strategy/backtest.
- `take_profit_pct` (number): Optional server-monitored profit target fraction.
- `trailing_activation_pct` (number): Optional profit fraction before the trailing stop arms.
- `trailing_stop_pct` (number): Optional server-monitored trailing distance fraction.
- `venue` (string): Optional preferred venue, e.g. hyperliquid, polymarket.

### `list_agents` (~95 tokens)

List this account's agents, including paused/error recovery instructions. Results are owner-scoped, bounded, and omit strategy source and encrypted state.

Input parameters:

- `before` (string): Optional ISO-8601 created-at cursor returned as next_before.
- `limit` (integer): Maximum agents, 1-100. Defaults to 20.
- `mode` (string): Optional execution-mode filter.
- `status` (string): Optional status filter.

### `agent_status` (~35 tokens)

Status, run count, PnL, and last decision for one deployed agent.

Input parameters:

- `agent_id` (string, required): Agent UUID.

### `get_situation` (~89 tokens)

Get one canonical operating snapshot: agents, positions, marks, PnL, money, pending operations, recent decisions, and active risk blocks. Partial sources are explicitly unavailable, never silently zero.

Input parameters:

- `agent_limit` (integer): Maximum agents, 1-100. Defaults to 25.
- `decision_limit` (integer): Maximum recent decisions, 1-100. Defaults to 20.

### `get_agent_log` (~82 tokens)

Read a caller-owned agent's durable decision log, including each decision, runtime outcome, block/error reason, market snapshot, and latency.

Input parameters:

- `agent_id` (string, required): Agent UUID.
- `before` (string): Optional ISO-8601 cursor returned as next_before.
- `limit` (integer): Maximum decisions, 1-100. Defaults to 50.

### `wait_for_events` (~117 tokens)

Long-poll durable account ledgers for agent decisions/errors and position opens/closes. One call replaces repeated polling and returns after an event or the bounded timeout.

Input parameters:

- `after` (string): ISO-8601 cursor. Omit to wait only for new events.
- `event_types` (array): Optional event filter.
- `limit` (integer): Maximum returned events, 1-100. Defaults to 25.
- `wait_seconds` (integer): Maximum long-poll wait, 0-25 seconds. Defaults to 20.

### `update_agent` (~296 tokens)

Update a stopped/paused agent's name, cadence, risk limits, or server-monitored exits in place while retaining its UUID, positions, fills, and decision history. Set resume:true to restart after the atomic update.

Input parameters:

- `agent_id` (string, required): Agent UUID.
- `break_even_after_pct` (number): Optional break-even activation fraction.
- `clear_exit_plan` (boolean): Remove every server-monitored exit rule. Cannot be combined with individual exit-plan fields.
- `cycle_seconds` (integer): Updated cadence. Polymarket minimum 5s; other venues 30s.
- `idempotency_key` (string): Optional retry-safety key. Auto-generated when omitted.
- `max_daily_loss_usd` (number): Updated daily realized-loss ceiling; cannot exceed agent budget or key cap.
- `max_holding_minutes` (number): Optional maximum holding time.
- `max_position_usd` (number): Updated per-position ceiling; cannot exceed agent budget or key cap.
- `name` (string): Optional updated name, 1-80 characters.
- `resume` (boolean): Restart the same agent after updating its policy.
- `stop_loss_pct` (number): Optional live hard-stop fraction for venues with server-monitored exits.
- `take_profit_pct` (number): Optional profit target fraction.
- `trailing_activation_pct` (number): Optional activation fraction.
- `trailing_stop_pct` (number): Optional trailing distance fraction.

### `stop_agent` (~25 tokens)

Stop a caller-owned running agent.

Input parameters:

- `agent_id` (string, required): Agent UUID.

### `list_webhooks` (~17 tokens)

List active webhooks for this account.

### `create_webhook` (~68 tokens)

Create an HTTPS webhook for fills/positions/agent events. Returns signing_secret once.

Input parameters:

- `events` (array): Events: order.filled, position.opened, position.closed, agent.decision, agent.error.
- `url` (string, required): Public HTTPS URL. No localhost/private IPs.

### `delete_webhook` (~26 tokens)

Delete a webhook by id.

Input parameters:

- `webhook_id` (string, required): Webhook UUID.

### `test_webhook` (~21 tokens)

Send a sample order.filled event to active webhooks.

### `create_account` (~392 tokens)

Create the normal real-money Felix account without spending chain gas on an empty wallet. The first call reserves an isolated identity and returns its Polygon deposit address. After at least $5 in accepted USDC is present, retry the exact same idempotency_key; Felix then locally authorizes the non-custodial Safe, mints an owner-signed live key, and activates it in about 60-120 seconds without exposing either private key. Emits progress every 15 seconds. Requires the registered local owner signer and launcher manage key. Cold start: felix://getting-started.

Input parameters:

- `accept_terms` (boolean, required): Must be true to confirm acceptance of Felix Terms of Service, Privacy Policy, and Risk Disclosure.
- `delegation_days` (integer): Delegation duration in days. Defaults to 30; maximum 90.
- `email` (string): Optional new email for the isolated child. Omit to generate an internal identity.
- `idempotency_key` (string, required): Stable account-creation key. Reuse the exact value after any interruption.
- `label` (string): Optional account/live-key label.
- `legal_version` (string): Current Felix legal bundle version. Omit to use the version bundled with this MCP build.
- `lifetime_limit_usd` (number): Optional Safe delegation lifetime safety ceiling. Defaults/maxes at $1B.
- `max_daily_loss_usd` (number): Optional owner-authorized daily loss safety ceiling. Defaults/maxes at $100M.
- `max_daily_usd` (number): Optional owner-authorized daily notional safety ceiling. Defaults/maxes at the account's $100M daily limit.
- `max_order_usd` (number): Optional owner-authorized per-order safety ceiling. Defaults/maxes at the account's $10M operation limit.
- `resume_reconciliation` (boolean): Set true only to resume this exact workflow after inspecting an interrupted attempt.

### `list_accounts` (~91 tokens)

List isolated child accounts owned by the launcher account. Archived accounts are hidden unless requested. When next_cursor is non-null, call again with that cursor until it is null; page order is opaque and is not creation order.

Input parameters:

- `cursor` (string): Optional account UUID cursor.
- `include_archived` (boolean): Include safely archived child accounts.
- `limit` (integer): Maximum accounts. Defaults to 50.

### `archive_account` (~73 tokens)

Owner-pause and archive a flat child account, revoke every child key, and retain wallet and financial records for audit.

Input parameters:

- `account_id` (string, required): Owned child account UUID.
- `confirm_account_id` (string, required): Must exactly repeat account_id.
- `idempotency_key` (string, required): Required stable archive workflow key.

### `get_fees` (~17 tokens)

Current fee schedule by market and tier.

### `get_tiers` (~16 tokens)

Pricing tiers and included API limits.

### `get_subscription` (~18 tokens)

Current subscription/tier for the key's account.

### `upgrade_subscription` (~104 tokens)

Buy or renew 30 days of Felix Pro for exactly $20 in native Polygon USDC. The owner signs locally, auto-renew is off, and retries reconcile the original transaction instead of paying twice.

Input parameters:

- `account_id` (string): Optional owned child account UUID.
- `idempotency_key` (string, required): Required stable payment workflow key. Reuse it after any interruption.
- `plan` (string, required): Must be pro; the price is fixed server-side at $20.

### `create_referral` (~67 tokens)

Create or fetch a referral code/rev-share link for the caller.

Input parameters:

- `label` (string): Optional label/source, up to 60 characters.
- `rev_share_bps` (integer): Referral rev-share in basis points, from 0 to 100. Defaults to 20.

### `get_insights` (~16 tokens)

Account/API insights exposed by Felix.

### `panic` (~57 tokens)

Emergency stop: block new exposure, cancel and flatten where possible, and revoke every active key for this account. Set confirm=true; there is no hidden phrase or waiting period.

Input parameters:

- `confirm` (boolean, required): Set true to execute the emergency stop immediately.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/trade-felix-mcp/felix-mcp#diagnostics

## Score history

- 2026-09-25: 78
- 2026-09-24: 78
- 2026-09-23: 77
- 2026-09-22: 77
- 2026-09-21: 76
- 2026-09-20: 76
- 2026-09-19: 75
- 2026-09-18: 75
- 2026-09-17: 74
- 2026-09-16: 74
- 2026-09-15: 74
- 2026-09-14: 73
- 2026-09-13: 73
- 2026-09-12: 72
- 2026-09-11: 72
- 2026-09-10: 71
- 2026-09-09: 71
- 2026-09-08: 70
- 2026-09-07: 70
- 2026-09-06: 69
- 2026-09-05: 69
- 2026-09-04: 68
- 2026-09-03: 68
- 2026-09-02: 67
- 2026-09-01: 65

## Common questions

### What is the Felix MCP server?

Felix MCP is listed in the public MCP registry as trade.felix/mcp. Non-custodial trading infrastructure for AI agents across prediction markets, crypto, and options. This page covers its npm package (felix-mcp).

### Is the Felix MCP server safe to use?

Felix MCP scores 78 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 25 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Felix MCP server expose?

Felix MCP exposes 125 tools: get_status, get_health, get_metrics, get_custody_recovery_status, get_strategy_guide, and 120 more. Their descriptions and schemas cost roughly 12,375 tokens of context every time the server is loaded.

### Is the Felix MCP server still maintained?

Felix MCP is still listed as active in the MCP registry. We last reached this channel on 25 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Felix MCP server under?

Felix MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/felix-mcp
- Socket report: https://socket.dev/npm/package/felix-mcp
- Website: https://felix.trade/docs
- Changelog RSS feed: https://verifymcp.io/servers/trade-felix-mcp/felix-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/trade-felix-mcp/felix-mcp.json
- HTML version of this page: https://verifymcp.io/servers/trade-felix-mcp/felix-mcp
