addrbookFor publishers
← The evidence ledger

Evidence row 292676

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint e2b5cf6d-78f6-4a23-9efd-b315addc030b
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
ba093e64dd1d57ae6467fb0f701fa20fa609e093736dc5b8aa58a251b05a4534
Leaf
0x9777b2a3926b8e602d3029882f726315ca41fc1aa6ca480fdac325d71effdffa

What was observed

{
  "count": 15,
  "tools": [
    {
      "description": "Call this tool to resize every image in paths at once, keeping aspect ratio, each named <name>-<W>x<H>.<ext>. One of width/height lets the other follow; with both, each fits inside the box. Free: 5 files a call, 4 MP.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "height": {
            "description": "Target height in pixels",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "out_dir": {
            "description": "Not a directory here: every output comes back as its own download link valid for one hour. Any value is accepted and ignored",
            "type": "string"
          },
          "overwrite": {
            "description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs",
            "type": "boolean"
          },
          "paths": {
            "description": "Names of images uploaded with image_upload",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "width": {
            "description": "Target width in pixels",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "paths",
          "out_dir"
        ],
        "type": "object"
      },
      "name": "image_batch_resize"
    },
    {
      "description": "Call this tool to re-encode an image smaller and report byte counts before/after. quality (default 80) applies to JPEG; for PNG only max_width shrinks it, and the answer names which one worked. Free: sources up to 4 MP.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "max_bytes": {
            "description": "Largest the output may be, in bytes. The server searches JPEG quality down from `quality` until it fits and reports the quality it used. JPEG output only",
            "minimum": 1024,
            "type": "integer"
          },
          "max_width": {
            "description": "Scale down so the width is at most this, keeping the aspect ratio. Never scales up",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "out_path": {
            "description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept",
            "type": "string"
          },
          "overwrite": {
            "description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs",
            "type": "boolean"
          },
          "path": {
            "description": "Name of an image uploaded with image_upload, or one this server wrote earlier",
            "type": "string"
          },
          "quality": {
            "default": 80,
            "description": "JPEG quality 1-100, default 80",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "path",
          "out_path"
        ],
        "type": "object"
      },
      "name": "image_compress"
    },
    {
      "description": "Call this tool to re-encode an image as PNG, JPEG, BMP, GIF or TIFF. quality is JPEG-only. Transparency converted to JPEG flattens onto white; the answer says so. Free tier: sources up to 4 MP.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "format": {
            "description": "The output format",
            "enum": [
              "png",
              "jpeg",
              "bmp",
              "gif",
              "tiff"
            ],
            "type": "string"
          },
          "out_path": {
            "description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept",
            "type": "string"
          },
          "overwrite": {
            "description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs",
            "type": "boolean"
          },
          "path": {
            "description": "Name of an image uploaded with image_upload, or one this server wrote earlier",
            "type": "string"
          },
          "quality": {
            "description": "JPEG quality 1-100, default 80. Ignored for the other formats",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "path",
          "format",
          "out_path"
        ],
        "type": "object"
      },
      "name": "image_convert"
    },
    {
      "description": "Call this tool to cut a rectangle out of an image. x, y are the top-left corner in pixels from the image's top-left. A rectangle past an edge is refused with the image's real size, not clamped. Free: sources up to 4 MP.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "height": {
            "description": "Height of the crop in pixels",
            "minimum": 1,
            "type": "integer"
          },
          "out_path": {
            "description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept",
            "type": "string"
          },
          "overwrite": {
            "description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs",
            "type": "boolean"
          },
          "path": {
            "description": "Name of an image uploaded with image_upload, or one this server wrote earlier",
            "type": "string"
          },
          "width": {
            "description": "Width of the crop in pixels",
            "minimum": 1,
            "type": "integer"
          },
          "x": {
            "description": "Left edge of the crop, in pixels from the left of the image",
            "minimum": 0,
            "type": "integer"
          },
          "y": {
            "description": "Top edge of the crop, in pixels from the top of the image",
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "path",
          "x",
          "y",
          "width",
          "height",
          "out_path"
        ],
        "type": "object"
      },
      "name": "image_crop"
    },
    {
      "description": "Delete one image stored for your token, uploaded or generated: name is the name it is stored under. image_files lists them. A name nothing is stored under is refused and nothing is deleted.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "name": {
            "maxLength": 70,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "image_delete_upload"
    },
    {
      "description": "Call this tool to read the colours covering most of an image, as hex codes with each one's pixel share. Sampled from a 200 px copy, so cost is fixed. Read-only. Free gives the top 3; Pro up to 16.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "count": {
            "default": 5,
            "description": "How many colours to report, default 5",
            "maximum": 16,
            "minimum": 1,
            "type": "integer"
          },
          "path": {
            "description": "Name of an image uploaded with image_upload, or one this server wrote earlier",
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "name": "image_dominant_colors"
    },
    {
      "description": "List the images stored for your token: what you uploaded, and what this server has written, with their sizes.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "image_files"
    },
    {
      "description": "Call this tool to inspect an image: format, pixel dimensions, megapixels, file size in bytes, and whether it carries an alpha channel. Read-only, never modifies the file. Free tier: unlimited, any size.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "path": {
            "description": "Name of an image uploaded with image_upload, or one this server wrote earlier",
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "name": "image_info"
    },
    {
      "description": "Call this tool to write a resized copy. fit inside keeps aspect; cover fills and crops; exact stretches. One of width/height alone keeps aspect. Input untouched. Free: sources up to 4 MP.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "fit": {
            "default": "inside",
            "description": "inside = fit within the box, cover = fill and crop, exact = stretch",
            "enum": [
              "inside",
              "cover",
              "exact"
            ],
            "type": "string"
          },
          "height": {
            "description": "Target height in pixels",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "out_path": {
            "description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept",
            "type": "string"
          },
          "overwrite": {
            "description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs",
            "type": "boolean"
          },
          "path": {
            "description": "Name of an image uploaded with image_upload, or one this server wrote earlier",
            "type": "string"
          },
          "width": {
            "description": "Target width in pixels",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "path",
          "out_path"
        ],
        "type": "object"
      },
      "name": "image_resize"
    },
    {
      "description": "Call this tool to write a copy carrying pixels and nothing else: it decodes and re-encodes from raw pixels, so EXIF, GPS, camera, capture time, XMP and colour-profile data are dropped. Free tier: sources up to 4 MP.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "out_path": {
            "description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept",
            "type": "string"
          },
          "overwrite": {
            "description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs",
            "type": "boolean"
          },
          "path": {
            "description": "Name of an image uploaded with image_upload, or one this server wrote earlier",
            "type": "string"
          }
        },
        "required": [
          "path",
          "out_path"
        ],
        "type": "object"
      },
      "name": "image_strip_metadata"
    },
    {
      "description": "Call this tool to write one thumbnail per input into out_dir as <name>-thumb.<ext>, fit inside size by size, aspect kept. Paths are reserved before writing, so a collision leaves nothing half-done. Free: 5/call, 4 MP.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "out_dir": {
            "description": "Not a directory here: every output comes back as its own download link valid for one hour. Any value is accepted and ignored",
            "type": "string"
          },
          "overwrite": {
            "description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs",
            "type": "boolean"
          },
          "paths": {
            "description": "Names of images uploaded with image_upload",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "size": {
            "default": 256,
            "description": "Longest side of the thumbnail in pixels, default 256",
            "maximum": 10000,
            "minimum": 8,
            "type": "integer"
          }
        },
        "required": [
          "paths",
          "out_dir"
        ],
        "type": "object"
      },
      "name": "image_thumbnails"
    },
    {
      "description": "Send an image to this hosted endpoint. There is no filesystem here, so instead of a path you upload the file once with image_upload and then pass its name as `path` (or inside `paths`) to image_info, image_resize, image_convert, image_compress, image_crop, image_thumbnails, image_batch_resize and image_dominant_colors. PNG, JPEG, BMP, GIF and TIFF are accepted and the format is read from the file's magic bytes, not from the name. Give exactly one of image_base64 or url. url: fetch a public file instead of pasting base64 (recommended above about 10 KB): writing out a real photo as base64 is a long tool call and 50 KB or more can stall the turn before the upload is sent, while a url costs one line and the fetch happens here (10 second timeout, at most 3 redirects, public http(s) hosts only, 2 MB cap). Uploads are kept for your token between calls; image_files lists them and image_delete_upload removes one. A file this server writes is named the same way and comes back as a download link valid for one hour, served with the real image content type. The request body cap is 256 KB, which is about 190 KB of image once base64-encoded.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "image_base64": {
            "description": "The image file, base64-encoded",
            "type": "string"
          },
          "name": {
            "description": "Name to refer to this image by: 1-64 characters of letters, digits, underscore or dash, e.g. \"shot\"",
            "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"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "image_upload"
    },
    {
      "description": "Not available on this hosted endpoint: the watermark is drawn with bitmap font files loaded from a filesystem, which this endpoint does not have. Watermark on a local install instead - download image.mcpb from https://github.com/theluckystrike/mcp-servers/releases/latest and open it in Claude Desktop - or upload an image you have already watermarked.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "opacity": {
            "default": 0.5,
            "description": "0.05 to 1, default 0.5",
            "maximum": 1,
            "minimum": 0.05,
            "type": "number"
          },
          "out_path": {
            "description": "Name for the file to write; it comes back as a download link valid for one hour. The extension decides the output format; without a known one the input's format is kept",
            "type": "string"
          },
          "overwrite": {
            "description": "Replace out_path if it already exists. Default false. Never allows an output to be one of the inputs",
            "type": "boolean"
          },
          "path": {
            "description": "Name of an image uploaded with image_upload, or one this server wrote earlier",
            "type": "string"
          },
          "position": {
            "default": "bottom-right",
            "description": "Where to draw it",
            "enum": [
              "bottom-right",
              "bottom-left",
              "bottom-center",
              "top-right",
              "top-left",
              "top-center",
              "center"
            ],
            "type": "string"
          },
          "text": {
            "description": "The watermark text. Default: the business name from the shared profile. Custom text is Pro",
            "type": "string"
          }
        },
        "required": [
          "path",
          "out_path"
        ],
        "type": "object"
      },
      "name": "image_watermark"
    },
    {
      "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"
    }
  ]
}

What the leaf hashes

{"body":"ba093e64dd1d57ae6467fb0f701fa20fa609e093736dc5b8aa58a251b05a4534","id":292676,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793048902515742,"prev":null,"subject":"e2b5cf6d-78f6-4a23-9efd-b315addc030b","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. 0x97776012936a7f2721d09ba16fb218d0e055e635a7ec1329ac7d4c59a128e92d
  2. 0x99c1635f2a213325a8a5e1349cdfaefcc91ad90589d00ceec1448e0adc4673d0
  3. 0xfddd6d83a8d1ca331707084607e1b1a4514b94697059c20cd48feefaddeeabbb
  4. 0x2cd20c572cba04520cc49fdcffd3049b2d045864faf414517373dd5ffffa779b
  5. 0xe82ffc4a6b8b4a3d8bf3f45a32621d110fdfe05c711ea02f4fa17dfc0d0eab51
  6. 0x5aacd6d2d5f5ee13570313dfe4372d561f4d6b34bbdd710eebdbb5a07009afb9
  7. 0x32a440a9bc429a83600225cb851ff8eee4717691ee370442b30080ec08fd6830
  8. 0xc580804f623903bf308f2e4fbe7e832f869f5a7bb3bdc5a3335ce590fc78a88d
  9. 0x35eac46db8483d69cfaaaac2bd48acc2c02f3fa969d9d79ef5005146dbe11c26
  10. 0xdc53c89cce7091adf601946635a4d64062fe6855a2f46a4967374baab5240ceb
  11. 0x33109041c3d120f5b9ce2c3270a8fc409acfab4e749a0ff42fa0744354f87c17
  12. 0xd43b73151a0c2d9a61f2ae73ed148938b0e6b05c81197f7eebbf95dba38a7004
  13. 0xb314422bc93e7f1c0b706c67f5fff96c5ddf74934bb2fe8ab6291ae016907e37
  14. 0x49062da782c4f73855ddd5fdd51840749f928b5f17d1ce75ac50f2d829104e72
  15. 0xf0bd63870f0bb378fa300bd33563050dcb7b3e02b44eb3ee550c1c534ec4b246
  16. 0x1ac20d30773e1f4f2f811540e9a99b5cca9177c9e2e029acc0d80cf3f1d11f0f
  17. 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON