addrbookFor publishers
← The evidence ledger

Evidence row 1493659

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 5fa5559a-68f0-497c-b5cc-4a977e67e360
Recorded
Previous row
#1477430
Body SHA-256
7ea28bd4793338f8b6af9c4f3a251dbf124c4fecd0e6f37175e4ccaa71b6f576
Leaf
0x4c742ff4e597c70d6872c0e2536565caeaffb450732fa96d64f8cbf1174f294b

What was observed

{
  "count": 5,
  "tools": [
    {
      "description": "Finds trips for a group whose people leave from different towns to meet in one place on the same dates: each person's own door-to-door trip (the train, bus or car to their best airport, and the flight), one line per town, with the group's total, the longest journey and the dates that work for everyone. E.g. \"Four of us want a week in Lisbon in May: two from New Haven, one each from Ithaca and Burlington.\" Put each town once in homes with how many people leave from it. For \"where should we meet?\" pass a region, countries or \"anywhere\" as destinations with anywhere true. For one home town, use find_trips. A month without a year means the next one coming; don't ask for the trip length: search, and the answer says what it assumed.",
      "inputSchema": {
        "$defs": {
          "HomeIn": {
            "properties": {
              "town": {
                "description": "A home town, e.g. \"Ithaca, NY\" or \"Hamden, US\". Not an airport.",
                "title": "Town",
                "type": "string"
              },
              "travellers": {
                "default": 1,
                "description": "People leaving from this town.",
                "maximum": 9,
                "minimum": 1,
                "title": "Travellers",
                "type": "integer"
              }
            },
            "required": [
              "town"
            ],
            "title": "HomeIn",
            "type": "object"
          }
        },
        "properties": {
          "anywhere": {
            "default": false,
            "description": "True to find the best places to meet in the countries or regions named.",
            "title": "Anywhere",
            "type": "boolean"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "ISO code (USD, GBP, EUR). Default: the first town's currency.",
            "title": "Currency"
          },
          "depart_from": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The window to leave in: first day. Leave out with depart_to for the next 3 months.",
            "title": "Depart From"
          },
          "depart_to": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The window to leave in: last day.",
            "title": "Depart To"
          },
          "destinations": {
            "description": "Where to meet: airport codes (LIS), cities, country codes (PT), a region, a continent (Europe) or \"anywhere\".",
            "items": {
              "type": "string"
            },
            "title": "Destinations",
            "type": "array"
          },
          "homes": {
            "description": "Each town people leave from, with how many: [{\"town\": \"New Haven, CT\", \"travellers\": 2}, {\"town\": \"Ithaca, NY\"}]. Towns, not airports; the same town twice is one line.",
            "items": {
              "$ref": "#/$defs/HomeIn"
            },
            "maxItems": 20,
            "minItems": 2,
            "title": "Homes",
            "type": "array"
          },
          "max_ground_hours": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The most hours from the front door to the departure airport, one way. Default 8.5: farther airports are left out and named in the answer. Set it only when the user says how far they would travel to the airport, or to include the far ones the answer names.",
            "title": "Max Ground Hours"
          },
          "mode": {
            "anyOf": [
              {
                "enum": [
                  "public",
                  "train",
                  "bus",
                  "car",
                  "any"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "How people get to the airport: public, train, bus, car or any. Leave out unless the user says: then any in the US, public elsewhere.",
            "title": "Mode"
          },
          "nights_max": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Trip length in nights: longest. Default 14.",
            "title": "Nights Max"
          },
          "nights_min": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Trip length in nights: shortest. Default 2.",
            "title": "Nights Min"
          },
          "one_way": {
            "default": false,
            "description": "True if everyone flies one way only.",
            "title": "One Way",
            "type": "boolean"
          },
          "priority": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Best for the group: budget (the lowest total), time (the fewest hours) or balanced. Default balanced.",
            "title": "Priority"
          },
          "same_day": {
            "default": false,
            "description": "True if everyone must leave and return on the very same days; by default within a day.",
            "title": "Same Day",
            "type": "boolean"
          }
        },
        "required": [
          "homes",
          "destinations"
        ],
        "title": "find_group_trips_toolArguments",
        "type": "object"
      },
      "name": "find_group_trips"
    },
    {
      "description": "Finds the best round trips from where someone lives, not just from one airport: it adds the train or bus to every airport they can reach and ranks all options door to door, by price, by total travel time, or balanced. Use it when someone wants flights from their home town, could fly from several airports, or asks for the cheapest or fastest way to get somewhere, e.g. \"I live in New Haven: should I fly to Lisbon from JFK, Newark, Boston or Hartford?\" Not for a search from one airport already chosen. For a one-way trip set one_way (the trip length is then ignored). Multi-city: search each leg as one_way only when the user gave dates for it; otherwise ask for the dates. Set mode only when the user says how they get to the airport (car, train, bus, any): by default a home in the US compares driving, a taxi to a near airport and public transport, and a home elsewhere uses the train or bus. A named departure airport is an ordinary search: pass it as from_airports, with the home town the user gave. A month or holiday without a year means the next one coming; don't ask which year, and don't ask for the trip length or to confirm a town: search, and the answer says what it assumed; when it has `confirm`, ask its question after showing the results. Any town or village works. The first search from a town we haven't seen takes about 20 seconds while we look up its train and bus connections; tell the user you're checking the connections from their town to each airport. Later searches from that town take a second or two. Give the home town and where to: airport, city or country codes, a list of them, or a region such as \"Iberia\" or \"Southeast Asia\". For \"anywhere\", a continent (\"Asia\") or \"somewhere warm\" it finds the cheapest places itself: pass \"anywhere\", \"abroad\" (another country) or the continent, or for warm, sunny or a beach the countries that fit the season with anywhere true; it searches the best 6 cities door to door. Dates are optional, but `dates` says where they came from: use \"assumed\" when the user gave none and you picked them (or left them out). Without them it searches departures in the next 3 months at 2-14 nights and says so. If the user gave no hint of when at all, one quick question about timing is fine. Example call: {\"home\": \"New Haven\", \"destinations\": [\"LIS\"], \"dates\": \"from_user\", \"depart_from\": \"2027-03-01\", \"depart_to\": \"2027-03-31\", \"nights_min\": 5, \"nights_max\": 9, \"travellers\": 2}. Show the answer's rows as a table with the airports each trip flies from and to, and give every booking link exactly as returned, as a clickable link (don't shorten or rewrite it); show every row of the answer, the picks first (it is already cut to what fits), and relay the answer's notes. Airports more than 8.5 hours from the door are left out and named in the answer (max_ground_hours changes that: set it only if the user says how far they would travel). Say when a ground leg is an estimate. If the answer's status isn't \"ok\", tell the user plainly what its note says and don't invent prices. Keep the user's own dates, trip length and places: if nothing is found, say so and offer to widen them, instead of widening on your own. Prices are in the traveller's home currency unless `currency` is given, per person; use the totals the answer gives for a party and don't convert or add up prices yourself. Prices come from recent searches on Aviasales and can change. Booking links are affiliate links: Doorfarer may earn a commission if you book, at no extra cost to you. Say so when you show them, and only then. When the user picks a trip, trip_details gives it step by step with a calendar file; when they ask which month is cheapest, price_calendar answers first, instantly. If an answer is wrong or confusing, report it with send_feedback.",
      "inputSchema": {
        "properties": {
          "anywhere": {
            "default": false,
            "description": "True to find the cheapest places anywhere in the countries or regions named, instead of searching each one's biggest airports. A continent (Asia, Europe), \"anywhere\" or \"abroad\" (outside the home country) in destinations always searches this way. For \"somewhere warm\" or \"a beach\", pass the countries that fit the season and set this.",
            "title": "Anywhere",
            "type": "boolean"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "ISO code (USD, GBP, EUR) to show prices in. Default: the traveller's home currency.",
            "title": "Currency"
          },
          "dates": {
            "description": "\"from_user\" whenever the user named any time at all (a month, season, holiday, \"next week\"); \"assumed\" only when they named none and you picked dates or left them out.",
            "enum": [
              "from_user",
              "assumed"
            ],
            "title": "Dates",
            "type": "string"
          },
          "depart_from": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The window to leave in: first day. Leave out with depart_to for the next 3 months. A window of about six months at most, within the next year.",
            "title": "Depart From"
          },
          "depart_to": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The window to leave in: last day. A window of about six months at most, within the next year.",
            "title": "Depart To"
          },
          "destinations": {
            "description": "Where to: airport codes (LIS), city codes (NYC), country codes (PT), a region, a continent (Asia), \"anywhere\" or \"abroad\" (outside the home country).",
            "items": {
              "maxLength": 80,
              "type": "string"
            },
            "maxItems": 6,
            "title": "Destinations",
            "type": "array"
          },
          "from_airports": {
            "anyOf": [
              {
                "items": {
                  "maxLength": 80,
                  "type": "string"
                },
                "maxItems": 8,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Only these departure airports. For narrowing a previous answer.",
            "title": "From Airports"
          },
          "home": {
            "description": "The traveller's home town or village, e.g. \"New Haven\" or \"Hamden, US\". Not an airport. Add the country when the name is common.",
            "maxLength": 80,
            "title": "Home",
            "type": "string"
          },
          "limit": {
            "anyOf": [
              {
                "maximum": 25,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Rows to return, 1-25. Default: the picks plus the best trip from each airport.",
            "title": "Limit"
          },
          "max_ground_hours": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The most hours from the front door to the departure airport, one way. Default 8.5: farther airports are left out and named in the answer. Set it only when the user says how far they would travel to the airport, or to include the far ones the answer names.",
            "title": "Max Ground Hours"
          },
          "mode": {
            "anyOf": [
              {
                "enum": [
                  "public",
                  "train",
                  "bus",
                  "car",
                  "any"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "How the user gets to the airport: public (train or bus), train, bus, car (their own, parked at the airport), or any (car, taxi and public compete). Leave out unless the user says: then any for a home in the US, public elsewhere.",
            "title": "Mode"
          },
          "nights_max": {
            "anyOf": [
              {
                "maximum": 180,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Trip length in nights: longest. Default 14.",
            "title": "Nights Max"
          },
          "nights_min": {
            "anyOf": [
              {
                "maximum": 180,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Trip length in nights: shortest. Default 2.",
            "title": "Nights Min"
          },
          "one_way": {
            "default": false,
            "description": "True if the user wants one way only: then the trip length is ignored.",
            "title": "One Way",
            "type": "boolean"
          },
          "priority": {
            "default": "balanced",
            "description": "What matters most: budget (the cheapest door to door), time (the fastest) or balanced. Default balanced; the picks show the cheapest, the fastest and the balanced trip either way.",
            "enum": [
              "budget",
              "time",
              "balanced",
              "cheapest",
              "fastest"
            ],
            "title": "Priority",
            "type": "string"
          },
          "travellers": {
            "default": 1,
            "description": "Adults travelling together. Default 1.",
            "maximum": 9,
            "minimum": 1,
            "title": "Travellers",
            "type": "integer"
          }
        },
        "required": [
          "home",
          "destinations",
          "dates"
        ],
        "title": "find_trips_toolArguments",
        "type": "object"
      },
      "name": "find_trips"
    },
    {
      "description": "Shows the cheapest month to travel from someone's home town to a place, for each airport within reach: the cheapest fare found for each month (or, where none is found, what that route usually costs) plus the train or bus to the airport and the transfer into the city. Takes a few seconds. Airports further than 8.5 hours from home are left out and named. Use it when the user's dates are flexible or they ask when it's cheapest to go; then call find_trips for the month they choose to get bookable trips. Needs the home town; months as \"2027-03\", at most 12. Prices per person, in the home currency unless `currency` is given.",
      "inputSchema": {
        "properties": {
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "ISO code (USD, GBP, EUR). Default: the home's.",
            "title": "Currency"
          },
          "destinations": {
            "description": "Where to: airport codes (LIS), city codes (NYC) or country codes (PT).",
            "items": {
              "type": "string"
            },
            "maxItems": 6,
            "title": "Destinations",
            "type": "array"
          },
          "home": {
            "description": "The traveller's home town or village, e.g. \"New Haven\" or \"Hamden, US\". Not an airport. Add the country when the name is common.",
            "title": "Home",
            "type": "string"
          },
          "month_from": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "First month, \"2027-03\". Default: this month.",
            "title": "Month From"
          },
          "month_to": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Last month. Default: 6 months in all.",
            "title": "Month To"
          },
          "one_way": {
            "default": false,
            "description": "True for one-way fares.",
            "title": "One Way",
            "type": "boolean"
          }
        },
        "required": [
          "home",
          "destinations"
        ],
        "title": "price_calendarArguments",
        "type": "object"
      },
      "name": "price_calendar"
    },
    {
      "description": "Tell Doorfarer's maker where Doorfarer fell short, so it can be fixed. Use it when a find_trips answer was wrong, confusing, or missing something you needed to help, or when the user asks you to pass something on. Write as the assistant that used the tool: what you asked for, what came back, what you expected instead. The report is about Doorfarer only, never about the user: leave out names, contact details, travel plans, reasons for travelling and anything the user said about themselves. Be specific and honest, including when the problem may have been your own call. Pass the search_id from the answer's last line. One report per search. If the user asked you to report something, tell them it's sent.",
      "inputSchema": {
        "properties": {
          "kind": {
            "description": "bug: something is wrong. confusing: right but hard to use. idea: something that would help.",
            "enum": [
              "bug",
              "confusing",
              "idea"
            ],
            "title": "Kind",
            "type": "string"
          },
          "search_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The id from the find_trips answer this is about, e.g. \"s_7f3kq2m9xa\".",
            "title": "Search Id"
          },
          "suggestion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "What would have helped. At most 400 characters.",
            "title": "Suggestion"
          },
          "what_happened": {
            "description": "What you asked for, what came back and what you expected. About Doorfarer, not the user. At most 600 characters.",
            "title": "What Happened",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "what_happened"
        ],
        "title": "send_feedbackArguments",
        "type": "object"
      },
      "name": "send_feedback"
    },
    {
      "description": "Shows one trip from a find_trips answer step by step, door to door: leaving home, the train or bus to the airport, the airport wait, the flight, the transfer into the city and arrival, then the way back, with local times. Also gives the booking link and a calendar file (.ics) the user can add. Pass a trip id from the find_trips answer (\"Trip ids, row by row\", or a row's `id`). Use it when the user picks a trip or asks how the journey works. Ids are kept for 72 hours.",
      "inputSchema": {
        "properties": {
          "trip_id": {
            "description": "A trip id from the find_trips answer, e.g. \"t_k3m9q2xa\".",
            "title": "Trip Id",
            "type": "string"
          }
        },
        "required": [
          "trip_id"
        ],
        "title": "trip_detailsArguments",
        "type": "object"
      },
      "name": "trip_details"
    }
  ]
}

What the leaf hashes

{"body":"7ea28bd4793338f8b6af9c4f3a251dbf124c4fecd0e6f37175e4ccaa71b6f576","id":1493659,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793460453508710,"prev":1477430,"subject":"5fa5559a-68f0-497c-b5cc-4a977e67e360","subject_kind":"endpoint"}

Proof

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

  1. 0x4c746d9aecfc037bce202b477ac46c68c0a2befd5d752b81ea35c58c294da66a
  2. 0x835db1d23e278bcea6a879a49fee0639e41504778f5f2e4dabd8a5e8a802614c
  3. 0x08c9c2f39dec131325f2451ff24d2f21dba129fb74484d6149b851e7085a75c3
  4. 0x575eeffbf011f841fb2eb67542efdaef81ec55fd9fa160bc778daeb998fc5326
  5. 0x2db6f103d08c400b3b7fe09c9661b9a81bacc9e95d556ee7d72c8fa9b7025369
  6. 0x1dc9ae27258729af3df4d3376363e585ec1d0b95e6129b7991ed475d5ba82a3f
  7. 0x4d092612ddb8ab408803319b60cfea177947ea93f3b92703c29f55f8ea03affe
  8. 0x4a999a69fc31772eb10b1367d74726cbc565fe34b12eb30330b34d17e3282eff
  9. 0xf62660e8d4759170eed10bbb9e612ebd5751ef1c8c53e69787cc8c23a8f9c521
  10. 0xba53c732d16d3df5c356dce26b5a54135225b2561a319b62affd2cc0cc3473df
  11. 0x09c57d4a165c02842fe83d9990d476fbb49c1736a167a7d103a8fad025f85c85
  12. 0xd8082ac82a3597a5d01801914570acfd58eb4768c625e0c1bea0c5481620828a
  13. 0x3b31ad2e230b4adddfd3db6e960243f893810b5bd12d29f0e9a17684e7acb3b6
  14. 0xa61ca0b664c5ff2f545d3f92e3125f2b38c2b4e58fd9a71badfd8a85dda4c936
  15. 0x37f0ccf90cd9ba8759ef0154382593820880794592760020f095a3628e43fc3f
  16. 0xad4540f06e3fdfe46524d8592f8d854d4849e16217bc047eaf024f0abebe34b0
  17. 0xa00a931d72706fa2402bfc9b441a12eb7c6a61ff42a542916106e3637177f101
  18. 0x59f83f7228f07febe2780660e422e171b0359b8aa031ee3be07e991118130c15
Day root
0x24463725d1c0d9894bd6123691d532547aaa79f0762c0e45aa6a68acf1fd71ab
Chained
0x7d4824ff313dee7252a46f9d5c37b452851deb6c9f24a40c2f74ee0e53c82980
Published
On Arc Testnet, block 70093156: 0xedb7b832f4ebf6781b5ecd2ed241c435b862f4d3761541fa31adc1831b8c44a0

How to check it · This row as JSON