protogrid

Search / io.github.roman-rr/trading-signals

Trading Signals

R0· no sign-in

Live AI crypto trading signals for agents. Try 3 signals without a key; sign in from your agent.

v1.1.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality74needs work
Trust97of 100
Uptime, 30 days100%
Latency p50450 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "trading-signals": {
      "type": "http",
      "url": "https://signals.x70.ai/mcp"
    }
  }
}
claude mcp add --transport http trading-signals https://signals.x70.ai/mcp
[mcp_servers.trading-signals]
url = "https://signals.x70.ai/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "trading-signals": {
      "type": "remote",
      "url": "https://signals.x70.ai/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "trading-signals": {
      "type": "http",
      "url": "https://signals.x70.ai/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=trading-signals&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vc2lnbmFscy54NzAuYWkvbWNwIn0%3D"
}
{
  "servers": {
    "trading-signals": {
      "type": "http",
      "url": "https://signals.x70.ai/mcp"
    }
  }
}
{
  "mcpServers": {
    "trading-signals": {
      "httpUrl": "https://signals.x70.ai/mcp"
    }
  }
}
extensions:
  "trading-signals":
    enabled: true
    name: "trading-signals"
    type: streamable_http
    uri: "https://signals.x70.ai/mcp"
    timeout: 300

Quality 74 / 100needs work

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorization100 · weight 15
  • pass
    auth.prmProtected Resource Metadata (RFC 9728) published
  • pass
    auth.as_metadataauthorization server metadata reachable
  • pass
    auth.cimdClient ID Metadata Documents supported
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations5 of 5 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: register (idempotentHint); get_signals (idempotentHint); get_signal (idempotentHint); …
  • pass
    tools.token_costabout 2,143 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes13 tool changes in 30 days
  • fail
    stability.rug_pull7 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

5 tools, about 2,143 tokens to load them all · tool set 06732ab2e6c0 · tools last changed 2026-10-12 · checked 2026-10-20 15:26 UTC

Tool changes

  • get_statschangeddescription
    before

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

    after · 84% of words in common

    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.

  • get_signalschangeddescription
    before

    List live crypto trading signals that are still open — coin, direction, confidence and the reasoning 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. 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.

    after · 87% of words in common

    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.

  • registerchangeddescription, annotations
    before

    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). Users create keys at https://signals.x70.ai/mcp-signup and set them as the X-Api-Key header. Kept only so older clients don't break.

    after · 82% of words in common

    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.

  • get_signal_historychangeddescription, input schemameaning changed
    before

    Fetch historical (verified) signals with pagination. Returns resolved signals (success/failed) ordered newest-first.

    after · 11% of words in common

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

  • get_statschangeddescription, input schemameaning changed
    before

    Get aggregated performance: hit rate, average ROI per signal, average leverage, breakdown by direction. No API key required.

    after · 24% of words in common

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

  • get_signalchangeddescription, input schemameaning changed
    before

    Fetch a single signal by ID with live price and PnL. Use to check verification status and outcome.

    after · 22% of words in common

    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.

  • get_signalschangeddescription, input schemameaning changed
    before

    Fetch live (active) crypto trading signals with entry, SL, TP, leverage, confidence. Optional research-backed filters let you build your own strategy: direction, coin include/exclude, SL distance %, R/R, confidence band, Open Interest range, 24h volume, tags, primary anomaly trigger, day-of-week skips, BTC 24h regime gate. Sorted by live PnL (most profitable first). WORKS WITHOUT AN API KEY: omit apiKey for a free 3-signal preview (coin + direction + confidence); a free account returns up to 100 signals with full reasoning and verified outcomes.

    after · 30% of words in common

    List live crypto trading signals that are still open — coin, direction, confidence and the reasoning 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. 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.

  • registerchangeddescriptionmeaning changed
    before

    DEPRECATED — no longer issues API keys. Returns a link to https://signals.x70.ai/mcp-signup, where keys are created from a free account. Every other tool works without a key (3-signal preview), so there is no need to call this or to collect anyone's personal details for it.

    after · 34% of words in common

    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). Users create keys at https://signals.x70.ai/mcp-signup and set them as the X-Api-Key header. Kept only so older clients don't break.

  • get_signal_historychangeddescriptionmeaning changed
    before

    Fetch historical (verified) signals with pagination. Returns resolved signals (success/failed) ordered newest-first. Star the repo to support free access: https://github.com/roman-rr/trading-skills

    after · 48% of words in common

    Fetch historical (verified) signals with pagination. Returns resolved signals (success/failed) ordered newest-first.

  • get_statschangeddescription
    before

    Get aggregated performance: hit rate, average ROI per signal, average leverage, breakdown by direction. No API key required. Star the repo to support free access: https://github.com/roman-rr/trading-skills

    after · 55% of words in common

    Get aggregated performance: hit rate, average ROI per signal, average leverage, breakdown by direction. No API key required.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance90
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-8d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://signals.x70.ai/mcp streamable-httpnoneyes100%450 ms2025-11-252026-10-20
https://signals.x70.ai/mcp/connect streamable-httpoauth2 AS: https://clerk.x70.aiyes100%443 ms–2026-10-20
https://signals.x70.ai/sse sseunknownno (13 failures)0%–––

Tools (5)

get_signalread-onlyGet 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.
get_signal_historyread-onlyList 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 }.
get_signalsread-onlyList 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.
get_statsread-onlyAggregate 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.
registerread-onlyDeprecated: 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.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.roman-rr/trading-signals",
  "title": "Trading Signals",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://signals.x70.ai/mcp",
      "type": "streamable-http"
    },
    {
      "url": "https://signals.x70.ai/mcp/connect",
      "type": "streamable-http"
    },
    {
      "url": "https://signals.x70.ai/sse",
      "type": "sse"
    }
  ],
  "version": "1.1.0",
  "repository": {
    "url": "https://github.com/roman-rr/trading-skills",
    "source": "github"
  },
  "websiteUrl": "https://signals.x70.ai/mcp-docs",
  "description": "Live AI crypto trading signals for agents. Try 3 signals without a key; sign in from your agent."
}