addrbookFor publishers
← The evidence ledger

Evidence row 569706

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint efd2788c-c136-49fe-9c5a-6a2a055de9f7
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
6ab4bfea2e8a2e5b508ce140a66370f7cb7e6bd53bcef4c7bf6d7c08ec22d325
Leaf
0xb99838fecc6b28dde53cbbf3a017b8847b8aef72884c09a3fbedb1a007d462d4

What was observed

{
  "count": 6,
  "tools": [
    {
      "description": "Returns factual information about VICATOO the company: who VICATOO is, the \"Truth Before You Book\" value proposition and benefits, and trust credentials (legal entity, TRUE/CCRA accreditation, D-U-N-S number, registered address). Call this whenever the guest asks who VICATOO is, why they should trust VICATOO, what VICATOO offers or how it is different, or anything about the company or brand — so you answer from grounded facts, never invented ones.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "about_vicatoo"
    },
    {
      "description": "Fetch live VICATOO rates for a hotel for the given check-in/check-out dates and occupancy. Returns up to `limit` rates with room name, price, meal type, bed type and cancellation policy. Booking itself always completes on vicatoo.com — to book, direct the guest to open the hotel page URL (the search_hotels card link already carries the dates and guests); never promise in-chat booking.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "adults": {
            "default": 2,
            "maximum": 8,
            "minimum": 1,
            "type": "integer"
          },
          "check_in": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "check_out": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "children_ages": {
            "default": [],
            "items": {
              "maximum": 17,
              "minimum": 0,
              "type": "integer"
            },
            "maxItems": 6,
            "type": "array"
          },
          "currency": {
            "default": "USD",
            "description": "3-letter ISO currency for the rate prices. Defaults to USD so rates match the search-result prices; pass the same currency the guest saw in search.",
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "hotel_id": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991,
                "type": "integer"
              },
              {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              }
            ],
            "description": "VICATOO hotel id — numeric hid or slug (same as get_hotel_details)."
          },
          "limit": {
            "default": 10,
            "maximum": 30,
            "minimum": 1,
            "type": "integer"
          },
          "residency": {
            "description": "ISO 3166-1 alpha-2 code of the country the guest LIVES in - the supplier prices by it, and the hotel page link carries it. If the guest has not said where they live, leave it out and ask them first (\"which country do you live in?\", in their own language). Never assume US or any other country.",
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "room_type_filter": {
            "description": "Optional case-insensitive substring filter on room_name.",
            "maxLength": 60,
            "minLength": 1,
            "type": "string"
          },
          "rooms": {
            "default": 1,
            "maximum": 4,
            "minimum": 1,
            "type": "integer"
          },
          "view": {
            "description": "Optional preferred view family (e.g. \"bosphorus\", \"sea\", \"garden\", \"city\", \"pool\"). When the guest cares about a specific view, pass it so matching-view rates are floated to the top instead of the default cheapest-first ordering.",
            "maxLength": 20,
            "type": "string"
          }
        },
        "required": [
          "hotel_id",
          "check_in",
          "check_out"
        ],
        "type": "object"
      },
      "name": "check_availability"
    },
    {
      "description": "Fetch full details for a single hotel by its VICATOO hotel_id (numeric hid, the hotel_id search_hotels returns, or the slug). Returns name, star rating, REAL guest rating (score/10 + review count — cite it, and call get_hotel_reviews for guest pros/cons before strongly recommending), what the hotel is known for (vibe_tags), location, check-in/out times, headline amenities, images, a description, AND the available rooms cheapest-first — each with photos, a live price (total for the stay and per night), size, view, bed type, meal plan and cancellation. PRICES ARE FOR A STAY: pass check_in, check_out, adults and children_ages (the same values as the guest's search_hotels call) so the prices are for their stay. Without dates the prices are APPROXIMATE, for a default stay the reply names (prices_for.approximate = true) — say so to the guest. When has_video is true, offer the real room-tour video via get_room_video with the returned reel_id.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "adults": {
            "default": 2,
            "maximum": 8,
            "minimum": 1,
            "type": "integer"
          },
          "check_in": {
            "description": "YYYY-MM-DD. Pass the same stay the guest searched, so the room prices are for it.",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "check_out": {
            "description": "YYYY-MM-DD.",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "children_ages": {
            "default": [],
            "items": {
              "maximum": 17,
              "minimum": 0,
              "type": "integer"
            },
            "maxItems": 6,
            "type": "array"
          },
          "currency": {
            "default": "USD",
            "description": "3-letter ISO currency for room prices. Defaults to USD so hotel details match the search-result prices; pass the same currency the guest saw in search.",
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "hotel_id": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991,
                "type": "integer"
              },
              {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              }
            ],
            "description": "VICATOO hotel id — either the numeric hid (e.g., 7476954) or the slug (e.g., \"bentley-hotel-bosphorus-7476954\")."
          },
          "lang": {
            "default": "en",
            "description": "2-letter language code for content (en, ar, de, fr, es, ru, etc.).",
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "residency": {
            "description": "ISO 3166-1 alpha-2 code of the country the guest LIVES in - the supplier prices by it, and the hotel page link carries it. If the guest has not said where they live, leave it out and ask them first (\"which country do you live in?\", in their own language). Never assume US or any other country.",
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "view": {
            "description": "Optional preferred view family (e.g. \"bosphorus\", \"sea\", \"garden\", \"city\", \"pool\"). When the guest arrived from a view-constrained search, pass it so rooms with that view are floated to the top instead of the default cheapest-first ordering.",
            "maxLength": 20,
            "type": "string"
          }
        },
        "required": [
          "hotel_id"
        ],
        "type": "object"
      },
      "name": "get_hotel_details"
    },
    {
      "description": "Fetch a hotel's guest reviews from VICATOO's own reviews: the guest rating (out of 10, with the number of reviews) and the written reviews (pros, cons, comments), from the same source, newest first. Paginate the written reviews with `cursor` and `limit`. When the hotel's reviews have no written comments, the reply says so — do not invent any.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "cursor": {
            "default": 0,
            "description": "Offset into the written reviews (0-based).",
            "maximum": 9007199254740991,
            "minimum": 0,
            "type": "integer"
          },
          "hotel_id": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991,
                "type": "integer"
              },
              {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              }
            ],
            "description": "VICATOO hotel id — numeric hid, the hotel_id search_hotels returns, or the slug; all are resolved server-side."
          },
          "limit": {
            "default": 12,
            "maximum": 30,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "hotel_id"
        ],
        "type": "object"
      },
      "name": "get_hotel_reviews"
    },
    {
      "description": "Returns VICATOO's real room-tour video for a hotel reel as a branded reel PAGE link on vicatoo.com (reel_url). The reel is a promotional public asset: share that page link with the guest freely — NEVER surface any raw video file URL. Includes hotel/room name and caption.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "reel_id": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991,
                "type": "integer"
              },
              {
                "pattern": "^\\d{1,9}$",
                "type": "string"
              }
            ],
            "description": "Reel primary-key id (numeric)."
          }
        },
        "required": [
          "reel_id"
        ],
        "type": "object"
      },
      "name": "get_room_video"
    },
    {
      "description": "Search hotels by a descriptive natural-language query in Arabic or English. Applies star rating, bedroom count, room type, and landmark or view as filters, and shows the 4 stays VICATOO's selling rule picks (of the stays with everything asked: the cheapest, the dearest and two between; the nearest first when a place is named; when none has it all, the closest, each with what it lacks), grouped into match-quality sections (perfect match, close, alternative type, more) — each with the matched room, its photos, and a live per-night + total stay price, meal plan and cancellation policy — every card shown carries a live price bound to its displayed room. Use it for any hotel search; pass the user's full descriptive phrase as `query` (for example \"5-star hotel in Paris\" or \"two-bedroom apartment with an Eiffel Tower view\"). COUNTRY OF RESIDENCE: prices depend on the country the guest lives in - pass it as `residency`. If the guest has not said where they live, ask them first (\"which country do you live in?\", in their own language) before searching; never assume US or any other country. Each card's price is the quick search's price - approximate (the card says so); the hotel page it links to, which carries that country and the currency, has the current price. Call check_availability for booking-ready rates on a specific hotel. TIER MEANINGS (disclose when recommending): perfect = every stated constraint met; near = minor deviation; unit_swap = the requested unit type had no availability so a similar type is offered; wider/fallback = constraints relaxed. PRESENTATION (follow this when you talk about the results): you are VICATOO's travel concierge — always call the platform VICATOO, never name any supplier. Speak warmly and help the guest feel confident booking, but stay strictly truthful per 'Truth Before You Book': no invented urgency, no 'booked N times', no fake scarcity — only real signals. The real quality signals you may cite: review_score (out of 10) with review_count, and vibe_priority (what the hotel is known for, e.g. families/spa/luxury). For each hotel say in one line WHY it matches (tier, view, distance, what it is known for, rating), and briefly compare the top 2-3 so the guest can choose. Before strongly recommending one hotel, call get_hotel_reviews for real guest pros/cons. When a card has has_reel=true, offer VICATOO's real room-tour video via get_room_video with that card's reel_id. When the search includes children, mention each hotel's extra-bed note so families know whether a child bed is included before they open the page. NEVER render external/third-party maps (Google Maps widgets etc.) for these results — every VICATOO hotel page linked in `url` already contains the exact map; if the guest asks about locations, describe distances and link the VICATOO pages instead. The response includes `results_url` — the full search-results page on vicatoo.com with the same query and dates. ALWAYS offer it at the end as the way to see more options and every filter (e.g. \"لمزيد من الخيارات\" / \"see all results on VICATOO\"). Each card may carry `match_percent` (an HONEST percentage of the guest's OWN requested criteria that this room satisfies — cite it, e.g. \"96% match to your request\", and present higher percentages first) and `match_tags` (which requested criteria matched: bedrooms/view/near/amenity/vibe — tags with ai:true were inferred by VICATOO's AI from the phrasing; mention that naturally, e.g. \"our AI also picked up you want somewhere quiet\"). Never invent a percentage when match_percent is null.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "adults": {
            "default": 2,
            "maximum": 8,
            "minimum": 1,
            "type": "integer"
          },
          "check_in": {
            "description": "YYYY-MM-DD",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "check_out": {
            "description": "YYYY-MM-DD",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "children_ages": {
            "default": [],
            "items": {
              "maximum": 17,
              "minimum": 0,
              "type": "integer"
            },
            "maxItems": 6,
            "type": "array"
          },
          "lang": {
            "description": "The user's language as an ISO 639-1 code (e.g. 'ar', 'ru', 'de', 'fr', 'en') for localizing the result cards. Infer it from the conversation language. If omitted, it is detected from the query script.",
            "type": "string"
          },
          "query": {
            "description": "The full descriptive search phrase from the user (city + any room type, view, budget, star rating, bedroom count, or vibe cues). Pass exactly what the user typed — e.g. \"5-star hotel in Paris\" or \"شقة غرفتين إطلالة على برج إيفل\". The backend parses Arabic/English intent and applies stars / bedrooms / landmark as real constraints — do NOT pre-strip the phrase down to a city.",
            "maxLength": 200,
            "minLength": 2,
            "type": "string"
          },
          "residency": {
            "description": "ISO 3166-1 alpha-2 code of the country the guest LIVES in - the supplier prices by it, and the hotel page link carries it. If the guest has not said where they live, leave it out and ask them first (\"which country do you live in?\", in their own language). Never assume US or any other country.",
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "rooms": {
            "default": 1,
            "maximum": 4,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "query",
          "check_in",
          "check_out"
        ],
        "type": "object"
      },
      "name": "search_hotels"
    }
  ]
}

What the leaf hashes

{"body":"6ab4bfea2e8a2e5b508ce140a66370f7cb7e6bd53bcef4c7bf6d7c08ec22d325","id":569706,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793139467499593,"prev":null,"subject":"efd2788c-c136-49fe-9c5a-6a2a055de9f7","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. 0xb997d8cb7bc38a07e46375653b756ca4934399ea1a80d7d9951275c81c0b2f98
  2. 0x4f1fe1c5521bba6ea2ebe93cf137d512401b2904779b4662ad87f2b0269c72ba
  3. 0x14896363590bc63256e5d7aa0aeb70604ed1805ce31aa54fdce433560fc32f04
  4. 0x028822009aa903eec9a74c1d52380970ca7550be240fe5baa91881924547d8d5
  5. 0x6ce9b997e6cfbfdc76790e954cee03790871e3f93bccecc5e0e51a2d7750f02e
  6. 0x184e531afe7592d12c44231de374814593b6164074592444b8bbaa55833672dd
  7. 0xff564e5fc53fb6a78cdd272a275345012d656d588b255b8367f156dcf10ea008
  8. 0x5a5e12654bb5c9041476edf4030c3a0ee3a9eabc0216a695b445c5a5e4725596
  9. 0x007adb1b3ab7db0350cfff5b10dd1e5fa52353d61f6ab9f602a13669252066a4
  10. 0x260ac4f86137a8cd365203b6a8b059754a8a61ec219861aeab1aac5b75388d68
  11. 0x1644f0ff5071dabfbb15c26e84d62ade02f559315ee106046fbad349cf83215e
  12. 0x159edcfdd12b3eacd95b92f307695c8c00010beadbfcbf272edb59cfef54fb40
  13. 0xa4f69e2cf941a3f318d70734b59401dd27010a6bdffb5c32a28304db650a6f0b
  14. 0xa453d1738637a5c663802d07ce095aa340c80d53a4288ae277a72e265868ce4e
  15. 0x73341bb09dd901ca47f26173883431496e3d98d6b0fb5b89f36218126d46c5d4
  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