> ## Documentation Index
> Fetch the complete documentation index at: https://dev.jup.ag/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Jupiter Trading MCP

> Execute Jupiter trades and DeFi operations from any MCP client.

The Jupiter Trading MCP is a hosted [Model Context Protocol](https://modelcontextprotocol.io/) server that lets AI agents trade and run DeFi operations on Jupiter. Connect any MCP client to `https://mcp.jup.ag` and your agent can swap tokens, place orders, lend, and read on-chain positions. An API key is optional and only raises your rate limit.

<Note>
  This server executes operations. For an AI assistant that searches and reads Jupiter's documentation instead, see the read-only [Documentation MCP](/docs/ai/mcp).
</Note>

## What You Can Do

The server exposes **75 tools across 11 domains**. Your MCP client discovers them automatically once connected.

| Domain          | What it does                                                                                                                             |
| :-------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |
| **Swap**        | Get a quote and a ready-to-sign transaction, then execute the swap with managed landing.                                                 |
| **Tokens**      | Search tokens by name, symbol, or mint, list by tag, category, or recent listings, and run token verification.                           |
| **Price**       | Fetch real-time USD prices, liquidity, and 24h change for one or more tokens.                                                            |
| **Trigger**     | Create, update, cancel, and list limit orders that execute when a token hits a target price.                                             |
| **Recurring**   | Set up and manage dollar-cost averaging (DCA) orders that buy at regular intervals, built on the [Trigger API](/docs/trigger/dca)'s DCA flow. |
| **Lend**        | Deposit into and withdraw from Jupiter Lend to earn yield, and read your lending positions.                                              |
| **Prediction**  | Browse prediction market events, place and close bets, claim payouts, and read scores and forecasts.                                     |
| **Portfolio**   | Read a wallet's positions across Solana protocols and its staked JUP.                                                                    |
| **Send**        | Send tokens via Jupiter Send invites, claw back unclaimed invites, and list invite history.                                              |
| **Studio**      | Create Jupiter Studio token-launch (Dynamic Bonding Curve) pools and claim creator fees.                                                 |
| **Transaction** | Land any signed Solana transaction on-chain through Jupiter's Beam landing infrastructure.                                               |

## API Key (Optional)

The server works without an API key at a lower rate limit, which is enough to try it out. For higher rate limits, create a key in the [Developer Platform](https://developers.jup.ag/portal) and pass it as a Bearer token (shown in the setup below). The server forwards the key to Jupiter's API on your behalf and never stores it, so you use your own rate limits and permissions.

## Connect Your Client

Add the server to your MCP client's configuration. To use a higher rate limit, pass your Jupiter API key as a Bearer token in the `Authorization` header and replace `YOUR_JUPITER_API_KEY` with your key. To start without a key, drop the `headers` block entirely.

<Tabs>
  <Tab title="Claude Desktop">
    Claude Desktop adds remote MCP servers as custom connectors, not through `claude_desktop_config.json` (the config file only supports local stdio servers and ignores remote entries).

    1. Open **Settings > Connectors**.
    2. Select **Add custom connector**.
    3. Enter a name (for example `Jupiter`) and the URL `https://mcp.jup.ag`, then confirm.

    The connector flow does not take an `Authorization` header, so Claude Desktop connects keyless at the lower rate limit.
  </Tab>

  <Tab title="Claude Code">
    Add the server from your terminal:

    ```bash theme={null}
    claude mcp add --transport http jupiter https://mcp.jup.ag --header "Authorization: Bearer YOUR_JUPITER_API_KEY"
    ```

    Or add it manually to `.mcp.json` in your project root (use `~/.claude.json` to make it available in every project):

    ```json theme={null}
    {
      "mcpServers": {
        "jupiter": {
          "type": "http",
          "url": "https://mcp.jup.ag",
          "headers": {
            "Authorization": "Bearer YOUR_JUPITER_API_KEY"
          }
        }
      }
    }
    ```

    Verify with:

    ```bash theme={null}
    claude mcp list
    ```
  </Tab>

  <Tab title="Cursor">
    Open **Settings > MCP** and add a new server, or edit `.cursor/mcp.json`:

    ```json theme={null}
    {
      "mcpServers": {
        "jupiter": {
          "url": "https://mcp.jup.ag",
          "headers": {
            "Authorization": "Bearer YOUR_JUPITER_API_KEY"
          }
        }
      }
    }
    ```

    Save and reload Cursor.
  </Tab>

  <Tab title="Windsurf">
    Open **Settings > MCP** and add a new server, or edit `~/.codeium/windsurf/mcp_config.json`:

    ```json theme={null}
    {
      "mcpServers": {
        "jupiter": {
          "serverUrl": "https://mcp.jup.ag",
          "headers": {
            "Authorization": "Bearer YOUR_JUPITER_API_KEY"
          }
        }
      }
    }
    ```

    Save and restart Windsurf.
  </Tab>
</Tabs>

### Other MCP-Compatible Tools

Any tool that supports the MCP protocol can connect to `https://mcp.jup.ag` over HTTP transport. Add a Jupiter API key in the `Authorization: Bearer` header for a higher rate limit, or connect without one.

## Authentication

Authentication is optional and stateless. When you send a key, each request carries it as a Bearer token and the server stores nothing.

* No key: requests work at a lower rate limit. Omit the `Authorization` header.
* With a key: pass `Authorization: Bearer YOUR_JUPITER_API_KEY` for a higher rate limit.
* A `401 Unauthorized` response means the key you sent is invalid, not that a key is missing.
* The MCP endpoint is `https://mcp.jup.ag`. A separate `GET /health` endpoint needs no auth.

## Example Prompts

Once connected, ask your AI assistant in plain language. Each prompt maps to one or more tools.

| Prompt                                                           | Tools used                                                                                                                                                                   |
| :--------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| "What is the current price of SOL and JUP?"                      | `price_get`                                                                                                                                                                  |
| "Swap 10 USDC for SOL"                                           | `swap_get_order`, then `swap_execute_order`                                                                                                                                  |
| "Place a limit order to sell 50 USDC for SOL at a target price." | `trigger_get_challenge` → `trigger_verify_challenge` → `trigger_build_deposit` → `trigger_create_order` (plus `trigger_register_vault` the first time a wallet uses Trigger) |
| "DCA 100 USDC into SOL daily for 10 days."                       | `trigger_get_challenge` → `trigger_verify_challenge` → `recurring_build_order` → `recurring_execute` (plus `trigger_register_vault` the first time a wallet uses Trigger)    |
| "What tokens can I lend on Jupiter and what APY do they offer?"  | `lend_list_tokens`                                                                                                                                                           |
| "Are there any prediction markets about Bitcoin?"                | `prediction_search_events`                                                                                                                                                   |

Trading prompts that move funds return an unsigned transaction. Your client signs it with your wallet and submits it, so you stay in control of every transaction.

<Tip>
  If a tool call returns `401 Unauthorized`, the Jupiter API key you passed is invalid. Remove the `Authorization` header to run keyless at the lower rate limit, or replace it with a valid key from the [Developer Platform](https://developers.jup.ag/portal).
</Tip>

## Resources

<CardGroup cols={2}>
  <Card title="Developer Platform" icon="key" href="https://developers.jup.ag/portal">
    Create an optional Jupiter API key for a higher rate limit.
  </Card>

  <Card title="Documentation MCP" icon="plug" href="/docs/ai/mcp">
    The read-only server for searching and querying Jupiter docs.
  </Card>
</CardGroup>
