addrbookFor publishers
← The evidence ledger

Evidence row 1009147

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint b25ac698-3869-43f1-a720-54f5853271f7
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
6241fe29f6368189481fc9ecc7b321c31f7d9e515a8c0995db2532a69467eb57
Leaf
0x38c1d11e46d1a7ea53927c7557628cc61be7af4a252a1bb5d7cfeb94d850cd55

What was observed

{
  "count": 14,
  "tools": [
    {
      "description": "Save a city or country to the member's Nomads.com favorites (the heart on the site). Authenticated as the member, like get_favorites.",
      "inputSchema": {
        "properties": {
          "key": {
            "description": "From https://nomads.com/settings. Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "slug": {
            "description": "A city slug from search_cities (e.g. lisbon-portugal) or a country slug (e.g. portugal)",
            "type": "string"
          },
          "username": {
            "description": "Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "add_favorite"
    },
    {
      "description": "Add a trip to a Nomads.com member's own history: a stay in one place with a start and end date. Authenticated as the member: signed in through the connector (OAuth sign-in or an Authorization header) if set up, otherwise pass the member's username and their personal key from https://nomads.com/settings, plus the place, given EITHER as city_slug (from search_cities/get_city) OR as latitude+longitude (e.g. from a places/geocoding lookup). Coordinates within 5km of a Nomads.com city snap to it, same as the profile page's \"add a trip\" autocomplete; ANY other place also works - pass its city and country names with the coordinates and it is stored as-is, like the site's own trip editor.",
      "inputSchema": {
        "properties": {
          "city": {
            "description": "The place name that was geocoded. Required (with country) for places that have no Nomads.com city within 5km",
            "type": "string"
          },
          "city_slug": {
            "description": "From search_cities or get_city, e.g. lisbon-portugal. Omit if using latitude/longitude instead",
            "type": "string"
          },
          "country": {
            "description": "The place's country name. Required with city for places without a Nomads.com city page",
            "type": "string"
          },
          "date_end": {
            "description": "YYYY-MM-DD, after date_start",
            "type": "string"
          },
          "date_start": {
            "description": "YYYY-MM-DD",
            "type": "string"
          },
          "key": {
            "description": "From https://nomads.com/settings. Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "latitude": {
            "description": "Use instead of city_slug when you only have a place name to geocode, not our slug",
            "type": "number"
          },
          "longitude": {
            "type": "number"
          },
          "username": {
            "description": "Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          }
        },
        "required": [
          "date_start",
          "date_end"
        ],
        "type": "object"
      },
      "name": "add_trip"
    },
    {
      "description": "Cancel a Nomads.com meetup the member organized. The cancel is posted in the community chat and everyone who RSVP'd gets a notification. It cannot be undone. Call without meetup_id to get the member's upcoming meetups with their ids. Authenticated as the member, like create_meetup. Ask the member to confirm first.",
      "inputSchema": {
        "properties": {
          "key": {
            "description": "From https://nomads.com/settings. Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "meetup_id": {
            "description": "From create_meetup, list_meetups, or this tool called without it",
            "type": "string"
          },
          "username": {
            "description": "Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "cancel_meetup"
    },
    {
      "description": "Host a Nomads.com meetup as the member: it is posted in the community chat, members in that city then get notified, and at 2 RSVPs it is also shared in the country channel and on X. Authenticated as the member (signed in through the connector with OAuth or an Authorization header, or username + personal key from https://nomads.com/settings). The member needs a profile photo and Telegram connected. Ask the member to confirm the details before calling this, it is posted publicly.",
      "inputSchema": {
        "properties": {
          "address": {
            "description": "Street address only, no links",
            "type": "string"
          },
          "category": {
            "description": "The main activity",
            "enum": [
              "drinks",
              "coffee",
              "brunch",
              "dinner",
              "foodtour",
              "picnic",
              "coworking",
              "networking",
              "language",
              "bookclub",
              "party",
              "karaoke",
              "games",
              "movies",
              "festival",
              "culture",
              "daytrip",
              "boat",
              "beach",
              "hiking",
              "running",
              "cycling",
              "surf",
              "climbing",
              "fitness",
              "sports",
              "yoga",
              "wellness",
              "other"
            ],
            "type": "string"
          },
          "city_slug": {
            "description": "From search_cities or get_city, e.g. lisbon-portugal",
            "type": "string"
          },
          "date": {
            "description": "YYYY-MM-DD, in the next 3 months",
            "type": "string"
          },
          "description": {
            "description": "What you will do. No paid tickets or selling",
            "type": "string"
          },
          "key": {
            "description": "From https://nomads.com/settings. Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "recurrence": {
            "description": "Optional: repeat every week (same weekday) or every month (same nth weekday)",
            "enum": [
              "",
              "weekly",
              "monthly"
            ],
            "type": "string"
          },
          "time": {
            "description": "Local start time as a whole hour, e.g. 19 or 19:00",
            "type": "string"
          },
          "title": {
            "description": "Short title, max 60 characters",
            "type": "string"
          },
          "username": {
            "description": "Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "venue": {
            "description": "Name of the cafe, bar or restaurant",
            "type": "string"
          }
        },
        "required": [
          "city_slug",
          "date",
          "time",
          "category",
          "description",
          "venue",
          "address"
        ],
        "type": "object"
      },
      "name": "create_meetup"
    },
    {
      "description": "Change a Nomads.com meetup the member organized: date, time, type, title, description, venue or address. Fields left out keep their current value. The change is posted in the community chat. Once 2+ people RSVP'd, the date and time can no longer change. Call without meetup_id to get the member's upcoming meetups with their ids. Authenticated as the member, like create_meetup. Ask the member to confirm the change first.",
      "inputSchema": {
        "properties": {
          "address": {
            "description": "Street address only, no links",
            "type": "string"
          },
          "category": {
            "description": "The main activity",
            "enum": [
              "drinks",
              "coffee",
              "brunch",
              "dinner",
              "foodtour",
              "picnic",
              "coworking",
              "networking",
              "language",
              "bookclub",
              "party",
              "karaoke",
              "games",
              "movies",
              "festival",
              "culture",
              "daytrip",
              "boat",
              "beach",
              "hiking",
              "running",
              "cycling",
              "surf",
              "climbing",
              "fitness",
              "sports",
              "yoga",
              "wellness",
              "other"
            ],
            "type": "string"
          },
          "date": {
            "description": "YYYY-MM-DD",
            "type": "string"
          },
          "description": {
            "description": "What you will do. No paid tickets or selling",
            "type": "string"
          },
          "key": {
            "description": "From https://nomads.com/settings. Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "meetup_id": {
            "description": "From create_meetup, list_meetups, or this tool called without it",
            "type": "string"
          },
          "time": {
            "description": "Local start time as a whole hour, e.g. 19 or 19:00",
            "type": "string"
          },
          "title": {
            "description": "Short title, max 60 characters",
            "type": "string"
          },
          "username": {
            "description": "Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "venue": {
            "description": "Name of the cafe, bar or restaurant",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "edit_meetup"
    },
    {
      "description": "Change the dates and/or the place of one trip in a Nomads.com member's own history, e.g. a stay that got longer or a wrong city. Authenticated as the member (signed in through the connector with OAuth or an Authorization header, or username + personal key from https://nomads.com/settings). Needs the trip_id (from get_trips); pass only what changes, everything else keeps its value. The trip keeps its trip_id, likes and comments. A new place works like add_trip: city_slug, OR latitude+longitude (snaps to a Nomads.com city within 5km, otherwise pass city and country names).",
      "inputSchema": {
        "properties": {
          "city": {
            "description": "With latitude/longitude: the place name. Required (with country) for places that have no Nomads.com city within 5km",
            "type": "string"
          },
          "city_slug": {
            "description": "New place, from search_cities or get_city. Omit to keep the place",
            "type": "string"
          },
          "country": {
            "description": "With city: the place's country name",
            "type": "string"
          },
          "date_end": {
            "description": "New end date, YYYY-MM-DD. Omit to keep",
            "type": "string"
          },
          "date_start": {
            "description": "New start date, YYYY-MM-DD. Omit to keep",
            "type": "string"
          },
          "key": {
            "description": "From https://nomads.com/settings. Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "latitude": {
            "description": "New place by coordinates, instead of city_slug",
            "type": "number"
          },
          "longitude": {
            "type": "number"
          },
          "trip_id": {
            "description": "From get_trips",
            "type": "string"
          },
          "username": {
            "description": "Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          }
        },
        "required": [
          "trip_id"
        ],
        "type": "object"
      },
      "name": "edit_trip"
    },
    {
      "description": "Get the curated data for one city by its slug (from search_cities), e.g. lisbon-portugal.",
      "inputSchema": {
        "properties": {
          "slug": {
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_city"
    },
    {
      "description": "Get one country by its slug, e.g. portugal or united-kingdom: its Nomads.com page, its short animated thumbnail video (mp4, when there is one) and its top 10 cities by overall score, each with their own animated thumbnail.",
      "inputSchema": {
        "properties": {
          "slug": {
            "description": "Lowercase country slug, e.g. portugal, united-kingdom",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_country"
    },
    {
      "description": "Get a Nomads.com member's own favorite cities and countries (the places they hearted: places they want to go or come back to). Authenticated as the member: signed in through the connector (OAuth sign-in or an Authorization header) if set up, otherwise pass the member's username and their personal key from https://nomads.com/settings - this is private data, not for looking up other people.",
      "inputSchema": {
        "properties": {
          "key": {
            "description": "From https://nomads.com/settings. Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "username": {
            "description": "Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "get_favorites"
    },
    {
      "description": "Get a Nomads.com member's own trip history (past and upcoming stays: city, country, dates), newest first, 200 by default; use from_date/to_date for a period and limit for more. Authenticated as the member: signed in through the connector (OAuth sign-in or an Authorization header) if set up, otherwise pass the member's username and their personal key from https://nomads.com/settings - this is private data, not for looking up other people.",
      "inputSchema": {
        "properties": {
          "from_date": {
            "description": "Only trips that end on or after this date, YYYY-MM-DD",
            "type": "string"
          },
          "key": {
            "description": "From https://nomads.com/settings. Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "limit": {
            "description": "How many trips, newest first: 1 to 1000, default 200",
            "type": "integer"
          },
          "to_date": {
            "description": "Only trips that start on or before this date, YYYY-MM-DD",
            "type": "string"
          },
          "username": {
            "description": "Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "get_trips"
    },
    {
      "description": "Upcoming Nomads.com meetups: where and when nomads meet in person, and how many people are going. Filter by city slug, country or how far ahead to look. Attendance is a count only; who attends is private.",
      "inputSchema": {
        "properties": {
          "city": {
            "description": "City slug from search_cities, e.g. lisbon-portugal",
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "days_ahead": {
            "description": "How far ahead to look, 1 to 365, default 90",
            "type": "integer"
          },
          "limit": {
            "description": "1 to 100, default 50",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "list_meetups"
    },
    {
      "description": "Remove a city or country from the member's Nomads.com favorites. Authenticated as the member, like get_favorites.",
      "inputSchema": {
        "properties": {
          "key": {
            "description": "From https://nomads.com/settings. Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "slug": {
            "description": "A city slug (e.g. lisbon-portugal) or a country slug (e.g. portugal)",
            "type": "string"
          },
          "username": {
            "description": "Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "remove_favorite"
    },
    {
      "description": "Remove one trip from a Nomads.com member's own history, e.g. a duplicate or a superseded entry. Authenticated as the member (signed in through the connector with OAuth or an Authorization header, or username + personal key from https://nomads.com/settings). Needs the trip_id (returned by get_trips). Only the authenticated member's own trips can be removed.",
      "inputSchema": {
        "properties": {
          "key": {
            "description": "From https://nomads.com/settings. Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          },
          "trip_id": {
            "description": "From get_trips",
            "type": "string"
          },
          "username": {
            "description": "Omit when signed in through the connector (OAuth or Authorization header)",
            "type": "string"
          }
        },
        "required": [
          "trip_id"
        ],
        "type": "object"
      },
      "name": "remove_trip"
    },
    {
      "description": "Search Nomads.com for the best cities to live and work remotely. Filters: budget, region, country, internet speed, safety, temperature. Returns at most 100 cities sorted by overall score. Each city includes costs, internet, weather, air quality, safety/cleanliness/healthcare/fun and other 0-5 scores, air conditioning (share of households, availability 1-5), tax burden (tax revenue as % of GDP) and an animated thumbnail video.",
      "inputSchema": {
        "properties": {
          "country": {
            "type": "string"
          },
          "limit": {
            "description": "1 to 100",
            "type": "integer"
          },
          "max_cost_usd": {
            "description": "Max monthly cost for a nomad in USD (responses also carry expat, local, family, rent and coworking costs)",
            "type": "integer"
          },
          "max_temperature_c": {
            "type": "number"
          },
          "min_internet_mbps": {
            "type": "number"
          },
          "min_safety": {
            "description": "0 to 5",
            "type": "number"
          },
          "min_temperature_c": {
            "type": "number"
          },
          "region": {
            "description": "One of: Europe, Asia, North America, Latin America, Africa, Middle East, Oceania",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "search_cities"
    }
  ]
}

What the leaf hashes

{"body":"6241fe29f6368189481fc9ecc7b321c31f7d9e515a8c0995db2532a69467eb57","id":1009147,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793265332245407,"prev":null,"subject":"b25ac698-3869-43f1-a720-54f5853271f7","subject_kind":"endpoint"}

Proof

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

  1. 0x38c20df7ee58d36c871aa3b3a4b18b297d4320f168b5ea1befb0e19218adf1b6
  2. 0xb75df5aff1c74f4572c8de0f0e90e169ada16d7689eefb03885f8acc44aa4b28
  3. 0x08acb7be7ed2310208822d7199914c98c567431ffb39e0c3f5e87c834a2aa975
  4. 0xff6de2d7a3f40aa7c95fcf80932e1b3c28006e3705f286618b3e90a500bf7d5e
  5. 0xe8cfd818dd7fae755da7f03a0b45cfbb8f1e8d61ba2aff75edc332c540a9201f
  6. 0x57b26fddfef470b7117dc7160bccaa4bf36045206027e7c6ddadb69eadd74c97
  7. 0xe100a789e529c8ec457a5c51f35b8db9038ddcb4f4df67566204c88af975a9f5
  8. 0x65900a3067cc4e798d271241a83045507eca38201139a106296caa36dca445ab
  9. 0xa1829b5c21ed2a70b1f18f8276f87d0bfcfad52afbb9f2813cc05e65c912ed3f
  10. 0xc24400aacbb6093b17f85e6bf3ca3760f72b8250ea60d938aa5798b539086f29
  11. 0x0a9f6ee1d60e16f1b3ac9c020d7cdfa4bc33c2f0841c932f14e69a27093a7083
  12. 0x323c003b20088ff5fc994bd02dcef5bb060fb6e3c817a34b4c86849e5240cf52
  13. 0x4b7bfa7784180e2ff8d66e25e97761344643b8692c744c82acf0f77be5670a82
  14. 0x14b86aca7e0af6917fa29c5b89b8f3eab1f2340a671c3d06e6ac6a34fd3a07ee
  15. 0xa03bd318a195be3bd16f335c7e189443bea4f1f439087a7ac19afec9fa97f9be
  16. 0x1c3764b490d23b94e5ac838c89f8d3850dedb0819196f367da2479c7a88bf2c0
  17. 0xd76435ead496863d8b0bfab3434f54cd11da3c49d104fc4064b9cb3381567bbd
  18. 0xd56e61af23709ed9f460471e3c08400c0142ee83e1fd9057e46350d12edf9c07
Day root
0xc050555c6b023f2aefb6536efb9f0760b92c30a0d06c572b7daf63db259ea17c
Chained
0x4cde8bae2042512e1bec11650628f0293556311cc4ea74d99ffddf02b671a7d6
Published
On Arc Testnet, block 69753317: 0x9e85c340732f416e431b111fae72f7624870125f7f379af2732eb6c2ba8cf6a1

How to check it · This row as JSON