← The evidence ledger
Evidence row 559217
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 8bde1635-f37c-464a-9a8b-c9df384d5fd0
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 9a13ef745df56aaaab0055a1dad484800669c2522df2e4e4f9beb266a4b01724
- Leaf
- 0xccd88ba9e9c207f7068fc46375463a1f65f07ef996e9b2ab1da4894dcca18c30
What was observed
{
"count": 9,
"tools": [
{
"description": "Your account's quota position: plan, monthly record limit, records used, remaining, and when the quota resets. Requires a stat-api sign-in or API key; costs 1 record.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "api_usage"
},
{
"description": "Full contract for one table: fields with types and descriptions, the filters query_table accepts (with operators like __gte/__lte/__between/__like and required filter combinations), page-size limits, primary key, and a runnable example URL. No credentials needed. Always call this before query_table — filters not listed here are rejected.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"league": {
"enum": [
"nfl",
"nba",
"mlb",
"nhl",
"pga",
"dfs",
"reference"
],
"type": "string"
},
"table": {
"type": "string"
}
},
"required": [
"league",
"table"
],
"type": "object"
},
"name": "describe_table"
},
{
"description": "Games scheduled/played on one calendar date (US-Eastern) for nba, mlb, or nhl; defaults to today. Returns the same envelope as query_table on the games table. NFL is week-based, not date-based — for nfl, use query_table on nfl/games with season_id + week filters instead. Requires a stat-api sign-in or API key; rows count against quota.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"date": {
"description": "YYYY-MM-DD; defaults to today in US-Eastern time",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"league": {
"enum": [
"nba",
"mlb",
"nhl"
],
"type": "string"
}
},
"required": [
"league"
],
"type": "object"
},
"name": "games_on_date"
},
{
"description": "Fetch a single row by primary key. Returns the row object. Requires a stat-api sign-in or API key; costs 1 record of quota.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"description": "primary-key value (integer or text PK)",
"type": "string"
},
"league": {
"enum": [
"nfl",
"nba",
"mlb",
"nhl",
"pga",
"dfs",
"reference"
],
"type": "string"
},
"table": {
"type": "string"
}
},
"required": [
"league",
"table",
"id"
],
"type": "object"
},
"name": "get_record"
},
{
"description": "Run a GraphQL query against the same data with relations — nest from a game to its teams/players/odds in one call. Root fields are leagues (nfl, nba, …), each exposing its tables with the same filter arguments as REST plus `first`/`after` pagination. Do NOT send introspection queries (the schema is huge) — use describe_table instead; the SDL is at https://api.stat-api.com/api/v1/graphql/sdl. Requires a stat-api sign-in or API key; every row resolved anywhere in the tree counts against quota.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"query": {
"type": "string"
},
"variables": {
"type": "object"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "graphql_query"
},
{
"description": "List every league/data group this API serves (nfl, nba, mlb, nhl, pga, dfs, reference) with table counts and availability. No credentials needed. Start here, then call list_tables.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_leagues"
},
{
"description": "List every queryable table in one league with a one-line summary each. No credentials needed. Follow with describe_table before querying.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"league": {
"enum": [
"nfl",
"nba",
"mlb",
"nhl",
"pga",
"dfs",
"reference"
],
"type": "string"
}
},
"required": [
"league"
],
"type": "object"
},
"name": "list_tables"
},
{
"description": "Query any table. Returns `{\"<table>\": [rows], \"limit\": N, \"next_from_id\": M|null, \"has_more\": bool}`. To read every row, start with from_id=0 and re-call with from_id set to the previous next_from_id until it is null. A call without from_id returns the first page in the table's default sort with next_from_id null. filters is a flat object of `field` or `field__op` keys from describe_table (e.g. {\"season_id\": 2024, \"day__between\": \"20250101,20250131\"}). Requires a stat-api account: sign in when the app asks (free account at https://stat-api.com), or send an API key as Authorization: Bearer <key>. Every returned row counts against the monthly record quota.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"filters": {
"additionalProperties": {
"type": [
"string",
"number",
"boolean"
]
},
"description": "field or field__op keys → scalar values; see describe_table",
"type": "object"
},
"from_id": {
"description": "keyset cursor: 0 for the first page of a full walk, then the previous next_from_id",
"type": "integer"
},
"league": {
"enum": [
"nfl",
"nba",
"mlb",
"nhl",
"pga",
"dfs",
"reference"
],
"type": "string"
},
"limit": {
"minimum": 1,
"type": "integer"
},
"table": {
"type": "string"
}
},
"required": [
"league",
"table"
],
"type": "object"
},
"name": "query_table"
},
{
"description": "Fuzzy player-name search (typo-tolerant). Currently NBA only — for other leagues query the players table with a name filter via query_table. Returns player rows ordered by match quality. Requires a stat-api sign-in or API key; rows count against quota.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"league": {
"default": "nba",
"enum": [
"nba"
],
"type": "string"
},
"limit": {
"default": 10,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"name": {
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "search_players"
}
]
}What the leaf hashes
{"body":"9a13ef745df56aaaab0055a1dad484800669c2522df2e4e4f9beb266a4b01724","id":559217,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793135249238648,"prev":null,"subject":"8bde1635-f37c-464a-9a8b-c9df384d5fd0","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).
- 0xccd86a03c81e80eda9579f10394ed4aa440e7ba160084543cdb93e710f0629e7
- 0xd7eaf4d5ad6dd6099bb3e85309ff403f530d735df9a35b90eaf49985c2b21dda
- 0xd3e96f499428e76ea9dfd1bfc17035295f2aed2a32abf035b97e6ae7aea61f93
- 0x844e929020e956ca409617adbe7fa31b87912469fde3eeeb19fc8ff635f9c714
- 0x186b40314553947a4ec3ca1c20c71d36c92124cca05ed84cdf446f9ff4cb5344
- 0x47ed2d4fa42265dcc7ecc7aa0118294b7b9b535443269e90ef269f8037425918
- 0x91b23d7d67a02a7ca0ab2d75ec37b20d2cf5c75ae0bc0facbbcb8da542672f0f
- 0x77b30bfab32be1c4b0e3035d7ae6097e12c7d55c447f50e47783c372edb14043
- 0xba25a099aed38d4189ef565418ecacc44e462977528b1b32b29d477412367edd
- 0xb8405eeba75c6be56beb524c5fd7accc70de5ceb18b5c0866feaa3130c03653b
- 0xf6faea553d6354c2881afaf6cc13a2f3a8290ee9597618bbe3c61a828c5e4c23
- 0x6c0803f2d7123e0bcd2a148e9fde0f429f31dc964ced287e760ee656fcd9912f
- 0xeb77e9d1884bf470f4a13a5869956a83ac37957112a29ccb9e63ddf7791b5a0b
- 0xcc49fd573532e5a29f5be4033f62a2eff71456c020bd2258312b98e95cfe301e
- 0x969cd44e5a4e8dc3110540398fbf689659eb51df735c1cda5d8f021ef9ff5683
- 0xa94627de1af0e823832e05a9069b304ecccb8c0cdb8f9cfc4f2039bfb9799dc5
- 0xdf1105afdc109de3c09a98fc8a3864159ad964e6f49b635c105a27a1e1f14310
- 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
- 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
- Day root
- 0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
- Chained
- 0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
- Published
- On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4