addrbookFor publishers
← The evidence ledger

Evidence row 807879

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 941dd18c-d4af-42c0-9ac3-d5096d8445b3
Recorded
Previous row
#747526
Body SHA-256
2455242d0e764633067058dd53dd8ba99987ddf725e80bc47ecea7f66b7c100f
Leaf
0x13fbd9291e0d1b71251c166baf17596ae332133ef3fd73ddd3ee0d5b5b377fa6

What was observed

{
  "count": 6,
  "tools": [
    {
      "description": "Change one stop of a FareDice trip and re-chain the rest: night_more or night_less there (the flights after it move a day), night_from_next or night_to_next (a night moved from or to the next stop; the trip's end holds), add_stop (a place after it, with city; without city, the places that fit, each with its change and link) or drop_stop (the stop left out). Returns the new trip as get_trip does, with how much the flights change, how far the end moves and any airport it changes (airports_change). Without change, every change the stop can take, each with its link.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "change": {
            "description": "The change to make. Leave it out for the list of changes this stop can take.",
            "enum": [
              "night_more",
              "night_less",
              "night_from_next",
              "night_to_next",
              "add_stop",
              "drop_stop"
            ],
            "type": "string"
          },
          "city": {
            "description": "With add_stop: the place to add (its name or IATA city code), from the list add_stop gives without it.",
            "type": "string"
          },
          "link": {
            "description": "A FareDice trip link, as find_trips returns it (https://faredice.com/trip?l=... or /sea/trip?l=...).",
            "type": "string"
          },
          "stop": {
            "description": "Which stop to change: 1 is where the first flight lands, 2 the next, and so on.",
            "maximum": 14,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "link",
          "stop"
        ],
        "type": "object"
      },
      "name": "edit_trip"
    },
    {
      "description": "Finds cheap trips through several cities and countries in Europe or Southeast Asia, strung from non-stop one-way fares seen in the last few days: you give a start city (or a home airport outside the region: the trip then starts with a flight from the nearest big airport we have fares from), a window for the first flight, how many places and nights in each, and a flight budget, and optionally the kinds of place (beaches, islands, capitals ...), countries to keep to or skip and cities per country; it picks the cities. Returns the cheapest three trips, each with its flights, fare ages, cabin-bag notes and a link to the trip on faredice.com.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "budget_eur": {
            "description": "Most to spend on all the flights, in euros, for all the travellers together (up to 5,000 each).",
            "maximum": 30000,
            "minimum": 20,
            "type": "integer"
          },
          "cabin_bag": {
            "description": "true: the traveller takes a cabin bag (the wheeled one for the overhead locker), so the budget and the ranking count each flight's usual price for one where we know it; a flight whose bag price we don't know counts €35, the dearest bag price we know, so the total is an estimate (see unpriced_cabin_bags). Default false: fares alone.",
            "type": "boolean"
          },
          "cities_per_country": {
            "description": "Most cities in any one country. Default 1; 0 for any number (answers write it \"any\").",
            "maximum": 3,
            "minimum": 0,
            "type": "integer"
          },
          "countries": {
            "description": "ISO country codes (\"ES\", \"PT\"): every stop is in one of these.",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "type": "array"
          },
          "earliest_departure": {
            "description": "No flight leaving before this local time, \"HH:MM\" (e.g. \"07:00\"), on the hour from 06:00 to 10:00; another time is moved to the next of those (said in notes). A flight whose departure time we don't know is kept, with a note to check it.",
            "pattern": "^\\d{1,2}:\\d\\d$",
            "type": "string"
          },
          "end": {
            "description": "home: the last flight returns to the start city (with home, to the airport the trip flew in through). Default anywhere.",
            "enum": [
              "home",
              "anywhere"
            ],
            "type": "string"
          },
          "from": {
            "description": "Start city: a name (\"Lisbon\") or IATA city code (\"LIS\"), \"anywhere\" to start in any of the region's busiest cities, or a country (\"anywhere in Germany\", \"Spain\") to start in any of its cities. Needed unless home is given.",
            "type": "string"
          },
          "held_visas": {
            "description": "Valid visas the traveller already holds, with passports: \"schengen\" opens the Schengen area (its days counted against 90 in any 180) and the countries outside it that admit Schengen visa holders; \"uk\" and \"us\" open the countries that admit holders of those. The traveller still checks the visa's own dates and entries.",
            "items": {
              "enum": [
                "schengen",
                "uk",
                "us"
              ],
              "type": "string"
            },
            "maxItems": 3,
            "type": "array"
          },
          "home": {
            "description": "The traveller's home airport when it is outside the region: a town (\"Calgary\", \"London, Ontario\") or IATA code (\"YYC\"). Trips then start with a flight in from the nearest big airport we have fares from (Toronto, New York, Sydney ...), usually with a stop, and from there it's the same trip. The budget covers that flight; getting from home to that airport isn't in the prices. With home, from is used only when we can't fly from that home.",
            "type": "string"
          },
          "kinds_of_place": {
            "additionalProperties": false,
            "description": "Kinds of place, from our notes on each city: per kind, \"only\" (every stop is one), \"none\" (no stop is one) or at least n stops of it (1-4), e.g. {\"beaches\": 2, \"capitals\": \"none\"}. One kind can be \"only\". Ski counts only from December to mid-April, and only in Europe. The start and the return don't count as stops.",
            "properties": {
              "beaches": {
                "oneOf": [
                  {
                    "maximum": 4,
                    "minimum": 1,
                    "type": "integer"
                  },
                  {
                    "enum": [
                      "only",
                      "none"
                    ],
                    "type": "string"
                  }
                ]
              },
              "capitals": {
                "oneOf": [
                  {
                    "maximum": 4,
                    "minimum": 1,
                    "type": "integer"
                  },
                  {
                    "enum": [
                      "only",
                      "none"
                    ],
                    "type": "string"
                  }
                ]
              },
              "islands": {
                "oneOf": [
                  {
                    "maximum": 4,
                    "minimum": 1,
                    "type": "integer"
                  },
                  {
                    "enum": [
                      "only",
                      "none"
                    ],
                    "type": "string"
                  }
                ]
              },
              "lakes": {
                "oneOf": [
                  {
                    "maximum": 4,
                    "minimum": 1,
                    "type": "integer"
                  },
                  {
                    "enum": [
                      "only",
                      "none"
                    ],
                    "type": "string"
                  }
                ]
              },
              "mountains": {
                "oneOf": [
                  {
                    "maximum": 4,
                    "minimum": 1,
                    "type": "integer"
                  },
                  {
                    "enum": [
                      "only",
                      "none"
                    ],
                    "type": "string"
                  }
                ]
              },
              "old_towns": {
                "oneOf": [
                  {
                    "maximum": 4,
                    "minimum": 1,
                    "type": "integer"
                  },
                  {
                    "enum": [
                      "only",
                      "none"
                    ],
                    "type": "string"
                  }
                ]
              },
              "ski": {
                "oneOf": [
                  {
                    "maximum": 4,
                    "minimum": 1,
                    "type": "integer"
                  },
                  {
                    "enum": [
                      "only",
                      "none"
                    ],
                    "type": "string"
                  }
                ]
              },
              "small_towns": {
                "oneOf": [
                  {
                    "maximum": 4,
                    "minimum": 1,
                    "type": "integer"
                  },
                  {
                    "enum": [
                      "only",
                      "none"
                    ],
                    "type": "string"
                  }
                ]
              }
            },
            "type": "object"
          },
          "latest_arrival": {
            "description": "No flight landing after this local time, \"HH:MM\" (e.g. \"22:00\"; \"00:00\" or \"24:00\" for midnight), on the hour from 21:00 to midnight; another time is moved to the one before it (said in notes). A flight whose landing time we don't know is kept, with a note to check it. Long flights into the region are checked by departure only.",
            "pattern": "^\\d{1,2}:\\d\\d$",
            "type": "string"
          },
          "nights_max": {
            "description": "Most nights in each place.",
            "maximum": 14,
            "minimum": 1,
            "type": "integer"
          },
          "nights_min": {
            "description": "Fewest nights in each place.",
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          },
          "passports": {
            "description": "ISO country codes of the traveller's passports (\"US\", \"IN\"): countries that need a visa in advance are left out.",
            "items": {
              "type": "string"
            },
            "maxItems": 2,
            "type": "array"
          },
          "places_max": {
            "description": "Most places to stay in. Default 12, any number.",
            "maximum": 12,
            "minimum": 1,
            "type": "integer"
          },
          "places_min": {
            "description": "Fewest places to stay in. Default 4.",
            "maximum": 12,
            "minimum": 1,
            "type": "integer"
          },
          "region": {
            "description": "Where the trip goes. Default europe.",
            "enum": [
              "europe",
              "southeast-asia"
            ],
            "type": "string"
          },
          "skip_countries": {
            "description": "ISO country codes to leave out of the trip.",
            "items": {
              "type": "string"
            },
            "maxItems": 20,
            "type": "array"
          },
          "start": {
            "description": "Earliest day for the first flight, YYYY-MM-DD. Fares cover about the next 90 days. Default: a week from today.",
            "type": "string"
          },
          "then_region": {
            "description": "With home: after region, fly on to this other region and home from there, in one trip (europe then southeast-asia, or the reverse). Three long flights: home into region, one across (from or to London or Paris), and home from then_region; each a separate ticket, all in the total and the budget. Homes: Vancouver or Los Angeles, or an airport within 1,000 km of them. The trip always ends home; places_min splits between the regions. A budget of about 2,000 euros fits most.",
            "enum": [
              "europe",
              "southeast-asia"
            ],
            "type": "string"
          },
          "travellers": {
            "description": "How many adults travel together. Default 1. Every price in the answer, and the budget, is then for all of them.",
            "maximum": 6,
            "minimum": 1,
            "type": "integer"
          },
          "until": {
            "description": "Latest day for the first flight, YYYY-MM-DD. Default: two weeks after start.",
            "type": "string"
          },
          "visa_free": {
            "description": "With passports: only countries that need no visa of any kind, leaving out e-visas, ETAs and visas on arrival as well as visas needed before flying.",
            "type": "boolean"
          },
          "warm_min_c": {
            "description": "Only places whose typical daytime high for the month of the stay is at least this many °C, from long-term weather station averages (a place without them is left out). For winter sun in Europe.",
            "enum": [
              16,
              18,
              20,
              22,
              25
            ],
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "find_trips"
    },
    {
      "description": "The trip a FareDice trip link names, as find_trips returns one: its flights with fares, their ages, times where known and cabin-bag notes, nights in each place and the total, with its home hops when it starts from a home airport. A trip whose fares have gone says so and gives the nearest days the same places all have fares again, or none.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "link": {
            "description": "A FareDice trip link, as find_trips returns it (https://faredice.com/trip?l=... or /sea/trip?l=...).",
            "type": "string"
          }
        },
        "required": [
          "link"
        ],
        "type": "object"
      },
      "name": "get_trip"
    },
    {
      "description": "The cheapest one-way fare seen on each day of the next three months or so from one city to another in Europe or Southeast Asia (non-stop flights), or on a long flight between a big airport outside the region and one of its cities (any stops): each day's price, its age and airline, the cheapest by month, the airlines with how many days they fly it and their cabin bag rule, the cheapest the other way, and a link to the route's page on faredice.com.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "from": {
            "description": "A city by name (\"Berlin\", \"Krakow\", \"Saigon\") or IATA city code (\"BER\"). For a long flight, one end can be a big airport outside the region we have fares from (Vancouver, Toronto, New York, Sydney, London for Southeast Asia ...).",
            "type": "string"
          },
          "month": {
            "description": "Only this month's days: YYYY-MM or a month's name (\"november\"). Default every day we have.",
            "type": "string"
          },
          "region": {
            "description": "europe or southeast-asia. Default: the first region where both places are found, Europe first.",
            "enum": [
              "europe",
              "southeast-asia"
            ],
            "type": "string"
          },
          "to": {
            "description": "A city by name (\"Berlin\", \"Krakow\", \"Saigon\") or IATA city code (\"BER\"). For a long flight, one end can be a big airport outside the region we have fares from (Vancouver, Toronto, New York, Sydney, London for Southeast Asia ...).",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to"
        ],
        "type": "object"
      },
      "name": "nonstop_fares"
    },
    {
      "description": "Every city one city in Europe or Southeast Asia flies to non-stop over the next three months or so (or that a big airport outside the region flies to, any stops), cheapest first: each with its cheapest fare, the day, its age and airline, how many days have fares and the airlines, and links to each route's page on faredice.com.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "from": {
            "description": "A city by name (\"Berlin\", \"Krakow\", \"Saigon\") or IATA city code (\"BER\"). For a long flight, one end can be a big airport outside the region we have fares from (Vancouver, Toronto, New York, Sydney, London for Southeast Asia ...).",
            "type": "string"
          },
          "max_results": {
            "description": "Most cities to list, cheapest first. Default 30.",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "region": {
            "description": "europe or southeast-asia. Default: the first region where both places are found, Europe first.",
            "enum": [
              "europe",
              "southeast-asia"
            ],
            "type": "string"
          }
        },
        "required": [
          "from"
        ],
        "type": "object"
      },
      "name": "nonstop_from"
    },
    {
      "description": "Other places for one stop of a FareDice trip on the same days, keeping the rest of the trip: each with how much the trip's flights change and its link, cheapest first. With city, that change made: the new trip, as get_trip returns it. Places already in the trip, and countries it already visits or (with the link's passports) needs a visa for, are left out.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "city": {
            "description": "A place from the list (its name or IATA city code) to put in that stop's place. Leave it out for the list.",
            "type": "string"
          },
          "link": {
            "description": "A FareDice trip link, as find_trips returns it (https://faredice.com/trip?l=... or /sea/trip?l=...).",
            "type": "string"
          },
          "stop": {
            "description": "Which stop to change: 1 is where the first flight lands, 2 the next, and so on.",
            "maximum": 14,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "link",
          "stop"
        ],
        "type": "object"
      },
      "name": "swap_stop"
    }
  ]
}

What the leaf hashes

{"body":"2455242d0e764633067058dd53dd8ba99987ddf725e80bc47ecea7f66b7c100f","id":807879,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793222836416687,"prev":747526,"subject":"941dd18c-d4af-42c0-9ac3-d5096d8445b3","subject_kind":"endpoint"}

Proof

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

  1. 0x13fcb9a70666f59cc6b0beef6408df8390e5d76d357fd431653b7958b78d940f
  2. 0x4f362bc3330bf8dcca5af5c6224952c2ee124a755ba160a2f398323cc0b1bcc7
  3. 0x36b657e622287de30e1430b8ee08bdd83c357bb073cd7faf9917fe9ece60c2ee
  4. 0x97845a49a80e32ae5aae575ffe2632fee61fdbe39bb4d7f4928039eb449387b7
  5. 0x52804edc14314f1a7cf8dbd3fa4bb2020979cd11384b7eaabd1174cf33d9a6b2
  6. 0x5bdda9e1d04903960396507779fe8015176f0f7a9e656f9a1608b647a3e40424
  7. 0xc9f02baa3c2726dd95d8957aec9b17d2921dabf927dd6793387a583facc5c2bb
  8. 0xa10c96da4c226fc29fcd6ed85faf4e386583a2a5d67c7c55928042921fd2ee77
  9. 0x40bc3b105fe5f82304d0fbcd329536e5f07bc4d3cd02aba93218eeb666e9533c
  10. 0x8d279f215aac9b7372e0f235bc01aca37e955e1515409c30508ecc6f2b3bc236
  11. 0xbfd54386b4fab2f89fd66b0a369cf77d4dee7709822e3b89ed198c4444900056
  12. 0xd3e3d5122a1bc515e0da13fffa946f5bbdca32998b689bba762a1a197b2cde55
  13. 0x7fa5866908096f0b22f929078a2cec5d1e2891fa5835c6c55f26448d682790ec
  14. 0xdf8e9d4c523b87b2bea3cc4d461fe94e163080e98a261c596a4641e3fcaf7cc4
  15. 0x4698ebc7cbcb2286f661b867355eb6a9183e884482ee16965889e886b17d19ac
  16. 0x35e8995c30094446ec790423171382fccb377081b921295b0ae3840cc2c4f52c
  17. 0xf078ea7d84d98dbeffed23d8e67b36751e60464ffd4cfdc005e0aa6f8cb9b459
  18. 0xe027395fafb7fc41921c42ca0542524ea22204cbd5908b70b27f3d5fb26f5d0f
Day root
0x2c19037464cc4c493624565f01775d6446fc78eaa118fc6865bfe2bfca9ff78e
Chained
0xd1d7dee8322ceff8f4c8d83aa1fe4a4466825c2af1c97dbde3d35db61234f7be
Published
On Arc Testnet, block 69584042: 0x8bae2b1d097834c8b458513862d70d29ee807e98dc2e863b27250131c15b35ae

How to check it · This row as JSON