addrbookFor publishers
← The evidence ledger

Evidence row 558901

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint cea65461-c6af-4505-b581-f09995a79c21
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
980f1dedc348addbb47684802de6257337c9abd3a53d1dc430ad282ab83d6f7a
Leaf
0xa1bb461b6ff05164ca799602fe95f5328beb4d95caeda9577f1049bbf2910718

What was observed

{
  "count": 6,
  "tools": [
    {
      "description": "Book an appointment on booboooking.com (free OR paid services — payment is always in cash at the appointment, no online payment). For customer_name and customer_email, use the signed-in user's profile from your host app — do NOT ask them to retype. Always ask for customer_phone separately (it is not in the sign-in profile). customer_phone MUST be in international E.164 format starting with `+` and country code (e.g. `+36201234567`), no spaces/dashes — convert local-format numbers before calling this tool or the booking will fail validation. On success the response includes `id` and `pin` (MUST remember paired, for cancellation) and optionally `cash_due: { amount, currency }` — if present, remind the user to bring that amount in cash.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "customer_email": {
            "description": "Customer email address",
            "type": "string"
          },
          "customer_name": {
            "description": "Customer full name",
            "type": "string"
          },
          "customer_phone": {
            "description": "Customer phone number in international E.164 format, e.g. \"+36201234567\" — convert local-format numbers (e.g. \"06201234567\") before calling this tool.",
            "pattern": "^\\+[1-9]\\d{6,14}$",
            "type": "string"
          },
          "date": {
            "description": "Date in YYYYMMDD format (e.g. \"20260415\")",
            "type": "string"
          },
          "provider": {
            "description": "Provider identifier",
            "type": "string"
          },
          "service_id": {
            "description": "Service ID from booboooking_list_services",
            "type": "string"
          },
          "time": {
            "description": "Start time in HH:MM format (e.g. \"09:30\") — use the \"time\" field from booboooking_check_availability results",
            "type": "string"
          }
        },
        "required": [
          "provider",
          "service_id",
          "date",
          "time"
        ],
        "type": "object"
      },
      "name": "booboooking_book"
    },
    {
      "description": "Cancel a reservation on booboooking.com. Requires the reservation_id AND pin that were returned from the original booboooking_book call — both are needed as proof of booking ownership. If the user asks to cancel but you do not have the pin in your conversation state, you MUST ask them for it — you cannot cancel without it. Never invent or guess a pin.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "pin": {
            "description": "The PIN returned from the original booking",
            "type": "string"
          },
          "provider": {
            "description": "Provider identifier (same as the one used for booking)",
            "type": "string"
          },
          "reservation_id": {
            "description": "The `id` returned from the original booking (24-hex MongoDB ObjectId)",
            "type": "string"
          }
        },
        "required": [
          "provider",
          "reservation_id",
          "pin"
        ],
        "type": "object"
      },
      "name": "booboooking_cancel"
    },
    {
      "description": "Check available time slots for a provider and service on booboooking.com. Returns available dates with slots — each slot has a \"time\" field (use this for booboooking_book) and a \"display\" field (show this to the user). Use this before booking.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "days_ahead": {
            "description": "How many days to check (default: 14, max: 30)",
            "type": "number"
          },
          "provider": {
            "description": "Provider identifier",
            "type": "string"
          },
          "service_id": {
            "description": "Service ID from booboooking_list_services (the \"id\" field)",
            "type": "string"
          },
          "start_date": {
            "description": "Start date in YYYYMMDD format (default: today)",
            "type": "string"
          }
        },
        "required": [
          "provider",
          "service_id"
        ],
        "type": "object"
      },
      "name": "booboooking_check_availability"
    },
    {
      "description": "Search forward for the next available appointment slots for a provider and service on booboooking.com. Returns up to `count` openings sorted chronologically. Useful when you need \"the next available appointment\" without a specific date in mind.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "count": {
            "description": "Number of openings to return (default: 3, max: 10)",
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          },
          "from_date": {
            "description": "Start search from this date in YYYYMMDD format (default: today)",
            "type": "string"
          },
          "provider": {
            "description": "Provider identifier",
            "type": "string"
          },
          "search_days": {
            "description": "Days to search ahead (default: 30, max: 60)",
            "maximum": 60,
            "minimum": 1,
            "type": "integer"
          },
          "service_id": {
            "description": "Service ID from booboooking_list_services",
            "type": "string"
          }
        },
        "required": [
          "provider",
          "service_id"
        ],
        "type": "object"
      },
      "name": "booboooking_find_next_available"
    },
    {
      "description": "Retrieve a booking by its reservation ID. Requires the PIN from the original booking response to prove ownership. Returns full booking details including payment state if the reservation was created via the payment flow.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "pin": {
            "description": "The PIN returned from the original booboooking_book call",
            "type": "string"
          },
          "provider": {
            "description": "Provider identifier (same as used for booking)",
            "type": "string"
          },
          "reservation_id": {
            "description": "The reservation ID returned from booboooking_book (24-char hex MongoDB ObjectId)",
            "type": "string"
          }
        },
        "required": [
          "reservation_id",
          "pin",
          "provider"
        ],
        "type": "object"
      },
      "name": "booboooking_get_booking"
    },
    {
      "description": "List available services for a provider on booboooking.com. Returns service names, IDs, duration, and price. Call this first to find the service ID needed for availability and booking.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "provider": {
            "description": "Provider identifier (e.g. \"radnaimark\", \"tomi\")",
            "type": "string"
          }
        },
        "required": [
          "provider"
        ],
        "type": "object"
      },
      "name": "booboooking_list_services"
    }
  ]
}

What the leaf hashes

{"body":"980f1dedc348addbb47684802de6257337c9abd3a53d1dc430ad282ab83d6f7a","id":558901,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793135198108117,"prev":null,"subject":"cea65461-c6af-4505-b581-f09995a79c21","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. 0xa1bba892a49f32955de5fbc37f00873086ab6082b560715548f87741c3ebdc33
  2. 0x9d8ca29027c5dbac5c6c9f76e6b7412e9d473e8b14957be3af8659b5ed19e96d
  3. 0xbb81971a1628bedbfb55395b6749d202923682f3a21e66597ad20ed85ea9be96
  4. 0xf5061e70c7a640ff4358d0346cbdd769a986e4a18e2c9930e4616ec110000b5a
  5. 0x78dfabdfc46ed89557abfe544a8922115d1a792550fcfd0ab30967c220f70819
  6. 0x53b9455baa8849d73b490aee4d7c72a1c5865379c4902916176a3612f1363b7d
  7. 0xa336532134fdd605afe69ef8bc406c2fb49739c7b1ee66cd90030a0361201ea8
  8. 0x19c84f0b9892d09f17214471d80862ddbbca183c262dd5c11c0885a2ad299ff2
  9. 0xc85f234b723b46bff20120bf68021aad26f03548daef72bd90c5c5392f57658d
  10. 0xc2407975175c710b5f8a7ee92f90c566f70f556badcec899706506405298d3d1
  11. 0x60256611194f4b2e6a37447763b0aac23cbea6f8ca40ee0b8fbe44b2119b441f
  12. 0x0c9efc71bd73a056aab018d34b600797c2287eaa0df0398c8404046e9420d684
  13. 0x87816aee66e8f6e0f1e55ea83733bb58cf9612d36c45fd5b7fc5d6f4484b78fd
  14. 0x0644f7e2a4b5bf9b66f185cc3fbb766d456ad94490183852f4c6db5855114cc5
  15. 0xa3fff4662cd48659f5bafd0612931759a90e53a7b4209ed8f26f6594a07bb547
  16. 0x64c405a28e8819716221eb2529fe4ce277ab08025e17e685cbd5ece75ceb75c7
  17. 0xf30fddbf4811226c58e8f0daf36fddd79fc5f1356b592bb1d99a8061ddbabe66
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON