AI Trading Signals
Server Details
Live AI-generated crypto trading signals for agents. Returns coin, direction and confidence with no API key at all; a free account adds full reasoning and verified outcomes, and Pro unlocks entry, stop-loss, take-profit and leverage plus 30-day history.
- Status
- Healthy
- Uptime
- 99.7% over 53 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
get_signal, get_signals and get_signal_history differ only by singular/plural/suffix, which is a real misselection hazard, but each description explicitly states its scope (one by ID, open signals, resolved signals) and cross-references the others. get_stats and register are clearly distinct. One near-trap: register is a deprecated tool whose description says not to call it, which is documented but still occupies surface.
Four of five tools follow a clean get_<noun> snake_case pattern (get_signal, get_signals, get_signal_history, get_stats). register is a bare verb that breaks the pattern, though it is legacy and flagged as such.
Five tools is well-scoped for a read-only signals API: one for a single signal, one for open, one for resolved, one for aggregates. The deprecated register tool is effectively dead weight but small enough not to distort the set.
Covers the full read lifecycle: live signals with rich filtering, resolved history with cursor pagination, single-signal lookup, and aggregate performance stats. The only gap is that account/onboarding is pushed to an external URL rather than a working tool, leaving register as a non-functional stub.
Available Tools
5 toolsget_signalGet Signal DetailARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | No | 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 | Yes | The signal ID (the id field returned by get_signals or get_signal_history). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, yet the description still adds real context: API-key requirement, the free-plan behavior where entry/stop-loss/take-profit/leverage come back null, and the not-found error path. It stops short of noting rate limits or pagination, but for a single-record read those are largely irrelevant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then routes the agent to siblings, then states auth and plan caveats, then return shapes. Every sentence carries a distinct load and nothing is redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description's explicit return contract ({ success, signal, plan } and the not-found error) is necessary and present. With annotations covering the safety profile and the schema covering params, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (apiKey, signalId) are already documented in the schema, including the signup URL. The description adds little parameter-level detail beyond restating the ID lookup, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get one signal by its ID') and immediately scopes it to 'live or already resolved', which distinguishes it from get_signals (list) and get_signal_history. The enumerated contents (reasoning, live price, PnL, verification outcome) tell an agent exactly what a call yields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the trigger ('use it to follow up a signal from get_signals or get_signal_history') and the second scenario ('see how a past signal ended'). The alternatives are named rather than left to inference, so selection between the three sibling read tools is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signal_historyGet Signal HistoryARead-onlyInspect
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 }.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Filter by coin symbol (e.g. BTC, ETH). Case-insensitive. | |
| days | No | Lookback window in days | |
| limit | No | Max signals per page (default 10, max 100) | |
| apiKey | No | 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 | No | Pagination cursor (signal ID). Pass the last signal ID from previous page to get next page. | |
| status | No | Filter by verification outcome | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, non-destructive). The description adds substantive context beyond them: API key requirement, plan-dependent history depth (24h free vs. days up to 90 on Pro), fields nulled on free, and cursor-based pagination. It does not disclose rate limits or ordering edge cases, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, followed by routing alternatives, then prerequisites and pagination. Every sentence carries distinct information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, alternatives, auth, plan constraints, nulled fields, pagination mechanics, and the response shape (signals[], nextCursor, hasMore, historyDepthDays, plan) — notable because no output schema exists. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description earns extra by explaining plan-dependent semantics for 'days' and the exact cursor convention (pass the last signal ID from the previous page), which the schema states more tersely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List signals that have already resolved... newest first, each with its verification outcome'), and explicitly distinguishes itself from three siblings (get_signals, get_signal, get_stats). An agent can pick the correct tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the routing condition for each alternative: open signals -> get_signals, single signal by ID -> get_signal, totals -> get_stats. The 'already resolved' scope is stated up front, making the when-to-use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signalsGet Live Trading SignalsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Single coin symbol (e.g. BTC). Case-insensitive. Convenience alias for coinInclude=<coin>. | |
| days | No | Lookback window in days (1–30, default 7). Without a key or on the free plan only the last 24 hours are searched. | |
| limit | No | Max signals to return (default 10, max 100) | |
| apiKey | No | 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 | No | Comma-separated day names to skip (e.g. "Saturday,Sunday"). Mondays toxic, weekends weak. | |
| coinOiMax | No | Maximum open interest in USD. R13 uses $500k-$10M. | |
| coinOiMin | No | Minimum open interest in USD (e.g. 500000 for $500k). OI <$500k coins historically toxic. | |
| direction | No | Filter by signal direction. "bullish" = long. Default = any. | |
| coinVolMin | No | Minimum 24h notional volume in USD. | |
| coinExclude | No | Comma-separated coin blocklist. Hyper-blacklist used by Lean v2-R: "kPEPE,ADA,HYPER,LDO,LINEA,2Z". | |
| coinInclude | No | Comma-separated coin allowlist (e.g. "BTC,ETH,SOL"). | |
| skipHourUtc | No | Comma-separated hours UTC to skip (0..23). EU/US overlap 9-13 weakest. | |
| tagsInclude | No | Comma-separated tags (any-of match). | |
| btcRet24hMax | No | Skip if BTC 24h return % > this (e.g. 1.5). H1 regime gate: BTC rally rotates flow away from alts. | |
| btcRet24hMin | No | Skip if BTC 24h return % < this. | |
| slDistPctMax | No | Maximum stop-loss distance in %. | |
| slDistPctMin | No | Minimum stop-loss distance in % (e.g. 3 = ≥3% to SL). SL≥3 drops the toxic [2,3) bucket. | |
| confidenceMax | No | Maximum confidence (0..1). Best band 0.62-0.76. | |
| confidenceMin | No | Minimum confidence (0..1). Counter-intuitive: >0.76 historically underperforms. | |
| primaryTrigger | No | Sentinel anomaly trigger name (e.g. "vpin_toxicity" for the S9 Vpin Sniper preset). | |
| riskRewardRatioMax | No | Maximum risk/reward ratio. Champion v1 uses RR<1.5. | |
| riskRewardRatioMin | No | Minimum risk/reward ratio. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the read-only/safe profile, but the description adds substantial operational context the annotations cannot: tiered access (3-signal anonymous preview, free-key cap of 100 with entry/SL/TP/leverage nulled, Pro full), rate limits (30/hr per IP, 300/hr on a free key), sort order by live PnL, and an instruction to relay any 'announcement' block to the user because it concerns their account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and sibling routing, then access tiers, return shape, filters and limits. Despite its length every sentence carries distinct information; nothing is repeated from the schema or annotations verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 22-parameter, no-output-schema tool this is complete: it describes the response envelope ({ signals[], returned, totalMatching, filtersApplied, plan }), the ordering, plan-dependent field nulling, and rate limits, so an agent can both select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description aggregates the 22 params into coherent filter families (direction, coins, confidence band, risk/reward, stop distance, open interest, 24h volume, tags, triggering anomaly, days/hours to skip, BTC 24h gate), which helps an agent map a user intent to the right min/max pair. It adds no new syntax or units beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope ('List live crypto trading signals that are still open') and enumerates the payload fields (coin, direction, confidence, reasoning/market data). It explicitly names the sibling tools it is not, so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: '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.' This covers when-to-use and names each alternative with its selecting condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsGet Trading Performance StatsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days (1–90, default 30), counted back from now by signal creation time. | |
| apiKey | No | Optional for this tool — aggregate stats are public. Get a free key at https://signals.x70.ai/mcp-signup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), but the description adds genuinely non-structured behavior: results are public without a key, an API key unlocks additional ROI metrics, and byMonth returns a specific month set. It does not mention rate limits or response size, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what is aggregated and returned, followed by usage routing and the public/key distinction; every sentence carries information. The first sentence is dense with em-dash clauses and metric lists, which slightly slows parsing but wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by enumerating hit rate, verified count, average leverage, direction breakdown, and the key-gated ROI figures. It also covers auth behavior, the public fallback, and the sibling tools, leaving no material gap for a 2-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the 1–90 range and the default of 30. The description restates the default and the apiKey tiering but adds no syntax or semantics beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (aggregate performance stats of resolved signals in a lookback window) and enumerates the returned metrics, so the agent knows exactly what it computes. It also explicitly distinguishes itself from get_signals and get_signal_history by stating it returns no individual signals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit decision rule ('Use it to judge recent reliability before acting') and names the alternatives to use instead when individual signals are needed. The public/no-key and with-key tiers are also spelled out, so the agent knows when extra value is available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registerRegister for Trading Signals APIARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Ignored — kept for backward compatibility | |
| No | Ignored — kept for backward compatibility | ||
| purpose | No | Ignored — kept for backward compatibility | |
| githubUrl | No | Ignored — kept for backward compatibility |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, destructiveHint=false) already declare a safe read, and the description is consistent with and additive to that: it discloses the tool is deprecated, is a no-op that stores nothing, ignores all arguments, and is retained only for backward compatibility. This is exactly the behavioral context annotations cannot convey, and it directly warns the agent away from a misleading name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with 'Deprecated:' and every sentence carries actionable content (what it does, what not to do, two alternative paths). It is somewhat dense with parentheticals and protocol detail, but none of it is filler given the misdirection risk of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deprecated no-op with four inert parameters and no output schema, the description covers everything the agent needs: behavior, absence of side effects, reasons for retention, and the correct path to actually obtain access. No output schema exists, so no return-value explanation is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every property already carries 'Ignored — kept for backward compatibility', so the baseline is 3. The description reinforces this at the tool level ('ignores its arguments'), confirming that no parameter changes behavior, which is useful signal beyond a per-field note — but it adds no format or syntax detail the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause states a specific verb+resource and immediately redefines the actual behavior ('returns a sign-up link instead of creating an API key, ignores its arguments and stores nothing'), which is the opposite of what the name 'register' implies. It names siblings (get_signals, get_stats) and their public behavior, so an agent can place it relative to the rest of the toolset without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when NOT to call it ('Don't call it to get access') and why ('every other tool works without a key'). It then routes the agent to concrete alternatives: in-agent sign-in at the connect URL, or manual key creation plus the X-Api-Key header. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Publisher details
- Operator
- Signals (signals.x70.ai), operated by an individual based in Thailand · Publisher source
- Operator website
- https://signals.x70.ai · Publisher source
- Vendor relationship
- First-party
- Documentation
- https://signals.x70.ai/mcp-docs · Publisher source
- Trust center
- Not available
- Restrictions
- https://signals.x70.ai/pricing
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs112 npm58 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.