addrbookFor publishers
← The evidence ledger

Evidence row 301774

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint c1f087b9-7dad-42e2-988a-d6156636a01b
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
45bd3dcd051362639d599c8395333f7f3974fe25fb2323048d26e0316b074b89
Leaf
0x37d01fe8dd9c90f34526f1e9cd99acbb24202e40b7ae867c555b22d0477ca6b4

What was observed

{
  "count": 18,
  "tools": [
    {
      "description": "MUTATES YouCanBookMe data: cancels a booking. Convenience wrapper for PATCH /v1/bookings/{bookingId} with { cancelled: true } — safer and reversible (re-activate via youcanbookme_update_booking cancelled=false) versus deleting. Returns the updated booking.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "bookingId": {
            "description": "The booking id to cancel (path only; required).",
            "type": "string"
          }
        },
        "required": [
          "bookingId"
        ],
        "type": "object"
      },
      "name": "youcanbookme_cancel_booking"
    },
    {
      "description": "MUTATES YouCanBookMe data: adds an appointment type to a profile. YCBM API: POST /v1/profiles/{profileId}/appointmenttypes/items (JSON). Required: name; use the `fields` passthrough for description, slotLength, price, etc. The path profileId is never sent in the body.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "fields": {
            "additionalProperties": {},
            "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "name": {
            "description": "The appointment type name (required).",
            "type": "string"
          },
          "profileId": {
            "description": "The profile (booking page) id (path only; required).",
            "type": "string"
          }
        },
        "required": [
          "profileId",
          "name"
        ],
        "type": "object"
      },
      "name": "youcanbookme_create_appointment_type"
    },
    {
      "description": "MUTATES YouCanBookMe data: creates a booking (appointment) on a profile. YCBM API: POST /v1/bookings (JSON). Required: profileId, startsAt, endsAt (ISO 8601 times). Optional: title, timeZone, locale, units. Complex fields like `answers` (form-field answers) and `linkFields` should be passed via the `fields` passthrough. Returns the created booking.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "endsAt": {
            "description": "Booking end time, ISO 8601 (required).",
            "type": "string"
          },
          "fields": {
            "additionalProperties": {},
            "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "locale": {
            "description": "Locale for the booking (e.g. en-GB).",
            "type": "string"
          },
          "profileId": {
            "description": "The profile (booking page) id to book on (required).",
            "type": "string"
          },
          "startsAt": {
            "description": "Booking start time, ISO 8601 (required).",
            "type": "string"
          },
          "timeZone": {
            "description": "IANA time zone for the booking (e.g. Europe/London).",
            "type": "string"
          },
          "title": {
            "description": "Booking title.",
            "type": "string"
          },
          "units": {
            "description": "Number of slot units to book.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          }
        },
        "required": [
          "profileId",
          "startsAt",
          "endsAt"
        ],
        "type": "object"
      },
      "name": "youcanbookme_create_booking"
    },
    {
      "description": "MUTATES YouCanBookMe data: adds a location to a profile. YCBM API: POST /v1/profiles/{profileId}/locations (JSON). Required: kind (location type) and strategy (how it is assigned). Use the `fields` passthrough for value, notes, and other documented fields. The path profileId is never sent in the body.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "fields": {
            "additionalProperties": {},
            "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "kind": {
            "description": "The location kind/type (required).",
            "type": "string"
          },
          "notes": {
            "description": "Notes shown with the location.",
            "type": "string"
          },
          "profileId": {
            "description": "The profile (booking page) id (path only; required).",
            "type": "string"
          },
          "strategy": {
            "description": "The location assignment strategy (required).",
            "type": "string"
          },
          "value": {
            "description": "The location value (e.g. an address or link).",
            "type": "string"
          }
        },
        "required": [
          "profileId",
          "kind",
          "strategy"
        ],
        "type": "object"
      },
      "name": "youcanbookme_create_location"
    },
    {
      "description": "MUTATES YouCanBookMe data: adds a team member to a profile. YCBM API: POST /v1/profiles/{profileId}/teammembers/items (JSON). Required: name; calendarId links the member to a calendar (find it via youcanbookme_list_available_accounts). Use the `fields` passthrough for email, description, pic, etc. The path profileId is never sent in the body.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "calendarId": {
            "description": "The calendar id to link (see youcanbookme_list_available_accounts).",
            "type": "string"
          },
          "fields": {
            "additionalProperties": {},
            "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "name": {
            "description": "The team member's display name (required).",
            "type": "string"
          },
          "profileId": {
            "description": "The profile (booking page) id (path only; required).",
            "type": "string"
          }
        },
        "required": [
          "profileId",
          "name"
        ],
        "type": "object"
      },
      "name": "youcanbookme_create_team_member"
    },
    {
      "description": "Fetch a single booking (appointment) by id. YCBM API: GET /v1/bookings/{bookingId}. Use `fields` to select which fields to return. Returns the booking object.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "bookingId": {
            "description": "The booking id.",
            "type": "string"
          },
          "fields": {
            "description": "Comma-separated field paths to return (e.g. \"id,title,startsAt\"). Supports dotted paths for nested objects. Omit to get the default field set.",
            "type": "string"
          }
        },
        "required": [
          "bookingId"
        ],
        "type": "object"
      },
      "name": "youcanbookme_get_booking"
    },
    {
      "description": "Fetch a single profile (booking page) by id. YCBM API: GET /v1/profiles/{profileId}. Use `fields` to select fields, including nested sub-resources (appointmentTypes, teamMembers, locations). Returns the profile object.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "fields": {
            "description": "Comma-separated field paths to return (e.g. \"id,title,startsAt\"). Supports dotted paths for nested objects. Omit to get the default field set.",
            "type": "string"
          },
          "profileId": {
            "description": "The profile (booking page) id.",
            "type": "string"
          }
        },
        "required": [
          "profileId"
        ],
        "type": "object"
      },
      "name": "youcanbookme_get_profile"
    },
    {
      "description": "List the appointment types configured on a profile (booking page). YCBM API: GET /v1/profiles/{profileId} with an appointmentTypes field selection. Returns the profile's appointmentTypes block (each with id, name, description, slotLength, price).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "profileId": {
            "description": "The profile (booking page) id.",
            "type": "string"
          }
        },
        "required": [
          "profileId"
        ],
        "type": "object"
      },
      "name": "youcanbookme_list_appointment_types"
    },
    {
      "description": "List the accounts/calendars available to your account — used to find the calendarId for a team member. YCBM API: GET /v1/{accountId}/availableAccounts (accountId is taken from your configured credentials). Returns a JSON array.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {},
        "type": "object"
      },
      "name": "youcanbookme_list_available_accounts"
    },
    {
      "description": "List bookings (appointments) on the YouCanBookMe account. YCBM API: GET /v1/bookings. Filter by profileId (booking page), an after/before time window, cancelled status, and a free-text searchText; select fields with `fields`. Paginated via page (0-based) + maxResults. Returns a JSON array of bookings.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "after": {
            "description": "Only bookings starting AFTER this time (ISO 8601, e.g. 2026-07-01T00:00:00Z).",
            "type": "string"
          },
          "before": {
            "description": "Only bookings starting BEFORE this time (ISO 8601).",
            "type": "string"
          },
          "cancelled": {
            "description": "Filter by cancelled status: true = only cancelled, false = only active. Omit for all.",
            "type": "boolean"
          },
          "fields": {
            "description": "Comma-separated field paths to return (e.g. \"id,title,startsAt\"). Supports dotted paths for nested objects. Omit to get the default field set.",
            "type": "string"
          },
          "maxResults": {
            "description": "Maximum records per page (page size). Defaults to the API's own default when omitted.",
            "maximum": 1000,
            "minimum": 1,
            "type": "integer"
          },
          "page": {
            "description": "Pagination page number, 0-based (offset-based paging). Use with maxResults.",
            "maximum": 9007199254740991,
            "minimum": 0,
            "type": "integer"
          },
          "params": {
            "additionalProperties": {
              "type": [
                "string",
                "number",
                "boolean"
              ]
            },
            "description": "Additional documented query-string filters to send verbatim (merged with the typed params above).",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "profileId": {
            "description": "Restrict to bookings on this profile (booking page) id.",
            "type": "string"
          },
          "searchText": {
            "description": "Free-text search across booking fields (e.g. attendee name/email).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "youcanbookme_list_bookings"
    },
    {
      "description": "List the locations configured on a profile (booking page). YCBM API: GET /v1/profiles/{profileId} with a locations field selection. Returns the profile's locations block (each with id, kind, value, notes, strategy).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "profileId": {
            "description": "The profile (booking page) id.",
            "type": "string"
          }
        },
        "required": [
          "profileId"
        ],
        "type": "object"
      },
      "name": "youcanbookme_list_locations"
    },
    {
      "description": "List all profiles (booking pages) on the account. YCBM API: GET /v1/profiles. A profile is a bookable page with its own subdomain, appointment types, team members, and locations. Use `fields` to select fields (e.g. \"id,title,subdomain\"). Paginated via page (0-based) + maxResults. Returns a JSON array of profiles.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "fields": {
            "description": "Comma-separated field paths to return (e.g. \"id,title,startsAt\"). Supports dotted paths for nested objects. Omit to get the default field set.",
            "type": "string"
          },
          "maxResults": {
            "description": "Maximum records per page (page size). Defaults to the API's own default when omitted.",
            "maximum": 1000,
            "minimum": 1,
            "type": "integer"
          },
          "page": {
            "description": "Pagination page number, 0-based (offset-based paging). Use with maxResults.",
            "maximum": 9007199254740991,
            "minimum": 0,
            "type": "integer"
          },
          "params": {
            "additionalProperties": {
              "type": [
                "string",
                "number",
                "boolean"
              ]
            },
            "description": "Additional documented query-string filters to send verbatim (merged with the typed params above).",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "name": "youcanbookme_list_profiles"
    },
    {
      "description": "List the team members configured on a profile (booking page). YCBM API: GET /v1/profiles/{profileId} with a teamMembers field selection. Returns the profile's teamMembers block (each member has id, name, email, description, pic, calendarId).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "profileId": {
            "description": "The profile (booking page) id.",
            "type": "string"
          }
        },
        "required": [
          "profileId"
        ],
        "type": "object"
      },
      "name": "youcanbookme_list_team_members"
    },
    {
      "description": "Power-user escape hatch: GET any YCBM API path not wrapped by a dedicated tool. READ-ONLY — only GET is allowed. Pass the FULL API path after the origin, starting with a slash, INCLUDING any query string, e.g. \"/v1/bookings?maxResults=5\" or \"/v1/profiles\". Returns the parsed JSON.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "path": {
            "description": "Full API path after the origin, starting with \"/\", e.g. \"/v1/bookings?maxResults=5\".",
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "name": "youcanbookme_request"
    },
    {
      "description": "MUTATES YouCanBookMe data: updates an appointment type on a profile. YCBM API: PATCH /v1/profiles/{profileId}/appointmenttypes/items/{appointmentTypeId} (JSON, partial update). Pass changed fields (name, description, slotLength, price, ...) via the `fields` passthrough. Path ids are never sent in the body.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "appointmentTypeId": {
            "description": "The appointment type id to update (path only; required).",
            "type": "string"
          },
          "fields": {
            "additionalProperties": {},
            "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "profileId": {
            "description": "The profile (booking page) id (path only; required).",
            "type": "string"
          }
        },
        "required": [
          "profileId",
          "appointmentTypeId"
        ],
        "type": "object"
      },
      "name": "youcanbookme_update_appointment_type"
    },
    {
      "description": "MUTATES YouCanBookMe data: updates an existing booking (reschedule, rename, mark cancelled/no-show). YCBM API: PATCH /v1/bookings/{bookingId} (JSON, partial update). Set any of title/startsAt/endsAt/cancelled/noShow/timeZone/locale/units; use the `fields` passthrough for answers/linkFields or other documented fields. The path id is never sent in the body.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "bookingId": {
            "description": "The booking id to update (path only; required).",
            "type": "string"
          },
          "cancelled": {
            "description": "Set true to cancel the booking, false to un-cancel.",
            "type": "boolean"
          },
          "endsAt": {
            "description": "New end time, ISO 8601 (reschedule).",
            "type": "string"
          },
          "fields": {
            "additionalProperties": {},
            "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "locale": {
            "description": "New locale.",
            "type": "string"
          },
          "noShow": {
            "description": "Mark the attendee as a no-show (true) or not (false).",
            "type": "boolean"
          },
          "startsAt": {
            "description": "New start time, ISO 8601 (reschedule).",
            "type": "string"
          },
          "timeZone": {
            "description": "New IANA time zone.",
            "type": "string"
          },
          "title": {
            "description": "New booking title.",
            "type": "string"
          },
          "units": {
            "description": "New number of slot units.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          }
        },
        "required": [
          "bookingId"
        ],
        "type": "object"
      },
      "name": "youcanbookme_update_booking"
    },
    {
      "description": "MUTATES YouCanBookMe data: updates a profile's (booking page) configuration. YCBM API: PATCH /v1/profiles/{profileId} (JSON, partial update). Pass the fields to change via the `fields` passthrough (e.g. { title, subdomain, ... }) — profile fields are numerous and use YCBM's own names. The path id is never sent in the body.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "fields": {
            "additionalProperties": {},
            "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "profileId": {
            "description": "The profile (booking page) id to update (path only; required).",
            "type": "string"
          }
        },
        "required": [
          "profileId"
        ],
        "type": "object"
      },
      "name": "youcanbookme_update_profile"
    },
    {
      "description": "MUTATES YouCanBookMe data: updates a team member on a profile. YCBM API: PATCH /v1/profiles/{profileId}/teammembers/items/{teamMemberId} (JSON, partial update). Pass changed fields (name, email, description, calendarId, ...) via the `fields` passthrough. Path ids are never sent in the body.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "fields": {
            "additionalProperties": {},
            "description": "Additional documented YCBM fields to send in the JSON write body — merged OVER the typed fields above.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "profileId": {
            "description": "The profile (booking page) id (path only; required).",
            "type": "string"
          },
          "teamMemberId": {
            "description": "The team member id to update (path only; required).",
            "type": "string"
          }
        },
        "required": [
          "profileId",
          "teamMemberId"
        ],
        "type": "object"
      },
      "name": "youcanbookme_update_team_member"
    }
  ]
}

What the leaf hashes

{"body":"45bd3dcd051362639d599c8395333f7f3974fe25fb2323048d26e0316b074b89","id":301774,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793054284018715,"prev":null,"subject":"c1f087b9-7dad-42e2-988a-d6156636a01b","subject_kind":"endpoint"}

Proof

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

  1. 0x37cfef911c4dfbfa71731ded18a18839975e57588e25c56d61a5757cbf899aca
  2. 0x7b1edf0e7000bddcaa243f4b9779f7eed40fe03a1862f1b8a0fdf809957eccab
  3. 0x1a23f7b566d479ecad161ee19352a8f08ab7a1185de1f9c7c045ca6de322bf66
  4. 0xa7ec450fbf7e2e074b707948b4c42d3d89b91628246b2724e1798b1bf06ca499
  5. 0x1a404d5e24e4a5e40d888e35233e6a948766e54074c34452c29bd15c71109574
  6. 0x789f594f0de1d145432e485b0f4af16dfe19422e7303b7d0e406aea3a5f63332
  7. 0x2a4f8b0005ca0f7428b59e3b4cc674342e5f9d03d2bd5ed2cbb71b016ca3f7e5
  8. 0x832b202c5455dedc9cff9fc0f67b28342fa193460ddb6fbd7d4f2ff6accbc5d8
  9. 0x764754234ab3e1712364682570aa09efad9eab8f9aca9fcf2c3483e2d73b33fa
  10. 0xf370684334adc6b079f585a03710778f6b7ca0015df6f2e316b4d716f88f1996
  11. 0x92b5da9306740c6310c9590169e789efc810ad3fa152b365777b6395fec4767f
  12. 0x8b23d34f6cd746f123b1e4d09449280800a81e00febe1fd9224b6802057238d5
  13. 0xdfc7a920beab71e6882e75c57bf136a5354c4ea989a35108a69046bc62059090
  14. 0x4338355a835617a26aa0bfcc971e84eb030d84e2aa840e3c8af958921dd080c7
  15. 0x610738e0c43687aded83c613c73de8b5226c73c375858a167436461c522ea213
  16. 0x06d71bfa7d8b41d62c8836efc2c601e1cc3772d9453596b2ae4950887f3310ca
  17. 0x8c756542e482157df0c36464d75c937b845e4423dbbcfad08f0cf8d5a16b9a13
  18. 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON