← The evidence ledger
Evidence row 300912
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 3ea3925c-dfad-4f23-a541-a3721790c46c
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- d9d1bf3c17430170d4486bcae30f4010383949a9c19998ed07ad5f2df42cb8ca
- Leaf
- 0x2ccc278f2a7ba34ac0bd0281229b63c63c04cfd905ee1b200c4e9925b7ed2d4c
What was observed
{
"count": 10,
"tools": [
{
"description": "Register a webhook so Oura notifies your callback URL when data changes. Oura verifies the URL before activating it, and the subscription EXPIRES — renew it with oura_renew_webhook_subscription. Oura: POST /v2/webhook/subscription.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"callback_url": {
"description": "The HTTPS URL Oura should call.",
"type": "string"
},
"data_type": {
"description": "Which collection to watch, e.g. daily_sleep or workout.",
"type": "string"
},
"event_type": {
"description": "Which change to be notified about.",
"enum": [
"create",
"update",
"delete"
],
"type": "string"
},
"verification_token": {
"description": "A secret Oura echoes back so you can verify the callback.",
"type": "string"
}
},
"required": [
"callback_url",
"verification_token",
"event_type",
"data_type"
],
"type": "object"
},
"name": "oura_create_webhook_subscription"
},
{
"description": "Remove a webhook subscription. Notifications stop immediately. Oura: DELETE /v2/webhook/subscription/{id}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"subscription_id": {
"description": "The subscription to delete.",
"type": "string"
}
},
"required": [
"subscription_id"
],
"type": "object"
},
"name": "oura_delete_webhook_subscription"
},
{
"description": "Fetch a single document by id from one collection. Ids come from oura_list_documents. Oura: GET /v2/usercollection/{collection}/{document_id}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"collection": {
"description": "Which collection the document belongs to.",
"enum": [
"daily_activity",
"daily_cardiovascular_age",
"daily_readiness",
"daily_resilience",
"daily_sleep",
"daily_spo2",
"daily_stress",
"enhanced_tag",
"rest_mode_period",
"ring_configuration",
"session",
"sleep",
"sleep_time",
"tag",
"vO2_max",
"workout"
],
"type": "string"
},
"document_id": {
"description": "The document's id.",
"type": "string"
},
"sandbox": {
"description": "Read Oura's synthetic sandbox data instead of the wearer's real data. Use this to learn a response shape without a ring.",
"type": "boolean"
}
},
"required": [
"collection",
"document_id"
],
"type": "object"
},
"name": "oura_get_document"
},
{
"description": "Fetch individual heart-rate samples over a DATETIME range. This collection is sampled continuously, so it uses start_datetime/end_datetime rather than dates, and can return a great many points — narrow the window or pass latest. Oura: GET /v2/usercollection/heartrate.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"end_datetime": {
"description": "ISO-8601 end.",
"type": "string"
},
"latest": {
"description": "Return only the most recent sample.",
"type": "boolean"
},
"next_token": {
"description": "Cursor from the previous page's next_token. Omit for the first page.",
"type": "string"
},
"sandbox": {
"description": "Read Oura's synthetic sandbox data instead of the wearer's real data. Use this to learn a response shape without a ring.",
"type": "boolean"
},
"start_datetime": {
"description": "ISO-8601 start, e.g. 2026-08-01T00:00:00Z.",
"type": "string"
}
},
"type": "object"
},
"name": "oura_get_heartrate"
},
{
"description": "Fetch the wearer's profile — age, weight, height, biological sex and email. Oura: GET /v2/usercollection/personal_info.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sandbox": {
"description": "Read Oura's synthetic sandbox data instead of the wearer's real data. Use this to learn a response shape without a ring.",
"type": "boolean"
}
},
"type": "object"
},
"name": "oura_get_personal_info"
},
{
"description": "Fetch ring battery readings over a DATETIME range, or just the latest. Oura: GET /v2/usercollection/ring_battery_level.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"end_datetime": {
"description": "ISO-8601 end.",
"type": "string"
},
"latest": {
"description": "Return only the most recent reading.",
"type": "boolean"
},
"next_token": {
"description": "Cursor from the previous page's next_token. Omit for the first page.",
"type": "string"
},
"sandbox": {
"description": "Read Oura's synthetic sandbox data instead of the wearer's real data. Use this to learn a response shape without a ring.",
"type": "boolean"
},
"start_datetime": {
"description": "ISO-8601 start.",
"type": "string"
}
},
"type": "object"
},
"name": "oura_get_ring_battery_level"
},
{
"description": "Fetch a single webhook subscription with its callback URL, event type and expiry. Oura: GET /v2/webhook/subscription/{id}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"subscription_id": {
"description": "The subscription's id.",
"type": "string"
}
},
"required": [
"subscription_id"
],
"type": "object"
},
"name": "oura_get_webhook_subscription"
},
{
"description": "List documents from one Oura collection over a date range. This is the main read: pick `collection` for what you want — daily_sleep and sleep for sleep, daily_readiness for recovery, daily_activity for movement, daily_stress and daily_resilience for load, workout and session for exercise, daily_spo2, daily_cardiovascular_age and vO2_max for cardiovascular measures, tag and enhanced_tag for the wearer's own annotations, rest_mode_period and ring_configuration for device state. Oura: GET /v2/usercollection/{collection}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"collection": {
"description": "Which document collection to read.",
"enum": [
"daily_activity",
"daily_cardiovascular_age",
"daily_readiness",
"daily_resilience",
"daily_sleep",
"daily_spo2",
"daily_stress",
"enhanced_tag",
"rest_mode_period",
"ring_configuration",
"session",
"sleep",
"sleep_time",
"tag",
"vO2_max",
"workout"
],
"type": "string"
},
"end_date": {
"description": "End of the range, YYYY-MM-DD.",
"type": "string"
},
"next_token": {
"description": "Cursor from the previous page's next_token. Omit for the first page.",
"type": "string"
},
"sandbox": {
"description": "Read Oura's synthetic sandbox data instead of the wearer's real data. Use this to learn a response shape without a ring.",
"type": "boolean"
},
"start_date": {
"description": "Start of the range, YYYY-MM-DD. Defaults to a recent window.",
"type": "string"
}
},
"required": [
"collection"
],
"type": "object"
},
"name": "oura_list_documents"
},
{
"description": "List the webhook subscriptions registered for the application. Oura: GET /v2/webhook/subscription.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
},
"name": "oura_list_webhook_subscriptions"
},
{
"description": "Extend a webhook subscription's expiry. Oura subscriptions lapse if not renewed, so this is the tool that keeps a live integration alive. Oura: PUT /v2/webhook/subscription/renew/{id}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"subscription_id": {
"description": "The subscription to renew.",
"type": "string"
}
},
"required": [
"subscription_id"
],
"type": "object"
},
"name": "oura_renew_webhook_subscription"
}
]
}What the leaf hashes
{"body":"d9d1bf3c17430170d4486bcae30f4010383949a9c19998ed07ad5f2df42cb8ca","id":300912,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793053722309855,"prev":null,"subject":"3ea3925c-dfad-4f23-a541-a3721790c46c","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).
- 0x2ccbc854d2768640ee3e1cde81aa734676f95ad02ca1fbc75950e1584190dd99
- 0x11b45ef2855923ac9d099fe233576df213f8eeb704608e358a2fff835539a7ee
- 0x59ee28064ba16d728cf17b52beeba24f16d2e0594dea60a3a7e813a9a4df39b0
- 0xffa81388327eb25d34be2132433be48c9dedb73950d342ebcf13844e10dbc573
- 0xb92fcc4c013fb2d99b2a1ccffe53c21a1f6989305f6c38b50a10999331456551
- 0x6c8e86ce9d0ab72188ae53bcf3e25ab015a70c9d8751e8263958eaca8f5b8fc7
- 0xfa66536cf73a2cf406195168e1cbaf30da31556b3bcebdeaca115a88a7e28e8e
- 0x77e219a1ec47d7a67038790942570dddabbeb63f85292e369aec6b7eff228a63
- 0x39cf12493c25bd9e76484bc5beae16c8e1ce53107efd9ba3a98a8a4e59d2d502
- 0x92ae512ac303ebf33e234dd8900de38bc100cacd7e3e6d4585dab96308c421ca
- 0x9f7d3cc11f13fc54c5221c4babc2273f69d77c4b805c79df41df74cfb0975d6c
- 0xf89d9951e0a8e08b9cf11177a1f4e0fd86d9facc5dfecaabbfe564675ebefef7
- 0xb87e8b32cda179c9e632e227bbd8a6d1f6f61d9d81bb92dbd4dd835d2b3b5caa
- 0x683955a5b2250ad50568d022a6580d8739b6aff1356779d72a773b088e7c289c
- 0x610738e0c43687aded83c613c73de8b5226c73c375858a167436461c522ea213
- 0x06d71bfa7d8b41d62c8836efc2c601e1cc3772d9453596b2ae4950887f3310ca
- 0x8c756542e482157df0c36464d75c937b845e4423dbbcfad08f0cf8d5a16b9a13
- 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
- 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
- Day root
- 0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
- Chained
- 0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
- Published
- On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae