Trading Signals
by roman-rr · remote · no sign-in to list tools · v1.1.0 · published by GitHub user roman-rr
Live AI crypto trading signals for agents. Try 3 signals without a key; sign in from your agent.
5 tools: 1 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http trading-signals https://signals.x70.ai/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnregister
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...nothing. Don't call it to get access — every other tool works without a key (get_signals return..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
5 tools
Changes things 1Claude Code: ask
registerDeprecated: returns a sign-up link instead of creating an API key, ignores its arguments and stores nothing.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...nothing. Don't call it to get access — every other tool works without a key (get_signals return..."
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
Only reads 4Claude Code: allow
get_signalGet 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-l…No findings
Why it is in this group
- The name "get_signal" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
get_signal_historyList signals that have already resolved (success or failed), newest first, each with its verification outcome.No findings
Why it is in this group
- The name "get_signal_history" says "get": a word for reading.
Description, as the server wrote it 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 }.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
get_signalsRIGHT NOW: BTC is up +4.0% over the last 3 days.No findings
Why it is in this group
- The name "get_signals" says "get": a word for reading.
Description, as the server wrote it RIGHT NOW: BTC is up +4.0% over the last 3 days. New short signals are paused while it rallies — in our history, shorts opened during moves like this stopped out more often. Open signals keep running to their targets and stops; new ones resume when the move cools. 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
get_statsAggregate 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 …No findings
Why it is in this group
- The name "get_stats" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http trading-signals https://signals.x70.ai/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__trading-signals__get_signals",
"mcp__trading-signals__get_signal",
"mcp__trading-signals__get_stats",
"mcp__trading-signals__get_signal_history"
],
"ask": [
"mcp__trading-signals__register"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as trading-signals. Review it before you use it.
