# Use WakeTrades Through MCP

> Connect an MCP client to WakeTrades at https://waketrades.com/mcp. 33 tools cover the whole flow — sign-in, traders and exposure level, webhook, trading key, payment and controls — with signatures made by the agent's own wallet, or with a code the wallet owner gives from their Profile.

WakeTrades runs a remote [Model Context Protocol](https://modelcontextprotocol.io) server. Any MCP client can call it: the same flow as the [API](https://waketrades.com/docs/api/index.md), as tools.

- **Address**: `https://waketrades.com/mcp` (Streamable HTTP, JSON responses, no login to connect)
- **Signatures**: the server never sees a private key. Tools that need a signature return the exact EIP-191 message or EIP-712 `typedData` to sign; the agent signs with its own wallet and sends the signature back. **Check before you sign**: Only sign data that comes from `https://waketrades.com` (API `https://waketrades.com/api/v1`, MCP server `https://waketrades.com/mcp`); refuse any other host or MCP server that claims to be WakeTrades. Check the `typedData` you sign, not only `action`. Trading key: `primaryType` is `HyperliquidTransaction:ApproveAgent`. Payment: `primaryType` is `HyperliquidTransaction:UsdSend` or `HyperliquidTransaction:SendAsset`, `message.destination` is the `receiver` and `message.amount` is your plan's price, both read from `GET https://waketrades.com/api/v1/subscription`. WakeTrades never asks you to sign a `Withdraw` or any other type. If anything differs, do not sign and tell your owner.
- **Helping a person who keeps their wallet**: they connect you from **Profile › AI Agent** on waketrades.com and give you a code. Put it in your MCP client's headers as `Authorization: Bearer <code>` and skip the sign-in tools; the trading key and payments stay with them on the website ([Connect Your AI Agent](https://waketrades.com/docs/account/connect-ai-agent.md)). A View only code can only read: write tools answer `view_only`.
- **Rules**: the same as the API — limits, restricted jurisdictions (no location filter today; requests may be refused with `geo_blocked` at any time, see [Rules](https://waketrades.com/docs/api/index.md#rules-that-apply-to-agents)), the [Terms of use](https://waketrades.com/docs/legal/terms#ai-agents).

## Connect

Add the server to your client's MCP configuration, for example:

```json
{ "mcpServers": { "waketrades": { "type": "http", "url": "https://waketrades.com/mcp" } } }
```

After `finish_sign_in`, put the `session_token` in the `Authorization` header of the server. Tools don't take it as an argument: it would end up in transcripts and logs.

```json
{ "mcpServers": { "waketrades": { "type": "http", "url": "https://waketrades.com/mcp", "headers": { "Authorization": "Bearer <session_token>" } } } }
```

## Tools

| Tool | What it does |
| --- | --- |
| `hello` | Start here: what WakeTrades is, three quick-start steps, the network, whether copying is on, and the links ([Hello](https://waketrades.com/docs/api/endpoints.md#hello)) |
| `get_started` | The whole flow, the rules and the links |
| `get_offer`, `get_leader`, `get_levels` | Prices; a Hyperliquid trader's card; the four exposure levels and their rules, with `recommendedLevel` for a balance (`equity`, or the signed-in account's with `session_token`) |
| `get_leader_positions` | A trader's open positions now (PnL, size, age): check it before choosing, report figures are month-end |
| `backtest_leader` | What copying a trader would have done over the last 30 or 90 days at a level and balance: return, worst drop, trades copied and skipped, fees. 5 per 24 hours on the free trial, 20 with a paid plan ([Backtest a Trader](https://waketrades.com/docs/api/backtest.md)) |
| `start_sign_in`, `finish_sign_in` | Message to sign (EIP-191), then `session_token` (valid until your plan or free trial ends, 6 months at most, and 7 days before the trial starts) |
| `get_account` | Account, copy status, positions, balance, and `copiesOnHold` (`held`, `reasons`, `coins`): why new copies would not open now |
| `set_copy_settings` | Exposure level (`prudent`, `equilibre`, `risque`, `advanced`) and traders (up to 3, or 5 at `advanced`). During sign-up, call it with the level alone first, then with traders |
| `suggest_leader` | One trader of our latest Monthly Report for the level (one suggestion per level; you can follow up to 3 leaders, 5 at `advanced`): the most active of #3 to #5, never #1 or #2, skipping any trader already suggested for a more prudent level ([rule](https://waketrades.com/docs/api/endpoints.md#suggested-traders)), with win rate, profit factor, trades per month, median holding time and `liveCheck`; pass the address to `set_copy_settings`. If no edition is published yet: `no_suggestion`, choose a trader by address |
| `set_order_mode` | `limit` (default: post-only at the leader's price, market after 1 minute, `limit_missed` if the leader exits first) or `market` ([Order Mode](https://waketrades.com/docs/api/endpoints.md#order-mode)) |
| `set_advanced` | Settings of the Advanced level (every plan, free trial included): size, exposure cap, open positions, alerts, automatic stop, adds, take profit and stop loss; markets, minimum market leverage, leverage cap, sides, stop per copy, daily loss limit (all off by default, see [Advanced Settings](https://waketrades.com/docs/api/endpoints.md#advanced-settings)) |
| `link_webhook`, `unlink_webhook` | Alert channel for agents ([Webhooks](https://waketrades.com/docs/api/webhooks.md)) |
| `prepare_trading_key`, `submit_trading_key`, `confirm_trading_key` | `approveAgent` typedData to sign, relay it, accept the Terms and start copying |
| `switch_to_unified_account` | Switch the Hyperliquid account to a Unified Account with the trading key, no signature: call it right after `confirm_trading_key` ([why](https://waketrades.com/docs/api/set-up-copying.md#5-switch-to-a-unified-account)) |
| `prepare_payment`, `submit_payment` | The payment to sign for a plan (`usdSend` from perps, or `sendAsset` from spot USDC), then pay |
| `get_positions`, `get_orders`, `get_journal` | Copied positions (prices and PnL up to 30 seconds old, longer during a Hyperliquid outage or heavy load), copy orders and skipped trades, events |
| `get_report` | The monthly report: up to 5 traders per exposure level (names and addresses with a paid plan) |
| `pause_copying`, `resume_copying`, `close_position`, `close_losing`, `close_all`, `emergency_stop` | Controls (closing tools are marked destructive) |
| `revoke_all_sessions` | Signs out every session of the wallet, this one included (browsers, agents, Telegram links); copying is not affected |

Every tool except the public ones needs the session: send it as the header `Authorization: Bearer <session_token>`. A `session_token` argument is refused (`token_in_arguments`); without the header, the tool answers `session_required`. Results come as JSON (`structuredContent`); errors have `isError: true` and the same codes as the API, with `fix` (what to do next) and `docs` ([Errors](https://waketrades.com/docs/api/endpoints.md#errors)). `set_copy_settings` and `submit_payment` take `dry_run: true` to rehearse with no effect ([Dry Run](https://waketrades.com/docs/api/endpoints.md#dry-run)); `submit_payment`, `submit_trading_key`, `switch_to_unified_account` and the controls except `close_losing` take an optional `idempotency_key` ([Idempotency](https://waketrades.com/docs/api/endpoints.md#idempotency)).

## Example: Sign the Trading Key

1. `prepare_trading_key` returns `action` and `typedData`.
2. Sign `typedData` with the wallet (`eth_signTypedData_v4`) and split the signature into `r`, `s`, `v`.
3. `submit_trading_key { action, signature }` relays it to Hyperliquid.
4. `confirm_trading_key { accept_terms: true }` — with a webhook (or Telegram) linked, copying and the 14-day free trial start.
5. `switch_to_unified_account` — new copies at Prudent, Balanced and Risky need a Unified Account.
