# How to connect Surf with ChatGPT

```json
{
  "title": "How to connect Surf with ChatGPT",
  "toolkit": "Surf",
  "toolkit_slug": "surf",
  "framework": "ChatGPT",
  "framework_slug": "chatgpt",
  "url": "https://composio.dev/toolkits/surf/framework/chatgpt",
  "markdown_url": "https://composio.dev/toolkits/surf/framework/chatgpt.md",
  "updated_at": "2026-10-22T05:33:15.670Z"
}
```

## Introduction

### How to connect Surf MCP with ChatGPT
[ChatGPT](https://chatgpt.com/) can take action across your apps and files, stay with a project for hours, and turn a goal into finished materials like sheets, slides, and docs, not just answers.
In this guide, I will explain the easiest and most secure way to connect your Surf account to ChatGPT via Composio Connect, so it can research markets, track crypto prices, analyze equities, query on-chain data, and search the web through natural language commands without ever putting your account credentials at risk.

## Also integrate Surf with

- [Claude Cowork](https://composio.dev/toolkits/surf/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/surf/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/surf/framework/atomic-agent)

## TL;DR

### Why use Composio over default connectors?
- Apps with read and write access. Default connectors mostly can read your data. Composio's Surf integration lets ChatGPT take actions like creating drafts, sending updates, labeling records, and more.
- 1,500+ SaaS toolkits out of the box. Composio gives you instant access to a vast catalog of pre-built connectors, from Gmail and Slack to Notion, Linear, and Salesforce.
- One MCP server for every app. Connect any of your applications on demand through a single endpoint, rather than juggling a separate server for each app.
- Smart, context-aware tool loading. Unlike traditional MCP servers that dump every available tool into the LLM context window, Composio searches for and loads only the tools relevant to the task at hand.
- Cross-app automation. Chain actions across multiple apps in a single run - fetch a thread, summarize it in Notion, and post highlights to Slack without leaving the conversation.

## Connect Surf to ChatGPT

### Prerequisites
- A ChatGPT account. We will use the [ChatGPT desktop app](https://openai.com/chatgpt/download/), and the steps are the same on the web.
- Access to the Surf workspace you want to connect.
- [Composio plugin](https://dashboard.composio.dev/login?utm_source=toolkits&utm_medium=framework_template&utm_campaign=chatgpt&utm_content=composio_connect&next=%2F~%2Forg%2Fconnect%2Fclients%2Fchatgpt).
Note: Composio connects through OAuth. You will be asked to sign in and approve specific permissions. Review the permission screen carefully if you are using a work account.
### Step-by-step: Connect Surf to ChatGPT
### 1. Install the Composio plugin
Click the button. ChatGPT opens the Composio plugin page. Click Install plugin.
[Install in ChatGPT](https://chatgpt.com/plugins/plugin_asdk_app_6a58503580c08191b78cc5bdaf4eba6e)
You can also find it inside ChatGPT: go to Settings, open Plugins, search the marketplace for Composio, and click Install plugin.
### 2. Authenticate
After you install, ChatGPT asks you to authenticate with Composio. Log in and click Allow access to authorize ChatGPT to use your Composio account.
### 3. Start using Composio
That is it. Composio tools are now available in ChatGPT. Type @Composio followed by your request, for example @Composio find unread Surf messages and summarize them, and it will run the actions you authorize. On first use it asks you to authorize Surf.
### Option 2: Add Composio as an MCP server
If you cannot use the plugin marketplace, add Composio as a custom MCP server instead.
### 1. Open the MCP settings
In ChatGPT, go to Settings and open the Plugins section. Inside the Plugins page, click the MCP tab.
### 2. Add the server
Click Add server. In the Name field enter Composio, for Type select Streamable HTTP, and in the URL field paste the Composio MCP server URL:

```bash
https://connect.composio.dev/mcp
```

## What is the Surf MCP server, and what's possible with it?

The Surf MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Surf account. It provides structured and secure access so your agent can perform Surf operations on your behalf.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `SURF_CANCEL_ONCHAIN_SQL_JOB` | Cancel Asynchronous Blockchain SQL Job | Durably request cancellation of an asynchronous blockchain SQL job and return its current state. Queued jobs become canceled immediately; running queries stop asynchronously, so poll the job until it is canceled or failed. |
| `SURF_CREATE_ONCHAIN_SQL_JOB` | Submit Asynchronous Blockchain SQL Job | Submit a read-only ClickHouse SQL query for durable background execution and return its stable job and query identifiers immediately. Equivalent retained queries with the same max_rows, or requests reusing an Idempotency-Key, return the existing job. |
| `SURF_GET_DEX_TOKEN_PRICE` | DEX Token OHLCV Price | Return USD DEX-pool-weighted OHLCV bars for one token identified by chain and contract address. Use this for DEX-native or newly launched tokens; use the standard market price action for major listed assets. |
| `SURF_GET_EQUITY_BALANCE_SHEET` | Equity Balance Sheet | Return standardized balance-sheet periods for a US-listed equity. Each metric includes an availability status, and unavailable values are null. |
| `SURF_GET_EQUITY_CANDLES` | Equity Price Candles | Return historical OHLCV candles and the latest traded price for a US-listed equity. Candles are ordered by timestamp ascending; historical data and the latest price use independent freshness windows. |
| `SURF_GET_EQUITY_CASH_FLOW` | Equity Cash Flow | Return paginated standardized cash-flow periods for a US-listed equity. The response preserves serving-layer values, status, origin, and period metadata. |
| `SURF_GET_EQUITY_COMPANY_PROFILE` | Equity Profile | Return a standardized stock company profile or ETF product profile, including its business description and source-update metadata. |
| `SURF_GET_EQUITY_FINANCIAL_METRICS` | Equity Financial Metrics | Return paginated standardized financial ratios, growth measures, per-share values, and valuation metrics for a US-listed equity. |
| `SURF_GET_EQUITY_INCOME_STATEMENT` | Equity Income Statement | Return standardized income-statement periods for a US-listed equity. The API passes through available periods and does not synthesize missing periods or financial values. |
| `SURF_GET_EQUITY_LATEST_FILINGS` | Latest Equity Filings | Return the most recently accepted periodic SEC filings across US equities. Includes 10-K, 10-Q, 20-F, 40-F and amendments, excludes 8-K, and returns one filing per reporting series. |
| `SURF_GET_EQUITY_LATEST_FINANCIALS` | Latest Equity Financials | Return the most recently published current-serving TTM financials across US equities, optionally filtered by a minimum current market capitalization. Results contain one company per reporting series. |
| `SURF_GET_EQUITY_META` | Equity Metadata | Return lightweight identity, logo, and latest USD price metadata for one or more US-listed stocks or ETFs. Symbols are returned in request order. Company and fund identity is cached for 24 hours; prices are cached independently for 1 minute. |
| `SURF_GET_EQUITY_OVERVIEW` | Equity Financial Overview | Return a paginated financial overview for a US-listed equity. Values are served as reported or derived by the financial-data serving layer; missing values remain explicit nulls and are not recalculated by this API. |
| `SURF_GET_EXCHANGE_DEPTH` | Exchange Order Book Depth | Return bid and ask order-book levels for an exchange market, including spread, spread percentage, mid-price, and total bid and ask depth. |
| `SURF_GET_EXCHANGE_FUNDING_HISTORY` | Exchange Funding Rate History | Return historical funding rate records for a perpetual contract. |
| `SURF_GET_EXCHANGE_KLINES` | Exchange OHLCV Candlesticks | Return exchange OHLCV candlesticks with high, low, and total-volume statistics for the returned period. Set `type` to a perpetual-market variant to query perpetual contracts instead of spot markets. |
| `SURF_GET_EXCHANGE_LONG_SHORT_RATIO` | Exchange Long/Short Ratio History | Return historical long/short ratios for a perpetual contract. |
| `SURF_GET_EXCHANGE_MARKETS` | Exchange Trading Pairs | Return trading pairs available on an exchange, including base and quote currencies, market type, active status, and default fee rates. Use the returned pair values with other exchange actions. |
| `SURF_GET_EXCHANGE_PERP` | Exchange Perpetual Contract Snapshot | Return a perpetual futures snapshot for a trading pair, including current funding, open interest, mark price, and index price data. |
| `SURF_GET_EXCHANGE_PRICE` | Exchange Ticker Price | Return the real-time ticker for an exchange trading pair, including the last price, best bid and ask, 24-hour high, low, volume, and price change. |
| `SURF_GET_FUND_DETAIL` | Fund Profile Detail | Return a crypto VC fund's full profile, including its description, jurisdiction, unique invested-project count, links, X accounts, team members, and recent research. This does not return individual investments. |
| `SURF_GET_HYPERLIQUID_ACCOUNT` | Account Portfolio | Return a Hyperliquid wallet's point-in-time portfolio across perpetuals, spot, vaults, and HYPE staking. Use total_value_usd for the best-effort whole-account value and unpriced_token_count to determine whether it excludes unpriced spot holdings. |
| `SURF_GET_HYPERLIQUID_CANDLES` | Market Candles | Return Hyperliquid market OHLCV candles ordered by open time ascending for a required half-open [from_, to) window. The window may contain at most 5,000 candles, so use a larger interval or narrower dates for long histories. This market-data action does not require a wallet address. |
| `SURF_GET_HYPERLIQUID_ORDERS` | Open & Recent Orders | Return a wallet's live resting orders and recent terminal orders. Use the open section to inspect active stops, take-profits, and limits, and the historical section for final filled, canceled, or rejected statuses. |
| `SURF_GET_HYPERLIQUID_PERFORMANCE` | Trading Performance | Return a wallet's lifetime funding-excluded realized trading performance, live open positions, unrealized PnL, and perpetual clearinghouse equity. This point-in-time summary has no date window or trade list; use account portfolio data when spot and vault equity must be included. |
| `SURF_GET_HYPERLIQUID_POSITIONS` | Open Positions | Return a wallet's open Hyperliquid perpetual positions with leverage, unrealized PnL, ROE, funding, liquidation risk, and its cross-margin summary. When a cross position has no liquidation price, use the account-level margin_ratio as the liquidation-proximity signal. |
| `SURF_GET_HYPERLIQUID_TRADE_CONTEXT` | Closed Trade Funding and Leverage | Return immutable funding and leverage context for one closed Hyperliquid trade using the composite key from the trades action. Use funding_status to distinguish a real zero from unavailable funding history; leverage fields may be omitted when the completed-trade source has no value. |
| `SURF_GET_HYPERLIQUID_TRADES_AGGREGATE` | Closed Trades Aggregate | Aggregate a wallet's closed Hyperliquid trades by UTC day, symbol, direction, notional-size tier, or holding-time tier. Returns server-side P&L, fee, funding-coverage, win-rate, and volume rollups in one bounded, non-paginated response; use daily groups for a realized equity curve. |
| `SURF_GET_KALSHI_OPEN_INTEREST` | Kalshi Open Interest History | Return daily open-interest history for one Kalshi market over a selected time window. Data refreshes approximately every 30 minutes. |
| `SURF_GET_KALSHI_PRICES` | Kalshi Price History | Return hourly or daily OHLC price history for one Kalshi market, or the latest price from recent trades. Surf refreshes this data about every 30 minutes. |
| `SURF_GET_KALSHI_VOLUMES` | Kalshi Volume History | Return daily notional trading-volume history for one Kalshi market over a selected time window. Surf refreshes this data about every 30 minutes. |
| `SURF_GET_MARKET_ETF` | ETF Flow History | Return daily spot ETF flow history for BTC, ETH, XRP, SOL, or HYPE, including net USD flow, closing token price, settlement status, and per-ticker flow breakdowns. |
| `SURF_GET_MARKET_FEAR_GREED` | Fear & Greed Index History | Return Bitcoin Fear and Greed Index history, including each 0-100 index value, its classification, and the Bitcoin price at that time. Results are sorted newest first and can be bounded by a date or Unix-time range. |
| `SURF_GET_MARKET_FUTURES` | Futures Market Overview | Return a single ranked snapshot of futures market data across all tracked tokens, including open interest, funding rate, long/short ratio, and 24-hour volume. The endpoint returns the complete list and does not support symbol filtering or pagination. |
| `SURF_GET_MARKET_LIQUIDATION_CHART` | Liquidation Chart | Return time-bucketed aggregate long- and short-side liquidation volumes for a token on a specific exchange and interval. |
| `SURF_GET_MARKET_LIQUIDATION_EXCHANGE_LIST` | Liquidation by Exchange | Return a single ranked snapshot of total, long-side, and short-side liquidation volumes by exchange for a token and aggregation window. |
| `SURF_GET_MARKET_ONCHAIN_INDICATOR` | On-Chain Indicator | Return daily on-chain indicator history for BTC or ETH, including NUPL, SOPR, MVRV, Puell Multiple, NVM, NVT, NVT Golden Cross, and exchange-flow metrics. Responses are capped at about 100 points; when meta.has_more is true, split the requested date range into smaller windows. |
| `SURF_GET_MARKET_OPTIONS` | Options Market Data | Return options market data for one supported token, including open interest, 24-hour volume, put/call ratio, and max pain price by exchange. |
| `SURF_GET_MARKET_PRICE` | Token Price History | Return historical prices for one listed token in a selected quote currency. Use a predefined window or paired custom bounds; Surf automatically chooses 5-minute, hourly, or daily granularity based on the range. |
| `SURF_GET_MARKET_PRICE_INDICATOR` | Technical Indicator | Return a technical indicator for a trading pair on a given exchange and candlestick interval. Omit from_ and to for the latest value, or provide a time range for a bounded series. |
| `SURF_GET_MARKET_PUBLIC_SALE` | Public Sale / Crowdsale | Return public sale information for a project resolved by Surf UUID, name, or token symbol, including sale type, status, dates, token price, funds raised, supply allocation, launchpad, and all-time-high ROI. |
| `SURF_GET_MARKET_TGE` | Token Generation Event | Return Token Generation Event status for a project resolved by Surf UUID, name, or token symbol, including the current status, last status-change time, and launch exchanges. |
| `SURF_GET_NEWS_DETAIL` | News Article Detail | Return the full content and metadata of one news article by an ID obtained from Surf news feed or search results. |
| `SURF_GET_ONCHAIN_DEX_ACTIVITY` | DEX Protocol Activity | Return active traders, trade count, and USD volume for one DEX protocol or router contract as either a total aggregate or a newest-first daily series. USD volume can lag by about three days; use enriched_ratio to assess completeness. |
| `SURF_GET_ONCHAIN_GAS_PRICE` | Current Onchain Gas Price | Return the current gas price for one supported EVM chain in both wei and Gwei. Surf reads the latest value from the chain's eth_gasPrice JSON-RPC method. |
| `SURF_GET_ONCHAIN_SCHEMA` | On-Chain Table Schema | Discover logical on-chain tables and columns before writing SQL or structured queries. Filter by table to include its bounded physical source metadata. Transfer-table amount values are decimal-adjusted display units; amount_raw contains the original base-unit value. |
| `SURF_GET_ONCHAIN_SQL_JOB` | Get Asynchronous Blockchain SQL Job | Return durable job status, elapsed time, ClickHouse progress counters, retry semantics, and result links for an asynchronous blockchain SQL job. Polling this action never starts another ClickHouse execution. |
| `SURF_GET_ONCHAIN_SQL_JOB_RESULTS` | Download Asynchronous Blockchain SQL Results | Return a completed asynchronous blockchain SQL job's retained results as structured JSON or a downloadable CSV. Results remain available for 24 hours and are isolated to the authenticated tenant or user. |
| `SURF_GET_ONCHAIN_TX` | Transaction Details by Hash | Look up one EVM transaction by chain and hash. Numeric transaction fields are returned as hexadecimal strings; request the labels enrichment to attach known sender and recipient entities. |
| `SURF_GET_POLYMARKET_OPEN_INTEREST` | Polymarket Open Interest History | Return daily open-interest history in USD for one Polymarket market over a selected time window. Data refreshes approximately every 30 minutes. |
| `SURF_GET_POLYMARKET_PRICE_OHLCV` | Polymarket OHLCV Candlesticks | Return OHLCV candlesticks for a Polymarket market for price-chart and bar visualizations. Each candle includes open, high, low, close, volume, and trade count. Use Polymarket price history instead for one price per interval. Surf refreshes this data approximately every 30 minutes. |
| `SURF_GET_POLYMARKET_PRICES` | Polymarket Price History | Return hourly or daily outcome-price history for one Polymarket market, or its latest price snapshot. Use Polymarket OHLCV instead for candlestick data. Surf refreshes this data approximately every 30 minutes. |
| `SURF_GET_POLYMARKET_VOLUMES` | Polymarket Volume History | Return aggregate Polymarket trading volume in USD and trade count as a time series for volume-trend analysis. Use Polymarket volume split for a YES/NO outcome-side breakdown. Surf refreshes this data about every 30 minutes. |
| `SURF_GET_POLYMARKET_VOLUME_SPLIT` | Polymarket Volume Split (YES/NO) | Return Polymarket trading volume split into YES and NO outcome sides for hourly, daily, or weekly intervals, including total volume and trade count. Use Polymarket volume history instead for aggregate volume without an outcome-side breakdown. Surf refreshes this data approximately every 30 minutes. |
| `SURF_GET_PROJECT_DETAIL` | Aggregated Project Detail | Return a crypto project's profile with selectable overview, token market, legacy tokenomics, funding, team, contract, social, and token-generation sections. Use the dedicated project DeFi metrics action for TVL, fees, revenue, volume, users, and per-chain metrics. |
| `SURF_GET_SIGNAL_DETAIL` | Signal Detail | Return one project signal card by Surf token UUID or project slug, including its score, classified state, score dimensions, market data, and summaries. |
| `SURF_GET_TOKEN_TRANSFER_STATS` | Token Transfer Activity Summary | Return aggregate transfer activity for a token contract over a selected window, including transfer count, approximate unique senders and receivers, token amount, activity bounds, and USD-enrichment coverage. Set include=series for a newest-first daily breakdown. |
| `SURF_GET_TOKEN_UNLOCK_SCHEDULE` | Token Unlock Schedule | Return token unlock time-series with cumulative amounts, allocation breakdowns, total supply denominator, and unlocked-supply percentage. Look up by Surf project UUID or token symbol and optionally bound the date range. `unlock_amount` is already cumulative and must not be summed across rows. |
| `SURF_GET_WALLET_DETAIL` | Aggregated Wallet Detail | Return a wallet's cross-chain portfolio with selectable balance, token, label, NFT, and approval sub-resources, plus its per-chain USD breakdown. |
| `SURF_GET_WALLET_LABELS_BATCH` | Get Wallet Labels Batch | Return entity names, entity types, and labels for up to 100 wallet addresses in one request. |
| `SURF_GET_WALLET_NET_WORTH` | Wallet Net Worth History | Return about 24 hours of total wallet net worth in USD at five-minute intervals for one EVM address. The time window is fixed and cannot be customized. |
| `SURF_GET_WEB_FETCH` | Web Page Fetch | Fetch one web page and convert its content to clean markdown, optionally limiting extraction, removing elements, or waiting for dynamic content with CSS selectors. |
| `SURF_GET_X_TWEETS_BY_IDS` | X Tweets by IDs | Return normalized X posts by numeric ID. Authentication is required. Each request costs at least 7 credits per unique requested ID; the actual cost reflects plan and tenant pricing. Repeated IDs are billed and looked up once. Unavailable IDs are billed and omitted from data; returned posts preserve first-input order. |
| `SURF_LIST_AIRDROP_ACTIVITIES` | Airdrop Activities | Return one page of airdrop activities with project, reward, status, fundraising, and social metrics. |
| `SURF_LIST_EQUITY_ETF_HOLDINGS` | ETF Holdings | Return one page from a stored ETF or index-fund portfolio snapshot plus its immediately previous snapshot, ordered newest to oldest. Available quarterly periods describe the stored holdings history. Set offset explicitly for another page; total_holdings is unfiltered and does not establish whether filtered results continue. |
| `SURF_LIST_EQUITY_FILINGS` | Equity SEC Filings | Return one page of verified periodic SEC filings for a US equity, including canonical filing metadata, document URLs, statement coverage, and provenance. |
| `SURF_LIST_EQUITY_LISTINGS` | Equity Listings | Return one page of current verified active stock listings for the issuer resolved from the requested ticker. Ticker alone is not treated as a durable listing identity. |
| `SURF_LIST_EQUITY_SEGMENTS` | Equity Segment Financials | Return one page of provider-reported product and operating or geographic segment facts for a US-listed equity. Provider labels and missing-value status are preserved; values are not added across incompatible dimensions. |
| `SURF_LIST_EXCHANGE_CANDLES` | Exchange Historical Candles | Return one page of persisted OHLCV candles for a covered Bithumb, Upbit, HashKey, bitFlyer, Coinone, or Korbit spot market. Results are ordered newest first. |
| `SURF_LIST_EXCHANGE_COVERAGE` | Exchange Market Coverage | Return one page of covered spot markets on Bithumb, Upbit, HashKey, bitFlyer, Coinone, and Korbit with ticker metrics, candle availability, technical score, and data status. Inspect data_status and data_actionability before using sparse or stale market data. |
| `SURF_LIST_FUND_PORTFOLIO` | Fund Portfolio | Return one page of a fund's investment rounds, sorted by the selected field. A project may appear more than once when the fund participated in multiple rounds. Prefer an exact fund id over a fuzzy name query. |
| `SURF_LIST_FUND_RANKING` | Fund Ranking | Return one page of crypto VC funds ranked by fund tier or number of invested projects, including up to five top portfolio projects per fund. |
| `SURF_LIST_HYPERLIQUID_FILLS` | Fills | Return one page of a wallet's individual Hyperliquid fills with realized PnL, fees, liquidity direction, and an opaque cursor. Use ascending order with from_ and follow next_cursor for complete history; descending order is a recent capped feed. |
| `SURF_LIST_HYPERLIQUID_LEADERBOARD` | Trader Leaderboard | Return one page of Hyperliquid traders ranked by PnL, win rate, or volume, with trade activity, account age, human-likeness, and market filters. Leaderboard PnL includes funding and must not be treated as equivalent to the funding-excluded PnL from Hyperliquid performance or trade actions. |
| `SURF_LIST_HYPERLIQUID_TRADES` | Closed Trades | Return one page of a wallet's closed Hyperliquid position lifecycles, newest close first, with entry and exit prices, size, hold time, fees, and realized PnL. net_pnl excludes funding; inspect funding_pnl and funding_status separately. Follow next_cursor for older trades. Use Closed Trades Aggregate for symbol, direction, or market-scoped rollups. |
| `SURF_LIST_KALSHI_EVENTS` | Kalshi Events | Return one page of Kalshi events with their nested markets, optionally filtered by event ticker. Omit event_ticker to browse top active events by volume. Surf refreshes this data approximately every 30 minutes. |
| `SURF_LIST_KALSHI_MARKETS` | Kalshi Markets | Return one page of Kalshi markets with status, payout type, volume, and open interest. Filter by an exact market ticker, or omit it to browse top active markets by volume. Data refreshes approximately every 30 minutes. |
| `SURF_LIST_KALSHI_ORDERBOOKS` | Kalshi Orderbook History | Return one page of historical YES-side bid and ask snapshots for a Kalshi market. Timestamps are Unix milliseconds and prices are cents. Follow next_cursor with pagination_key to retrieve additional snapshots. |
| `SURF_LIST_KALSHI_TRADES` | Kalshi Trades | Return one page of real-time individual trades for a Kalshi market, with taker side, outcome prices, notional volume, and timestamp. Filter by side, minimum notional, or time range, and follow next_cursor for more trades. |
| `SURF_LIST_MARKET_EXCHANGE_FLOW_EXCHANGES` | Exchange Flow Exchanges | Return one page of Surf's curated aggregate and high-coverage individual exchange filters for BTC or ETH exchange-flow metrics. Use a returned symbol as the exchange parameter for exchange-flow metrics in the market on-chain indicator action. |
| `SURF_LIST_MARKET_LIQUIDATION_ORDER` | Large Liquidation Orders | Return one offset page of individual large liquidation orders above a USD threshold. The provider exposes a bounded recent window; after its offset pages are exhausted, page backward by setting to to the oldest returned timestamp plus one and de-duplicating on order_id. |
| `SURF_LIST_MARKET_LISTINGS` | Exchange Listing Events | Return one page of historical exchange listing and delisting events, filtered by date range and optionally by token, exchange, product, or event type. |
| `SURF_LIST_MARKET_RANKING` | Token Rankings | Return one page of tokens ranked by market capitalization, 24-hour price change, or 24-hour trading volume, optionally filtered by token category. |
| `SURF_LIST_MATCHING_MARKET_DAILY` | Cross-Platform Daily Comparison (Polymarket Kalshi) | Return one page of daily volume and open-interest comparisons for a specific matched Polymarket and Kalshi market pair. Use matching-market pairs to discover the required identifiers first. Polymarket values are in USD; Kalshi values are in contracts. |
| `SURF_LIST_MATCHING_MARKET_PAIRS` | Cross-Platform Prediction Market Matcher | Return one page of matching Polymarket and Kalshi markets with match confidence, activity, volume, current probabilities, and price spread. Filter by category, match type, confidence, or a specific market ID; sort by spread_pct to find the widest current spreads. Data refreshes approximately every five minutes. |
| `SURF_LIST_NEWS_FEED` | Crypto News Feed | Return one page of crypto news from major sources, optionally filtered by publisher, project, or publication time. Use an article ID with the news detail action to fetch full content. |
| `SURF_LIST_ONCHAIN_BRIDGE_RANKING` | Bridge Protocol Ranking | Return one page of bridge protocols ranked by USD transfer volume over a selected time range, including transfer counts. |
| `SURF_LIST_ONCHAIN_YIELD_RANKING` | Yield Pool Ranking | Return one page of individual DeFi yield pools ranked by APY or TVL, optionally filtered by protocol. |
| `SURF_LIST_POLYMARKET_EVENTS` | Polymarket Events | Return one page of Polymarket events with aggregated status and volume plus their nested markets and outcomes, filtered by event slug. Surf refreshes this data approximately every 30 minutes. |
| `SURF_LIST_POLYMARKET_LEADERBOARD` | Polymarket Leaderboard | Return one page of Polymarket traders ranked by realized PnL, trading volume, or trade count, including aggregate position outcomes. Data refreshes approximately every five minutes. |
| `SURF_LIST_POLYMARKET_MARKETS` | Polymarket Markets | Return one page of Polymarket markets with outcomes, status, volume, and condition identifiers, filtered by market slug. Use condition_id with the Polymarket prices action for current prices. Surf refreshes this data approximately every 30 minutes. |
| `SURF_LIST_POLYMARKET_ORDERBOOKS` | Polymarket Orderbook History | Return one page of historical bid and ask depth snapshots for a Polymarket token. Timestamps are Unix milliseconds and prices range from 0 to 1. Follow next_cursor with pagination_key to retrieve additional snapshots. Surf refreshes this data approximately every five minutes. |
| `SURF_LIST_POLYMARKET_POSITIONS` | Polymarket Wallet Positions | Return one page of open Polymarket positions for a specific proxy wallet, including market identifiers, share size, valuation, and profit and loss. Surf refreshes this data approximately every 30 minutes. |
| `SURF_LIST_POLYMARKET_SMART_MONEY` | Polymarket Smart Money | Return one page of Polymarket smart-wallet analytics. The positioning view aggregates bullish or bearish direction and conviction by market; the trades view returns individual trades of at least $10,000 with wallet metadata. Surf refreshes this data approximately every five minutes. |
| `SURF_LIST_POLYMARKET_TRADES` | Polymarket Trades | Return one page of Polymarket trades or wallet activity, filtered by market, wallet, outcome, minimum amount, or time range. Use type=redemption for splits, merges, and redemptions, or type=all for every activity type. Surf refreshes this data approximately every five minutes. |
| `SURF_LIST_PREDICTION_MARKET_ANALYTICS` | Prediction Market Analytics | Return one page of prediction-market analytics with daily trends, top markets by open interest, momentum distribution, and per-market momentum signals. Omit category for platform-wide totals, and use platform for an exchange-specific view. Set offset explicitly to request another momentum-markets page because the response has no continuation metadata. Use prediction-market search instead to browse individual markets. |
| `SURF_LIST_PREDICTION_MARKET_CORRELATIONS` | Market Correlations | Return one page of 30-day Pearson price-correlation pairs between Polymarket markets in one category. Results cover the top 100 markets by 7-day volume globally; lower-volume markets may have no correlation data. Filter by condition_id to find markets correlated with one market. |
| `SURF_LIST_PROJECT_AI_NEWS` | Project AI News | Return one page of AI-generated news and signal analysis for a project identified by Surf UUID or fuzzy name. Results include price-analysis and funding signals; social and X-derived items are excluded by Surf. |
| `SURF_LIST_PROJECT_DEFI_METRICS` | Project DeFi Metrics | Return one page of historical metric points for a single DeFi protocol. Look up the protocol by exact Surf project UUID when available or by fuzzy name, then filter by metric, chain, and time range. |
| `SURF_LIST_PROJECT_DEFI_RANKING` | DeFi Protocol Ranking | Return one page of DeFi protocols ranked by TVL, fees, revenue, volume, or users. For individual pool or vault yields, use the on-chain yield ranking action instead. |
| `SURF_LIST_SIGNAL_PROJECTS` | Signal Projects | Return one page of ranked project signal cards for a 24-hour or 7-day window. Each card can include project identity, score, latest price, price changes, classified state, dimension scores, compact token signals, AI summaries, and supporting market metrics. |
| `SURF_LIST_SIGNAL_TOP_TOKENS` | Top Token Signals | Return one page of daily or weekly top-token project signal cards with latest price, price changes, dimension scores, compact signals, and AI summaries. |
| `SURF_LIST_TOKEN_DEX_TRADES` | Token DEX Trade History | Return one page of recent DEX swaps for a token contract on Ethereum, Base, BSC, Arbitrum, or Tron. Each trade includes the pair, bought and sold amounts, USD value, taker, transaction hash, and DEX. Set include=labels for taker entity data, and follow next_cursor for more trades. |
| `SURF_LIST_TOKEN_HOLDERS` | Token Holders | Return one page of top token holders for a contract address. |
| `SURF_LIST_TOKEN_TRANSFER_COUNTERPARTIES` | Top Transfer Counterparties | Return one page of a token's top receivers or senders over a selected window, ranked by transfer count, token amount, or USD value. Optionally attach entity labels or exclude common infrastructure categories. |
| `SURF_LIST_TOKEN_TRANSFERS` | Token Transfer History | Return one page of recent transfers for a token contract on Ethereum, Base, Solana, Tron, BSC, or Arbitrum. Filter by date range, optionally attach sender and recipient labels, and follow next_cursor for more transfers. |
| `SURF_LIST_WALLET_HISTORY` | Wallet Transaction History | Return one page of a wallet's on-chain transactions, classified by type and valued in the chain's native token. Use wallet transfer history instead for token identity and USD-valued ERC-20 or SPL transfers. Use before for deep pagination and deduplicate by tx_hash when paging across a shared timestamp. |
| `SURF_LIST_WALLET_PROTOCOLS` | Wallet DeFi Protocol Positions | Return one page of a wallet's DeFi protocol positions across lending, staking, liquidity pools, and farming, including token breakdowns and USD values. |
| `SURF_LIST_WALLET_TRANSFERS` | Wallet Transfer History | Return one page of ERC-20 or SPL token transfers involving a wallet, with token identity, USD value, and incoming or outgoing flow. Use wallet transaction history instead for all transaction types and native values. |
| `SURF_PREFLIGHT_ONCHAIN_SQL` | Preflight Blockchain SQL Query | Validate and estimate a read-only ClickHouse SELECT or WITH query without executing it. Returns the server-bounded SQL, physical scan estimate, budgets, and guardrail warnings. This preflight consumes Surf credits. |
| `SURF_QUERY_ONCHAIN_DATA` | Blockchain Structured Query | Query an on-chain table with structured fields, filters, sorting, and row limits instead of raw SQL. Discover tables and columns first with Surf's on-chain schema action. Use qualified `agent.` sources, include a block_date filter for large tables, and avoid unindexed symbol filters. |
| `SURF_QUERY_ONCHAIN_SQL` | Blockchain SQL Query | Synchronously run one read-only ClickHouse SELECT or WITH query against Surf's blockchain tables with a 30-second timeout. Use SURF_CREATE_ONCHAIN_SQL_JOB instead for durable asynchronous work. Never automatically retry a synchronous timeout. |
| `SURF_SEARCH_AIRDROP` | Airdrop Search | Return one page of airdrop opportunities filtered by project keyword, lifecycle phase, reward type, task type, or open-task availability. Full task details can be included when needed. |
| `SURF_SEARCH_EVENTS` | Project Event Search | Return one page of project events for a Surf project identified by exact UUID or fuzzy name, optionally filtered by event type. |
| `SURF_SEARCH_FUND` | Fund Search | Return one page of crypto investment funds matching a name keyword, including fund identity, tier, type, logo, and top invested projects. |
| `SURF_SEARCH_FUNDRAISING` | Fundraising Event Search | Return one page of source-backed fundraising and token-sale events, or the latest fundraising timeline when no query is provided. |
| `SURF_SEARCH_NEWS` | News Article Search | Return one page of crypto news articles matching a keyword or phrase, ranked by relevance with matching fragments highlighted when available. |
| `SURF_SEARCH_PREDICTION_MARKET` | Search Prediction Markets | Return one page of Polymarket and Kalshi markets with identifiers, status, volume, open interest, trade counts, current probability, and smart-money signals. Filter by platform, category, status, keyword, or exact platform identifier. Data refreshes approximately every five minutes. |
| `SURF_SEARCH_PROJECT` | Project Search | Return one page of crypto projects matching a project name or token ticker. Results include Surf project UUIDs for exact follow-up lookups. |
| `SURF_SEARCH_TOKEN` | Token Symbol Resolution | Resolve an exact token ticker symbol to one page of likely contract-address candidates on supported chains. Use the returned chain and address before calling token endpoints that require a contract address. |
| `SURF_SEARCH_WALLET` | Wallet Search | Return one page of wallet entities matching an ENS name, address label, or wallet-address prefix, including associated labels and known addresses. |
| `SURF_SEARCH_WEB` | Web Search | Return one page of web pages matching a keyword or phrase, optionally restricted to specific domains and including full page content. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

Once connected, ChatGPT can access the Surf MCP server via Composio to run actions that you authorize, directly in your workspace.

## Complete Code

None listed.

## How to build Surf MCP Agent with another framework

- [Claude Cowork](https://composio.dev/toolkits/surf/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/surf/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/surf/framework/atomic-agent)

## Related Toolkits

- [Composio](https://composio.dev/toolkits/composio) - Composio is an integration platform that connects AI agents with hundreds of business tools. It streamlines authentication and lets you trigger actions across services—no custom code needed.
- [Composio search](https://composio.dev/toolkits/composio_search) - Composio search is a unified web search toolkit spanning travel, e-commerce, news, financial markets, images, and more. It lets you and your apps tap into up-to-date web data from a single, easy-to-integrate service.
- [Excel](https://composio.dev/toolkits/excel) - Microsoft Excel is a robust spreadsheet application for organizing, analyzing, and visualizing data. It's the go-to tool for calculations, reporting, and flexible data management.
- [Perplexityai](https://composio.dev/toolkits/perplexityai) - Perplexityai delivers natural, conversational AI models for generating human-like text. Instantly get context-aware, high-quality responses for chat, search, or complex workflows.
- [Stripe](https://composio.dev/toolkits/stripe) - Stripe is a global online payments platform offering APIs for managing payments, customers, and subscriptions. Trusted by businesses for secure, efficient, and scalable payment processing worldwide.
- [Browser tool](https://composio.dev/toolkits/browser_tool) - Browser tool is a virtual browser integration that lets AI agents interact with the web programmatically. It enables automated browsing, scraping, and action-taking from any AI workflow.
- [21risk](https://composio.dev/toolkits/_21risk) - 21RISK is a web app built for easy checklist, audit, and compliance management. It streamlines risk processes so teams can focus on what matters.
- [44API](https://composio.dev/toolkits/44api) - 44API is an API service for validating VAT and tax identifiers and returning company details. Use it to verify business tax data and manage account IP whitelists quickly.
- [Abstract](https://composio.dev/toolkits/abstract) - Abstract provides a suite of APIs for automating data validation and enrichment tasks. It helps developers streamline workflows and ensure data quality with minimal effort.
- [AccuWeather](https://composio.dev/toolkits/accu_weather) - AccuWeather is a global weather service providing current conditions, forecasts, MinuteCast precipitation, alerts, and lightning data. Use it for fast, localized forecasts and real-time weather alerts.
- [Adafruit IO](https://composio.dev/toolkits/adafruit_io) - Adafruit IO is Adafruit's cloud platform for connected device and IoT project data. It helps you store, visualize, and act on sensor feeds without running your own backend.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Agentql](https://composio.dev/toolkits/agentql) - Agentql is a toolkit that connects AI agents to the web using a specialized query language. It enables structured web interaction and data extraction for smarter automations.
- [Agenty](https://composio.dev/toolkits/agenty) - Agenty is a web scraping and automation platform for extracting data and automating browser tasks—no coding needed. It streamlines data collection, monitoring, and repetitive online actions.
- [Ai ml api](https://composio.dev/toolkits/ai_ml_api) - Ai ml api is a suite of AI/ML models for natural language and image tasks. It provides fast, scalable access to advanced AI capabilities for your apps and workflows.
- [Airwallex](https://composio.dev/toolkits/airwallex) - Airwallex is a global financial platform providing business accounts, payments, payouts, FX, and cards. Built to simplify cross-border payments and streamline financial operations for businesses.
- [Aivoov](https://composio.dev/toolkits/aivoov) - Aivoov is an AI-powered text-to-speech platform offering 1,000+ voices in over 150 languages. Instantly turn written content into natural, human-like audio for any application.
- [Aiwyn Tax MCP](https://composio.dev/toolkits/aiwyn_tax_mcp) - Aiwyn Tax MCP is a tax estimation service powered by Aiwyn's federal and state tax engine. It helps teams estimate tax outcomes without building tax calculation logic from scratch.
- [All images ai](https://composio.dev/toolkits/all_images_ai) - All-Images.ai is an AI-powered image generation and management platform. It helps you create, search, and organize images effortlessly with advanced AI capabilities.
- [Alpaca](https://composio.dev/toolkits/alpaca) - Alpaca is a stock and crypto trading platform for commission-free trading, real-time market data, and algorithmic strategies. Use it to build brokerage apps, trading bots, and portfolio workflows with market connectivity.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Surf MCP?

With a standalone Surf MCP server, the agents and LLMs can only access a fixed set of Surf tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Surf and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with ChatGPT?

Yes, you can. ChatGPT fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Surf tools.

### Can I manage the permissions and scopes for Surf while using Tool Router?

Yes, absolutely. You can configure which Surf scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Surf data and credentials are handled as safely as possible.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
