addrbookFor publishers
← The evidence ledger

Evidence row 3470079

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint bfe87816-884c-472c-9567-a221708b4e97
Recorded
Previous row
#766039
Body SHA-256
745fa0764375f2ac3c3f2aafd1cadda74feeb26952b5ebe639c9dd3b2b7a6cc5
Leaf
0xbc2e9b137273a3f6417e8df2f7c98ad79da80451ec737f4a0cc3b03ab25fcd82

What was observed

{
  "count": 8,
  "tools": [
    {
      "description": "Use this when someone asks what a photo book (Dutch: fotoboek) costs, how foto foto's price compares with other services, or which services sell a layflat book, a linen cover or fine-art paper. Prices one book (binding, cover, paper, pages) at foto foto and at albelli, CEWE, Fotofabriek, Pixum, smartphoto, Kruidvat, Profotonet and Saal Digital, cheapest first, with the page each price was read from. List prices in euros with VAT, without shipping or discounts. For a book that was already made, get_book gives its price with shipping. Free, changes nothing.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "binding": {
            "description": "perfect: the standard binding, where the pages curve towards the spine. layflat: opens completely flat, up to 120 pages.",
            "enum": [
              "perfect",
              "layflat"
            ],
            "type": "string"
          },
          "cover": {
            "description": "smooth: the standard hardcover. linen: a linen hardcover.",
            "enum": [
              "smooth",
              "linen"
            ],
            "type": "string"
          },
          "pages": {
            "description": "Printed pages, an even number from 24 to 300, layflat up to 120. An odd count is rounded up and a count outside the range is moved inside it. Default 74.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "paper": {
            "description": "glossy (the standard), matte or fine-art.",
            "enum": [
              "glossy",
              "matte",
              "fine-art"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "compare_photo_book_prices"
    },
    {
      "description": "Use this when the person wants a photo book (Dutch: fotoboek) made from photos they attached, direct image links, or a public iCloud Shared Album link. Designs a draft book from the photos in the supplied order; nothing is ordered or charged. Photos the person attached in this chat go in attachments, which ChatGPT fills in; never pass local file paths. Otherwise provide direct CDN image URLs or uploadIds from POST /api/connector/photos in photos, or a public iCloud Shared Album link as sharedAlbumUrl (https://www.icloud.com/sharedalbum/#TOKEN). A book needs at least 24 pages to be printed, so a handful of photos gives a book that can be viewed but not yet ordered. Returns a preview and a private link to save the book by email. No account setup. Allow up to 180 seconds for imports.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "attachments": {
            "description": "Photos the person attached in this chat. ChatGPT supplies the file objects; never invent them.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "download_url": {
                  "type": "string"
                },
                "file_id": {
                  "type": "string"
                },
                "file_name": {
                  "type": "string"
                },
                "mime_type": {
                  "type": "string"
                }
              },
              "required": [
                "download_url",
                "file_id"
              ],
              "type": "object"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "idempotencyKey": {
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "type": "string"
          },
          "language": {
            "description": "Two-letter code of the language the person writes in, such as nl or en.",
            "maxLength": 35,
            "type": "string"
          },
          "photos": {
            "description": "Public https image URLs on a known CDN, or uploadIds. Not for chat attachments or local paths.",
            "items": {
              "properties": {
                "filename": {
                  "default": "photo.jpg",
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "uploadId": {
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "type": "string"
                },
                "url": {
                  "format": "uri",
                  "maxLength": 4096,
                  "type": "string"
                }
              },
              "type": "object"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "productId": {
            "maxLength": 100,
            "type": "string"
          },
          "sharedAlbumUrl": {
            "description": "Public iCloud Shared Album link, used instead of photos.",
            "format": "uri",
            "maxLength": 2048,
            "type": "string"
          },
          "title": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "idempotencyKey",
          "title"
        ],
        "type": "object"
      },
      "name": "create_book"
    },
    {
      "description": "Prepare an optional Stripe checkout link after email claim, using the bookToken. No charge occurs until the user confirms payment at Stripe. Collect the destination country first. Reuse idempotencyKey on retry.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "bookId": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string"
          },
          "bookToken": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "idempotencyKey": {
            "maxLength": 100,
            "minLength": 8,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string"
          },
          "quantity": {
            "default": 1,
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "bookId",
          "bookToken",
          "country",
          "idempotencyKey"
        ],
        "type": "object"
      },
      "name": "create_checkout"
    },
    {
      "description": "Prepare a fixed payment quote for a printed book, including shipping, for MPP and, when listed, x402 (USDC on Base). Requires a complete delivery address. No charge yet. Ask the user to confirm before paying: pay_book for MPP, or POST paymentUrl with an x402 client for USDC. Quote expires after 15 minutes.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "bookId": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string"
          },
          "bookToken": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "idempotencyKey": {
            "maxLength": 100,
            "minLength": 8,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string"
          },
          "quantity": {
            "default": 1,
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          },
          "shippingAddress": {
            "properties": {
              "addressLine1": {
                "maxLength": 160,
                "minLength": 1,
                "type": "string"
              },
              "addressLine2": {
                "maxLength": 160,
                "type": "string"
              },
              "city": {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              "firstName": {
                "maxLength": 80,
                "minLength": 1,
                "type": "string"
              },
              "lastName": {
                "maxLength": 80,
                "minLength": 1,
                "type": "string"
              },
              "phone": {
                "maxLength": 40,
                "minLength": 5,
                "type": "string"
              },
              "postalCode": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string"
              },
              "state": {
                "maxLength": 100,
                "type": "string"
              }
            },
            "required": [
              "firstName",
              "lastName",
              "addressLine1",
              "city",
              "postalCode",
              "phone"
            ],
            "type": "object"
          }
        },
        "required": [
          "bookId",
          "bookToken",
          "country",
          "idempotencyKey",
          "shippingAddress"
        ],
        "type": "object"
      },
      "name": "create_payment_quote"
    },
    {
      "description": "Use this to show a book that was already made, or to get its price for one copy including shipping when country is supplied. Needs the book's private bookToken. Photos, cover, title, layout and materials are changed in the foto foto editor.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "bookId": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string"
          },
          "bookToken": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "language": {
            "description": "Two-letter code of the language the person writes in, such as nl or en.",
            "maxLength": 35,
            "type": "string"
          }
        },
        "required": [
          "bookId",
          "bookToken"
        ],
        "type": "object"
      },
      "name": "get_book"
    },
    {
      "description": "List book types, shipping countries and photo requirements. Free.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "get_catalog"
    },
    {
      "description": "Buy the exact quoted book using native MPP. Only after the buyer approves its total and delivery address. Supply quoteId and bookToken. A payment challenge is returned through JSON-RPC; retry the same call with the authorized payment credential in _meta. This charges the buyer.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "bookToken": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          },
          "quoteId": {
            "pattern": "^[a-f0-9]{64}$",
            "type": "string"
          }
        },
        "required": [
          "quoteId",
          "bookToken"
        ],
        "type": "object"
      },
      "name": "pay_book"
    },
    {
      "description": "Use this when someone wants to make a printed photo book (Dutch: fotoboek) or photo album but has not shared any photos yet. Shows a card where they pick the photos, in order, right here. Nothing is ordered or charged.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "language": {
            "description": "Two-letter code of the language the person writes in, such as nl or en.",
            "maxLength": 35,
            "type": "string"
          },
          "title": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "start_photo_book"
    }
  ]
}

What the leaf hashes

{"body":"745fa0764375f2ac3c3f2aafd1cadda74feeb26952b5ebe639c9dd3b2b7a6cc5","id":3470079,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793919335878874,"prev":766039,"subject":"bfe87816-884c-472c-9567-a221708b4e97","subject_kind":"endpoint"}

Proof

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

  1. 0xbc2e3e49e3d432cdbe0019e36cff5451dd9bfc11e790cbe7b1c9c6a33b3baef1
  2. 0xc159c55570bca8536a9cd87a6533831d2d43a0700dbdb6761afe5ba54bbbff75
  3. 0x88c89808900e29d2f961ab00ecfb5c8bd08af5945ef2d8b81e757c09f4362968
  4. 0x6e5d4d29beb2cde8795c05e4607b6639900e9fdc5dff6f02cce0d66017563fd0
  5. 0x003ef825a25c410159f45ee80c0adc67e9b2a47736bf2ff6ef41b7df072c9805
  6. 0x1a5e032464930a0d174f14c82bd61c1543df24f44025154f6d06d7354b967f61
  7. 0x4d9aaa387470c2f3a40c226de71c50ff8ee1efae2acdaf10af819d67dbcdde1b
  8. 0x0d5484b1913f1cc8c7b823ea133e6dc593a3b103af4651549128f792c65e938f
  9. 0x14b45e42fbba1d657c6f3bff5ab48626c07fdd7135bf65c26614ea6019bece78
  10. 0x9d10ba79fcffac69049e237bdb72038a0fdcf02680a1d9b899c3740d341e02e6
  11. 0x60454a20784e423215acbb8a8578ef2613a0909a2b5e5de1c867c5bccb019361
  12. 0x49826dd2ed27100a6876197c00d27e7e258901ea963192e545260753ee2aad9b
  13. 0x4d1a3e1629ac94f008f86d640e2215294c455c0cfa68052fe7599448f393c0ab
  14. 0xfdff056f2f1484871f49374c23ddba883f11db9a6da6292a7e99a1638cdd3d63
  15. 0xbce07c8bedec3bbed9a22d7f4e8aca180f479ed562779a14791c5e82f052e9c8
  16. 0x308711d37f87ac2fb79802c45aba249411861d2d093068d1718f039b506d2a02
  17. 0x25f3843b1f8d3ded906cf440101c0137d8f897b0b72f946f0d5bc12c3da6b136
  18. 0xfb4e1f4d701ae273fb0cd57757f659e327608e5561a752b2099b436618493c84
  19. 0xf72fe7c4860b9addb17aac4a00b8afc2f8085836173f10f31697c3d192df119b
Day root
0x9f0215efb0252701dc86d5600ce95f276cccc716759bf112525ae863f698d128
Chained
0xc54ddff800630c6cd9656f99e7d6a61adce99bf1cea37121600598b0a9a720d2
Published
On Arc Testnet, block 70942081: 0x88f612ad94ca63af4e4e9faab9f34b665b41f03828afac1571ad013cc62bba94

How to check it · This row as JSON