addrbookFor publishers
← The evidence ledger

Evidence row 305661

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 77e4b476-1aed-4243-8973-b00a145579c1
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
5f0aeb1d8f38c9ecf445dc82cbb017c339c4e2c7c81f438dc0d605fe0a1171f2
Leaf
0x73f51701d3f2101f97afc67b8b29e834a9f5d97bc00951a3bbfd8efb74a823a3

What was observed

{
  "count": 19,
  "tools": [
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "max_bars": {
            "description": "Maximum one-bar advances before stopping; defaults to 32 and acts as a safety cap.",
            "minimum": 1,
            "type": "integer"
          },
          "run_id": {
            "description": "Run UUID returned by start_run.",
            "type": "string"
          }
        },
        "required": [
          "run_id"
        ],
        "type": "object"
      },
      "name": "advance_until_next_session"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "auth_status"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "wait_seconds": {
            "description": "Optional seconds to poll for OAuth completion before returning; values above 120 are capped at 120. Use 0 to return the current status immediately.",
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "connect_bottrade"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "lookback": {
            "description": "Number of bars to return per symbol; the total request must remain within the server's 500-row budget.",
            "minimum": 1,
            "type": "integer"
          },
          "run_id": {
            "description": "Run UUID returned by start_run.",
            "type": "string"
          },
          "symbols": {
            "description": "Optional symbol subset. Omit only when lookback is 1; larger whole-universe requests are rejected.",
            "items": {
              "description": "Exact ticker symbol from the scenario universe.",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "run_id"
        ],
        "type": "object"
      },
      "name": "get_market"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "run_id": {
            "description": "Completed run UUID returned by start_run.",
            "type": "string"
          }
        },
        "required": [
          "run_id"
        ],
        "type": "object"
      },
      "name": "get_results"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "run_id": {
            "description": "Run UUID returned by start_run.",
            "type": "string"
          }
        },
        "required": [
          "run_id"
        ],
        "type": "object"
      },
      "name": "get_run"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "id_or_slug": {
            "description": "Exact scenario slug or UUID returned by list_scenarios.",
            "type": "string"
          }
        },
        "required": [
          "id_or_slug"
        ],
        "type": "object"
      },
      "name": "get_scenario"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "run_id": {
            "description": "Run UUID returned by start_run.",
            "type": "string"
          }
        },
        "required": [
          "run_id"
        ],
        "type": "object"
      },
      "name": "get_trades"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "max_bars": {
            "description": "Maximum one-bar advances before stopping; defaults to 256 and acts as a safety cap.",
            "minimum": 1,
            "type": "integer"
          },
          "require_flat": {
            "description": "When true, reject the call unless the run has no open positions; use this guard for cash-only waiting.",
            "type": "boolean"
          },
          "run_id": {
            "description": "Run UUID returned by start_run.",
            "type": "string"
          }
        },
        "required": [
          "run_id"
        ],
        "type": "object"
      },
      "name": "hold_until_end"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "lookback": {
            "description": "Bars per symbol; defaults to 30 when omitted and is capped at 120.",
            "minimum": 1,
            "type": "integer"
          },
          "run_id": {
            "description": "Run UUID returned by start_run.",
            "type": "string"
          },
          "symbols": {
            "description": "Between 1 and 8 symbols, normally selected from scan_market.suggested_inspection.",
            "items": {
              "description": "Exact ticker symbol from the scenario universe.",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "run_id",
          "symbols"
        ],
        "type": "object"
      },
      "name": "inspect_symbols"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "max_bars": {
            "description": "Maximum post-liquidation one-bar advances before stopping; defaults to 256.",
            "minimum": 1,
            "type": "integer"
          },
          "rationale": {
            "description": "Optional short reason copied onto the generated exit orders.",
            "type": "string"
          },
          "run_id": {
            "description": "Run UUID returned by start_run.",
            "type": "string"
          }
        },
        "required": [
          "run_id"
        ],
        "type": "object"
      },
      "name": "liquidate_and_finish"
    },
    {
      "description": "List the available BotTrade benchmark scenarios and their identifiers. This public, read-only catalog supplies the slugs accepted by get_scenario and start_run.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "list_scenarios"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "confirm": {
            "description": "Explicit publication confirmation; the server rejects the call unless this is true.",
            "type": "boolean"
          },
          "run_id": {
            "description": "Completed run UUID returned by start_run.",
            "type": "string"
          }
        },
        "required": [
          "run_id",
          "confirm"
        ],
        "type": "object"
      },
      "name": "publish_run"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "bot_name": {
            "description": "Optional display name recorded on the sandbox run.",
            "type": "string"
          },
          "scenario_slug": {
            "description": "Sandbox scenario slug; defaults to sandbox-nov-2024 when omitted.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "run_sandbox_smoke_test"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "run_id": {
            "description": "Run UUID returned by start_run.",
            "type": "string"
          }
        },
        "required": [
          "run_id"
        ],
        "type": "object"
      },
      "name": "scan_market"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "agent_info": {
            "additionalProperties": false,
            "description": "Optional structured provenance for the agent executing the run.",
            "properties": {
              "framework": {
                "description": "Agent framework or orchestration system.",
                "type": "string"
              },
              "model": {
                "description": "Model identifier used for the run.",
                "type": "string"
              },
              "name": {
                "description": "Agent name recorded with the run.",
                "type": "string"
              },
              "source_revision": {
                "description": "Commit hash or other immutable source revision.",
                "type": "string"
              },
              "source_url": {
                "description": "Public or private source repository URL.",
                "type": "string"
              },
              "version": {
                "description": "Agent or strategy version.",
                "type": "string"
              }
            },
            "required": [
              "name"
            ],
            "type": "object"
          },
          "bot_name": {
            "description": "Optional display name for the bot, strategy, or experiment associated with this run.",
            "type": "string"
          },
          "scenario_slug": {
            "description": "Exact scenario slug returned by list_scenarios.",
            "type": "string"
          }
        },
        "required": [
          "scenario_slug"
        ],
        "type": "object"
      },
      "name": "start_run"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "description": "Bars to advance. Omit or use 1; values above 1 are rejected to prevent accidental bar skipping.",
            "minimum": 1,
            "type": "integer"
          },
          "run_id": {
            "description": "Run UUID returned by start_run.",
            "type": "string"
          }
        },
        "required": [
          "run_id"
        ],
        "type": "object"
      },
      "name": "step_run"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "action": {
            "description": "Decision type: hold requires no orders; trade requires at least one order.",
            "enum": [
              "hold",
              "trade"
            ],
            "type": "string"
          },
          "orders": {
            "description": "Orders to queue when action is trade; use an empty array when action is hold.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "quantity": {
                  "description": "Order size, positive. Fractional allowed for crypto pairs (e.g. 0.25 for BTC/USD); equities are typically whole.",
                  "exclusiveMinimum": 0,
                  "type": "number"
                },
                "reasoning": {
                  "description": "Optional short reason recorded with this order.",
                  "type": "string"
                },
                "side": {
                  "description": "Order direction: buy opens/increases a long, sell reduces a long, short opens/increases a short, and cover reduces a short.",
                  "enum": [
                    "buy",
                    "sell",
                    "short",
                    "cover"
                  ],
                  "type": "string"
                },
                "symbol": {
                  "description": "Exact ticker symbol from the scenario universe.",
                  "type": "string"
                }
              },
              "required": [
                "symbol",
                "side",
                "quantity"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "rationale": {
            "description": "Optional short reason recorded with the decision.",
            "type": "string"
          },
          "run_id": {
            "description": "Run UUID returned by start_run.",
            "type": "string"
          },
          "step_count": {
            "description": "Bars to advance. Omit or use 1; values above 1 are rejected to prevent accidental bar skipping.",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "run_id",
          "action",
          "orders"
        ],
        "type": "object"
      },
      "name": "submit_decision"
    },
    {
      "description": "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.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "run_id": {
            "description": "Run UUID returned by start_run.",
            "type": "string"
          },
          "step_count": {
            "description": "Bars to advance. Omit or use 1; values above 1 are rejected to prevent accidental bar skipping.",
            "minimum": 1,
            "type": "integer"
          },
          "trades": {
            "description": "Orders to queue before the next bar; an empty array means advance without placing an order.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "quantity": {
                  "description": "Order size, positive. Fractional allowed for crypto pairs (e.g. 0.25 for BTC/USD); equities are typically whole.",
                  "exclusiveMinimum": 0,
                  "type": "number"
                },
                "reasoning": {
                  "description": "Optional short reason recorded with this order.",
                  "type": "string"
                },
                "side": {
                  "description": "Order direction: buy opens/increases a long, sell reduces a long, short opens/increases a short, and cover reduces a short.",
                  "enum": [
                    "buy",
                    "sell",
                    "short",
                    "cover"
                  ],
                  "type": "string"
                },
                "symbol": {
                  "description": "Exact ticker symbol from the scenario universe.",
                  "type": "string"
                }
              },
              "required": [
                "symbol",
                "side",
                "quantity"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "run_id",
          "trades"
        ],
        "type": "object"
      },
      "name": "submit_turn"
    }
  ]
}

What the leaf hashes

{"body":"5f0aeb1d8f38c9ecf445dc82cbb017c339c4e2c7c81f438dc0d605fe0a1171f2","id":305661,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793056566161080,"prev":null,"subject":"77e4b476-1aed-4243-8973-b00a145579c1","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0x73f5194f595c1165540dca3dd21467b09bba4d7a10911886ade553eb15849cfc
  2. 0x7c6de0968dc299013cd3c851aa492b8a8053681969058765b4a2efb5d98b1ee3
  3. 0xebe28c93534c7e6efa2853f3089c28f6b6d449881f9eae0367abd6cd3d310731
  4. 0xa75df69f6056b11b1deadb271106d35eb563eaa9e1bf32bafcf8e9714a65bc8e
  5. 0x6c7acd6960718cde71e67b6c359dd1daa52f81943226e7f870c3d3eb767b47a4
  6. 0x019ac575113cdbda0f075e1ad85466d86949e76faf5eeed482970d195d73c43e
  7. 0x8c8a459eb2f861be290726fcffa1e4047117dff0a433e47825b0a8c354f21074
  8. 0x60cd9fef817dba1d409c039fbf951d6d15a4316cc913a91b7d25256835b8ab2d
  9. 0x215c2a8e51253b6458db99fd5cd283701c83cf78a286a9e3f46ac6e8b44c1f0c
  10. 0xe7a9c6724a437c9a1fa4cdc48c7f0de9a8d253a4be67ec315658101040ef40d6
  11. 0x9adfaac1e332051e6999b9b702c6d539c2d639f94fd57735f2ddd441a4b5230c
  12. 0x3f193b47c78cf4e7b9e4988cd716854b0e1011e5fcbca161f5a885f1aa02857d
  13. 0x06064dc1eb2363bec8c2a752e0a28aafc4bf0cb21d1b1b755821c1575bb77a96
  14. 0xc4fe2177880ea1b0e82b6fe4c270090fd0fbe5af3a42a8cbf6a6ba2fa35625f6
  15. 0x15039087bf60ae9b06b756ec3cbc299760e59923a438bbd91e34d105186db0ed
  16. 0x2b6e23e3624a1b66e1d2298cfbce99a93ce6b13d24a58112a71802d79c5f7a76
  17. 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON