---
canonical_url: "https://docs.composio.dev/toolkits/coinbase_agents_mcp"
markdown_url: "https://docs.composio.dev/toolkits/coinbase_agents_mcp.md"
product: "platform"
version: null
last_updated: null
---

# Coinbase Agents MCP

Coinbase Agents MCP lets authorized agents inspect portfolios, accounts, products, fees, orders, fills, and market data, and perform permitted conversions, trades, transfers, portfolio changes, and x402 payments.

- **Category:** model context protocol
- **Auth:** DCR_OAUTH
- **Composio-managed OAuth available?** No
- **Tools:** 29
- **Triggers:** 0
- **Slug:** `COINBASE_AGENTS_MCP`
- **Version:** 00000000_00

## Tools

### Coinbase balance

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_BALANCE`

Returns account balances for exactly one portfolio. If portfolio_id is omitted, only the default portfolio is returned. Results are not aggregated across portfolios; use coinbase_portfolios_list and query each portfolio for a complete multi-portfolio view. The response portfolio_id identifies the effective portfolio queried. Balances show available funds and amounts on hold; available_balance excludes funds held by open orders. Use before trading or transferring to confirm available funds. (4 fields, 0 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Results per page |
| `cursor` | string | No | Pagination cursor |
| `show_zero` | boolean | No | Include zero-balance accounts (default false) |
| `portfolio_id` | string | No | UUID of the single portfolio to query. Omit to query only the default portfolio. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `size` | integer | No |  |
| `cursor` | string | No |  |
| `accounts` | array | No |  |
| `has_next` | boolean | No |  |
| `portfolio_id` | string | Yes | UUID of the single portfolio whose accounts and pagination metadata are returned; this response is not aggregated across portfolios. |

### Coinbase convert execute

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_CONVERT_EXECUTE`

Executes a previously quoted conversion using the quote_id from convert_quote. This moves funds at the quoted rate — get a fresh quote first since quotes expire. The from/to currencies must match the original quote. (3 fields, 3 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `to` | string | Yes | Target currency |
| `from` | string | Yes | Source currency |
| `quote_id` | string | Yes | Quote ID from convert quote response |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `trade` | object | No |  |

### Coinbase convert get

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_CONVERT_GET`

Check status of a conversion by quote ID. (3 fields, 3 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `to` | string | Yes | Target currency |
| `from` | string | Yes | Source currency |
| `quote_id` | string | Yes | Quote ID |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | No |  |
| `status` | string | No |  |
| `exchange_rate` | object | No |  |
| `source_currency` | string | No |  |
| `target_currency` | string | No |  |

### Coinbase convert quote

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_CONVERT_QUOTE`

Quotes stablecoin↔fiat and stablecoin↔stablecoin conversions, returning rate, fees, and a quote ID. It does not support BTC, ETH, or other non-stablecoin assets; use an order to trade those assets. Pass the ID to convert_execute promptly because quotes expire. (3 fields, 3 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `to` | string | Yes | Target currency |
| `from` | string | Yes | Source currency |
| `amount` | string | Yes | Amount to convert |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `trade` | object | No |  |

### Coinbase fees

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_FEES`

Fee tier, maker/taker rates, and 30-day volume. (1 field, 0 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_type` | string ("SPOT" | "FUTURE" | "EQUITY") | No | FUTURE = CFM dated futures. Trading futures requires separate approval on the account beyond spot — if a futures order is rejected for eligibility, or the user asks how to get access, point them to https://help.coinbase.com/en/coinbase/trading-and-funding/derivatives/futures-intro to apply. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fee_tier` | object | Yes |  |
| `total_fees` | number | Yes | Total fees (USD) |
| `margin_rate` | object | No | Margin rate (FUTURE only) |
| `total_balance` | string | No | Total balance (USD) |
| `coinbase_pro_fees` | number | No |  |
| `coinbase_pro_volume` | number | No |  |
| `advanced_trade_only_fees` | number | No | Advanced Trade fees (USD) |
| `has_cost_plus_commission` | boolean | No |  |
| `advanced_trade_only_volume` | number | No | Advanced Trade volume (USD) |

### Coinbase orders cancel

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_ORDERS_CANCEL`

Cancels one or more open orders by ID. Removes resting orders from the book so reserved funds are released; already-filled portions are unaffected. Returns per-order success so a partial batch can fail. (1 field, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `order_ids` | array | Yes | Order IDs to cancel |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `results` | array | No |  |

### Coinbase orders close position

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_ORDERS_CLOSE_POSITION`

Places a market order to flatten an open position for a product, moving funds immediately. Omit size for a full close or set it for a partial close. Preview the equivalent order first if fee or slippage impact matters. (3 fields, 2 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `size` | string | No | Partial close size (omit for full close) |
| `product_id` | string | Yes | Product to close |
| `client_order_id` | string | Yes | Idempotency key |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `success` | boolean | No | Whether the closing order was accepted |
| `order_id` | string | No | ID of the market order placed to close the position |
| `product_id` | string | No | Product whose position was closed |

### Coinbase orders create

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_ORDERS_CREATE`

Place a market, limit, stop_limit, bracket, twap, or scaled order, subject to venue eligibility. Equities: use market or limit. Spot brackets require SELL; for entry, use market/limit BUY with attached exits. Futures brackets support BUY/SELL. Bracket stops become aggressive limit exits; fills and loss limits are not guaranteed. TWAP requires base_size, start_time, end_time, and a positive limit_price; slice count is automatic. Use orders_preview for optional fee, fill, and execution-plan estimates. Set exactly one size: limit and market SELL convert quote_size to base_size; market BUY spends quote_size; stop_limit/bracket/twap/scaled require base_size. Attached exits require market/limit parents and activate as the parent fills, including partial fills. If a FUTURE order is rejected for account eligibility, direct the user to https://help.coinbase.com/en/coinbase/trading-and-funding/derivatives/futures-intro to apply. (24 fields, 3 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `side` | string ("BUY" | "SELL") | Yes | BUY or SELL |
| `type` | string ("market" | "limit" | "stop_limit" | "bracket" | "twap" | "scaled") | Yes | market: current price. limit: specified price or better. stop_limit: stop triggers a limit order. bracket: take-profit limit and stop-triggered aggressive limit exit; fills and loss limits are not guaranteed; spot SELL or eligible futures BUY/SELL. twap: split base_size over start_time/end_time with a positive limit_price and automatic slice count; requires GTD. scaled: 2 to 20 limit child orders between positive min_price/max_price. Equities: use market/limit. Other types depend on venue eligibility. |
| `end_time` | string | No | Expiry or execution end time (RFC 3339). Required for GTD and twap. The TWAP schedule may be adjusted. |
| `base_size` | string | No | Base currency amount (e.g. 0.001 BTC). Mutually exclusive with quote_size. Required for stop_limit, bracket, twap, and scaled. Max 15,000 USD notional. |
| `max_price` | string | No | Highest child limit price. Required for scaled. Must be positive and above min_price. |
| `min_price` | string | No | Lowest child limit price. Required for scaled. Must be positive and below max_price. |
| `post_only` | boolean | No | Post-only limit order: rejects if it would take liquidity. true is rejected for non-limit types. |
| `num_orders` | integer | No | Number of limit child orders, from 2 to 20. Required for scaled. |
| `product_id` | string | Yes | Trading pair (BASE-QUOTE, e.g. BTC-USD or BTC-USDC) for spot crypto, a dated-futures contract code for CFM. For equities, use TICKER-QUOTE (e.g. AAPL-USD or AAPL-USDC). If the user names a quote currency (e.g. "use my USDC"), use that pair — never default to USD instead. If they don't say, check the balance for this request's portfolio_id (or the default portfolio if omitted) and use whichever of USD/USDC they hold there; if both, prefer the USDC pair. If the resulting pair doesn't exist, tell the user rather than silently substituting a different one. |
| `quote_size` | string | No | Quote-currency amount (e.g. $100 USD). Mutually exclusive with base_size. Market BUYs spend this amount; limit and market SELL convert it to base_size. Not supported for stop_limit, bracket, twap, or scaled — use base_size for those. Max 15,000 USD notional. |
| `start_time` | string | No | Requested execution start (RFC 3339). Required for twap. Slice count is automatic. |
| `stop_price` | string | No | Stop trigger for stop_limit. For bracket, required positive decimal: above limit_price for futures BUY, below for SELL. Bracket stops become aggressive limit exits; no guaranteed fill or loss cap. |
| `limit_price` | string | No | Required limit price for limit/stop_limit/bracket/twap. Bracket take-profit and TWAP execution price ceiling/floor must be strictly positive decimals. |
| `reduce_only` | boolean | No | Restrict the order to reducing existing exposure. Supported for INTX perpetuals; US dated futures, spot, and equities may reject it. Not supported for scaled. |
| `portfolio_id` | string | No | The optional UUID of a portfolio containing accounts with which to trade. Defaults to the default portfolio when no portfolio_id is provided. |
| `time_in_force` | string ("GTC" | "IOC" | "FOK" | "GTD") | No | GTC=good til cancelled. IOC=immediate or cancel. FOK=fill or kill. GTD=good til date; requires end_time. stop_limit, bracket, and scaled support GTC/GTD. twap requires GTD. Extended-hours equity orders require GTD. |
| `stop_direction` | string ("up" | "down") | No | stop_limit only. Bracket direction is implied by side. |
| `client_order_id` | string | No | Idempotency key (auto-generated if omitted) |
| `equity_order_date` | string | No | Equity trade date (YYYY-MM-DD). Ignored for crypto and futures. |
| `size_distribution` | string ("INCREASING" | "DECREASING" | "EVENLY_SPLIT") | No | Scaled size distribution. Defaults to an even split across child orders. |
| `price_distribution` | string ("FLAT" | "LINEAR_INCREASING" | "LINEAR_DECREASING") | No | Scaled price spacing. Defaults to FLAT (evenly spaced prices). |
| `equity_trading_session` | string ("NORMAL" | "PRE_MARKET" | "AFTER_HOURS" | "OVERNIGHT" | "MULTI_SESSION") | No | Equity trading session. Ignored for crypto and futures. |
| `attached_stop_loss_price` | string | No | Positive decimal stop trigger, activated as a market/limit parent fills (including partial fills). Becomes an aggressive limit exit, not a guaranteed fill or loss cap. May combine with attached_take_profit_price. Spot: BUY parent only. Futures: BUY/SELL subject to venue eligibility. Not equities. |
| `attached_take_profit_price` | string | No | Positive decimal take-profit limit exit, activated as a market/limit parent fills (including partial fills). May combine with attached_stop_loss_price. Spot: BUY parent only. Futures: BUY/SELL subject to venue eligibility. Not equities. No guaranteed fill. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `side` | string | No |  |
| `order_id` | string | No |  |
| `product_id` | string | No |  |
| `client_order_id` | string | No |  |

### Coinbase orders edit

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_ORDERS_EDIT`

Atomically update an open order's price or size without cancelling. Omit attached fields to keep existing exits. Attach or change exits only on eligible unfilled limit orders: spot BUY or futures BUY/SELL, not equities. Exits activate as the parent fills, including partial fills. Stops become aggressive limit exits; fills and loss limits are not guaranteed. Attached updates replace both legs: send attached_take_profit_price and attached_stop_loss_price to keep both, even when changing one. Read orders_get first: attached_order_configuration.trigger_bracket_gtc.limit_price maps to attached_take_profit_price; stop_trigger_price maps to attached_stop_loss_price. cancel_attached_order removes both legs, but may be rejected after an exit activates. (6 fields, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `order_id` | string | Yes | Order to edit |
| `base_size` | string | No | New base size |
| `limit_price` | string | No | New limit price |
| `cancel_attached_order` | boolean | No | Remove both attached exit legs while keeping the parent order. Cannot be combined with attached_take_profit_price or attached_stop_loss_price. May be rejected after an exit activates. |
| `attached_stop_loss_price` | string | No | Positive stop trigger for an eligible unfilled limit order. Send both attached prices to keep both legs. Triggers an aggressive limit exit; fills and loss limits are not guaranteed. Spot BUY or eligible futures BUY/SELL; not equities. |
| `attached_take_profit_price` | string | No | Positive take-profit limit price for an eligible unfilled limit order. Send both attached prices to keep both legs. Spot BUY or eligible futures BUY/SELL; not equities. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `status` | string | No |  |
| `order_id` | string | No |  |

### Coinbase orders edit preview

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_ORDERS_EDIT_PREVIEW`

Estimate the result, fees, fill price, and slippage of changing an open order's size or limit price without editing it. Hosted OAuth requires mcp:orders:create. CDP API-key callers may use rat#view where supported. Unsupported replacements return errors. (3 fields, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `order_id` | string | Yes | Open order UUID to preview editing |
| `base_size` | string | No | Positive decimal replacement base size |
| `limit_price` | string | No | Positive decimal replacement limit price |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `best_ask` | string | No |  |
| `best_bid` | string | No |  |
| `slippage` | string | No |  |
| `base_size` | string | No |  |
| `quote_size` | string | No |  |
| `order_total` | string | No |  |
| `commission_total` | string | No |  |
| `pnl_configuration` | object | No |  |
| `order_margin_total` | string | No |  |
| `average_filled_price` | string | No |  |
| `commission_detail_total` | object | No |  |

### Coinbase orders fills

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_ORDERS_FILLS`

Lists individual trade executions with commissions and maker/taker indicator, filterable by product, order, side, and time range. Use this to reconcile actual fill prices and fees paid. For EQUITY fills, product_id is TICKER-QUOTE (e.g. AAPL-USD), the same form orders_create expects. (8 fields, 0 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end` | string | No | End time (RFC 3339 with timezone, e.g. 2024-12-31T23:59:59Z) |
| `side` | string ("BUY" | "SELL") | No | BUY or SELL |
| `limit` | integer | No | Results per page |
| `start` | string | No | Start time (RFC 3339 with timezone, e.g. 2024-01-01T00:00:00Z) |
| `cursor` | string | No | Pagination cursor |
| `order_ids` | array | No | Filter by order ID |
| `product_ids` | string | No | Filter by product (e.g. BTC-USD) |
| `portfolio_id` | string | No | Scope to a specific portfolio (defaults to all portfolios the caller can access) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fills` | array | No |  |
| `cursor` | string | No |  |

### Coinbase orders get

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_ORDERS_GET`

Retrieves the full status and fill details of a single order by ID. Use after creating an order to confirm execution, and before orders_edit to see the current attached take-profit/stop-loss (attached_order_id / attached_order_configuration). For EQUITY orders, product_id is TICKER-QUOTE (e.g. AAPL-USD), the same form orders_create expects. (1 field, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `order_id` | string | Yes | Order ID |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `side` | string ("BUY" | "SELL") | Yes | BUY or SELL |
| `status` | string | Yes |  |
| `order_id` | string | Yes |  |
| `product_id` | string | Yes | Trading pair. EQUITY orders use TICKER-QUOTE (e.g. AAPL-USD), as in orders_create. |
| `total_fees` | string | No |  |
| `filled_size` | string | No |  |
| `created_time` | string | No |  |
| `last_fill_time` | string | No |  |
| `number_of_fills` | string | No |  |
| `attached_order_id` | string | No | The ID of this order's attached bracket exit, if one is set. |
| `order_configuration` | object | No |  |
| `average_filled_price` | string | No |  |
| `completion_percentage` | string | No |  |
| `total_value_after_fees` | string | No |  |
| `attached_order_configuration` | object | No | Attached exits, if set. trigger_bracket_gtc.limit_price is the take-profit limit; stop_trigger_price is the stop-loss trigger. |

### Coinbase orders list

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_ORDERS_LIST`

Lists orders with optional filters by status, product, side, and time range. Use status=OPEN to find resting orders that can be edited or cancelled. For EQUITY orders, product_id is TICKER-QUOTE (e.g. AAPL-USD), the same form orders_create expects. (9 fields, 0 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end` | string | No | End date (RFC 3339 with timezone, e.g. 2024-12-31T23:59:59Z) |
| `side` | string ("BUY" | "SELL") | No | BUY or SELL |
| `limit` | integer | No | Results per page |
| `start` | string | No | Start date (RFC 3339 with timezone, e.g. 2024-01-01T00:00:00Z) |
| `cursor` | string | No | Pagination cursor |
| `status` | string | No | Filter by status |
| `product_ids` | string | No | Filter by product (e.g. BTC-USD). Comma-separated for multiple. |
| `portfolio_id` | string | No | Scope to a specific portfolio (defaults to all portfolios the caller can access) |
| `product_type` | string ("SPOT" | "FUTURE" | "EQUITY") | No | FUTURE = CFM dated futures. Trading futures requires separate approval on the account beyond spot — if a futures order is rejected for eligibility, or the user asks how to get access, point them to https://help.coinbase.com/en/coinbase/trading-and-funding/derivatives/futures-intro to apply. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | Yes |  |
| `orders` | array | Yes |  |
| `has_next` | boolean | Yes |  |

### Coinbase orders preview

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_ORDERS_PREVIEW`

Estimate fees, fill price, slippage, and execution plans without placing an order. Optional before orders_create; the same order-type and asset-class restrictions apply. Futures previews also estimate margin, leverage, and liquidation impact: compare current and projected margin ratios and liquidation buffers. If a FUTURE preview is rejected for account eligibility, direct the user to https://help.coinbase.com/en/coinbase/trading-and-funding/derivatives/futures-intro to apply. (23 fields, 3 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `side` | string ("BUY" | "SELL") | Yes | BUY or SELL |
| `type` | string ("market" | "limit" | "stop_limit" | "bracket" | "twap" | "scaled") | Yes | market: current price. limit: specified price or better. stop_limit: stop triggers a limit order. bracket: take-profit limit and stop-triggered aggressive limit exit; fills and loss limits are not guaranteed; spot SELL or eligible futures BUY/SELL. twap: split base_size over start_time/end_time with a positive limit_price and automatic slice count; requires GTD. scaled: 2 to 20 limit child orders between positive min_price/max_price. Equities: use market/limit. Other types depend on venue eligibility. |
| `end_time` | string | No | Expiry or execution end time (RFC 3339). Required for GTD and twap. The TWAP schedule may be adjusted. |
| `base_size` | string | No | Base currency amount (e.g. 0.001 BTC). Mutually exclusive with quote_size. Required for stop_limit, bracket, twap, and scaled. |
| `max_price` | string | No | Highest child limit price. Required for scaled. Must be positive and above min_price. |
| `min_price` | string | No | Lowest child limit price. Required for scaled. Must be positive and below max_price. |
| `post_only` | boolean | No | Post-only limit order: rejects if it would take liquidity. true is rejected for non-limit types. |
| `num_orders` | integer | No | Number of limit child orders, from 2 to 20. Required for scaled. |
| `product_id` | string | Yes | Trading pair (BASE-QUOTE, e.g. BTC-USD or BTC-USDC) for spot crypto, a dated-futures contract code for CFM. For equities, use TICKER-QUOTE (e.g. AAPL-USD or AAPL-USDC). If the user names a quote currency (e.g. "use my USDC"), use that pair — never default to USD instead. If they don't say, check the balance for this request's portfolio_id (or the default portfolio if omitted) and use whichever of USD/USDC they hold there; if both, prefer the USDC pair. If the resulting pair doesn't exist, tell the user rather than silently substituting a different one. |
| `quote_size` | string | No | Quote currency amount (e.g. spend $100 USD). Mutually exclusive with base_size. Not supported for stop_limit, bracket, twap, or scaled — use base_size for those. |
| `start_time` | string | No | Requested execution start (RFC 3339). Required for twap. Slice count is automatic. |
| `stop_price` | string | No | Stop trigger for stop_limit. For bracket, required positive decimal: above limit_price for futures BUY, below for SELL. Bracket stops become aggressive limit exits; no guaranteed fill or loss cap. |
| `limit_price` | string | No | Required limit price for limit/stop_limit/bracket/twap. Bracket take-profit and TWAP execution price ceiling/floor must be strictly positive decimals. |
| `reduce_only` | boolean | No | Restrict the order to reducing existing exposure. Supported for INTX perpetuals; US dated futures, spot, and equities may reject it. Not supported for scaled. |
| `portfolio_id` | string | No | The optional UUID of a portfolio containing accounts with which to trade. Defaults to the default portfolio when no portfolio_id is provided. |
| `time_in_force` | string ("GTC" | "IOC" | "FOK" | "GTD") | No | GTC=good til cancelled. IOC=immediate or cancel. FOK=fill or kill. GTD=good til date; requires end_time. stop_limit, bracket, and scaled support GTC/GTD. twap requires GTD. Extended-hours equity orders require GTD. |
| `stop_direction` | string ("up" | "down") | No | stop_limit only. Bracket direction is implied by side. |
| `equity_order_date` | string | No | Equity trade date (YYYY-MM-DD). Ignored for crypto and futures. |
| `size_distribution` | string ("INCREASING" | "DECREASING" | "EVENLY_SPLIT") | No | Scaled size distribution. Defaults to an even split across child orders. |
| `price_distribution` | string ("FLAT" | "LINEAR_INCREASING" | "LINEAR_DECREASING") | No | Scaled price spacing. Defaults to FLAT (evenly spaced prices). |
| `equity_trading_session` | string ("NORMAL" | "PRE_MARKET" | "AFTER_HOURS" | "OVERNIGHT" | "MULTI_SESSION") | No | Equity trading session. Ignored for crypto and futures. |
| `attached_stop_loss_price` | string | No | Positive decimal stop trigger, activated as a market/limit parent fills (including partial fills). Becomes an aggressive limit exit, not a guaranteed fill or loss cap. May combine with attached_take_profit_price. Spot: BUY parent only. Futures: BUY/SELL subject to venue eligibility. Not equities. |
| `attached_take_profit_price` | string | No | Positive decimal take-profit limit exit, activated as a market/limit parent fills (including partial fills). May combine with attached_stop_loss_price. Spot: BUY parent only. Futures: BUY/SELL subject to venue eligibility. Not equities. No guaranteed fill. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `warning` | array | No | Preview warning codes. |
| `best_ask` | string | No |  |
| `best_bid` | string | No |  |
| `leverage` | string | No | Futures orders only. Effective leverage for this order's side. |
| `slippage` | string | No |  |
| `base_size` | string | No |  |
| `quote_size` | string | No |  |
| `order_total` | string | No |  |
| `max_leverage` | string | No | Futures/perpetual orders only. Maximum leverage allowed for this product. |
| `long_leverage` | string | No | Futures/perpetual orders only. |
| `short_leverage` | string | No | Futures/perpetual orders only. |
| `scaled_metadata` | object | No | Estimated child-order distribution. Check each child's errors and warnings before placing. |
| `commission_total` | string | No |  |
| `margin_ratio_data` | object | No | Futures orders only. Account-level margin-ratio impact of placing this order — compare the two to see how much closer to margin call/liquidation this order moves the account. |
| `order_margin_total` | string | No | Futures orders only. Margin required to place this order. |
| `twap_bucket_metadata` | object | No | Estimated TWAP slices. Slice count is automatic; the schedule may change during execution. |
| `available_buying_power` | string | No | Futures/perpetual orders only. |
| `position_notional_limit` | string | No | Futures/perpetual orders only. |
| `est_average_filled_price` | string | No |  |
| `current_liquidation_buffer` | string | No | Futures orders only. Liquidation buffer before this order, for comparison against projected_liquidation_buffer. |
| `predicted_liquidation_price` | string | No | Predicted liquidation price for CFM dated futures. Check alongside current position risk from portfolios_get before confirming. |
| `projected_liquidation_buffer` | string | No | Futures orders only. Liquidation buffer if this order is placed. |

### Coinbase portfolios create

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_PORTFOLIOS_CREATE`

Creates a new named portfolio for segregating funds and positions. Does not move any funds; use transfer afterward to fund it. (1 field, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Portfolio name |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No |  |
| `type` | string ("DEFAULT" | "CONSUMER") | No | DEFAULT (the primary portfolio), CONSUMER (Coinbase app) |
| `uuid` | string | No |  |
| `deleted` | boolean | No |  |

### Coinbase portfolios delete

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_PORTFOLIOS_DELETE`

Permanently deletes a portfolio. The portfolio must be empty first — transfer out any remaining funds and close all positions before deleting. The DEFAULT portfolio cannot be deleted. (1 field, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `portfolio_id` | string | Yes | Portfolio UUID |

### Coinbase portfolios edit

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_PORTFOLIOS_EDIT`

Renames an existing portfolio. Does not affect balances or positions. (2 fields, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | New portfolio name |
| `portfolio_id` | string | Yes | Portfolio UUID |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No |  |
| `type` | string ("DEFAULT" | "CONSUMER") | No | DEFAULT (the primary portfolio), CONSUMER (Coinbase app) |
| `uuid` | string | No |  |
| `deleted` | boolean | No |  |

### Coinbase portfolios get

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_PORTFOLIOS_GET`

Returns portfolio metadata, balances, and positions. (2 fields, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `currency` | string | No | Currency for balance denomination |
| `portfolio_id` | string | Yes | Portfolio UUID |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `portfolio` | object | No |  |
| `spot_positions` | array | No |  |
| `equity_positions` | array | No |  |
| `futures_positions` | array | No |  |
| `portfolio_balances` | object | No |  |

### Coinbase portfolios list

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_PORTFOLIOS_LIST`

Lists all portfolios on the account, including their UUIDs and types. Use this to find the portfolio_id needed for orders, transfers, and balance queries. (1 field, 0 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `portfolio_type` | string ("DEFAULT" | "CONSUMER") | No | DEFAULT (the primary portfolio), CONSUMER (Coinbase app) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `portfolios` | array | No |  |

### Coinbase products best bid ask

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_PRODUCTS_BEST_BID_ASK`

Returns best bid and ask for one or more products in a single call. Omit product_ids to return pricebooks for all products. Not currently available for equities. (1 field, 0 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_ids` | array | No | Product IDs (e.g. BTC-USD and ETH-USD). Omit to return all products. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pricebooks` | array | No |  |

### Coinbase products book

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_PRODUCTS_BOOK`

Returns the current bid/ask order book for a product. Use to gauge available liquidity and likely slippage before sizing a market order. Not currently available for equities. (2 fields, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Number of levels |
| `product_id` | string | Yes | Product ID |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pricebook` | object | No |  |

### Coinbase products candles

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_PRODUCTS_CANDLES`

Returns historical OHLCV candles for a product at a chosen granularity and time range. Use for price history and technical analysis. Not currently available for equities. (5 fields, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end` | string | No | End time (RFC 3339, e.g. 2024-01-01T00:00:00Z). Defaults to now. |
| `limit` | integer | No | Max candles |
| `start` | string | No | Start time (RFC 3339, e.g. 2024-01-01T00:00:00Z). Defaults to 60 candles before end. |
| `product_id` | string | Yes | Trading pair (e.g. BTC-USD) |
| `granularity` | string ("1m" | "5m" | "15m" | "30m" | "1h" | "2h" | "4h" | "6h" | "1d") | No | Candle interval: 1m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 1d. Defaults to 1h. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `candles` | array | No |  |
| `truncated` | boolean | No | True when the requested time window was clamped (to the most-recent allowed span, or a future end pulled back to now); the returned candles cover a narrower window than requested. |

### Coinbase products get

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_PRODUCTS_GET`

Viewing a product, including a FUTURE one, doesn't require any special account approval. Trading it is a separate matter — see the product_type field description. (1 field, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | Product ID (e.g. BTC-USD) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `price` | string | No |  |
| `status` | string | No |  |
| `product_id` | string | No | Trading pair. EQUITY products use TICKER-QUOTE (e.g. AAPL-USD); see base_currency_id/quote_currency_id for the parts. |
| `volume_24h` | string | No |  |
| `product_type` | string | No | FUTURE = CFM dated futures, which requires separate account approval beyond spot. See https://help.coinbase.com/en/coinbase/trading-and-funding/derivatives/futures-intro to apply. |
| `base_max_size` | string | No |  |
| `base_min_size` | string | No |  |
| `base_increment` | string | No |  |
| `quote_max_size` | string | No |  |
| `quote_min_size` | string | No |  |
| `quote_increment` | string | No |  |
| `base_currency_id` | string | No |  |
| `quote_currency_id` | string | No |  |
| `future_product_details` | object | No | FUTURE products only (CFM dated futures). |
| `fcm_trading_session_details` | object | No | FUTURE products only. Current trading-session state for this contract. |
| `price_percentage_change_24h` | string | No |  |

### Coinbase products list

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_PRODUCTS_LIST`

Viewing products, including FUTURE ones, doesn't require any special account approval. Trading them is a separate matter — see the product_type field description. (5 fields, 0 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Results per page |
| `cursor` | string | No | Pagination cursor |
| `symbol` | string | No | Filter products by symbol, matches base or quote side (e.g. USD, BTC). For a specific product use products_get (e.g. BTC-USD). Pagination ignored when set. |
| `product_ids` | string | No | Comma-separated product IDs |
| `product_type` | string ("SPOT" | "FUTURE" | "EQUITY") | No | FUTURE = CFM dated futures. Trading futures requires separate approval on the account beyond spot — if a futures order is rejected for eligibility, or the user asks how to get access, point them to https://help.coinbase.com/en/coinbase/trading-and-funding/derivatives/futures-intro to apply. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No |  |
| `has_next` | boolean | No |  |
| `products` | array | No |  |
| `num_products` | integer | No |  |

### Coinbase products ticker

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_PRODUCTS_TICKER`

Returns recent trade prints plus the current best bid/ask for a product. Use for a quick spot-price snapshot before previewing or placing an order. Not currently available for equities. (2 fields, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Number of trades. Defaults to 100. |
| `product_id` | string | Yes | Trading pair (e.g. BTC-USD) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `trades` | array | No |  |
| `best_ask` | string | No |  |
| `best_bid` | string | No |  |

### Coinbase transfer

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_TRANSFER`

Moves funds of a single currency from one portfolio to another. This executes immediately and moves money — verify the source has sufficient available balance first. Both portfolio UUIDs come from portfolios_list. (4 fields, 4 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `to` | string | Yes | Target portfolio UUID |
| `from` | string | Yes | Source portfolio UUID |
| `amount` | string | Yes | Amount to transfer |
| `currency` | string | Yes | Currency |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `source_portfolio_uuid` | string | No |  |
| `target_portfolio_uuid` | string | No |  |

### Coinbase x402 fetch

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_X402_FETCH`

Fetches a resource returned by x402_resources. On a 402 challenge, pays from the caller's custodial Base USDC via a pre-authorized hold, then retries with PAYMENT-SIGNATURE — no manual challenge handling. All currently supported x402 purchases through this connector use Base USDC, and max_amount uses its 6-decimal atomic units; for example, "50000" means "0.05 USDC". This tool accepts only resource URLs returned by x402_resources. max_amount is the spend control; when the user has requested the data or stated a budget, proceed in a single call rather than re-confirming. Protocol v2 only; v1 challenges are rejected. (6 fields, 1 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `input` | object | No | Request parameters, exactly as described by the resource's inputSchema from coinbase_x402_resources — pass those properties flat, at the top level. The tool routes them to the query string or the request body per the resource's HTTP method; you do not construct the HTTP envelope. Validated strictly as a closed allowlist; unknown keys are rejected. |
| `resource` | string | Yes | Resource URL returned by coinbase_x402_resources, with any path parameters substituted. Any URL that does not match a catalog resource is rejected. |
| `account_id` | string | No | Optional UUID of the USDC account to debit, within the chosen portfolio. Omit to use that portfolio's single USDC account; an error (not a guess) is returned when the portfolio has zero or multiple USDC accounts. |
| `max_amount` | string | No | Optional caller-set spend cap in Base USDC's 6-decimal atomic units; for example, "50000" means "0.05 USDC". Defaults to the catalog advisory ceiling for the resource; when supplied the effective cap is min(max_amount, advisory ceiling). Never derived from the live 402 challenge. |
| `portfolio_id` | string | No | Optional UUID of the consumer portfolio to pay from. Omit only when exactly one accessible non-deleted consumer portfolio is available and the caller has portfolio listing permission. If discovery is not authorized, provide portfolio_id explicitly. For OAuth, ask the user to reconnect and select "View your trading portfolios" in Coinbase consent. For an API key, ask the user to edit it, open Advanced Settings, and enable "View (read-only)" for every portfolio the agent needs. If multiple consumer portfolios are available, call coinbase_portfolios_list, select the funding portfolio with the user, and retry with that portfolio_id. |
| `idempotency_key` | string | No | Optional caller-supplied idempotency key for the payment; must be a UUID. Omit it on a first attempt — one is generated and returned to you. Reuse the SAME key when retrying an outcome-unknown fetch so a duplicate hold is not placed. If the tool reports a terminal rejection, do not reuse that key; start a new payment attempt with a new key. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | The resource's JSON response body. |
| `paid` | boolean | Yes | True when a payment was placed to obtain this response; false when the resource returned its data without a 402 challenge. |
| `expires_at` | string | No | RFC 3339 time the payment authorization expires. Present only when paid is true. |
| `payment_id` | string | No | Identifier of the placed hold, for reconciliation. Present only when paid is true. |
| `idempotency_key` | string | No | The idempotency key generated for this payment. Present only when paid is true AND you omitted idempotency_key on the request; never echoes a key you supplied yourself. |

### Coinbase x402 pay

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_X402_PAY`

Turns an x402 PaymentRequirements challenge into a ready-to-send payment header by placing a pre-authorized hold on the caller's Base USDC balance (EIP-3009 exact scheme, v0). All currently supported x402 purchases through this connector use Base USDC, and amount and max_amount use its 6-decimal atomic units; for example, "50000" means "0.05 USDC". Attach the returned header as X-PAYMENT for v1 or PAYMENT-SIGNATURE for v2. This authorizes moving funds up to max_amount — pass the smallest amount that satisfies the requirement. Funds-touching and gated internal-only behind a default-off feature flag. (12 fields, 7 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `asset` | string | Yes | USDC asset contract address on the network (the x402 asset field). |
| `extra` | object | No | Full extra object from the resource's 402 PaymentRequirements. Required when x402_version is 2; name and version must match the Base USDC EIP-712 domain. |
| `amount` | string | Yes | The amount the resource requires, in Base USDC's 6-decimal atomic units; for example, "50000" means "0.05 USDC". Decimal string; never truncated. |
| `pay_to` | string | Yes | Recipient address the payment authorizes (the x402 payTo field). |
| `scheme` | string | Yes | x402 payment scheme. Only "exact" is supported in v0. |
| `network` | string | Yes | x402 network as a CAIP-2 chain id. Only "eip155:8453" (Base mainnet) is supported in v0. |
| `account_id` | string | No | Optional UUID of the USDC account to debit, within the chosen portfolio. Omit to use that portfolio's single USDC account; the tool returns an error (it does NOT guess) when the portfolio has zero or multiple USDC accounts. |
| `max_amount` | string | Yes | Caller-set spend cap in Base USDC's 6-decimal atomic units; for example, "50000" means "0.05 USDC". The hold is rejected if amount exceeds this. Decimal string. |
| `portfolio_id` | string | No | Optional UUID of the consumer portfolio to pay from. Omit only when exactly one accessible non-deleted consumer portfolio is available and the caller has portfolio listing permission. If discovery is not authorized, provide portfolio_id explicitly. For OAuth, ask the user to reconnect and select "View your trading portfolios" in Coinbase consent. For an API key, ask the user to edit it, open Advanced Settings, and enable "View (read-only)" for every portfolio the agent needs. If multiple consumer portfolios are available, call coinbase_portfolios_list, select the funding portfolio with the user, and retry with that portfolio_id. |
| `x402_version` | integer | No | x402 protocol version from the resource's 402 challenge. Pass the value the resource advertised. Optional; defaults to 1. |
| `idempotency_key` | string | No | Optional caller-supplied idempotency key; must be a UUID. Omit it on a first attempt — one is generated and returned to you. Reuse the SAME key when retrying an outcome-unknown payment so a duplicate hold is not placed. If the tool reports a terminal rejection, do not reuse that key; start a new payment attempt with a new key. |
| `max_timeout_seconds` | integer | Yes | Validity window for the signed authorization, in seconds (the x402 maxTimeoutSeconds field). Must be between 1 and 300; the server caps how long the authorization stays valid. Pass a value no greater than the resource's advertised maxTimeoutSeconds (a shorter window is valid, and settlement is near-instant); requests above 300 are rejected. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `expires_at` | string | No | RFC 3339 time the authorization expires. |
| `payment_id` | string | No | Identifier of the placed hold for reconciliation. |
| `payment_header` | string | No | Base64 payment header: attach as X-PAYMENT for v1 or PAYMENT-SIGNATURE for v2. |
| `idempotency_key` | string | No | The effective idempotency key for this payment — the one you supplied, or the one generated for you when omitted. To retry an outcome-unknown payment safely (without placing a second hold), pass this value back as idempotency_key. |

### Coinbase x402 resources

**Slug:** `COINBASE_AGENTS_MCP_COINBASE_X402_RESOURCES`

Discover curated x402 resources: paid on-chain and market metrics, wallet and entity intelligence, and derivatives data. Discovery spends nothing. An optional keyword q filters the catalog; omit it to list all. Each result carries the resource URL, its advisory price, and its input and output schemas. All currently supported x402 purchases through this connector use Base USDC. accepts[].amount and coinbase_x402_fetch's max_amount use USDC's 6-decimal atomic units; for example, "50000" means "0.05 USDC". A result's inputSchema is coinbase_x402_fetch's input verbatim: pass those properties flat; do not build an HTTP envelope. The live 402 challenge sets the exact amount. (1 field, 0 required)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Optional keyword filter. Matched against each resource's description, provider name, and tags using case-insensitive token search. Omit to return the full catalog. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes |  |
