addrbookFor publishers
← The evidence ledger

Evidence row 292593

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 49f80f98-bb6b-4497-ab06-f8d5784728b3
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
9f46b5fe79ebb464055278009e63dc312d8983b15298f39b9f36e099711266b7
Leaf
0x65607d42d42b88baa7696effe0640987a7c0157ae041c39303bc110e51e24e58

What was observed

{
  "count": 13,
  "tools": [
    {
      "description": "Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "key": {
            "description": "License key from checkout, MCPL1.<payload>.<signature>",
            "type": "string"
          }
        },
        "required": [
          "key"
        ],
        "type": "object"
      },
      "name": "license_activate"
    },
    {
      "description": "Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "license_status"
    },
    {
      "description": "Call this tool to add a computed column and save the result to a NEW file; the source is never modified unless out_path points at it. Returns the new file path, the row count and a preview of the first rows.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "decimals": {
            "description": "Round numeric formula results to this many decimals. Default: the widest decimal count of the columns the formula reads, capped at 2 when they all hold 2 or fewer (money in, money out); otherwise no rounding beyond float cleanup",
            "maximum": 10,
            "minimum": 0,
            "type": "integer"
          },
          "formula": {
            "description": "Expression over the columns of each row, in the same expression language as sheet_query, e.g. \"[Qty] * [Unit Price]\" or '[Country] = \"PL\"'. Give either formula or values",
            "type": "string"
          },
          "name": {
            "description": "Name of the new column. It must not already exist on the sheet",
            "type": "string"
          },
          "out_path": {
            "description": "Output file; default <source>-plus-<column>.<same ext>. The source file is left untouched unless this points at it",
            "type": "string"
          },
          "path": {
            "description": "Path to the source .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded); it is never modified",
            "type": "string"
          },
          "sheet": {
            "description": "Sheet name; default is the first sheet",
            "type": "string"
          },
          "values": {
            "description": "Explicit values, one per data row, instead of a formula. Missing entries are left blank",
            "type": "array"
          }
        },
        "required": [
          "path",
          "name"
        ],
        "type": "object"
      },
      "name": "sheet_add_column"
    },
    {
      "description": "Call this tool to convert a sheet between excel (xlsx), csv and json. Writes a new file next to the source unless out_path is given; the source is never modified. Returns the new file path with its row and column counts.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "out_path": {
            "description": "Where to write; default is the source name with the new extension, next to the source. It must differ from the source path",
            "type": "string"
          },
          "path": {
            "description": "Path to the source .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded); it is never modified",
            "type": "string"
          },
          "sheet": {
            "description": "Sheet to convert; default is the first sheet. Only that one sheet is written",
            "type": "string"
          },
          "to": {
            "description": "Target format; the default out_path takes this as its extension",
            "enum": [
              "csv",
              "xlsx",
              "json"
            ],
            "type": "string"
          }
        },
        "required": [
          "path",
          "to"
        ],
        "type": "object"
      },
      "name": "sheet_convert"
    },
    {
      "description": "List the sheets loaded for this token, with their sizes and the storage left under the 2 MB cap.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "sheet_files"
    },
    {
      "description": "Call this tool to search every cell of a spreadsheet or CSV for text; built-in file readers cannot parse spreadsheets. Matching is case insensitive. Returns cell addresses with a preview of the row each hit is on.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "path": {
            "description": "Path to the .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded)",
            "type": "string"
          },
          "sheet": {
            "description": "Sheet name; default searches every sheet",
            "type": "string"
          },
          "text": {
            "description": "Text to look for; matched case insensitively anywhere inside a cell. Up to 200 hits are returned",
            "type": "string"
          }
        },
        "required": [
          "path",
          "text"
        ],
        "type": "object"
      },
      "name": "sheet_find"
    },
    {
      "description": "Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Start here: sheet names, size, header row, column types and samples.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "path": {
            "description": "Path to the .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded)",
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "name": "sheet_info"
    },
    {
      "description": "Upload data to work on. This hosted endpoint has no filesystem, so instead of a file path you send the data once with sheet_load and then pass its name as `path` to sheet_info, sheet_read, sheet_query, sheet_stats, sheet_find, sheet_add_column, sheet_convert and sheet_write. Give exactly one of csv (raw text, comma or tab separated), xlsx_base64 (a base64-encoded .xlsx workbook) or url. url: fetch a public file instead of pasting base64 (recommended above about 10 KB): the url is fetched here with a 10 second timeout, at most 3 redirects, public http(s) hosts only, and a 2 MB cap, and a fetched file is stored as an .xlsx when it carries the PK zip header and as delimited text otherwise. Loaded sheets are kept for your token and survive between calls; the total is capped at 2 MB per token. Files the other tools write come back as a download link that is valid for one hour.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "csv": {
            "description": "Raw CSV or TSV text, including the header row",
            "type": "string"
          },
          "name": {
            "description": "Name to refer to this data by: 1-64 characters of letters, digits, underscore or dash, e.g. \"sales\" or \"sales.csv\"",
            "maxLength": 70,
            "minLength": 1,
            "type": "string"
          },
          "url": {
            "description": "url: fetch a public file instead of pasting base64 (recommended above about 10 KB). Public http(s) only; private, link-local and this endpoint's own zone are refused",
            "type": "string"
          },
          "xlsx_base64": {
            "description": "Base64-encoded .xlsx workbook",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "sheet_load"
    },
    {
      "description": "Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Filter, group, aggregate and sort in one call; never hand sums over sheet_read rows.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "aggregate": {
            "description": "Aggregates per group, e.g. [{\"col\":\"Units\",\"fn\":\"sum\",\"as\":\"total_units\"}]. Defaults to a row count when group_by is given.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "as": {
                  "description": "Output name for this aggregate, e.g. total_units",
                  "type": "string"
                },
                "col": {
                  "description": "Column to aggregate, or \"*\" to count rows",
                  "type": "string"
                },
                "fn": {
                  "description": "sum | count | avg | min | max",
                  "enum": [
                    "sum",
                    "count",
                    "avg",
                    "min",
                    "max"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "col",
                "fn"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "as": {
            "enum": [
              "table",
              "json",
              "csv"
            ],
            "type": "string"
          },
          "group_by": {
            "description": "Group rows by these columns before aggregating, e.g. [\"Rep\"] or [\"Region\",\"Rep\"]",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "limit": {
            "description": "Default 100",
            "maximum": 100000,
            "minimum": 1,
            "type": "integer"
          },
          "path": {
            "description": "Path to the .xlsx or .csv file",
            "type": "string"
          },
          "select": {
            "description": "Column names to return; default all (with group_by, defaults to the group columns plus the aggregates)",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sheet": {
            "type": "string"
          },
          "sort": {
            "additionalProperties": false,
            "description": "Sort column; may be an aggregate alias such as total_units",
            "properties": {
              "col": {
                "type": "string"
              },
              "dir": {
                "enum": [
                  "asc",
                  "desc"
                ],
                "type": "string"
              }
            },
            "required": [
              "col"
            ],
            "type": "object"
          },
          "where": {
            "description": "Filter, e.g. [Qty] >= 5 AND ([Status] = \"open\" OR [Status] = \"new\")",
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "name": "sheet_query"
    },
    {
      "description": "Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Reads rows as a table, JSON or CSV; page with limit/offset or an A1 range.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "as": {
            "description": "Output format, default table",
            "enum": [
              "table",
              "json",
              "csv"
            ],
            "type": "string"
          },
          "limit": {
            "description": "Rows to return, default 100",
            "maximum": 100000,
            "minimum": 1,
            "type": "integer"
          },
          "offset": {
            "description": "Rows to skip, default 0",
            "minimum": 0,
            "type": "integer"
          },
          "path": {
            "type": "string"
          },
          "range": {
            "description": "A1 range such as A1:D50; overrides limit/offset",
            "type": "string"
          },
          "sheet": {
            "description": "Sheet name; defaults to the first sheet",
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "name": "sheet_read"
    },
    {
      "description": "Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Whole-column statistics: count, empty, distinct, min, max, sum, mean, median.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "columns": {
            "description": "Limit to these columns; default all",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "path": {
            "type": "string"
          },
          "sheet": {
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "name": "sheet_stats"
    },
    {
      "description": "Delete one sheet loaded for this token, freeing its space under the 2 MB cap.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "name": {
            "maxLength": 70,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "sheet_unload"
    },
    {
      "description": "Call this tool to write rows to an xlsx, csv, tsv or json file; the extension of out_path picks the format. mode is new_file, append or overwrite. Other sheets are kept. Free: 500 rows per file.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "description": "new_file writes a brand new file and refuses to clobber an existing one; append adds the rows under the existing data; overwrite replaces the file contents",
            "enum": [
              "new_file",
              "append",
              "overwrite"
            ],
            "type": "string"
          },
          "out_path": {
            "description": "Where to write; default is a new file next to the source for new_file, or the source itself for append/overwrite. The output format follows this extension: .xlsx, .csv, .tsv or .json. An extension is required",
            "type": "string"
          },
          "path": {
            "description": "Source file for append/overwrite, or the intended file for new_file (~ is expanded)",
            "type": "string"
          },
          "rows": {
            "description": "Array of objects, whose keys become the headers, or an array of arrays with the header row first",
            "items": {
              "anyOf": [
                {
                  "additionalProperties": {},
                  "type": "object"
                },
                {
                  "type": "array"
                }
              ]
            },
            "type": "array"
          },
          "sheet": {
            "description": "Sheet to write; default is the first sheet of the source, or \"Sheet1\" for a new file. Other sheets of an existing workbook are kept unchanged",
            "type": "string"
          }
        },
        "required": [
          "path",
          "rows",
          "mode"
        ],
        "type": "object"
      },
      "name": "sheet_write"
    }
  ]
}

What the leaf hashes

{"body":"9f46b5fe79ebb464055278009e63dc312d8983b15298f39b9f36e099711266b7","id":292593,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793048867046188,"prev":null,"subject":"49f80f98-bb6b-4497-ab06-f8d5784728b3","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. 0x656097bffad2bd8168ac59500ff1ce33cb15434a6c20112985f981cc357e6137
  2. 0xd5518062c16f2689398f4cda8eb0b5d35f52a374ec2e0747cd958750fecf1720
  3. 0x89a3780dd87b26a614942aeec4971dcca1cf592a835b7d0c2ce25bb20b654f2f
  4. 0x9f754bfa63e0f4ba2af9b70ab1380fc5f02a499568c0d91a0e22ac0731860957
  5. 0xcb351bc1695bab68823a939513f632663192a8acd2cd3fcebd20535dd4ca7997
  6. 0x19140a16db77de5eeae82094f09b8b1389fbb4179b20bd30f43fbf4aa7b01812
  7. 0x57b4ddd8cc37531117f411db826d79a6ff9815e682b4b61e3a93eb698820246e
  8. 0x28fdf57188430e21a2c31ec178ab2a4e6b0232cdca7036b1ae35df7b0ce336f1
  9. 0x7ba52990c25e82b65597b5ab659a817f7f4e1620500b72a8e1a0b2d518d82a43
  10. 0x5296420e1acf9644fca56dfcfebe9911f7cbd593b603e3a280043d869ff6edc4
  11. 0x2184826674dda59cfc6d24bc12b2c70a5f4db29f874e67fded919c1410503d2e
  12. 0x611b1c1b68d04a71934006e383071a8f3836400d60beb86d81dd038bc102029f
  13. 0x13f4b94ecf613d585c952b5363dad2b247a55371eb8e358bb89dc033e83128b1
  14. 0x9a79c65e077cd9da9d436b3ade6f5ddc0d244510c4d5903ef2f02d81205f7666
  15. 0xa2d436d488e3600b0e5c3e3ed9c9234cd52853c59830b786334fd0c4292d9f40
  16. 0x47b89901b0f07938a6b9a66ddf35683903f79d756a7c7763665fd632758b08d0
  17. 0x9a83be955a206deb65b995adfd92c58fa31c95fbbf926bd199d300e70b08b26d
  18. 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON