Connect an agent

Trade Desk is a Model Context Protocol (MCP) server. Connect once and every tool, with its documentation, is available to the model.

Endpoints

TransportURL
Streamable HTTP (recommended)https://trade-desk-1021990235790.us-central1.run.app/mcp
Server-Sent Eventshttps://trade-desk-1021990235790.us-central1.run.app/mcp/sse

Have a trial key?

A key runs every tool without the daily limit. Where it goes depends on the app:

  • Apps where you paste a URL into a connector screen (Claude and ChatGPT, on the web, desktop and phone): put the key at the end of the URL. Treat that URL like a password.
  • Config files, terminals and your own code: send it as the x-api-key header (or Authorization: Bearer).
URL with your key
https://trade-desk-1021990235790.us-central1.run.app/mcp?key=YOUR_KEY
Claude Code
claude mcp add --transport http trade-desk https://trade-desk-1021990235790.us-central1.run.app/mcp --header "x-api-key: YOUR_KEY"
Cursor and other mcp.json clients
{
  "mcpServers": {
    "trade-desk": {
      "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp",
      "headers": {
        "x-api-key": "YOUR_KEY"
      }
    }
  }
}

Claude

On claude.ai and in the Claude apps, open Customize, then Connectors, choose Add and then Add custom connector. Name it Trade Desk, paste the URL below, and pick No sign in. Free plans allow one custom connector.

Watch it done in Claude (video, under 2 minutes)

Connector URL
https://trade-desk-1021990235790.us-central1.run.app/mcp

Try it: start a new chat and ask

Ask
Use Trade Desk to check the token DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK) for known traps.

You should see token_safety run and a verdict with its reasons. SAFE means none of the traps Pulse knows about were found, not that the price can't fall.

In Claude Code, run:

Terminal
claude mcp add --transport http trade-desk https://trade-desk-1021990235790.us-central1.run.app/mcp

ChatGPT

ChatGPT adds MCP servers as custom plugins, on the web only. It needs developer mode, which OpenAI offers on Business, Enterprise and Edu plans, and on Pro for read-only tools like these.

Watch it done in ChatGPT (video, under 2 minutes)

  1. Open ChatGPT Plugins, select the plus button and choose Add custom MCP server.
  2. Name it Trade Desk and paste the URL below as the Server URL.
  3. Set Authentication to No authentication, confirm the warning and select Create as a plugin.
  4. Install it from your plugins, then start a Work chat and type @ to pick it.
Server URL
https://trade-desk-1021990235790.us-central1.run.app/mcp

Try it: start a new chat and ask

Ask
Use Trade Desk to check the token DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK) for known traps.

You should see token_safety run and a verdict with its reasons. SAFE means none of the traps Pulse knows about were found, not that the price can't fall.

ChatGPT calls tools from OpenAI's servers, so its users share the daily free calls, and it can't pay for calls beyond them itself.

Gemini CLI

Add the server for your user account, then check it shows as connected. Inside a session, /mcp lists its tools.

Watch it done in Gemini CLI (video, under 2 minutes)

Terminal
gemini mcp add -s user --transport http trade-desk https://trade-desk-1021990235790.us-central1.run.app/mcp
gemini mcp list

Or add it by hand to ~/.gemini/settings.json. Streamable HTTP servers use httpUrl, not url.

settings.json
{
  "mcpServers": {
    "trade-desk": {
      "httpUrl": "https://trade-desk-1021990235790.us-central1.run.app/mcp"
    }
  }
}
settings.json, with your trial key
{
  "mcpServers": {
    "trade-desk": {
      "httpUrl": "https://trade-desk-1021990235790.us-central1.run.app/mcp",
      "headers": {
        "x-api-key": "YOUR_KEY"
      }
    }
  }
}

Antigravity

Antigravity CLI replaced Gemini CLI for free and Google One accounts. Type /mcp to open its MCP manager, or add the server to ~/.gemini/config/mcp_config.json (or .agents/mcp_config.json for one project). Antigravity uses serverUrl; it ignores url and httpUrl. In the Antigravity editor, open the agent panel's menu, then MCP Servers, Manage MCP Servers and View raw config.

Watch it done in Antigravity (video, under 2 minutes)

mcp_config.json
{
  "mcpServers": {
    "trade-desk": {
      "serverUrl": "https://trade-desk-1021990235790.us-central1.run.app/mcp"
    }
  }
}
mcp_config.json, with your trial key
{
  "mcpServers": {
    "trade-desk": {
      "serverUrl": "https://trade-desk-1021990235790.us-central1.run.app/mcp?key=YOUR_KEY"
    }
  }
}

Cursor

Add the server to ~/.cursor/mcp.json (or .cursor/mcp.json for one project), then turn it on under Cursor Settings, MCP.

Watch it done in Cursor (video, under 2 minutes)

mcp.json
{
  "mcpServers": {
    "trade-desk": {
      "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp"
    }
  }
}

Try it: start a new chat and ask

Ask
Use Trade Desk to check the token DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 (BONK) for known traps.

You should see token_safety run and a verdict with its reasons. SAFE means none of the traps Pulse knows about were found, not that the price can't fall.

VS Code (GitHub Copilot)

Run the command below, or add the server to .vscode/mcp.json in your project. VS Code uses servers, not mcpServers, and needs "type": "http". The tools show up in Copilot Chat's agent mode.

Watch it done in VS Code (video, under 2 minutes)

Terminal
code --add-mcp '{"name":"trade-desk","type":"http","url":"https://trade-desk-1021990235790.us-central1.run.app/mcp"}'
.vscode/mcp.json
{
  "servers": {
    "trade-desk": {
      "type": "http",
      "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp"
    }
  }
}
.vscode/mcp.json, with your trial key
{
  "servers": {
    "trade-desk": {
      "type": "http",
      "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp",
      "headers": {
        "x-api-key": "YOUR_KEY"
      }
    }
  }
}

Windsurf

Open Cascade's MCP settings and choose View raw config, or edit ~/.codeium/windsurf/mcp_config.json. Windsurf uses serverUrl. Restart Windsurf after saving.

Watch it done in Windsurf (video, under 2 minutes)

mcp_config.json
{
  "mcpServers": {
    "trade-desk": {
      "serverUrl": "https://trade-desk-1021990235790.us-central1.run.app/mcp"
    }
  }
}
mcp_config.json, with your trial key
{
  "mcpServers": {
    "trade-desk": {
      "serverUrl": "https://trade-desk-1021990235790.us-central1.run.app/mcp?key=YOUR_KEY"
    }
  }
}

Cline

Open Cline's MCP Servers panel, go to Configure and edit cline_mcp_settings.json. Without "type": "streamableHttp", Cline treats the entry as a local command and fails to connect.

Watch it done in Cline (video, under 2 minutes)

cline_mcp_settings.json
{
  "mcpServers": {
    "trade-desk": {
      "type": "streamableHttp",
      "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp",
      "disabled": false
    }
  }
}
cline_mcp_settings.json, with your trial key
{
  "mcpServers": {
    "trade-desk": {
      "type": "streamableHttp",
      "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp?key=YOUR_KEY",
      "disabled": false
    }
  }
}

OpenAI Codex CLI

Add the server from the terminal, or put it in ~/.codex/config.toml. Inside Codex, /mcp lists its tools.

Watch it done in Codex CLI (video, under 2 minutes)

Terminal
codex mcp add trade-desk --url https://trade-desk-1021990235790.us-central1.run.app/mcp
codex mcp list
config.toml
[mcp_servers.trade-desk]
url = "https://trade-desk-1021990235790.us-central1.run.app/mcp"
config.toml, with your trial key (in the PULSE_KEY environment variable)
[mcp_servers.trade-desk]
url = "https://trade-desk-1021990235790.us-central1.run.app/mcp"
bearer_token_env_var = "PULSE_KEY"

Zed

Open your settings with zed: open settings file. Zed uses context_servers, not mcpServers; an entry with a url is a remote server.

Watch it done in Zed (video, under 2 minutes)

settings.json
{
  "context_servers": {
    "trade-desk": {
      "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp"
    }
  }
}
settings.json, with your trial key
{
  "context_servers": {
    "trade-desk": {
      "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp?key=YOUR_KEY"
    }
  }
}

OpenCode

Add the server to opencode.json in your project, or ~/.config/opencode/opencode.json for every project.

Watch it done in OpenCode (video, under 2 minutes)

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "trade-desk": {
      "type": "remote",
      "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp"
    }
  }
}
opencode.json, with your trial key
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "trade-desk": {
      "type": "remote",
      "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp",
      "headers": {
        "x-api-key": "YOUR_KEY"
      }
    }
  }
}

Other clients that accept a URL

Most other MCP clients take the same shape. If a client only runs local commands, bridge it with npx mcp-remote https://trade-desk-1021990235790.us-central1.run.app/mcp.

mcp.json
{
  "mcpServers": {
    "trade-desk": {
      "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp"
    }
  }
}

ElizaOS

Add the MCP plugin and this server to your character file. Every tool becomes an action your agent can call.

Watch it done in ElizaOS (video, under 2 minutes)

character.json
{
  "plugins": [
    "@elizaos/plugin-mcp"
  ],
  "settings": {
    "mcp": {
      "servers": {
        "trade-desk": {
          "type": "streamable-http",
          "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp"
        }
      }
    }
  }
}
character.json, with your trial key
{
  "plugins": [
    "@elizaos/plugin-mcp"
  ],
  "settings": {
    "mcp": {
      "servers": {
        "trade-desk": {
          "type": "streamable-http",
          "url": "https://trade-desk-1021990235790.us-central1.run.app/mcp?key=YOUR_KEY"
        }
      }
    }
  }
}

Coinbase AgentKit

To have an AgentKit agent check every Solana send before signing, fork the Coinbase AgentKit template: an action provider whose pulse_send_sol signs only after check_tx says OK and tx_matches says MATCH, plus pulse_token_safety and pulse_trace. Dry run by default.

AgentKit's x402 actions call the HTTP API (POST /api/tools/<name>) and pay from the agent's Solana wallet once a tool's free calls are used up. Register the gateway so the agent is allowed to call it, and cap what it can spend per call:

TypeScript
import { AgentKit, SolanaKeypairWalletProvider, x402ActionProvider } from "@coinbase/agentkit";

const walletProvider = await SolanaKeypairWalletProvider.fromNetwork("solana-mainnet", process.env.SOLANA_PRIVATE_KEY!);
const agentkit = await AgentKit.from({
  walletProvider,
  actionProviders: [x402ActionProvider({ registeredServices: ["https://trade-desk-1021990235790.us-central1.run.app"], maxPaymentUsdc: 0.05 })],
});

An agent that can pay

Desktop apps can use every tool within its daily free calls. To go beyond them, build your agent with an x402-capable MCP client, which answers payment requests from a Solana wallet holding USDC:

TypeScript
import { createx402MCPClient } from "@x402/mcp";
import { ExactSvmScheme } from "@x402/svm/exact/client";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = createx402MCPClient({
  name: "my-agent",
  version: "1.0.0",
  schemes: [{ network: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", client: new ExactSvmScheme(signer) }],
  autoPayment: true,
});
await client.connect(new StreamableHTTPClientTransport(new URL("https://trade-desk-1021990235790.us-central1.run.app/mcp")));
const result = await client.callTool("token_safety", { token: "<token address>" });

Discovery files

FileWhat it is
/.well-known/mcp.jsonMachine-readable manifest: tools, prices and payment details.
/llms.txtPlain-text guide for language models.
/api/toolsEvery tool with full input and output documentation, as JSON.