addrbookFor publishers
← The evidence ledger

Evidence row 3937967

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 939ad3e9-3d91-49ac-8695-cc9ab28d8371
Recorded
Previous row
#3441290
Body SHA-256
3a816ca2e7b888c46b5fc56c7742dd409a6dc8bf46b327ab7ded4484aa466f4a
Leaf
0x0e6556e074d22601a15ad9a8772b513c368bc42de9f1c211444e85ab7697b1d8

What was observed

{
  "count": 5,
  "tools": [
    {
      "description": "Use this when the guest wants to know whether a room, table or ticket is free before sending a request. Answers available, unavailable or unknown. Unknown means the venue keeps no calendar with ATAbooking: the guest can still send_lead and the venue answers. Don't use this to hold anything: nothing is reserved.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "check_in": {
            "description": "Hotels: arrival date, YYYY-MM-DD",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "check_out": {
            "$ref": "#/properties/check_in",
            "description": "Hotels: departure date, YYYY-MM-DD"
          },
          "date": {
            "$ref": "#/properties/check_in",
            "description": "Restaurants and attractions: the day, YYYY-MM-DD"
          },
          "party_size": {
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "time": {
            "description": "Restaurants and attractions: HH:MM",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "type": "string"
          },
          "unit_id": {
            "description": "unit_id from get_venue",
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string"
          },
          "venue_id": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string"
          }
        },
        "required": [
          "venue_id",
          "unit_id",
          "party_size"
        ],
        "type": "object"
      },
      "name": "check_availability"
    },
    {
      "description": "Use this when the guest asks whether the venue has received their request. Shows each channel's delivery state (portal, email, WhatsApp, webhook). It doesn't show whether the venue has accepted: the venue answers the guest directly. Needs the status_token send_lead returned.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "status_token": {
            "description": "status_token from send_lead",
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "status_token"
        ],
        "type": "object"
      },
      "name": "get_lead_status"
    },
    {
      "description": "Use this when the guest is interested in one venue: its rooms, tables or tickets, from-prices, opening times, policies and how it answers requests. Don't use this to find venues: call search_venues.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "venue_id": {
            "description": "venue_id from search_venues",
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string"
          }
        },
        "required": [
          "venue_id"
        ],
        "type": "object"
      },
      "name": "get_venue"
    },
    {
      "description": "Covers Koh Samui, Thailand, at launch. Use this when the guest wants a hotel, restaurant or attraction in a place, e.g. 'a quiet hotel near Chaweng Beach' or 'seafood in Bophut'. Results are sorted by distance when you give `near`. Don't use this when you already have a venue_id: call get_venue. Results come in pages of 10: when more_results is true, call again with the same arguments and cursor: next_cursor. sponsored: true marks a paid placement (the venue pays for Premium); ATAbooking labels these 'Sponsored'.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "cursor": {
            "description": "next_cursor from the previous page of this same search",
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "near": {
            "description": "A place name, e.g. 'Chaweng Beach' or 'Fisherman's Village'. Sorts by distance from it. Leave everything out to browse all venues.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "party_size": {
            "description": "Only venues with a room, table or ticket for this many people",
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "description": "Words to match in the name, area, city or description",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "radius_km": {
            "description": "With near: only venues within this distance",
            "exclusiveMinimum": 0,
            "maximum": 200,
            "type": "number"
          },
          "region": {
            "description": "Region slug, e.g. koh-samui",
            "maxLength": 60,
            "minLength": 1,
            "pattern": "^[a-z0-9-]+$",
            "type": "string"
          },
          "tags": {
            "description": "Wishes, e.g. ['pool','beach','vegetarian']; matches rank first",
            "items": {
              "maxLength": 40,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 10,
            "type": "array"
          },
          "type": {
            "description": "hotel, restaurant or attraction; leave out for all",
            "enum": [
              "hotel",
              "restaurant",
              "attraction"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "search_venues"
    },
    {
      "description": "Use this when the guest has chosen a venue and wants it to get in touch: it forwards their request (dates, party, contact, message) to the venue at once. It is a request, not a booking: nothing is held or paid, and the venue contacts the guest directly. Check the details with the guest before calling. Give an idempotency_key and reuse it if you retry. Keep the status_token from the answer to call get_lead_status later. Don't use this to ask ATAbooking questions or to test.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "age_bands": {
            "additionalProperties": {
              "maximum": 50,
              "minimum": 0,
              "type": "integer"
            },
            "description": "Attractions: people per age band, e.g. {\"adult\":2,\"child\":1}",
            "propertyNames": {
              "pattern": "^[a-z_]{1,20}$"
            },
            "type": "object"
          },
          "agent": {
            "description": "The name of your app",
            "maxLength": 120,
            "type": "string"
          },
          "check_in": {
            "description": "Hotels: arrival date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "check_out": {
            "$ref": "#/properties/check_in",
            "description": "Hotels: departure date"
          },
          "date": {
            "$ref": "#/properties/check_in",
            "description": "Restaurants and attractions: the day"
          },
          "guest_email": {
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "guest_name": {
            "maxLength": 120,
            "minLength": 2,
            "type": "string"
          },
          "guest_phone": {
            "maxLength": 40,
            "minLength": 6,
            "pattern": "^\\+?[\\d\\s().-]+$",
            "type": "string"
          },
          "idempotency_key": {
            "description": "One per request (8-128 of A-Z a-z 0-9 _ -). Reuse it on retries to get the same request back.",
            "maxLength": 128,
            "minLength": 8,
            "pattern": "^[A-Za-z0-9_-]+$",
            "type": "string"
          },
          "language": {
            "description": "The guest's language, e.g. en, th, de",
            "maxLength": 20,
            "pattern": "^[A-Za-z-]+$",
            "type": "string"
          },
          "message": {
            "description": "Anything the guest wants the venue to know",
            "maxLength": 1000,
            "type": "string"
          },
          "party_size": {
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "time": {
            "description": "Restaurants: the table time; attractions: the session time",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "type": "string"
          },
          "unit_id": {
            "$ref": "#/properties/venue_id",
            "description": "The room, table or ticket from get_venue, if the guest chose one"
          },
          "venue_id": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string"
          }
        },
        "required": [
          "venue_id",
          "party_size",
          "guest_name"
        ],
        "type": "object"
      },
      "name": "send_lead"
    }
  ]
}

What the leaf hashes

{"body":"3a816ca2e7b888c46b5fc56c7742dd409a6dc8bf46b327ab7ded4484aa466f4a","id":3937967,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1794023816006593,"prev":3441290,"subject":"939ad3e9-3d91-49ac-8695-cc9ab28d8371","subject_kind":"endpoint"}

Proof

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

  1. 0x0e6534643efd70d3622b4241eadf4fda78700bd0d5bb4781614bbe4e59918d9a
  2. 0x047ed54ba9eb3355c1dd6539aa4c97c5a9787f2cfff8d49679e5d6a56b033aa0
  3. 0x8ea9a5e131651d238b8b396cb8ecf4fcf17ebacfc9db597c7993c8ea9a6fd0cc
  4. 0x6e826035b5061a1c0a1e37ccdc89c5816fc268a5055de6820812619b6f54af03
  5. 0x28d325299374d541f9389e65441a16180ae7b016c186388b10e2994bb93bd1a9
  6. 0x2084b2c73bb81b1bba95efbddbedff9ba23bebdd21aa43f0ae318d8fd36da67d
  7. 0x172bd589533f0390501600ea7eb0314039721b5ef840761008b81b283c4c9c51
  8. 0xab36bccdf298cc7e3560682b78b407351b7bfd2bce6ad8b24578e21731593b12
  9. 0x06239b45352d310618e31a2761803d6e58e1d10ae6b0a22660fbdc54a612aff1
  10. 0xb919cd53f1f7ba03c8f9b00f8ed211aa826a67c9d454ea98b57a7859f45c93c6
  11. 0x49964c1701c65a918461f9fbd80307f23a4db86315268b1fd4428dbb700f38df
  12. 0x1a8bac16acbfb79afc063ce6452d755039da9f472e08e6e875db372bac98fb10
  13. 0x837e561292e656fc83a7677ed6030f433727eb9ac2b26f99fcc9243d0adee4c5
  14. 0xfdd7b2b79797e6e952d4f424ae23c7bdff01d5d174b3c27e3aa0f615e279d235
  15. 0x648a3baa51de8aa55066ecdaef86a2d63e9b16b533148da0c58eba70048b858f
  16. 0x80bdd907e4cabf074c5e8d919e88abbc805de47d0c5c142e281a67157f82926f
  17. 0x54292a94f447f1fd33c01b5c99da465043f11022958626a2ea562c457fef697a
  18. 0xff23fa8a9de3f957315ef0dfe7e8d8f6b1a51dae05fef7615c59794e019ff05c
Day root
0x17da9e85e1b138541355d33543ff34e3503cd3a49d37728fb53643e2a0416a2d
Chained
0xed34bd4af17282643de8cb9591c84d0aa1b39e1e9ae9864941e543f5a15718cb
Published
On Arc Testnet, block 71280839: 0xc3f6784179e0ca32236ba89472473e882a81d03fcc5ce27ca58ded2e01e112aa

How to check it · This row as JSON