addrbookFor publishers
← The evidence ledger

Evidence row 568190

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint deeaac70-6c16-4cd8-8eec-2cf77cf4ca81
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
d917f978a0f28353426bdee144790574c663082a99c82a2eb3a850e66890ebcb
Leaf
0xa8565197a4036fd8390b3083d9b7e889c0a20f1914982b9689969e1b6ff21fa0

What was observed

{
  "count": 8,
  "tools": [
    {
      "description": "Build the link a visitor opens to book a permit: https://madeira.fun/hiking/<seo_slug>?date=YYYY-MM-DD opens that date's start times on the trail page. Optional adults (visitors aged 13 or over who are not Madeira residents) and children (aged 12 or under, no fee) preset the party; lang sets the page language. The link books and stores nothing. On the page the visitor picks a start time and presses Reserve: madeira.fun submits the government reservation for them and emails a PayPay link to pay the government fee.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "adults": {
            "description": "Visitors aged 13 or over who are not Madeira residents (they pay the government fee).",
            "maximum": 60,
            "minimum": 0,
            "type": "integer"
          },
          "children": {
            "description": "Visitors aged 12 or under who are not Madeira residents (no fee, still part of the reservation).",
            "maximum": 60,
            "minimum": 0,
            "type": "integer"
          },
          "date": {
            "description": "The hike date (YYYY-MM-DD, a Madeira calendar date).",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "lang": {
            "description": "Page language.",
            "enum": [
              "en",
              "pt",
              "es",
              "de",
              "fr",
              "ru",
              "lv",
              "it",
              "pl",
              "ro",
              "nl",
              "cs",
              "da",
              "sv",
              "no",
              "fi",
              "hu",
              "tr"
            ],
            "type": "string"
          },
          "trail": {
            "description": "The trail: its seo_slug from list_permit_trails (preferred), a code such as \"PR 18\", \"PR18\" or \"PS PR1\", or a name such as \"Levada do Rei\". Accents are ignored.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "trail",
          "date"
        ],
        "type": "object"
      },
      "name": "build_booking_link"
    },
    {
      "description": "Day-by-day permit availability for one trail, from today up to 119 days ahead (Madeira dates). Each day is open (start times left for visitors), full (sold out for visitors), started (today only: every start time has already begun, nothing is left to book today; not sold out), closed, no_times (no start times listed) or unknown (not checked yet), with permits left for visitors and when it was last checked. Use date for one day, or from and to for a range; the default is the next 7 days. For the start times of a day, use get_start_times.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "date": {
            "description": "One day (YYYY-MM-DD, a Madeira calendar date).",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "from": {
            "description": "First day of a range (YYYY-MM-DD, a Madeira calendar date).",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "to": {
            "description": "Last day of a range (YYYY-MM-DD, a Madeira calendar date).",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "trail": {
            "description": "The trail: its seo_slug from list_permit_trails (preferred), a code such as \"PR 18\", \"PR18\" or \"PS PR1\", or a name such as \"Levada do Rei\". Accents are ignored.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "trail"
        ],
        "type": "object"
      },
      "name": "check_trail_availability"
    },
    {
      "description": "Step 2 of 2: with the code the visitor got by email, madeira.fun signs them in, checks the start time live and submits the government reservation for exactly what start_reservation described. The answer gives order_id and status_token. The reservation is not paid: madeira.fun then emails the government's PayPay link, and the visitor must pay the permit fee to the government within 24 hours, or before the start time if that is sooner, or it lapses. Safe to retry: calling it again with the same reservation_token returns the same order and never books twice (also after a lost answer). At most 5 reservations per email per day through apps.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "description": "The code from the madeira.fun email, digits only.",
            "maxLength": 12,
            "type": "string"
          },
          "reservation_token": {
            "description": "The reservation_token start_reservation returned, unchanged.",
            "maxLength": 3000,
            "type": "string"
          }
        },
        "required": [
          "reservation_token",
          "code"
        ],
        "type": "object"
      },
      "name": "confirm_reservation"
    },
    {
      "description": "The government hiking permit fee records in force today (format MF-PRC-1.0, the same records as https://madeira.fun/hiking/permit-data), with legal references and exemptions. Give trail to get the fee that applies to that trail. The fee is paid to the government, never to madeira.fun.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "trail": {
            "description": "Optional. The trail: its seo_slug from list_permit_trails (preferred), a code such as \"PR 18\", \"PR18\" or \"PS PR1\", or a name such as \"Levada do Rei\". Accents are ignored.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_permit_fees"
    },
    {
      "description": "Where a reservation made with confirm_reservation stands: being reserved, waiting for payment (with the government's PayPay link, the amount and the deadline), paid, not taken, cancelled or lapsed. Needs order_id and status_token from confirm_reservation.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "order_id": {
            "description": "order_id from confirm_reservation.",
            "maxLength": 36,
            "type": "string"
          },
          "status_token": {
            "description": "status_token from confirm_reservation.",
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [
          "order_id",
          "status_token"
        ],
        "type": "object"
      },
      "name": "get_reservation_status"
    },
    {
      "description": "Give trail (required without a partner key). The start times of a trail with the permits left for visitors at each one (as the trail page shows them: a number from 6 up, \"few\" at 1 to 5, \"full\" at 0), and a book_url per open start time that opens Reserve on madeira.fun at that time. Today up to 119 days ahead: give trail and date, or from and to (up to 14 days per call). Further ahead, up to 365 days: one trail and one date per call. Start times that have already begun today are never listed. Rate limited; a partner key (Authorization: Bearer mfk_...) gives higher limits, longer ranges and every trail at once (omit trail).",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "date": {
            "description": "One day (YYYY-MM-DD, a Madeira calendar date).",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "from": {
            "description": "First day of a range (YYYY-MM-DD, a Madeira calendar date).",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "to": {
            "description": "Last day of a range (YYYY-MM-DD, a Madeira calendar date).",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "trail": {
            "description": "The trail: its seo_slug from list_permit_trails (preferred), a code such as \"PR 18\", \"PR18\" or \"PS PR1\", or a name such as \"Levada do Rei\". Accents are ignored. Required, except for a partner key asking for every trail.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_start_times"
    },
    {
      "description": "List the Madeira trails that need a government hiking permit for a set start time and can be reserved on madeira.fun. Returns each trail's seo_slug (use it in the other tools), code (such as PR 18 or PS PR 1), name, island, official trail status, trail page and day feed links. Optional query filters by code or name, accents ignored.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "query": {
            "description": "Optional filter: a code such as \"PR 18\" or a name such as \"Pico Ruivo\".",
            "maxLength": 120,
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_permit_trails"
    },
    {
      "description": "Step 1 of 2 to reserve a Madeira hiking permit for a visitor through madeira.fun. Before calling, tell the visitor these three points in your own words and get their yes: (1) madeira.fun creates a madeira.fun account with the visitor's email address (or signs in the one they already have). (2) madeira.fun sends that email address and the party size to the Madeira government's Simplifica system (IFCN), which issues the permit. The name stays with madeira.fun. (3) Reserving is not paying: the government's PayPay payment link arrives by email, and the visitor must pay the permit fee to the government within 24 hours, or before the start time if that is sooner, or the reservation lapses. madeira.fun charges nothing and never collects the permit fee. This step checks the start time and emails the visitor a 6-digit code from madeira.fun; nothing is reserved yet. Then ask the visitor for the code and call confirm_reservation. Standard visitor reservations only (no Madeira residents, no Verified Permit): for those use build_booking_link. Today up to 119 days ahead. At most 3 codes per email per hour. For apps calling from a server: a call from a web page is refused.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "adults": {
            "description": "Visitors aged 13 or over who are not Madeira residents (each pays the government fee).",
            "maximum": 60,
            "minimum": 0,
            "type": "integer"
          },
          "children": {
            "description": "Visitors aged 12 or under who are not Madeira residents (no fee, still part of the reservation).",
            "maximum": 60,
            "minimum": 0,
            "type": "integer"
          },
          "date": {
            "description": "The hike date (YYYY-MM-DD, a Madeira calendar date).",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string"
          },
          "email": {
            "description": "The visitor's email: madeira.fun sends the code there, creates or signs in their madeira.fun account with it, and the government's payment link and permit go there. Not an Apple Hide My Email address.",
            "maxLength": 254,
            "type": "string"
          },
          "lang": {
            "description": "Language of madeira.fun's emails (default en).",
            "enum": [
              "en",
              "pt",
              "es",
              "de",
              "fr",
              "ru",
              "lv",
              "it",
              "pl",
              "ro",
              "nl",
              "cs",
              "da",
              "sv",
              "no",
              "fi",
              "hu",
              "tr"
            ],
            "type": "string"
          },
          "name": {
            "description": "The visitor's name, for their madeira.fun reservation (madeira.fun keeps it; the government gets the email and the party size).",
            "maxLength": 80,
            "minLength": 2,
            "type": "string"
          },
          "start_time": {
            "description": "The begin of an open start time from get_start_times, HH:MM (Madeira time).",
            "maxLength": 5,
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "type": "string"
          },
          "trail": {
            "description": "The trail: its seo_slug from list_permit_trails (preferred), a code such as \"PR 18\", \"PR18\" or \"PS PR1\", or a name such as \"Levada do Rei\". Accents are ignored.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "visitor_agreed": {
            "description": "true only after the visitor heard the three points in this tool's description and said yes. The emailed code is what confirms it.",
            "type": "boolean"
          }
        },
        "required": [
          "trail",
          "date",
          "start_time",
          "name",
          "email",
          "visitor_agreed"
        ],
        "type": "object"
      },
      "name": "start_reservation"
    }
  ]
}

What the leaf hashes

{"body":"d917f978a0f28353426bdee144790574c663082a99c82a2eb3a850e66890ebcb","id":568190,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793138946186197,"prev":null,"subject":"deeaac70-6c16-4cd8-8eec-2cf77cf4ca81","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. 0xa8561e8e94941e78548b82385731ec26f1f49adb49bc1fd9ea88f28a5d0e1a44
  2. 0x84de03617e854fe893d6ac90713f4daff5db59954070c2a82e0fff806b6de740
  3. 0x3f074f13c6e2791d479581ce885a381a2c1c647f7545d6d8306b8a679c5cb3a4
  4. 0x2dc4574f5beda1ec495bd87fd66bfbf23d60e6acb0fa9a811befc2e1642f7e3a
  5. 0x97b0c20c151a946cdd596de904867cae6e0ca24b24130da58ed16438f4f94872
  6. 0xb7eec6b19bb8cdebabb3ed297fd58cb6dad57fdd019df39077a96d1eacc47106
  7. 0xc9d12af0f540af84db8c385fb9f78c09d75795e432083b93441307cada0f4339
  8. 0x6542401cf89fb7dceb86f591e4ae3c6197b502d0febcee61140e583607bb519b
  9. 0xd56efe86d94fe2b98e63ae8df9dc80399c757097b2a589f66e5c53e849c3add4
  10. 0x42cf63e0e87840a91d7901b7210fab194b0145de93496ce12655a5d4e4f656cd
  11. 0xd2aa44cc055bcdb3ddafd2370919a57805f054c24aa9409ec35ce2603240def3
  12. 0xa08d28946903c13551b0c68269e38bfa91b368f8e33183ac691c11e2b5a9506a
  13. 0xb37156a04839055daed26674da38864f8dae598cab9742c6fb3e74eb3178f2d4
  14. 0x0644f7e2a4b5bf9b66f185cc3fbb766d456ad94490183852f4c6db5855114cc5
  15. 0xa3fff4662cd48659f5bafd0612931759a90e53a7b4209ed8f26f6594a07bb547
  16. 0x64c405a28e8819716221eb2529fe4ce277ab08025e17e685cbd5ece75ceb75c7
  17. 0xf30fddbf4811226c58e8f0daf36fddd79fc5f1356b592bb1d99a8061ddbabe66
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON