← The evidence ledger
Evidence row 3717304
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 49f80f98-bb6b-4497-ab06-f8d5784728b3
- Recorded
- Previous row
- #292593
- Body SHA-256
- f1f54bc0191f407fa995eeff20a7142f8e617ba56bc151d4bce213d5b47fd2d4
- Leaf
- 0xe12c9ab8f337562137a1dd29e0366f214d18f8480e62d69cb6b570f37fc72680
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#",
"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#",
"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",
"items": {},
"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#",
"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#",
"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#",
"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#",
"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#",
"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": {
"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": {
"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#",
"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",
"maximum": 9007199254740991,
"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#",
"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#",
"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#",
"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": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
{
"items": {},
"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":"f1f54bc0191f407fa995eeff20a7142f8e617ba56bc151d4bce213d5b47fd2d4","id":3717304,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793964301390290,"prev":292593,"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 (303443 rows).
- 0xe12ce2bd812d52e0a04c2fcf0e1a2e2c1122428fd2abbe98119c1e13424a8656
- 0xaccecea6e5b09c325d3bf3c206f11b1f03672b507a11217ce44dd780a5f2228d
- 0xb620e86a0ccce1c604815e497f7c1beba3903080b2888731b66b16458c551311
- 0x9a41d56f3e153d669eb9eb8ec9f8ee74917ae6518e0b8f4fa254587f22eaef30
- 0x0416706e971571d18f8808ffab04b9c1c7ea96d34d51b8a5a16c1c574ed22a76
- 0x905da464b7a2a014e83b5faa33b99ec373b694ee53e48970e7c2be0ddc164e2c
- 0x23d01633434cb7e592c3b837a6847596867eb30fcea3436ebf5ecb9f2946bb89
- 0xe914e5652fd85159233b6690b8e3aff20e0f6a05d844cb97a7f28d76caa8d70d
- 0xbf92eaf42c3d87c1fcfd66412c220d0d6bff81fb66ecdffa81fd82ed6e5c2c6e
- 0x85245214b6f10b991930d7c14d2c7d4cac4cff08a8ba5a08f73aebcc1761f319
- 0xcbf4dd704f4cba6398b1007322a36158c800c423c8621f420bf899f90a02e657
- 0x49e69f185ffa011481e5be0da1d39a82b8249b02df2c699183f43d1bdad26f45
- 0xfcbd0642e88bf4d537266e8b97fc26382cc60c52e3367b427cbc12bfd83bda4a
- 0x401f473322bdfc8fea51b048fef00e1f433c6b46d6320840a3c273774f7e8299
- 0x3c1d5e613d15e0df0cd0c1b1c0e33f6806b96b933b69d2555bd92b4570955879
- 0x04c1c4929933bae20304ac32084d4b93dcac07567f68e828ac93bbc39eb4614c
- 0x0ab273486ad4e41bf08c741b20b2ee12e0fc87eaa429a5467c58fd3be34409b9
- Day root
- 0xb30ccefe7182c6f767e1fcbfb5f64ffd649da831f665f65c5ff39cd40512284f
- Chained
- 0xc383f7ef68d2914082484765aa09e42c12c59a74a096ae64127c562618c506d3
- Published
- On Arc Testnet, block 71111178: 0xfba13cb7ee4ada7f2fee3702a786a2201596be2ffea37dfc281ab4c8e9942fe1