Skip to content

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.

Changes · 1

5 tools: 1 change things and 4 only read.

Scanned Oct 21, 2026

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/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The description contains "every other tool", wording about other tools or servers.

    Matched text

    description: "...nothing. Don't call it to get access — every other tool works without a key (get_signals return..."

    What this check looks for

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.

      Matched text

      description: "...nothing. Don't call it to get access — every other tool works without a key (get_signals return..."

      What this check looks for
    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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.