← The evidence ledger
Evidence row 304608
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 2b63428c-d787-44f2-b848-9ccb22f8a6d7
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 00c3862399d4167a686d8f4b287ec7121283c14c24625c4c078b7b6399321cfe
- Leaf
- 0xcb194a02208970bc027e43bb5d286fa511632482b1aa34d3c1eed7cda14cfbc2
What was observed
{
"count": 5,
"tools": [
{
"description": "Confirm a group meeting at a specific time across several Lucie hosts (by @handle), creating ONE shared Google Calendar event with everyone invited. YOU (the connector's owner) are the organizer and host the event on your calendar — no organizer handle needed. This is a real write: it re-verifies every participant (you included) is free at that instant and refuses if anyone isn't — so it never double-books. Always call find_group_times first and copy an exact common-slot start. Before calling, confirm the time (in each person's zone), the participants, the title, and the reason. Requires you to be on Sync Pro (or a Lucie Membership) via your personal connector; everyone must have a live booking page.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"durationMinutes": {
"description": "Meeting length in minutes. Must be one the organizer offers.",
"exclusiveMinimum": 0,
"type": "integer"
},
"participantHandles": {
"description": "The other participants' @handles, e.g. [\"@lucie\", \"@taylor\"]. Each must have a live Lucie booking page. Leading @ optional.",
"items": {
"type": "string"
},
"maxItems": 8,
"minItems": 1,
"type": "array"
},
"reason": {
"description": "A short agenda/purpose, shared with everyone on the invite.",
"minLength": 1,
"type": "string"
},
"startAt": {
"description": "The exact ISO-8601 `start` copied verbatim from a find_group_times common slot (absolute UTC instant). Do NOT construct it from a wall-clock time.",
"type": "string"
},
"title": {
"description": "The meeting title, e.g. \"Q3 planning sync\".",
"minLength": 1,
"type": "string"
}
},
"required": [
"participantHandles",
"startAt",
"durationMinutes",
"title",
"reason"
],
"type": "object"
},
"name": "book_group_meeting"
},
{
"description": "Book a confirmed meeting on a Lucie Sync host's calendar at a specific start time. This is a real write: it creates a calendar event and emails both the host and the booker. Always call check_availability first and use one of the open slots it returns. Before calling, (1) show the booker the specific date/time you're about to book — in their own time zone — and get their explicit confirmation, and (2) collect their name, email, AND a brief reason for the meeting (ask for the reason if not given; it's required and shared with the host).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"bookerEmail": {
"description": "The booker's email. The confirmation and calendar invite are sent here.",
"format": "email",
"type": "string"
},
"bookerName": {
"description": "Full name of the person the meeting is for (the booker).",
"type": "string"
},
"durationMinutes": {
"description": "Meeting length in minutes. Must be one the host offers.",
"exclusiveMinimum": 0,
"type": "integer"
},
"handle": {
"description": "The host's booking handle, e.g. \"@alice\" or \"alice\" (the leading @ is optional).",
"type": "string"
},
"reason": {
"description": "A short description of why the booker wants to meet (the agenda / purpose). Required — ask the booker for it before booking. Shared with the host alongside the invite.",
"minLength": 1,
"type": "string"
},
"startAt": {
"description": "The exact ISO-8601 `start` value copied verbatim from a check_availability slot (an absolute UTC instant, e.g. 2026-07-28T17:00:00Z). Do NOT construct this from a local wall-clock time the booker said — that risks the wrong time zone; always copy the slot's start.",
"type": "string"
},
"viewerTimeZone": {
"description": "The BOOKER's IANA time zone (e.g. America/New_York) — the same one you passed to check_availability. Their confirmation email and reminders are written in this zone, so without it they read the host's zone instead and have to do the time-zone maths themselves.",
"type": "string"
}
},
"required": [
"handle",
"startAt",
"durationMinutes",
"bookerName",
"bookerEmail",
"reason"
],
"type": "object"
},
"name": "book_meeting"
},
{
"description": "Return the open meeting slots a Lucie Sync host offers, plus their booking rules (durations offered, minimum notice, how far ahead you can book, buffer between meetings). Returns only bookable slots and policy — never the host's raw calendar. Use this to find a time before proposing one to the user. Slots are absolute instants (ISO-8601 UTC). Pass the booker's viewerTimeZone so times display in THEIR local zone — the booker should never have to do time-zone math.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"durationMinutes": {
"description": "Desired meeting length in minutes. Must be one the host offers. Defaults to 30 if omitted.",
"exclusiveMinimum": 0,
"type": "integer"
},
"from": {
"description": "ISO-8601 start of the search window. Defaults to now + the host's minimum notice.",
"type": "string"
},
"handle": {
"description": "The host's booking handle, e.g. \"@alice\" or \"alice\" (from their lucie.network/book/@<handle> link). The leading @ is optional.",
"type": "string"
},
"to": {
"description": "ISO-8601 end of the search window. Defaults to the host's max-advance horizon.",
"type": "string"
},
"viewerTimeZone": {
"description": "The booker's IANA time zone, e.g. \"Asia/Singapore\" or \"America/New_York\". Pass the booker's own zone so slots are shown in their local time. Defaults to the host's zone if omitted.",
"type": "string"
}
},
"required": [
"handle"
],
"type": "object"
},
"name": "check_availability"
},
{
"description": "Create a Lucie group event (a poll) for several participants, pre-filled with candidate times when everyone is free (the intersection of their availability). Returns a vote link to share: participants pick which proposed times work, and people WITHOUT a Lucie handle can vote manually too. This is a write (creates a poll) but sends no emails and touches no calendars. Confirm the title, participants, and duration with the organizer before creating. Note: agent group scheduling is a Sync Pro feature — the organizer's email must be on Sync Pro (or a Lucie Membership).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"durationMinutes": {
"description": "Meeting length in minutes. Defaults to 30.",
"exclusiveMinimum": 0,
"type": "integer"
},
"from": {
"description": "ISO-8601 start of the search window.",
"type": "string"
},
"handles": {
"description": "Participants' @handles whose availability seeds the candidate times. The leading @ is optional.",
"items": {
"type": "string"
},
"maxItems": 8,
"minItems": 1,
"type": "array"
},
"organizerEmail": {
"description": "The organizer's email.",
"format": "email",
"type": "string"
},
"organizerName": {
"description": "The organizer's name (shown on the poll).",
"minLength": 1,
"type": "string"
},
"timeZone": {
"description": "IANA time zone for the poll's displayed times, e.g. \"America/New_York\". Defaults to UTC.",
"type": "string"
},
"title": {
"description": "The meeting title, e.g. \"Q3 planning sync\".",
"minLength": 1,
"type": "string"
},
"to": {
"description": "ISO-8601 end of the search window.",
"type": "string"
}
},
"required": [
"title",
"handles",
"organizerName",
"organizerEmail"
],
"type": "object"
},
"name": "create_group_event"
},
{
"description": "Given several Lucie hosts (by @handle), return the meeting times when ALL of them are free — the intersection of their availability — for a meeting of the given length. Read-only: never books, never exposes anyone's raw calendar (only the shared open slots). Use it to propose a group time. Times are absolute instants; pass viewerTimeZone so they show in the organizer's local zone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"durationMinutes": {
"description": "Meeting length in minutes. Must be one every participant offers. Defaults to 30.",
"exclusiveMinimum": 0,
"type": "integer"
},
"from": {
"description": "ISO-8601 start of the search window.",
"type": "string"
},
"handles": {
"description": "The participants' booking handles, e.g. [\"@alice\", \"@bob\"]. The leading @ is optional.",
"items": {
"type": "string"
},
"maxItems": 8,
"minItems": 1,
"type": "array"
},
"to": {
"description": "ISO-8601 end of the search window.",
"type": "string"
},
"viewerTimeZone": {
"description": "The organizer's IANA time zone, e.g. \"America/New_York\". Common times are shown in this zone. Defaults to UTC.",
"type": "string"
}
},
"required": [
"handles"
],
"type": "object"
},
"name": "find_group_times"
}
]
}What the leaf hashes
{"body":"00c3862399d4167a686d8f4b287ec7121283c14c24625c4c078b7b6399321cfe","id":304608,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793055980363922,"prev":null,"subject":"2b63428c-d787-44f2-b848-9ccb22f8a6d7","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).
- 0xcb1933490c6c01e06e6fceb4945b36bf71b36a0f93c01e45e8953fe771ec91bd
- 0x5b7084d51fa8552b923c205183d79b073bbdd36d7b362b912edd0cb71ceb6119
- 0x145317365adb813a1437a837ab10ece8fc87ac90c11bd54d2f4d8facf6fad380
- 0x44788a2896abee59839d6acbcc33113f8a0e3f5ce596ba93df9d2e1c0de9f7c0
- 0x9236d84d81231d4a9c0b677940e514c457ab6239b05793adce4788eb18a42f9c
- 0x1f1de0473ac968f7001d96462d922a148611697d3b36e349913d51a0c970856f
- 0xa884f134f1fc2a1da10141a1b680601b7df24fa6ab83fab177772209d2c112c1
- 0xb6bace605fd360da2c6c73e5667ed2942f4d76802a25f3b3c9e09090cdf8bed2
- 0x00fbcc59345b153dcb2b8f8346c33167365a33678310565bab22cd4cf59deac1
- 0x9789df0b68a0c56f96db447ac03549df4b97c545b493a676ef441af41eab593b
- 0xd854065b5246baf332a9ace158b6f99219183612c97d95e881ab7a7e7fb3bd6b
- 0x02a11c0460d1a42b6246e1c715f0c3098d82c39154a56e918e2c22b56ca2c978
- 0x985acd37cc044d5aa6ad959194da8e91c81045df83517891ed92f1763a9ab825
- 0x5b20d8aab05225a3497eadcce89d2e2a586a510fb31334793d3f46f88f0157c5
- 0xe94ca5b798e9899ad611e57835af42266e20f53f44977e487d81365e30972beb
- 0x703f95866af09c5e5d6ead7411e9a10f964a41a2aff64d4a55ff0053c023a023
- 0xd0651cb9bc8155eb52b5247d506e74b8a935057dc190ba52091702ac25ed3a40
- 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
- 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
- Day root
- 0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
- Chained
- 0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
- Published
- On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae