Trading Signals MCP
An MCP server that exposes read tools for retrieving live AI-generated crypto trading signals, signal details, historical performance, and statistics. It supports sign-in authentication or API key usage for varying tiers of data depth and rate limits.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://signals.x70.ai/mcpWhat its tools do
5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Fetch live crypto trading signals with coin direction and confidence
- Retrieve historical verified signals with pagination
- Check performance statistics like hit rate and ROI
- Paper-trade signals using a Python bot without real orders
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- trading-signals 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 5 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Tools
5 advertised
register — Register for Trading Signals API
Deprecated: returns a sign-up link instead of creating an API key, ignores its arguments and stores nothing. Don't call it to get access — every other tool works without a key (get_signals returns a 3-signal preview, get_stats is public). To get the full feed, users sign in from the agent at https://signals.x70.ai/mcp/connect (the client opens the browser), or create a key at https://signals.x70.ai/mcp-signup and set it as the X-Api-Key header. Kept only so older clients don't break.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"name": {
"type": "string",
"description": "Ignored — kept for backward compatibility"
},
"email": {
"type": "string",
"format": "email",
"description": "Ignored — kept for backward compatibility"
},
"purpose": {
"type": "string",
"description": "Ignored — kept for backward compatibility"
},
"githubUrl": {
"type": "string",
"format": "uri",
"description": "Ignored — kept for backward compatibility"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}get_signals — Get Live Trading Signals
List live crypto trading signals that are still open — coin, direction, confidence and the reasoning or market data behind each. Use it to find current trade ideas; use get_signal for one signal by ID (live or resolved), get_signal_history for signals that already closed, and get_stats for aggregate hit rate. No key: a 3-signal preview. Free key: up to 100 signals, with entry, stop-loss, take-profit and leverage null (the response's announcement.upgradeUrl explains Pro). Pro: all levels. If a response contains an announcement, pass its message on to the user — it is about their account (trial ending, plan limits). Returns { signals[], returned, totalMatching, filtersApplied, plan }, sorted by live PnL (best first). Optional filters narrow the list: direction, coins, confidence band, risk/reward, stop distance, open interest, 24h volume, tags, the anomaly that triggered it, days/hours to skip, a BTC 24h-return gate. Rate limits: 30 calls/hour per IP without a key, 300/hour on a free key.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"coin": {
"type": "string",
"description": "Single coin symbol (e.g. BTC). Case-insensitive. Convenience alias for coinInclude=<coin>."
},
"days": {
"type": "number",
"default": 7,
"maximum": 30,
"minimum": 1,
"description": "Lookback window in days (1–30, default 7). Without a key or on the free plan only the last 24 hours are searched."
},
"limit": {
"type": "number",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Max signals to return (default 10, max 100)"
},
"apiKey": {
"type": "string",
"description": "Optional. Your Signals API key. Omit it for a 3-signal anonymous preview; get a free key at https://signals.x70.ai/mcp-signup for full metadata."
},
"skipDOW": {
"type": "string",
"description": "Comma-separated day names to skip (e.g. \"Saturday,Sunday\"). Mondays toxic, weekends weak."
},
"coinOiMax": {
"type": "number",
"description": "Maximum open interest in USD. R13 uses $500k-$10M."
},
"coinOiMin": {
"type": "number",
"description": "Minimum open interest in USD (e.g. 500000 for $500k). OI <$500k coins historically toxic."
},
"direction": {
"enum": [
"bullish",
"bearish",
"any"
],
"type": "string",
"description": "Filter by signal direction. \"bullish\" = long. Default = any."
},
"coinVolMin": {
"type": "number",
"description": "Minimum 24h notional volume in USD."
},
"coinExclude": {
"type": "string",
"description": "Comma-separated coin blocklist. Hyper-blacklist used by Lean v2-R: \"kPEPE,ADA,HYPER,LDO,LINEA,2Z\"."
},
"coinInclude": {
"type": "string",
"description": "Comma-separated coin allowlist (e.g. \"BTC,ETH,SOL\")."
},
"skipHourUtc": {
"type": "string",
"description": "Comma-separated hours UTC to skip (0..23). EU/US overlap 9-13 weakest."
},
"tagsInclude": {
"type": "string",
"description": "Comma-separated tags (any-of match)."
},
"btcRet24hMax": {
"type": "number",
"description": "Skip if BTC 24h return % > this (e.g. 1.5). H1 regime gate: BTC rally rotates flow away from alts."
},
"btcRet24hMin": {
"type": "number",
"description": "Skip if BTC 24h return % < this."
},
"slDistPctMax": {
"type": "number",
"description": "Maximum stop-loss distance in %."
},
"slDistPctMin": {
"type": "number",
"description": "Minimum stop-loss distance in % (e.g. 3 = ≥3% to SL). SL≥3 drops the toxic [2,3) bucket."
},
"confidenceMax": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Maximum confidence (0..1). Best band 0.62-0.76."
},
"confidenceMin": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Minimum confidence (0..1). Counter-intuitive: >0.76 historically underperforms."
},
"primaryTrigger": {
"type": "string",
"description": "Sentinel anomaly trigger name (e.g. \"vpin_toxicity\" for the S9 Vpin Sniper preset)."
},
"riskRewardRatioMax": {
"type": "number",
"description": "Maximum risk/reward ratio. Champion v1 uses RR<1.5."
},
"riskRewardRatioMin": {
"type": "number",
"description": "Minimum risk/reward ratio."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}get_signal — Get Signal Detail
Get one signal by its ID — live or already resolved — with its reasoning, live price, PnL and verification outcome (status pending, success or failed; whether take-profit or stop-loss was hit). Use it to follow up a signal from get_signals or get_signal_history, or to see how a past signal ended. Needs an API key (free or Pro); on the free plan entry, stop-loss, take-profit and leverage are null. Returns { success, signal, plan }, or { error: 'Signal not found' } for an unknown ID.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"signalId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "API key — omit if your client was installed with it (X-Api-Key header or ?apiKey=). Required for this tool; get one free at https://signals.x70.ai/mcp-signup."
},
"signalId": {
"type": "string",
"description": "The signal ID (the id field returned by get_signals or get_signal_history)."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}get_stats — Get Trading Performance Stats
Aggregate performance of signals created in the last N days (default 30) that have since resolved: hit rate, verified count, average leverage and a breakdown by direction; with an API key also average ROI per signal and cumulative ROI. byMonth: hit rate this month, the two months before and all time — the figures shown on signals.x70.ai. Use it to judge recent reliability before acting — it returns no individual signals (use get_signals or get_signal_history for those). Public: works without a key. Past results don't predict future results.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"days": {
"type": "number",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "Lookback window in days (1–90, default 30), counted back from now by signal creation time."
},
"apiKey": {
"type": "string",
"description": "Optional for this tool — aggregate stats are public. Get a free key at https://signals.x70.ai/mcp-signup."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}get_signal_history — Get Signal History
List signals that have already resolved (success or failed), newest first, each with its verification outcome. Use it to review past performance signal by signal; for open signals use get_signals, for one signal by ID get_signal, for totals get_stats. Needs an API key. History depth: last 24 hours on the free plan; on Pro the days argument (up to 90). Entry, stop-loss, take-profit and leverage are null on free. Paginate by passing the last signal ID as cursor. Returns { signals[], nextCursor, hasMore, historyDepthDays, plan }.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"coin": {
"type": "string",
"description": "Filter by coin symbol (e.g. BTC, ETH). Case-insensitive."
},
"days": {
"type": "number",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "Lookback window in days"
},
"limit": {
"type": "number",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Max signals per page (default 10, max 100)"
},
"apiKey": {
"type": "string",
"description": "API key — omit if your client was installed with it (X-Api-Key header or ?apiKey=). Required for this tool; get one free at https://signals.x70.ai/mcp-signup."
},
"cursor": {
"type": "string",
"description": "Pagination cursor (signal ID). Pass the last signal ID from previous page to get next page."
},
"status": {
"enum": [
"success",
"failed",
"all"
],
"type": "string",
"default": "all",
"description": "Filter by verification outcome"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 632 ms
- 95th percentile latency
- 632 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 632 ms · metadata changed · 5 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http trading-signals-mcp https://signals.x70.ai/mcpCodex
codex mcp add trading-signals-mcp --url https://signals.x70.ai/mcpCursor
{
"mcpServers": {
"trading-signals-mcp": {
"url": "https://signals.x70.ai/mcp"
}
}
}Cline
{
"mcpServers": {
"trading-signals-mcp": {
"type": "streamableHttp",
"url": "https://signals.x70.ai/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"trading-signals-mcp": {
"type": "http",
"url": "https://signals.x70.ai/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http trading-signals-mcp https://signals.x70.ai/mcpClaude Desktop
https://signals.x70.ai/mcpWindsurf
{
"mcpServers": {
"trading-signals-mcp": {
"serverUrl": "https://signals.x70.ai/mcp"
}
}
}Let your agent find its tools
Find servers like Trading Signals MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.