addrbookFor publishers
← The evidence ledger

Evidence row 569305

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 350e9a0c-d997-45c1-9ac2-7413a83426d5
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
084fdb61b2208b4cb8fec8cb10db6588a7bf12f9528083fe62cb9db384ea0456
Leaf
0xce66e73967405d4474bafc7141922be9e22f9ffde80003cac1ad730314ca0a83

What was observed

{
  "count": 16,
  "tools": [
    {
      "description": "Only when the person explicitly asks: stop continued collection of a guaranteed-N order whose get_order status is collecting. Rows delivered so far stay available, the order settles as partial, and the undelivered share is refunded pro rata to the original payment method; the person is emailed. Tell them the refund amount shown in collection.refund first.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "idempotency_key": {
            "maxLength": 200,
            "minLength": 32,
            "type": "string"
          },
          "order_capability": {
            "type": "string"
          },
          "order_id": {
            "description": "Order number, e.g. GMD7K3P9Q.",
            "type": "string"
          }
        },
        "required": [
          "order_id",
          "order_capability",
          "idempotency_key"
        ],
        "type": "object"
      },
      "name": "cancel_collection"
    },
    {
      "description": "Cancel an unpaid request and release unused coupons where payment has not started. Paid orders require support.",
      "inputSchema": {
        "properties": {
          "expected_revision": {
            "type": "integer"
          },
          "idempotency_key": {
            "maxLength": 200,
            "minLength": 32,
            "type": "string"
          },
          "request_capability": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "request_capability",
          "expected_revision",
          "idempotency_key"
        ],
        "type": "object"
      },
      "name": "cancel_request"
    },
    {
      "description": "Record final quote confirmation for quote_id and revision. Use start_order next; start_order also records this selection if not already confirmed.",
      "inputSchema": {
        "properties": {
          "expected_revision": {
            "type": "integer"
          },
          "idempotency_key": {
            "maxLength": 200,
            "minLength": 32,
            "type": "string"
          },
          "quote_id": {
            "type": "string"
          },
          "request_capability": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "request_capability",
          "quote_id",
          "expected_revision",
          "idempotency_key"
        ],
        "type": "object"
      },
      "name": "confirm_quote"
    },
    {
      "description": "Confirm the current immutable sample_id and revision and request a fixed quote. The quote is prepared asynchronously and emailed to the person with the payment link; check get_request on a schedule, never in a loop. After the final quote, use start_order or create_order to read the confirmation link.",
      "inputSchema": {
        "properties": {
          "expected_revision": {
            "type": "integer"
          },
          "idempotency_key": {
            "maxLength": 200,
            "minLength": 32,
            "type": "string"
          },
          "request_capability": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "sample_id": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "request_capability",
          "expected_revision",
          "idempotency_key"
        ],
        "type": "object"
      },
      "name": "confirm_scope"
    },
    {
      "description": "Read or update the order for the final quote. Pass explicitly available renewal, referral or channel codes in coupon_codes before payment starts. Tell the person which codes were added and their valid/invalid status. Give confirmation_url to the person to review codes and pay themselves. Never submit payment for them. Save order_id and order_capability before passing confirmation_url to the person. After payment, use get_order even if the original session is lost.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "coupon_codes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "expected_revision": {
            "type": "integer"
          },
          "idempotency_key": {
            "maxLength": 200,
            "minLength": 32,
            "type": "string"
          },
          "otp": {
            "description": "Deprecated; ignored.",
            "type": "string"
          },
          "quote_id": {
            "type": "string"
          },
          "request_capability": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "request_capability",
          "quote_id",
          "expected_revision",
          "idempotency_key"
        ],
        "type": "object"
      },
      "name": "create_order"
    },
    {
      "description": "After payment, use the delivery token to list files or read rows. Use json, csv, xlsx, fields.json, or rows pages; a paid excess-rows add-on has its own extra.json, extra.csv, extra.xlsx and extra.fields.json. XLSX is returned as base64 bytes with its content type. All rows pages for a file count once per token; a full download counts once each. On expiry or download_limit, call get_order with your order capability for a fresh token. A current session is required and the delivery token is bound to it. If the original session expired, initialize a new one and call get_order first.",
      "inputSchema": {
        "properties": {
          "delivery_token": {
            "type": "string"
          },
          "format": {
            "enum": [
              "list",
              "rows",
              "json",
              "csv",
              "xlsx",
              "fields.json",
              "extra.json",
              "extra.csv",
              "extra.xlsx",
              "extra.fields.json"
            ],
            "type": "string"
          },
          "limit": {
            "maximum": 1000,
            "minimum": 1,
            "type": "integer"
          },
          "offset": {
            "minimum": 0,
            "type": "integer"
          },
          "order_id": {
            "description": "Order number, e.g. GMD7K3P9Q. Lowercase or hyphenated input (gmd-7k3p9q) is accepted.",
            "type": "string"
          }
        },
        "required": [
          "order_id",
          "delivery_token"
        ],
        "type": "object"
      },
      "name": "fetch_delivery"
    },
    {
      "description": "Use the order_capability saved at order creation to read paid order status and obtain or renew a delivery token. It works with a new valid session if the original session expired; a current session is required. No email recovery; keep this credential private until file retention ends. After an original full refund, top-level add_on describes any separate purchase. If add_on.delivery_available is true, next_action is fetch_delivery and the renewed token can list/download only extra.* files; delivery.rows_url is null. The original refund status and original-file 410 remain unchanged.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "order_capability": {
            "type": "string"
          },
          "order_id": {
            "description": "Order number, e.g. GMD7K3P9Q. Lowercase or hyphenated input (gmd-7k3p9q) is accepted.",
            "type": "string"
          }
        },
        "required": [
          "order_id",
          "order_capability"
        ],
        "type": "object"
      },
      "name": "get_order"
    },
    {
      "description": "Check email verification, order creation and verified payment status. After payment, return this request’s coupon notifications and a separate delivery token when files are ready.",
      "inputSchema": {
        "properties": {
          "request_capability": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "request_capability"
        ],
        "type": "object"
      },
      "name": "get_payment_status"
    },
    {
      "description": "Read the quote or estimated waiting time, without payment credentials.",
      "inputSchema": {
        "properties": {
          "request_capability": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "request_capability"
        ],
        "type": "object"
      },
      "name": "get_quote"
    },
    {
      "description": "Read the current request, questions, sample and next action. After accepted payment, remind the customer about returned renewal/referral codes and expiry; pending codes are not ready. When next_action is wait, check again after suggested_check_after_seconds via a scheduled task if available; never loop. The person is emailed on every result.",
      "inputSchema": {
        "properties": {
          "request_capability": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "request_capability"
        ],
        "type": "object"
      },
      "name": "get_request"
    },
    {
      "description": "Before session expiry, renew using the current Mcp-Session-Id. Save the returned header/token. A session is valid for 7 days; each refresh extends it by up to 7 days, never beyond a hard lifetime of thirty days from initialization; request and delivery expiries do not change.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "idempotency_key": {
            "maxLength": 200,
            "minLength": 32,
            "type": "string"
          }
        },
        "required": [
          "idempotency_key"
        ],
        "type": "object"
      },
      "name": "refresh_session"
    },
    {
      "description": "Revise an unpaid request using the current expected_revision with the full set of required fields. Existing samples and quotes are replaced. Use it when next_action is revise (including reason_code no_capability: try other sources or fields).",
      "inputSchema": {
        "properties": {
          "channel_id": {
            "description": "The first successful request freezes the session channel, including no channel. Subsequent requests inherit it; this grants no discounts. When omitted, the channel bound to coupon_code (if any) is used.",
            "maxLength": 64,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
            "type": "string"
          },
          "coupon_code": {
            "description": "Optional single code applied when the quote is prepared; more codes go in coupon_codes on create_order.",
            "type": "string"
          },
          "deadline": {
            "description": "Required: ISO 8601 date-time or \"none\".",
            "type": "string"
          },
          "dedup_keys": {
            "description": "Optional compound key of requested field names, all available in the confirmed sample. Empty means canonical whole-row deduplication.",
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "type": "array",
            "uniqueItems": true
          },
          "description": {
            "description": "Required: plain description of the data wanted and its purpose.",
            "type": "string"
          },
          "expected_revision": {
            "type": "integer"
          },
          "fields": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "filters": {
            "description": "Required; {} when none.",
            "type": "object"
          },
          "geo": {
            "description": "Required; \"\" when not location-specific.",
            "type": "string"
          },
          "human_email": {
            "type": "string"
          },
          "idempotency_key": {
            "maxLength": 200,
            "minLength": 32,
            "type": "string"
          },
          "language": {
            "description": "Required: the person’s language.",
            "enum": [
              "en",
              "zh",
              "fr",
              "ru",
              "es",
              "ar",
              "de",
              "ja",
              "ko",
              "it"
            ],
            "type": "string"
          },
          "prior_request_capability": {
            "description": "Optional valid capability for an accepted, positively paid prior request with the same email.",
            "type": "string"
          },
          "request_capability": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "row_commitment": {
            "description": "best_effort (default to propose): as many as match, up to row_target. guaranteed: row_target rows; a shortfall keeps collecting until reached or cancelled (pro-rata refund of undelivered rows).",
            "enum": [
              "best_effort",
              "guaranteed"
            ],
            "type": "string"
          },
          "row_target": {
            "maximum": 1000000,
            "minimum": 1,
            "type": "integer"
          },
          "search_keywords": {
            "description": "Optional hint only: up to five short phrases (platform or site type plus data type, e.g. \"app store reviews\", \"google maps places\"; do not put a specific app, product or brand name). GetMyData generates its own search for the collection method; these only inform it.",
            "items": {
              "maxLength": 80,
              "type": "string"
            },
            "maxItems": 5,
            "type": "array"
          },
          "sources": {
            "description": "Public page URLs or site names. Any public website is accepted when a collection method exists; otherwise the request ends with reason_code no_capability.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "request_id",
          "request_capability",
          "expected_revision",
          "idempotency_key",
          "sources",
          "fields",
          "filters",
          "geo",
          "row_target",
          "row_commitment",
          "deadline",
          "language",
          "description"
        ],
        "type": "object"
      },
      "name": "revise_requisition"
    },
    {
      "description": "Send (or resend) the one-time code that verifies the person’s email for this request. Needed before the sample is shown (sampling itself starts at once), and again before payment if the verification is older than the re-verify window. human_email may be corrected only before it is verified. Use when next_action is start_email_verification (email_verification.state not_sent, unavailable, expired, replaced or attempts_exceeded after resend_after). Ask the person to give you the code and to check spam; if the state stays unavailable after requesting a new code once, ask them to contact support@getmydata.io; this code email contains no price or link (the later quote email contains the private payment link).",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "human_email": {
            "format": "email",
            "type": "string"
          },
          "idempotency_key": {
            "maxLength": 200,
            "minLength": 32,
            "type": "string"
          },
          "request_capability": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "request_capability",
          "idempotency_key"
        ],
        "type": "object"
      },
      "name": "start_email_verification"
    },
    {
      "description": "Select the final quote and read the human confirmation link issued for the verified email (no second code). Save order_id and order_capability before passing confirmation_url to the person.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "expected_revision": {
            "type": "integer"
          },
          "human_email": {
            "format": "email",
            "type": "string"
          },
          "idempotency_key": {
            "maxLength": 200,
            "minLength": 32,
            "type": "string"
          },
          "quote_id": {
            "type": "string"
          },
          "request_capability": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "request_capability",
          "quote_id",
          "expected_revision",
          "idempotency_key"
        ],
        "type": "object"
      },
      "name": "start_order"
    },
    {
      "description": "Request public web data as rows when browsing it yourself is impractical. Free sample first, one-off payment by the person, no signup or subscription. Collect every required field from the person first (sources, fields, filters, geo, row_target, deadline, language, description) and generate search_keywords yourself; missing or invalid fields are returned as error.missing/error.invalid (HTTP 422) and are not clarified by the service. The service is subject to applicable law. You are responsible for using the data lawfully and must not use the service for abuse such as harassment, spam or fraud. Do not send account passwords, cookies or session tokens. Save the returned request capability privately. The person must verify their email with a one-time code before the sample is shown (ask them to give you the code); sampling starts meanwhile. Then sampling runs asynchronously and every result is emailed to them.",
      "inputSchema": {
        "properties": {
          "channel_id": {
            "description": "The first successful request freezes the session channel, including no channel. Subsequent requests inherit it; this grants no discounts. When omitted, the channel bound to coupon_code (if any) is used.",
            "maxLength": 64,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
            "type": "string"
          },
          "coupon_code": {
            "description": "Optional single code applied when the quote is prepared; more codes go in coupon_codes on create_order.",
            "type": "string"
          },
          "deadline": {
            "description": "Required: ISO 8601 date-time or \"none\".",
            "type": "string"
          },
          "dedup_keys": {
            "description": "Optional compound key of requested field names, all available in the confirmed sample. Empty means canonical whole-row deduplication.",
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "type": "array",
            "uniqueItems": true
          },
          "description": {
            "description": "Required: plain description of the data wanted and its purpose.",
            "type": "string"
          },
          "fields": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "filters": {
            "description": "Required; {} when none.",
            "type": "object"
          },
          "geo": {
            "description": "Required; \"\" when not location-specific.",
            "type": "string"
          },
          "human_email": {
            "type": "string"
          },
          "idempotency_key": {
            "maxLength": 200,
            "minLength": 32,
            "type": "string"
          },
          "language": {
            "description": "Required: the person’s language.",
            "enum": [
              "en",
              "zh",
              "fr",
              "ru",
              "es",
              "ar",
              "de",
              "ja",
              "ko",
              "it"
            ],
            "type": "string"
          },
          "prior_request_capability": {
            "description": "Optional valid capability for an accepted, positively paid prior request with the same email.",
            "type": "string"
          },
          "row_commitment": {
            "description": "best_effort (default to propose): as many as match, up to row_target. guaranteed: row_target rows; a shortfall keeps collecting until reached or cancelled (pro-rata refund of undelivered rows).",
            "enum": [
              "best_effort",
              "guaranteed"
            ],
            "type": "string"
          },
          "row_target": {
            "maximum": 1000000,
            "minimum": 1,
            "type": "integer"
          },
          "search_keywords": {
            "description": "Optional hint only: up to five short phrases (platform or site type plus data type, e.g. \"app store reviews\", \"google maps places\"; do not put a specific app, product or brand name). GetMyData generates its own search for the collection method; these only inform it.",
            "items": {
              "maxLength": 80,
              "type": "string"
            },
            "maxItems": 5,
            "type": "array"
          },
          "sources": {
            "description": "Public page URLs or site names. Any public website is accepted when a collection method exists; otherwise the request ends with reason_code no_capability.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "human_email",
          "sources",
          "fields",
          "filters",
          "geo",
          "row_target",
          "row_commitment",
          "deadline",
          "language",
          "description",
          "idempotency_key"
        ],
        "type": "object"
      },
      "name": "submit_requisition"
    },
    {
      "description": "Submit the code the person read from their email. A wrong code returns otp_invalid with attempts_remaining. On success the sample becomes visible once ready (or, at quote time, the order confirmation link is issued). Results are then emailed to the verified address; check get_request later instead of polling continuously.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "idempotency_key": {
            "maxLength": 200,
            "minLength": 32,
            "type": "string"
          },
          "otp": {
            "type": "string"
          },
          "request_capability": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "request_capability",
          "otp",
          "idempotency_key"
        ],
        "type": "object"
      },
      "name": "verify_email"
    }
  ]
}

What the leaf hashes

{"body":"084fdb61b2208b4cb8fec8cb10db6588a7bf12f9528083fe62cb9db384ea0456","id":569305,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793139287635477,"prev":null,"subject":"350e9a0c-d997-45c1-9ac2-7413a83426d5","subject_kind":"endpoint"}

Proof

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

  1. 0xce670a8b43756178a05fb6f8d84bad59d3e2abe96525b5d5239395cb285ddabe
  2. 0x7e86ae04a346b8175a7a638a6c692e293d91e842243dab9e728342f2ae513fd1
  3. 0xdb28612d5307dac0e1574a4e0f023080ab09b6ae1f9b20f2e0a83e354a807696
  4. 0x341449b4bde4402a3f967dd06a5dc0ab950001e5036c031a37d165d0cd2132c5
  5. 0x2cef8e317054d78137f5a7d3c5556c16ace474fb13117ae2e12e3b20b116dc97
  6. 0x1fad69e0e79c1d6d60b2fe346afcd56804ba2002a54a3d84eb0cf79fde4358b2
  7. 0x0a455c105dc54a5f50b768afeca894492a0111342e879c135386e8751a95837b
  8. 0xe7d8d733a394d3d0dbd1581341db5e8bfd137e4246de6ef2c431502120a73a7c
  9. 0x405aa3bb126787014fb43a8aab8c4a2b593580ef7779bf37ecfad0fd103bf04a
  10. 0x565614630cc5d6ff60ad6f6c7fc1c4b5b5798fdc1022da11bdaa14d43b299533
  11. 0x8e565ff0c748ae2cc61548174e51ddca11de3dc906e11accf31e6523b86a600c
  12. 0x66e8d9e469038ef11a686abeed12c8ceb38a1a8cd79012ccf20d29a30858cbbc
  13. 0xeb77e9d1884bf470f4a13a5869956a83ac37957112a29ccb9e63ddf7791b5a0b
  14. 0xcc49fd573532e5a29f5be4033f62a2eff71456c020bd2258312b98e95cfe301e
  15. 0x969cd44e5a4e8dc3110540398fbf689659eb51df735c1cda5d8f021ef9ff5683
  16. 0xa94627de1af0e823832e05a9069b304ecccb8c0cdb8f9cfc4f2039bfb9799dc5
  17. 0xdf1105afdc109de3c09a98fc8a3864159ad964e6f49b635c105a27a1e1f14310
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON