← The evidence ledger
Evidence row 565957
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint a86f2535-d559-4ec5-aa20-7c68c3a1a2f4
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 541ab60621676e4868ac35dc9c75959f2e054461dedee25104773674dd4b4ae8
- Leaf
- 0xff5dc704ef773c9e4588b328be5a68488c5bb5d790532df89c1fd3f0b911823c
What was observed
{
"count": 5,
"tools": [
{
"description": "Fill AcroForm form fields in a PDF and return the result. Field names must exist in the PDF (use pdf_inspect first). All values are strings; checkboxes take \"true\"/\"false\"; dropdown/radio/optionlist values must be one of the field's options; text values must respect the field's maxLength from pdf_inspect. The source PDF is never modified. Returns the filled PDF inline as an application/pdf resource. Encrypted PDFs are rejected with decrypt advice (common for government blanks with an empty user password).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"fields": {
"additionalProperties": {
"type": "string"
},
"description": "Field name → string value (from pdf_inspect's fillTemplate)",
"type": "object"
},
"flatten": {
"description": "Bake values into page content and drop the AcroForm so fields are no longer editable",
"type": "boolean"
},
"pdf_path": {
"description": "Template PDF source: an https:// URL or a data:application/pdf;base64,… URI (this hosted server cannot read local file paths).",
"type": "string"
}
},
"required": [
"pdf_path",
"fields"
],
"type": "object"
},
"name": "pdf_fill"
},
{
"description": "List a PDF's AcroForm form fields — names, types, options, current values, per-field maxLength where declared — plus a paste-ready fillTemplate object for pdf_fill and a hasXFA flag (hybrid AcroForm/XFA inputs lose their XFA layer when filled). A PDF with no fillable form returns count 0. Read-only: the PDF is fetched but never modified. Call this FIRST when filling an unfamiliar PDF, since pdf_fill rejects unknown field names and over-length values.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"pdf_path": {
"description": "PDF source: an https:// URL or a data:application/pdf;base64,… URI (this hosted server cannot read local file paths).",
"type": "string"
}
},
"required": [
"pdf_path"
],
"type": "object"
},
"name": "pdf_inspect"
},
{
"description": "Generate a complete, professionally laid-out invoice PDF from structured data — no template needed. Deterministic: the same input produces byte-identical output (safe to re-run). Note: without a paid PDFops key the output carries a small \"Generated with pdfops.dev\" footer line. Returns the invoice inline as an application/pdf resource. Use this when you have invoice DATA and no document; if you already have an invoice PDF or a fillable template to populate, use pdf_fill instead.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"invoice": {
"additionalProperties": false,
"description": "Invoice data",
"properties": {
"currency": {
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"date": {
"description": "Calendar date in YYYY-MM-DD form (other formats are rejected with invalid_date). Shown on the invoice; also pins metadata for determinism",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"due": {
"type": "string"
},
"from": {
"anyOf": [
{
"type": "string"
},
{
"additionalProperties": false,
"properties": {
"lines": {
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
}
]
},
"invoice_number": {
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"quantity": {
"exclusiveMinimum": 0,
"type": "number"
},
"unit_price": {
"minimum": 0,
"type": "number"
}
},
"required": [
"description",
"unit_price"
],
"type": "object"
},
"maxItems": 100,
"minItems": 1,
"type": "array"
},
"notes": {
"maxLength": 1000,
"type": "string"
},
"tax_rate": {
"maximum": 100,
"minimum": 0,
"type": "number"
},
"to": {
"anyOf": [
{
"type": "string"
},
{
"additionalProperties": false,
"properties": {
"lines": {
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
}
]
}
},
"required": [
"from",
"to",
"items"
],
"type": "object"
}
},
"required": [
"invoice"
],
"type": "object"
},
"name": "pdf_invoice"
},
{
"description": "Merge two or more PDFs into one, in the order given, and return the result. Sources are read only and never modified. Returns the merged PDF inline as an application/pdf resource. This tool only concatenates whole documents: it does not reorder, rotate or delete pages within them, and it does not fill forms — use pdf_fill for a fillable form and pdf_invoice to build a document from data. An unreadable or rejected input fails with an error, so a partial merge is never returned.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"pdf_paths": {
"description": "In order, each a PDF source: an https:// URL or a data:application/pdf;base64,… URI (this hosted server cannot read local file paths).",
"items": {
"type": "string"
},
"minItems": 2,
"type": "array"
}
},
"required": [
"pdf_paths"
],
"type": "object"
},
"name": "pdf_merge"
},
{
"description": "Check the current PDFops API quota for the configured key: tier, limit, used, remaining, the billing period, and the reset timestamp. Read-only and safe to call before a batch to confirm there is headroom. Uses the API key this connection authenticated with.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "pdfops_usage"
}
]
}What the leaf hashes
{"body":"541ab60621676e4868ac35dc9c75959f2e054461dedee25104773674dd4b4ae8","id":565957,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793138304723816,"prev":null,"subject":"a86f2535-d559-4ec5-aa20-7c68c3a1a2f4","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).
- 0xff5da6edaa6ad900a62db7cd4d8a8a12488e96e8c1b9cd6dcabf82b777d7b196
- 0xe1ad096f7404903444d635eff5e8f0176c43b9c923360bb0a142859fa775e7b8
- 0x195f0a7a20cb7f6d7d635325290b1b3ba7a0005d3cfe07cd5925fa1ef09ece88
- 0x423e617bbf66f645596c23d7a68138dffc35f53045b7cacc18d85279a36d9184
- 0x379462de1f1d8daebf7b9d2423486bd41d4f1c5a8f55855d5aabf0a8d3cfbf26
- 0xbf332a95fa93eba7552c4f845077589f888d36f018af54b9b00724b260120316
- 0x74ddc21cd4311cd236bf071e01f8ea334e96646e8f9025dd458b89ebf6d8e548
- 0x0f99348cbbd6da7dd89aac52886f8c68cfc14503db8e484d48486f562c2b2475
- 0xf62b942d75d2fef9638deb45b2bc9738e92362eb6458f703c0c4298272c7a830
- 0xcf98af8333f7fd6bdbc1b992cf9bc07f24c23f9e4453268c27504de07f222988
- 0x7e9df831f5c1b2f5e3d3d5c1837e1410fcc354cd33e5999cecca1fd2ece2db37
- 0x5fc89955112581b3fcfa3f9a81d69af0e71784d0baa72f00dbfc2abc2e383e84
- 0x56e872147e60f01cdcee33340b018a7ad7be91ec5b5daef0d2c629c3ca13cbd8
- 0xb5b652bba4a5afca56c21031d89b1c06361563aaf54ccc8541c296ceeb2b66fa
- Day root
- 0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
- Chained
- 0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
- Published
- On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4