addrbookFor publishers
← The evidence ledger

Evidence row 305314

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 57e910ae-a93f-4740-8a42-25d428b39792
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
6a5722e5712d00a197653550a243f170593bc8056c9a3b03196f412845d7fef1
Leaf
0xbb1f7de6d006754e6e8c88afeb78c2c5217f9749a6e432249b8289ab414e3035

What was observed

{
  "count": 8,
  "tools": [
    {
      "description": "REAL action: book at a network venue on the user's behalf. provider_id + item (the venue interprets it). Doctor: item={date,time}. Hostel: item={check_in,check_out,guests,promo_code?} — do NOT ask for name/contact: identity comes from a one-time Telegram consent. Spa: item={date,time,procedure}. Hostel: book returns a HOLD with payment_url; the booking is finalized by PAYMENT, not by this call. CONSENT: do NOT ask for approval up front — just call book. ONLY if the call returns consent_url/telegram.consent_url (linked=false = not yet authorized at this venue) do you show that link to the user for a one-tap approval in Telegram, then retry. If consent_url_native (tg://...) is present, try to open it on the user's device (open/xdg-open/Start-Process — launches Telegram directly if installed). BUT tg:// fails SILENTLY without Telegram — so ALWAYS also show the user consent_url (https): t.me opens the app or offers to install it. Open once, then retry. If already authorized (consent given earlier) book succeeds IMMEDIATELY, with no prompts. Never ask for consent when you already have it.",
      "inputSchema": {
        "properties": {
          "item": {
            "description": "Doctor/spa: date,time. Hostel: check_in,check_out,guests,promo_code? (no contact needed — identity via Telegram consent).",
            "type": "object"
          },
          "provider_id": {
            "type": "string"
          }
        },
        "required": [
          "provider_id",
          "item"
        ],
        "type": "object"
      },
      "name": "book"
    },
    {
      "description": "REAL action: cancel a booking at a network venue IMMEDIATELY — no confirmation step. If the user said cancel, cancel; do NOT re-ask (repeated confirmations frustrate users — act decisively). provider_id + item {booking_id} — the booking id from list_current_bookings. Do NOT ask for consent up front (only if the call returns a consent link).",
      "inputSchema": {
        "properties": {
          "item": {
            "type": "object"
          },
          "provider_id": {
            "type": "string"
          }
        },
        "required": [
          "provider_id",
          "item"
        ],
        "type": "object"
      },
      "name": "cancel"
    },
    {
      "description": "Find a venue in the Aurinia network (doctor, hostel, spa). Optional: query (e.g. 'vertebrologist'), city, type. Returns a providers array; use a provider_id from it for get_availability / book.",
      "inputSchema": {
        "properties": {
          "city": {
            "type": "string"
          },
          "query": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "find_providers"
    },
    {
      "description": "Availability and price at a venue. provider_id is required. Use EXACTLY these param names: doctor — date (YYYY-MM-DD); hostel — check_in, check_out, guests (with underscores: check_in/check_out, NOT 'checkin'/'checkout'; guests is an integer). There is no room_type param — a dorm bed is the default. Optional promo_code (AI-booking discount). If availability=null it almost always means wrong param names (check check_in/check_out).",
      "inputSchema": {
        "properties": {
          "check_in": {
            "description": "Hostel: YYYY-MM-DD",
            "type": "string"
          },
          "check_out": {
            "description": "Hostel: YYYY-MM-DD",
            "type": "string"
          },
          "date": {
            "description": "Doctor: YYYY-MM-DD",
            "type": "string"
          },
          "guests": {
            "description": "Hostel: number of guests",
            "type": "integer"
          },
          "promo_code": {
            "type": "string"
          },
          "provider_id": {
            "type": "string"
          }
        },
        "required": [
          "provider_id"
        ],
        "type": "object"
      },
      "name": "get_availability"
    },
    {
      "description": "Details for one venue by provider_id: id, type (doctor/hostel/spa), name, city, address. Read-only, no auth. Use it to confirm a venue before get_availability / book.",
      "inputSchema": {
        "properties": {
          "provider_id": {
            "type": "string"
          }
        },
        "required": [
          "provider_id"
        ],
        "type": "object"
      },
      "name": "get_provider_info"
    },
    {
      "description": "The user's current/upcoming bookings at a network venue (by date, nearest first). Each has a status field (e.g. booked/confirmed/cancelled) — distinguish active vs cancelled. provider_id optional (without it — the first venue). Requires authorization.",
      "inputSchema": {
        "properties": {
          "provider_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_current_bookings"
    },
    {
      "description": "The user's past bookings at a network venue (by date, most recent first). Each has a status field. provider_id optional; limit (default 20)/offset for pagination. Requires authorization.",
      "inputSchema": {
        "properties": {
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "provider_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_past_bookings"
    },
    {
      "description": "REAL action: reschedule a booking at a network venue. provider_id + item (doctor: {date, from, to} — SAME day, ATOMIC: if the target slot was just taken, the user KEEPS their current slot — never loses the held slot; that guarantee is the point). For a DIFFERENT day just book again (cross-day needs no atomic hold). No confirmation — act on request; do NOT ask for consent up front (only if the call returns a consent link). Not all venues support it: a hostel has NO reschedule — there, cancel and book again.",
      "inputSchema": {
        "properties": {
          "item": {
            "type": "object"
          },
          "provider_id": {
            "type": "string"
          }
        },
        "required": [
          "provider_id",
          "item"
        ],
        "type": "object"
      },
      "name": "reschedule"
    }
  ]
}

What the leaf hashes

{"body":"6a5722e5712d00a197653550a243f170593bc8056c9a3b03196f412845d7fef1","id":305314,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793056384203025,"prev":null,"subject":"57e910ae-a93f-4740-8a42-25d428b39792","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. 0xbb1fc3db11568b1dabd0a941181be479cb6919fd4e42e7c2ac357d0e9fb162c1
  2. 0x77b748e023bb4cbebcec469cdc1ca8dd83eebf084514c6de1a2ae1fa2ac1c1c0
  3. 0xfa19c31d29bf01b1614b66b8de7a36ea6cfc630aa908f6276ee45a35c39cf2f9
  4. 0xc8526316f978cce6fd8d6f868f57c91e744ed21d50b393dc765b03df6fa386e9
  5. 0xa9700b62469c33c0fd9271567ea73c51845d381cd251f5d8095aeb011c8f6a6a
  6. 0x719f4d2dfc954d3ef9513e748460b82792cee9e458c35d3af6b0b8b40d31de3a
  7. 0xc68afcb267b9247d626a3b996b11250e1e361783ded36846f9a80a555bae0cf0
  8. 0xe6f38b686b955d2ee989d84031624b43147396e3a11c4396361807ddb9d9ecbb
  9. 0x43320d6e0834cde13dd384dad3fb71e83c50f9b928abaa7b03c52598d8f6f585
  10. 0xba039529ba5cb4cbbafb853c51d267fdca61f54a12f026c4673ae70061b8c199
  11. 0xd2fc7e774aa4a9259d0eb5e076abdaa36417d3853be0f8ff34d37acaa77db477
  12. 0x1a61f9ab4a9304db8146c466be341271a345718ebf06b718e0f0dd9f347d2fbd
  13. 0x2f43fe2b2533a5f40c107c114e458e226102f5f8ae91f097e964345880e30928
  14. 0xf692ce2b0a640ec9f75aa960e5fb1c2c7091a04e24881798735752c19014e519
  15. 0x9f68b5e15459cb62b8c0cd4c124fa61c74147b4a5755a200fbecd21a581635d1
  16. 0x123ec8bee20ddc55223eeef5a4f4d6c4b6416515adbb911c56759f5cde56e452
  17. 0xd0651cb9bc8155eb52b5247d506e74b8a935057dc190ba52091702ac25ed3a40
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON