Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

org.bot-trade/bottrade

REMOTE · MCP.BOT-TRADE.ORG · SCANNED AUG 3

Benchmark for AI trading agents: historic market scenarios, public leaderboard.

+5 this week 77 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security89
Transport & Reachability100
Schema Quality & AI Usability73
  • 67% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 1653 tokens (~78/item across 21 items; 19 tools + 2 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · mcp.bot-trade.org

# add to Claude Code
claude mcp add --transport http org-bot-trade-bottrade https://mcp.bot-trade.org/mcp
# ~/.codex/config.toml
[mcp_servers.org-bot-trade-bottrade]
url = "https://mcp.bot-trade.org/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "org-bot-trade-bottrade": {
      "type": "remote",
      "url": "https://mcp.bot-trade.org/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add org-bot-trade-bottrade --url https://mcp.bot-trade.org/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  org-bot-trade-bottrade:
    url: "https://mcp.bot-trade.org/mcp"
// mcp.json
{
  "mcpServers": {
    "org-bot-trade-bottrade": {
      "type": "http",
      "url": "https://mcp.bot-trade.org/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 +5
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 −2
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 71

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://mcp.bot-trade.org/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.bot-trade.org CN=YE2,O=Let's Encrypt,C=US 26 Jul 2026 24 Oct 2026 ECDSA 256 ECDSA-SHA384 6332779b43ef706ec6e9f098207859f5409
SANs: mcp.bot-trade.org
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd
DNSSEC insecure

Validation of mcp.bot-trade.org. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
org. present 26974 8 Verified
bot-trade.org. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://mcp.bot-trade.org/.well-known/oauth-protected-resource", scope="bottrade:trade"

Bearer resource_metadata="https://mcp.bot-trade.org/.well-known/oauth-protected-resource", scope="bottrade:trade"

Protected resource metadata

Document https://mcp.bot-trade.org/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://mcp.bot-trade.org/mcp
Authorisation server https://bot-trade.org
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.bot-trade.org/mcp Verified 200
http (plaintext) http://mcp.bot-trade.org/mcp HTTPS enforced 301 https://mcp.bot-trade.org/mcp
MCP tools — 19 exposed · ~1,633 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
advance_until_next_session ~93

Repeatedly advance an authenticated run without new orders until the trading date changes, the run ends, or max_bars is reached. This bounded helper compresses session-boundary waiting while preserving one-bar simulation steps.

NameTypeReqDescription
max_barsintegerMaximum one-bar advances before stopping; defaults to 32 and acts as a safety cap.
run_idstringyesRun UUID returned by start_run.

No output schema declared.

No examples provided.

auth_status ~38

Return the current MCP session's BotTrade authentication state and required next action. This is a read-only status check; OAuth starts through connect_bottrade.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

connect_bottrade ~87

Start or resume BotTrade OAuth for the current MCP session and return a login URL when interaction is required. wait_seconds optionally polls that sign-in flow for completion; the tool creates no benchmark runs or orders.

NameTypeReqDescription
wait_secondsintegerOptional seconds to poll for OAuth completion before returning; values above 120 are capped at 120. Use 0 to return the current status immediately.

No output schema declared.

No examples provided.

get_market ~123

Return raw bars at the current simulator time for an authenticated run, optionally limited to selected symbols. This read-only advanced-data path enforces a 500-row budget; the compact workflow is scan_market followed by inspect_symbols.

NameTypeReqDescription
lookbackintegerNumber of bars to return per symbol; the total request must remain within the server's 500-row budget.
run_idstringyesRun UUID returned by start_run.
symbolsarrayOptional symbol subset. Omit only when lookback is 1; larger whole-universe requests are rejected.

No output schema declared.

No examples provided.

get_results ~62

Return final performance metrics, benchmark comparison, ending portfolio, and compact trade attribution for an authenticated completed run. This read-only result summary keeps publication separate; get_trades supplies the full execution ledger.

NameTypeReqDescription
run_idstringyesCompleted run UUID returned by start_run.

No output schema declared.

No examples provided.

get_run ~61

Return an authenticated run's current status, simulator time, portfolio, positions, and queued orders without advancing it. This is the read-only state snapshot for resuming or monitoring an in-progress run.

NameTypeReqDescription
run_idstringyesRun UUID returned by start_run.

No output schema declared.

No examples provided.

get_scenario ~61

Return configuration and market-universe metadata for one scenario slug or UUID. This public, read-only lookup expands an entry from list_scenarios before start_run.

NameTypeReqDescription
id_or_slugstringyesExact scenario slug or UUID returned by list_scenarios.

No output schema declared.

No examples provided.

get_trades ~55

Return every immutable filled-trade record for an authenticated run. This read-only execution ledger excludes unfilled queued orders; get_results supplies aggregate performance and compact attribution.

NameTypeReqDescription
run_idstringyesRun UUID returned by start_run.

No output schema declared.

No examples provided.

hold_until_end ~116

Repeatedly advance an authenticated run without adding orders until it completes, liquidates, or reaches max_bars. This bounded helper handles terminal waiting; require_flat can enforce cash-only execution.

NameTypeReqDescription
max_barsintegerMaximum one-bar advances before stopping; defaults to 256 and acts as a safety cap.
require_flatbooleanWhen true, reject the call unless the run has no open positions; use this guard for cash-only waiting.
run_idstringyesRun UUID returned by start_run.

No output schema declared.

No examples provided.

inspect_symbols ~105

Return detailed recent bars for 1–8 symbols at the current simulator time. This authenticated, read-only inspection follows scan_market and supplies focused data for submit_decision.

NameTypeReqDescription
lookbackintegerBars per symbol; defaults to 30 when omitted and is capped at 120.
run_idstringyesRun UUID returned by start_run.
symbolsarrayyesBetween 1 and 8 symbols, normally selected from scan_market.suggested_inspection.

No output schema declared.

No examples provided.

liquidate_and_finish ~105

Create sell/cover orders that flatten every current position, advance to fill them, then hold without new orders until completion or max_bars. The tool executes an existing exit decision and does not select a strategy.

NameTypeReqDescription
max_barsintegerMaximum post-liquidation one-bar advances before stopping; defaults to 256.
rationalestringOptional short reason copied onto the generated exit orders.
run_idstringyesRun UUID returned by start_run.

No output schema declared.

No examples provided.

list_scenarios ~40

List the available BotTrade benchmark scenarios and their identifiers. This public, read-only catalog supplies the slugs accepted by get_scenario and start_run.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

publish_run ~79

Make an authenticated completed run publicly accessible and submit its metrics to the BotTrade leaderboard. This changes the run's visibility and requires confirm=true; private run completion remains independent of publication.

NameTypeReqDescription
confirmbooleanyesExplicit publication confirmation; the server rejects the call unless this is true.
run_idstringyesCompleted run UUID returned by start_run.

No output schema declared.

No examples provided.

run_sandbox_smoke_test ~89

Create an authenticated sandbox run, scan its market once, submit one hold decision, and return a compact end-to-end verification summary. Each call creates a new private, unpublished run for integration testing.

NameTypeReqDescription
bot_namestringOptional display name recorded on the sandbox run.
scenario_slugstringSandbox scenario slug; defaults to sandbox-nov-2024 when omitted.

No output schema declared.

No examples provided.

scan_market ~67

Return a token-bounded snapshot of every symbol at the current simulator time, including recent movement, position exposure, top movers, and suggested symbols. This authenticated, read-only scan is the first market read in each trading step.

NameTypeReqDescription
run_idstringyesRun UUID returned by start_run.

No output schema declared.

No examples provided.

start_run ~101

Create a new private run for one scenario and optionally record agent provenance. Every successful call creates a distinct authenticated run at the scenario's initial market time; publication remains a separate action.

NameTypeReqDescription
agent_infoobjectOptional structured provenance for the agent executing the run.
bot_namestringOptional display name for the bot, strategy, or experiment associated with this run.
scenario_slugstringyesExact scenario slug returned by list_scenarios.

No output schema declared.

No examples provided.

step_run ~83

Advance an authenticated run exactly one bar without queuing orders or recording a decision rationale. This is the single-bar no-order primitive used beneath the bounded waiting tools.

NameTypeReqDescription
countintegerBars to advance. Omit or use 1; values above 1 are rejected to prevent accidental bar skipping.
run_idstringyesRun UUID returned by start_run.

No output schema declared.

No examples provided.

submit_decision ~152

Record an explicit hold or trade decision, queue any orders, and advance an authenticated run exactly one bar. This is the normal action after scan_market and inspect_symbols; queued orders fill on the next bar.

NameTypeReqDescription
actionstringyesDecision type: hold requires no orders; trade requires at least one order.
ordersarrayyesOrders to queue when action is trade; use an empty array when action is hold.
rationalestringOptional short reason recorded with the decision.
run_idstringyesRun UUID returned by start_run.
step_countintegerBars to advance. Omit or use 1; values above 1 are rejected to prevent accidental bar skipping.

No output schema declared.

No examples provided.

submit_turn ~116

Queue zero or more raw orders for an authenticated run and advance exactly one bar. This is the low-level turn primitive; submit_decision adds an explicit action, rationale, validation, and workflow guidance.

NameTypeReqDescription
run_idstringyesRun UUID returned by start_run.
step_countintegerBars to advance. Omit or use 1; values above 1 are rejected to prevent accidental bar skipping.
tradesarrayyesOrders to queue before the next bar; an empty array means advance without placing an order.

No output schema declared.

No examples provided.