addrbookFor publishers
← The evidence ledger

Evidence row 306193

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 104cd1f6-9d6b-4a9c-adfa-43450983586b
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
c1d59145167da6360a198ee15bfe4852b943aaa58d2e9a51cf85c817f4aa3c7d
Leaf
0x4e8f0abf1435fe62eafa4929f464594ab1967f4beaadb4bb35bad36a9b5f924a

What was observed

{
  "count": 11,
  "tools": [
    {
      "description": "Add files to a drop owned by the authenticated account (requires an sp_ API key and an active subscription): up to 10,000 files per drop in total, and existing paths are overwritten. The drop keeps its current expiry and password protection.",
      "inputSchema": {
        "properties": {
          "files": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "properties": {
                    "content": {
                      "type": "string"
                    },
                    "encoding": {
                      "const": "base64",
                      "type": "string"
                    }
                  },
                  "required": [
                    "encoding",
                    "content"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "content": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "content"
                  ],
                  "type": "object"
                }
              ]
            },
            "description": "Map of relative paths (e.g. 'index.html', 'css/app.css') to either a string, or { encoding: 'base64', content } for binary files.",
            "type": "object"
          },
          "slug": {
            "description": "The drop slug (the subdomain part of its ${domain} URL).",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "files"
        ],
        "type": "object"
      },
      "name": "append_files"
    },
    {
      "description": "Attach an anonymously deployed drop to the authenticated account using its one-time claim token (spc_..., returned once by deploy_html/deploy_files). Claiming extends the drop to the free-account lifetime (90 days) and can revive an offline drop during its 30-day private recovery window. Claimed drops become listable, deletable, and — on paid plans — redeployable via named drops. Requires an sp_ API key.",
      "inputSchema": {
        "properties": {
          "claim_token": {
            "description": "The one-time spc_... token returned at deploy time.",
            "type": "string"
          },
          "slug": {
            "description": "The drop slug (the subdomain part of its ${domain} URL).",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "claim_token"
        ],
        "type": "object"
      },
      "name": "claim_drop"
    },
    {
      "description": "Permanently delete a drop owned by the authenticated account (requires an sp_ API key). The URL stops serving immediately and cannot be recovered.",
      "inputSchema": {
        "properties": {
          "slug": {
            "description": "The drop slug (the subdomain part of its ${domain} URL).",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "delete_drop"
    },
    {
      "description": "Deploy a map of path -> content as a multi-file site (must include index.html to serve at the root). Anonymous: up to 100 files per request, 30-day expiry (90 days once signed in). Pro ($4/mo): up to 10,000 files, custom or no TTL, named drops.",
      "inputSchema": {
        "properties": {
          "agent": {
            "description": "Name of the AI agent or app publishing this drop, e.g. 'chatgpt', 'claude', 'cursor'. AI agents: always set this.",
            "maxLength": 64,
            "type": "string"
          },
          "email": {
            "description": "Contact email for an anonymous deploy: the one-time claim link is mailed to it, so the drop stays recoverable even if the claim_token from the response is lost. Pass it whenever the deploy is for a human. Ignored for authenticated deploys (those are owned already).",
            "type": "string"
          },
          "files": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "properties": {
                    "content": {
                      "type": "string"
                    },
                    "encoding": {
                      "const": "base64",
                      "type": "string"
                    }
                  },
                  "required": [
                    "encoding",
                    "content"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "content": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "content"
                  ],
                  "type": "object"
                }
              ]
            },
            "description": "Map of relative paths (e.g. 'index.html', 'css/app.css') to either a string, or { encoding: 'base64', content } for binary files.",
            "type": "object"
          },
          "name": {
            "description": "Stable name for a redeployable drop (1-41 chars of [a-z0-9-]). Requires an active subscription; Team accounts serve it on their vanity subdomain.",
            "type": "string"
          },
          "password": {
            "description": "Shared password: 8-128 Unicode characters, at most 512 UTF-8 bytes. Requires active paid Pro/Team. Sent privately, never in the URL or response. Omit on a live named redeploy to preserve protection. Recreating an expired or purged name is a new drop: send the password again.",
            "maxLength": 128,
            "minLength": 8,
            "type": "string",
            "writeOnly": true
          },
          "ttl": {
            "description": "Lifetime in seconds (min 60). Anonymous: max 2592000 (30 days), default 30 days. Signed-in free: max 7776000 (90 days), default 90 days. Paid: any value, omit for no expiry.",
            "type": "integer"
          }
        },
        "required": [
          "files"
        ],
        "type": "object"
      },
      "name": "deploy_files"
    },
    {
      "description": "Deploy one HTML document and get back a live, unguessable https://<slug>.ship.place/ URL. Anonymous: 10 deploys/min per IP, 10MB body cap, 30-day expiry. Pro ($4/mo): custom or no TTL, named drops.",
      "inputSchema": {
        "properties": {
          "agent": {
            "description": "Name of the AI agent or app publishing this drop, e.g. 'chatgpt', 'claude', 'cursor'. AI agents: always set this.",
            "maxLength": 64,
            "type": "string"
          },
          "email": {
            "description": "Contact email for an anonymous deploy: the one-time claim link is mailed to it, so the drop stays recoverable even if the claim_token from the response is lost. Pass it whenever the deploy is for a human. Ignored for authenticated deploys (those are owned already).",
            "type": "string"
          },
          "html": {
            "description": "The full HTML document to publish.",
            "type": "string"
          },
          "name": {
            "description": "Stable name for a redeployable drop (1-41 chars of [a-z0-9-]). Requires an active subscription; Team accounts serve it on their vanity subdomain.",
            "type": "string"
          },
          "password": {
            "description": "Shared password: 8-128 Unicode characters, at most 512 UTF-8 bytes. Requires active paid Pro/Team. Sent privately, never in the URL or response. Omit on a live named redeploy to preserve protection. Recreating an expired or purged name is a new drop: send the password again.",
            "maxLength": 128,
            "minLength": 8,
            "type": "string",
            "writeOnly": true
          },
          "ttl": {
            "description": "Lifetime in seconds (min 60). Anonymous: max 2592000 (30 days), default 30 days. Signed-in free: max 7776000 (90 days), default 90 days. Paid: any value, omit for no expiry.",
            "type": "integer"
          }
        },
        "required": [
          "html"
        ],
        "type": "object"
      },
      "name": "deploy_html"
    },
    {
      "description": "Show the authenticated account's plan, subscription status and usage (requires an sp_ API key). Anonymous callers should use get_limits for the static free-tier limits.",
      "inputSchema": {
        "additionalProperties": false,
        "type": "object"
      },
      "name": "get_account"
    },
    {
      "description": "Show the ship.page plan matrix (anonymous free tier vs Pro $4/mo vs Team $19/mo) and, when an sp_ API key is present, the caller's current account/plan status.",
      "inputSchema": {
        "additionalProperties": false,
        "type": "object"
      },
      "name": "get_limits"
    },
    {
      "description": "List drops owned by the authenticated account (requires an sp_ API key; anonymous drops are not listable). Returns slug, url, name, file counts, expiry and password_protected, newest first.",
      "inputSchema": {
        "properties": {
          "limit": {
            "description": "Max drops to return (1-500, default 100).",
            "type": "integer"
          },
          "offset": {
            "description": "Number of drops to skip (default 0).",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "list_drops"
    },
    {
      "description": "Remove password protection from a drop you own, making it readable by anyone with its URL. Requires an sp_ API key; works even after your paid subscription lapses.",
      "inputSchema": {
        "properties": {
          "slug": {
            "description": "The drop slug (the subdomain part of its URL).",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "remove_drop_password"
    },
    {
      "description": "Bring back an expired drop owned by the authenticated account while its files are still retained (requires an sp_ API key), up to 90 days past expiry. Free accounts get the drop back at the 90-day lifetime; on a paid plan the restored drop never expires again.",
      "inputSchema": {
        "properties": {
          "slug": {
            "description": "The drop slug (the subdomain part of its ${domain} URL).",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "restore_drop"
    },
    {
      "description": "Set or rotate the shared password on a drop you own. Requires an sp_ API key and active paid Pro/Team; unavailable billing returns an error, not a public drop. Visitors unlock in their browser. Never put the password in a URL.",
      "inputSchema": {
        "properties": {
          "password": {
            "description": "Shared password: 8-128 Unicode characters, at most 512 UTF-8 bytes. Requires active paid Pro/Team. Sent privately, never in the URL or response. Omit on a live named redeploy to preserve protection. Recreating an expired or purged name is a new drop: send the password again.",
            "maxLength": 128,
            "minLength": 8,
            "type": "string",
            "writeOnly": true
          },
          "slug": {
            "description": "The drop slug (the subdomain part of its URL).",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "password"
        ],
        "type": "object"
      },
      "name": "set_drop_password"
    }
  ]
}

What the leaf hashes

{"body":"c1d59145167da6360a198ee15bfe4852b943aaa58d2e9a51cf85c817f4aa3c7d","id":306193,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793056856042020,"prev":null,"subject":"104cd1f6-9d6b-4a9c-adfa-43450983586b","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. 0x4e8edfcdf3b9c27146459a1de4955c559dd9ebc923bf7e527d545f25ade22209
  2. 0x18c617b2c3455cf295ca7a6b84283fb8079c3232fa61ac1bdbdec3eaa3873f39
  3. 0xf2315908e82faa6278afd8240cb63424b3a3b29bd6240e6723849f1f179a03b9
  4. 0xc4cd4212ab41e7107fd76fa4269b9392cb69c4773001392ca157905a58709d43
  5. 0x410f1d16607aa2e12693ba2b53b03bc6ff0717b818639eba711123405b577985
  6. 0x50ece1e29fc72834207827c93b44f43f54aeb631fe5892c77f0212d7bdc9fe68
  7. 0x4063b0f49116fb3ecbd63c509f4e5649e9e4b2cd5df64c9aaa49b1977e69b534
  8. 0xaf763b0948da365fc0ef988fbdc9b315e7f23b7c591755e1a0a746af0f43fdf5
  9. 0xb5a2ff57df9c49538a0db5306ddc37af974a8caaa04dd03823b77e9b0412f004
  10. 0x3c2a519207c7fbe7025a4c98d41e42ecc9446b3fb0b1dbff629a91c8c74e0781
  11. 0x20ba86fd56bddd46212d02e792b969e90a1167c4fb9ba4a54cb7da5cf7da1629
  12. 0xaf14a84837a57dc5a0cb0ebd158daaad24c19301b9257d9e97c322a7d8c54bc0
  13. 0xf7d2cf278e5d2768b8bdb70730c378877cf7165d8efcbec8bcd3282fdc50d177
  14. 0x0733993143f0230e79482cef2c38e95d98f9eafbe64a43cdc74a4545938a4167
  15. 0x2be1e80e065dd6b2cc75a7142be22225acd144ac975d70bf24b4f01fd76dc497
  16. 0x2e6a32eb32761c210560e852405e2f865f958ddbe01027894f8b9c1b3433b9f0
  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