Is the Schoasch Backtesting Arena MCP server down?

mcp-registry/io.github.schoasch/backtesting-arena · v1.13.0

healthy
Last checked 2026-10-26 21:33 UTC · handshake 173ms

As of 2026-10-26 21:33 UTC, the Schoasch Backtesting Arena MCP server is up with a Glimind reliability score of 100/100 (grade A). Over the last 30 days it answered 100% of Glimind's liveness checks.

uptime (30d checks)
100%
checks observed
4,988
outages (90d)
0
tools
49

Crypto backtesting & Bitcoin cycle analytics. Point-in-time, DSR-corrected, look-ahead-aware.

Point your MCP client at this streamable-http endpoint: https://tradingstrategies.work/api/mcp

Agent-readiness: D (67/100)

D (67/100): 0 error(s), 5 warning(s) across 49 tool(s); ~21,219 tokens of tool definitions.
Scores higher than 1% of 15,763 MCP servers Glimind has audited.
Its tool list costs an agent ~21,219 tokens per session — more than 95% of servers.
65 → 67 since 2026-10-17
no tool-poisoning patterns
Schemas100
Descriptions100
Safety hints13
Token cost23
Client compatibility70
Protocol100
Reliability100
Stability20

What to fix (7)

2 tool definition(s) exceed ~1,200 tokens each (largest: arena_run_grid_backtest, ~1,271).

Move long reference material out of descriptions (link a doc or expose a resource), drop repeated examples, and collapse large enums. Trimming these to ~600 tokens saves ~1,275 tokens every session. How to fix →

Tools: arena_run_grid_backtest, validate_strategy · saves ~1,275 tokens/session

49 of 49 tool(s) carry no readOnlyHint/destructiveHint annotations.

Annotate read-only tools with {"readOnlyHint": true}. Agents and gateways can then run them without a confirmation prompt, and route around destructive ones. How to fix →

Tools: arena_batch, arena_call_extended, arena_compare_strategies, arena_dip_decision, arena_get_altcoin_season and 44 more

49 tools on one server. Tool-selection accuracy drops as the menu grows, and some clients (e.g. Cursor) cap the number of active tools.

Group tools by task into smaller servers or toolsets, and merge near-duplicates behind one tool with a mode parameter. How to fix →

4 tool(s) look like they change state (create/send/delete/pay…) but declare no destructiveHint.

Set annotations {"readOnlyHint": false, "destructiveHint": true|false, "idempotentHint": …}. Clients use these to ask the user before a side effect and to auto-approve safe reads. How to fix →

Tools: arena_dip_decision, arena_run_backtest, arena_run_grid_backtest, arena_run_universe_backtest

Loading this server's tool list costs an agent ~21,219 tokens before any work — more than 95% of MCP servers.

Split rarely-used tools into a separate server or a toolset the client can enable, or expose one "search tools" entry point. Many agents load every connected server's tools into every request. How to fix →

No tool declares an outputSchema.

Declare outputSchema and return structuredContent (MCP 2025-06-18+). Agents can then parse results without guessing, and chain tools reliably. How to fix →

In the last 30 days: 0 tool(s) removed and 22 schema change(s).

Add new tools or optional parameters instead of renaming or removing; deprecate first (say so in the description) and remove later. Agents cache tool contracts. How to fix →

Auto-fix: 46 corrected tool definitions

Paste-ready definitions with the problems above fixed. Changes marked verify need a human look. All of them as JSON: /v1/readiness/mcp-registry%2Fio.github.schoasch%2Fbacktesting-arena/fixes

arena_compare_strategies 1 change
{
  "name": "arena_compare_strategies",
  "description": "Which of these strategies performed best on the same data? Run 2–5 strategies against the SAME pair, interval and date range and return per-strategy metrics plus a comparison summary (best by CAGR, best by win-rate, worst by drawdown). Use this when the user asks which of several strategies fits a market — it holds the pair, interval and requested date range fixed, which a series of separate arena_run_backtest calls does not guarantee. What it does NOT equalize is the EVALUATION window: a strate",
  "inputSchema": {
    "type": "object",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "required": [
      "strategies",
      "pair",
      "asset_type",
      "interval",
      "date_from"
    ],
    "properties": {
      "pair": {
        "type": "string",
        "minLength": 1,
        "description": "Crypto pair symbol, e.g. BTCUSDT — the same pair for every strategy."
      },
      "capital": {
        "type": "number",
        "description": "Starting capital in quote currency. Default 10000. Affects absolute figures only, not CAGR or win-rate.",
        "exclusiveMinimum": 0
      },
      "date_to": {
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        "description": "End date, YYYY-MM-DD. Default: today."
      },
      "filters": {
        "type": "object",
        "properties": {
          "wma200": {
            "type": "boolean",
            "description": "200-week MA filter (BTC-derived): only take entries while BTC trades above its 200-week SMA."
          },
          "atrMode": {
            "enum": [
              "off",
              "low",
              "high",
              "expansion"
            ],
            "type": "string",
            "description": "ATR volatility regime filter. 'low'/'high' restrict entries to that volatility band, 'expansion' to rising volatility. Default 'off'."
          },
          "stochRsiWeekly": {
            "type": "boolean",
            "description": "Asset-specific weekly Stoch-RSI gate: entries only while the pair's weekly StochRSI(14) sits above its SMA(3). Default false."
          },
          "altcoinSeasonMode": {
            "enum": [
              "off",
              "aggressive",
              "conservative"
            ],
            "type": "string",
            "description": "Altcoin-Season gate. 'conservative' needs a confirmed alt season, 'aggressive' an early one. Default 'off'."
          },
          "bullmarketStageMode": {
            "enum": [
              "off",
              "early",
              "confirmed",
              "strict"
            ],
            "type": "string",
            "description": "Bull-market stage gate from the BTC cycle model; rising strictness from 'early' to 'strict'. Default 'off'."
          },
          "minProfitGuardThreshold": {
            "type": "number",
            "description": "Per-trade min profit guard (negative cap, e.g. -10 = exit once a trade is 10% under water)."
          }
        },
        "description": "Optional entry filters (Pro+). Each one only ever REMOVES entries — filters never create trades. Omit for the unfiltered baseline.",
        "additionalProperties": false
      },
      "interval": {
        "enum": [
          "1d",
          "2d",
          "3d",
          "1w",
          "1M"
        ],
        "type": "string",
        "description": "Candle interval: '1d' daily, '2d'/'3d' multi-day, '1w' weekly, '1M' monthly. Multi-day candles (2d/3d) are anchored to the Unix epoch, so one of n possible alignments is used. Measured on our own corpus, the choice of alignment alone moves CAGR by 6.66 pp on average (max 12.30). Treat differences below that as not distinguishable — 1d/2d/3d behaved as one block in our tests, not a ranking."
      },
      "date_from": {
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        "description": "Start date, YYYY-MM-DD. Earlier than the pair listing is clamped to the first available candle."
      },
      "asset_type": {
        "enum": [
          "crypto",
          "tokenized_equity",
          "tokenized_etf",
          "commodities"
        ],
        "type": "string",
        "description": "Asset class. Use 'crypto' unless you are explicitly backtesting a tokenized real-world asset. Note: tokenized stocks/ETFs/gold trade AS crypto pairs (e.g. spybUSDT, qqqbUSDT) — there is no separate stocks/forex backtest surface; non-crypto asset classes were retired."
      },
      "strategies": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "strategy"
          ],
          "properties": {
            "params": {
              "type": "object",
              "description": "Optional per-strategy parameter overrides; omit for audited defaults.",
              "additionalProperties": {}
            },
            "strategy": {
              "type": "string",
              "minLength": 1,
              "description": "Strategy key — use arena_list_strategies."
            }
          },
          "additionalProperties": false
        },
        "maxItems": 5,
        "minItems": 2,
        "description": "The 2–5 strategies to compare, each with optional own params."
      }
    },
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": true
  },
  "title": "Compare 2-5 Strategies"
}
arena_dip_decision 1 change
{
  "name": "arena_dip_decision",
  "description": "Buy now or wait for the dip? Decision-math over the user's OWN assumptions (target/dip prices, probabilities, capital). Two modes: \"compare\" = expected value of Buy-Now vs Wait vs Split + the breakeven dip probability (prices as MULTIPLES of today); \"allocate\" = the risk-adjusted (Kelly / risk-aversion γ) optimal fraction to deploy now vs reserve for the dip (ABSOLUTE prices). Ask the user for the missing inputs, then call. Returns scenario numbers and which option wins on expected value — NOT a",
  "inputSchema": {
    "type": "object",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
      "mode": {
        "enum": [
          "compare",
          "allocate"
        ],
        "type": "string",
        "default": "compare",
        "description": "'compare' (default): EV of buy-now vs wait vs split + breakeven dip probability. 'allocate': risk-adjusted optimal deploy-now fraction under γ."
      },
      "compare": {
        "type": "object",
        "required": [
          "target_mult",
          "dip_mult",
          "dip_probability",
          "target_probability",
          "capital"
        ],
        "properties": {
          "capital": {
            "type": "number",
            "description": "Total capital for the position.",
            "exclusiveMinimum": 0
          },
          "dip_mult": {
            "type": "number",
            "description": "Dip price as × today, below 1 (e.g. 0.5 = wait for a 50% drop).",
            "exclusiveMinimum": 0
          },
          "target_mult": {
            "type": "number",
            "description": "Target price as × today (e.g. 2.0 = a doubling).",
            "exclusiveMinimum": 0
          },
          "failure_mult": {
            "type": "number",
            "default": 1,
            "minimum": 0,
            "description": "Price if the target is never hit, as × today. Default 1.0."
          },
          "split_now_pct": {
            "type": "number",
            "default": 50,
            "maximum": 100,
            "minimum": 0,
            "description": "Split scenario: share deployed now, percent. Default 50."
          },
          "dip_probability": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "description": "P(dip is actually reached), percent."
          },
          "target_probability": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "description": "Unconditional P(target is eventually hit), percent."
          }
        },
        "description": "Required when mode='compare'.",
        "additionalProperties": false
      },
      "allocate": {
        "type": "object",
        "required": [
          "capital",
          "current_price",
          "dip_price",
          "target_price",
          "dip_then_target_probability",
          "straight_up_probability"
        ],
        "properties": {
          "capital": {
            "type": "number",
            "description": "Total budget for the position.",
            "exclusiveMinimum": 0
          },
          "dip_price": {
            "type": "number",
            "description": "Dip price (absolute, must be below current).",
            "exclusiveMinimum": 0
          },
          "target_price": {
            "type": "number",
            "description": "Target price (absolute, must be above current).",
            "exclusiveMinimum": 0
          },
          "current_price": {
            "type": "number",
            "description": "Current price (absolute).",
            "exclusiveMinimum": 0
          },
          "risk_aversion": {
            "type": "number",
            "default": 1,
            "description": "Risk aversion γ. 1 = growth-optimal Kelly (default).",
            "exclusiveMinimum": 0
          },
          "straight_up_probability": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "description": "P(goes straight up to target, no dip), percent."
          },
          "dip_then_target_probability": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "description": "P(dips first, THEN recovers to target), percent."
          }
        },
        "description": "Required when mode='allocate'.",
        "additionalProperties": false
      }
    },
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": false
  },
  "title": "Dip Decision — buy now or wait?"
}
arena_get_altcoin_season 1 change
{
  "name": "arena_get_altcoin_season",
  "description": "Is it altcoin season? Daily Altcoin-Season indicator (v7 Native-Filter methodology). Returns BTC-, alt- and stablecoin dominance, the 4 Layer-1 signals (alt_dominance, total_market_cap, btc_dominance, stable_dominance — weekly smoothed-Heikin-Ashi directions; weights in methodology.layer1), overall color (red/yellow/green) and Layer 2: altcoin_season_pct (share of top-50 alts beating BTC over 90 days) with altcoin_season_pct_basis (beating / eligible / expected — coins without a 90-day return dr",
  "inputSchema": {
    "type": "object",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
      "fields": {
        "enum": [
          "full"
        ],
        "type": "string",
        "description": "Omit for the default response, which carries `provenance` in short form (grade full/partial/thin, sources_used, sources_expected). 'full' adds the long form: sources_missing (named), sources (licence attribution names), grade_reason, as_of — plus per-part provenance where the composite has parts. A `thin` grade (under half the expected inputs) is never a basis for a verdict or a ranking."
      }
    },
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": true
  },
  "title": "Get Altcoin Season Snapshot"
}

Get alerted

Get an email or webhook when this server's readiness drops by 10+ points, tool-poisoning text appears, or a tool breaks:

curl -X POST https://glimind.com/v1/subscriptions -H 'content-type: application/json' -d '{"tools":["mcp-registry/io.github.schoasch/backtesting-arena"],"email":"[email protected]"}'

Agents: watch_tool({"toolId": "mcp-registry/io.github.schoasch/backtesting-arena"}) over MCP.

Passed

Largest tool definitions

Static checks of the advertised tools/list (schema, descriptions, annotations, tool-poisoning patterns, names, size) plus observed protocol, uptime, latency and contract changes. Read-only: no tool is ever called. Weights: schema 15, docs 20, safety 15, efficiency 15, compatibility 15, protocol 5, reliability 10, stability 5. Token counts are estimates (~3.6 characters per token).

Operator? Fix these, then re-check live. Embed the readiness badge:

Markdown
[![MCP agent-readiness](https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.schoasch%2Fbacktesting-arena.svg)](https://glimind.com/server/mcp-registry%2Fio.github.schoasch%2Fbacktesting-arena?ref=badge)
HTML
<a href="https://glimind.com/server/mcp-registry%2Fio.github.schoasch%2Fbacktesting-arena?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.schoasch%2Fbacktesting-arena.svg" alt="MCP agent-readiness"></a>
reStructuredText
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.schoasch%2Fbacktesting-arena.svg
   :target: https://glimind.com/server/mcp-registry%2Fio.github.schoasch%2Fbacktesting-arena?ref=badge
   :alt: MCP agent-readiness

Tool-definition log

Glimind records every version of this server's tool definitions in a signed, append-only transparency log. Current manifest sha256:596cf2ca481f3691…, first seen 2026-10-22, included at leaf 45176 of 75,576. Version history · verify what your client received.

Tools (49)

Compare: most reliable data servers · most reliable other servers · most reliable finance servers · most reliable ml servers · most reliable knowledge servers

Know before your agent calls it

Glimind tells agents whether a server is up right now and how to call it, then fails over to a live alternative when it isn't.

Add Glimind — free, no signup:

Add to Cursor Add to VS Code

Claude Code

claude mcp add --transport http glimind https://glimind.com/mcp

Claude Desktop · Windsurf · Cline (mcpServers JSON)

{
  "mcpServers": {
    "glimind": {
      "type": "http",
      "url": "https://glimind.com/mcp"
    }
  }
}

FAQ

Is the Schoasch Backtesting Arena MCP server down right now?

As of 2026-10-26 21:33 UTC, the Schoasch Backtesting Arena MCP server is up with a Glimind reliability score of 100/100 (grade A). Over the last 30 days it answered 100% of Glimind's liveness checks.

How many tools does Schoasch Backtesting Arena MCP server provide?

Schoasch Backtesting Arena MCP server advertises 49 tools, including arena_batch, arena_call_extended, arena_compare_strategies, arena_dip_decision, arena_get_altcoin_season.

How do I install Schoasch Backtesting Arena MCP server?

Point your MCP client at this streamable-http endpoint: https://tradingstrategies.work/api/mcp

Is the Schoasch Backtesting Arena MCP server safe to connect to an AI agent?

Glimind scanned all 49 tool definitions for tool-poisoning patterns — hidden or invisible characters, instructions that override the model, concealment from the user, requests to read credential or MCP config files, conversation exfiltration and cross-tool shadowing — and found none. This checks what the server tells the model, not what its code does; review the source before granting access to sensitive data.

Operator of Schoasch Backtesting Arena MCP server?

Status page: 90-day uptime, every outage and how long it lasted.

Claim this listing to get the Verified operator marker, a remediation checklist and owner analytics, or embed the live badge from any of the tool pages above. Maintainers: alerts, deploy attestation and monthly reports.

Status is an automated estimate from Glimind's liveness checks (handshake and tool listing only; no tool is ever called) and may lag or differ from your network. Glimind is not affiliated with this server or its operator. Operator? Request a correction or opt out at https://glimind.com/opt-out.

Feedback
Help us improve