MCP data sources
Give your AI steps live data with MCP servers, with four example strategies to learn from.
An AI step can read from MCP servers: services that give a model tools to look up data. With them, a strategy can check a stock's news before it buys a tokenised stock, see what smart money buys on Robinhood Chain, wait out a rate decision, or read a contract's code before a buy. MCP tools in a strategy need an Epic Spinner.
The model only reads. Every buy and sell still comes from your strategy's rules, its limits, and the live trading limits on the Spinner's guard. A server can make a step's answer better informed. It cannot move funds.
Be careful
These examples are starting points to learn from and change, not strategies that are known to make money. Data from a server can be late, wrong or missing, and a model can misread it. Keep amounts small, keep your live trading limits low, and run on paper first. AI strategies cannot be backtested: what a model would have answered on past days cannot be known.
The servers you can add with one click
The MCP servers card on the Settings page lists these. Each one needs your own key from that service: Get a key opens its page. Spin connects to the server, lists the tools your bots get, and keeps the key sealed. After a sale, the buyer's bot uses the buyer's own servers.
| Server | Name in strategies | What it reads |
|---|---|---|
| DeFade | defade | Rug-pull risk scores and on-chain forensics: holders, snipers, launch bundles, smart money, liquidity, deployer history. |
| X | x | Posts on X: an account's latest posts and mentions, post search and counts, trends and news. Needs an X API bearer token (pay-per-use): it reads, never posts. |
| Nansen | nansen | Smart money on Robinhood Chain and other chains: what funds and top traders buy, sell and hold, a token's top holders and recent flows, wallet labels. Each call uses credits on your Nansen key. |
| Blockscout | blockscout | Robinhood Chain's explorer (chain id 4663): a contract's source code and ABI, contract reads, an address's tokens, transfers and transactions. |
| Alpha Vantage | alphavantage | Stock market data for the stocks behind tokenised stocks: quotes, intraday prices, news sentiment, earnings dates and results, top movers, insider trades, market hours. A free key has a small daily limit. |
| EODHD | eodhd | Stock and economic data: live (delayed) prices, company news and sentiment, the economic calendar (rate decisions, inflation reports), earnings dates, insider trades, trading hours. |
| Exa | exa | Web search and page reads: news about a token, a stock or a team, and the pages it links to. |
A step names its servers in tools (up to 3 a step), by the name in the Name in strategies column. For example: "tools": ["nansen", "defade"]. See MCP servers for how to add one.
Choose the tools. On each saved server, Tools lists every tool that the server offers, with its cost, and you choose the ones your bots get. A server starts with its suggested tools, or all of its read-only tools if it suggests none. Suggested, All read-only and None set many at once.
The choice matters for cost: each tool's description goes into every run's prompt, on your AI key. All of Nansen's tools are about 43,000 prompt tokens a run, and its 9 suggested ones about 8,000. Alpha Vantage goes from about 29,000 to about 2,000. Fewer tools also help a model choose the right one, and some providers limit how many tools one request can have.
Tools that act. A tool that the server does not mark read-only may act on your account there (for example, spend credit or post). It stays off until you turn on Allow tools not marked read-only for that server (with Replace). Then open its Tools and keep on only the ones you want. Allow it only for servers that you trust.
Why each needs your own key. Every bot's calls come from Spin's servers. Without a key, all holders would share one free limit, and a busy hour would stop every bot at once.
What it costs
A run with MCP tools costs:
- your AI provider: the prompt (with the tool descriptions), the data that the tools send back, and the answer. A model often calls two or three tools in a run.
- the data service: each tool call, on that service's plan. Nansen charges credits for each call. Alpha Vantage and EODHD have free keys with small daily limits, and paid plans.
The strategy's trigger and AI runs an hour at most set how many runs there are. Start slow: a run every few hours is a few runs a day.
Example 1: buy a tokenised stock, but not into bad news or earnings
Buys a little TSLA (the tokenised stock on Robinhood Chain) every 6 hours, adding to one position. It skips a buy when the day's news is negative, or when Tesla reports earnings within 2 days. Needs: Alpha Vantage, and any AI key.
{
"schema": 1,
"name": "TSLA buys with a news check",
"entry": {
"trigger": { "on": "timer", "every_s": 21600 },
"target": { "token": "0x322f0929c4625ed5bad873c95208d54e1c003b2d" },
"ai": {
"steps": [
{
"id": "news",
"tools": ["alphavantage"],
"prompt": "Read the news sentiment for TSLA from the last 24 hours, and the date of Tesla's next earnings report. Is the news on balance negative? Is the report in the next 2 days?",
"output": { "sentiment": ["negative", "neutral", "positive"], "earnings_soon": "boolean", "summary": "text" }
}
]
},
"confirm": { "and": [{ "!=": [{ "f": "ai.news.sentiment" }, "negative"] }, { "==": [{ "f": "ai.news.earnings_soon" }, false] }] },
"buy_eth": 0.005
},
"exits": [],
"limits": { "once_per_token": false, "max_open": 1, "add_to_position": true, "max_ai_runs_per_hour": 2 }
}Change it: another stock (its token's address, and its ticker in the prompt); EODHD in place of Alpha Vantage (get_company_news, get_sentiment_data and get_upcoming_earnings give the same facts); a take-profit exit, if you want it to sell.
Cost: 4 runs a day, each one AI request and two or three tool calls.
Example 2: follow smart money on Robinhood Chain
Every hour, asks Nansen which token smart traders and funds bought most on Robinhood Chain in the last day. If at least 3 smart wallets bought it, DeFade checks it. The bot buys only on a low rug-pull risk and at least 5 ETH of liquidity. It sells when Nansen shows smart money selling, on a 25% loss, or after a week. Needs: Nansen, DeFade, and any AI key.
{
"schema": 1,
"name": "Follow smart money on Robinhood Chain",
"entry": {
"trigger": { "on": "timer", "every_s": 3600 },
"target": { "token": "{{flow.token}}" },
"ai": {
"steps": [
{
"id": "flow",
"tools": ["nansen"],
"prompt": "On Robinhood Chain (chain robinhood), which token had the largest net inflow from smart traders and funds in the last 24 hours? Leave out ETH, WETH, USDG and stablecoins. Give its address, the number of smart wallets that bought it, and the net amount in dollars.",
"output": { "token": "token", "wallets": "number", "net_usd": "number" }
},
{
"id": "check",
"tools": ["defade"],
"if": { ">=": [{ "f": "ai.flow.wallets" }, 3] },
"prompt": "Check token {{flow.token}} on Robinhood Chain: honeypot, sell tax, holders, snipers, deployer history. What is its rug-pull risk?",
"output": { "risk": ["low", "medium", "high"] }
}
]
},
"confirm": { "and": [{ ">=": [{ "f": "ai.flow.wallets" }, 3] }, { "==": [{ "f": "ai.check.risk" }, "low"] }, { ">=": [{ "f": "token.liquidity" }, 5] }] },
"buy_eth": 0.01
},
"exits": [
{
"ai": {
"every_s": 3600,
"steps": [
{
"id": "out",
"tools": ["nansen"],
"prompt": "On Robinhood Chain, have smart traders and funds been net sellers of token {{token.address}} over the last 6 hours?",
"output": { "selling": "boolean" }
}
]
},
"confirm": { "==": [{ "f": "ai.out.selling" }, true] },
"reason": "smart_money_out"
},
{ "if": { "<=": [{ "f": "position.pnl_pct" }, -25] }, "reason": "stop_loss" },
{ "if": { ">=": [{ "f": "position.age_s" }, 604800] }, "reason": "time" }
],
"limits": { "once_per_token": true, "max_open": 3, "max_ai_runs_per_hour": 4 }
}How it works: the first step's token answer is the token that the strategy buys ("target": { "token": "{{flow.token}}" }). The check step runs only when its if holds, so a quiet hour costs one step. With Once per token on, a token is bought at most once.
Cost: 24 entry runs a day, plus one exit check an hour for each open position. Each Nansen call uses credits: see Nansen's pricing before you make the timer faster.
Example 3: a stock DCA that waits out rate decisions
Buys TSLA once a day, but skips the day when the Federal Reserve announces a rate decision or a US inflation report comes out, when prices often move most. Needs: EODHD, and any AI key.
{
"schema": 1,
"name": "Stock DCA that waits out rate decisions",
"entry": {
"trigger": { "on": "timer", "every_s": 86400 },
"target": { "token": "0x322f0929c4625ed5bad873c95208d54e1c003b2d" },
"ai": {
"steps": [
{
"id": "calendar",
"tools": ["eodhd"],
"prompt": "Read the US economic calendar for the next 24 hours. Is there a Federal Reserve rate decision, or a US CPI (inflation) report? Name it if there is.",
"output": { "big_event": "boolean", "event": "text" }
}
]
},
"confirm": { "==": [{ "f": "ai.calendar.big_event" }, false] },
"buy_eth": 0.01
},
"exits": [],
"limits": { "once_per_token": false, "max_open": 1, "add_to_position": true, "max_ai_runs_per_hour": 1 }
}Change it: the opposite (buy only on those days); other events (jobs reports, a central bank of another country); the same check as a second step in Example 1.
Cost: one run a day, one or two tool calls.
Example 4: read a contract's code before a buy
For tokens that are not from a launchpad (for example, an address posted on X: see Watch X for contract addresses), add a step that reads the contract on Blockscout. It asks if the code is verified, and if the owner can still mint, block transfers, change the tax or pause trading. Needs: Blockscout, and any AI key.
Add this step after the step that finds the token (here, watch):
{
"id": "code",
"tools": ["blockscout"],
"if": { "==": [{ "f": "ai.watch.confident" }, true] },
"prompt": "On Robinhood Chain (chain id 4663), inspect the contract of token {{watch.token}}. Is its source code verified? Can the owner mint more, block transfers, change the tax, or pause trading? Has the owner given up control?",
"output": { "verified": "boolean", "owner_powers": ["none", "some", "dangerous"] }
}Then buy only when both answers are good:
"confirm": { "and": [{ "==": [{ "f": "ai.watch.confident" }, true] }, { "==": [{ "f": "ai.code.verified" }, true] }, { "==": [{ "f": "ai.code.owner_powers" }, "none"] }] }Blockscout opens a session before its other tools, so this step makes one more tool call than it seems to. Exa can do a similar check from the web: ask it for news of the people behind the token, or reports of a scam, by the token's name.
Write prompts that work with tools
- Name the chain. Nansen calls it
robinhood. Blockscout uses chain id4663. Without it, a model may look on Ethereum. - Ask for exact facts, in the answer's fields. A number, a yes or no, or one of a few words is easy for a rule to check. Put the explanation in a
textfield, for the activity. - Say what to leave out (stablecoins, ETH), and what to answer when there is nothing. A
tokenfield can be null: the bot then buys nothing. - Keep chains short. Each tool call takes time. A chain must answer within its Answer within time (60 seconds unless you set it, at most 120). A late answer is no signal.
- Check before you trust. Rules can read the token's own values too (
token.liquidity,token.market_cap,token.buy_tax). Use them with the answers.
When a server fails
If a step names a server that you have not added, or a server stops answering, the Spinner's page shows it under Needs your attention ("An MCP server is missing", or "An MCP server does not answer"). The Spinner's card on My spinners is marked too. Nothing is bought on a failed step. Check the server's key in Settings, then mark the notice as read when it is fixed.