addrbookFor publishers
← The evidence ledger

Evidence row 296549

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint c609b807-c38a-4d28-bc6a-7048ef118218
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
5958e2797e8902cbd441a7b90fcc99c03c725fbc37d157b430b0ba56b32f7ab5
Leaf
0xf034656abb3f0323357c9810d1442924300e1dd810eec8c0272c16eeb126bff3

What was observed

{
  "count": 14,
  "tools": [
    {
      "description": "Add a source to a channel and begin background ingestion. Maps to POST /v1/channels/{channelId}/sources. Only `type: video` is processed today; `document` and `website` are reserved and return a 501 error until released. Charged from the key owner's prepaid balance at the ingest rate: $0.01/min standard, $0.03/min whisper by default, 1-minute minimum per video. A short balance returns a 402 error. Requires the key's `write` scope.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "channel_id": {
            "description": "Channel to add the source to.",
            "type": "string"
          },
          "idempotency_key": {
            "description": "Idempotency-Key for safe retries.",
            "maxLength": 255,
            "type": "string"
          },
          "source": {
            "anyOf": [
              {
                "additionalProperties": false,
                "properties": {
                  "type": {
                    "const": "video",
                    "type": "string"
                  },
                  "youtube_video_id": {
                    "description": "YouTube video id, e.g. dQw4w9WgXcQ.",
                    "type": "string"
                  }
                },
                "required": [
                  "type",
                  "youtube_video_id"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "file_id": {
                    "description": "Id from a prior upload.",
                    "type": "string"
                  },
                  "mime_type": {
                    "description": "e.g. application/pdf.",
                    "type": "string"
                  },
                  "type": {
                    "const": "document",
                    "type": "string"
                  },
                  "url": {
                    "description": "Public document URL.",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "type"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "crawl_depth": {
                    "description": "Crawl depth (default 1).",
                    "maximum": 5,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "type": {
                    "const": "website",
                    "type": "string"
                  },
                  "url": {
                    "description": "URL to crawl.",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "type",
                  "url"
                ],
                "type": "object"
              }
            ],
            "description": "The source to add (discriminated on `type`)."
          }
        },
        "required": [
          "channel_id",
          "source"
        ],
        "type": "object"
      },
      "name": "add_source"
    },
    {
      "description": "Charged like `transcribe`. Expand the given YouTube URLs, charge for the new work and start an ingest job in an existing collection. Maps to POST /v1/collections/{collectionId}/sources. $0.01/min standard, $0.03/min whisper by default, 1-minute minimum per video. Videos already in the collection are free. Pass a `quote_id` from `quote` to be charged exactly that price. Poll `get_status` every 10–30 s until `status` is completed, partial or failed; `completed` means every accepted video is transcribed and indexed, so the collection is queryable. API key required (the key's `write` scope). Prices are the service defaults; `quote` returns the exact price.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "channel_url": {
            "description": "`https://www.youtube.com/@handle`, `/channel/UC…`, or a playlist URL.",
            "type": "string"
          },
          "channel_urls": {
            "description": "Several channel or playlist URLs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "collection_id": {
            "description": "Collection to add the sources to.",
            "type": "string"
          },
          "exclude_shorts": {
            "description": "Skip videos of 3 minutes or less when expanding a channel or playlist (default true); explicit video URLs are never skipped.",
            "type": "boolean"
          },
          "idempotency_key": {
            "description": "Idempotency-Key for safe retries.",
            "maxLength": 255,
            "type": "string"
          },
          "language": {
            "description": "Optional BCP-47 hint for transcription, e.g. en.",
            "type": "string"
          },
          "max_videos_per_channel": {
            "description": "Newest-first cap on eligible videos per channel or playlist (default 25); Shorts and videos below min_duration_seconds are skipped before the cap.",
            "maximum": 200,
            "minimum": 1,
            "type": "integer"
          },
          "min_duration_seconds": {
            "description": "Skip expanded videos shorter than this many seconds.",
            "maximum": 14400,
            "minimum": 0,
            "type": "integer"
          },
          "quality": {
            "description": "Transcription quality (default standard).",
            "enum": [
              "standard",
              "whisper"
            ],
            "type": "string"
          },
          "quote_id": {
            "description": "A `quote_id` from `quote`: charges exactly the quoted price (400 if unknown or expired).",
            "type": "string"
          },
          "url": {
            "description": "One YouTube URL (video, @handle, /channel/UC…, or playlist).",
            "format": "uri",
            "type": "string"
          },
          "urls": {
            "description": "Several YouTube URLs.",
            "items": {
              "format": "uri",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "collection_id"
        ],
        "type": "object"
      },
      "name": "add_sources"
    },
    {
      "description": "Free. Create an empty collection to add sources to later with `add_sources`. Maps to POST /v1/collections. Returns the collection and its `collection_token` (`ct_…`, shown once: store it; absent on an idempotent replay). API key required (the key's `write` scope). Prices are the service defaults; `quote` returns the exact price.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "idempotency_key": {
            "description": "Idempotency-Key for safe retries.",
            "maxLength": 255,
            "type": "string"
          },
          "title": {
            "description": "Display name for the collection.",
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "type": "object"
      },
      "name": "create_collection"
    },
    {
      "description": "Fetch a single source and its processing status (type-specific provenance included). Maps to GET /v1/sources/{sourceId}. Requires the key's `read` scope.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "source_id": {
            "description": "Source identifier, e.g. src_71b0e4.",
            "type": "string"
          }
        },
        "required": [
          "source_id"
        ],
        "type": "object"
      },
      "name": "get_source"
    },
    {
      "description": "Free. Get an ingest job started by `transcribe` or `add_sources`. Maps to GET /v1/jobs/{jobId}. Poll every 10–30 s until `status` is completed, partial or failed (terminal). `completed` means every accepted video is transcribed and indexed, so the collection is queryable; `partial` means some videos failed and were credited back (`credited_usd`); `videos.completed` / `videos.failed` count progress. Works with an API key or the collection's `ct_` token as the bearer. Prices are the service defaults; `quote` returns the exact price.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "job_id": {
            "description": "The `job_id` from `transcribe` or `add_sources`.",
            "type": "string"
          }
        },
        "required": [
          "job_id"
        ],
        "type": "object"
      },
      "name": "get_status"
    },
    {
      "description": "Free. Get the transcript of a video that is completed in one of your collections. Maps to GET /v1/videos/{youtubeId}/transcript. `collection_id` is required with an API key; with the collection's `ct_` token as the bearer it defaults to the token's collection. `format` is json (segments with timestamps, default) or text (one `[H:MM:SS] text` line per segment). 404 when the video is not completed in that collection, or the transcript predates the transcript cache. Prices are the service defaults; `quote` returns the exact price.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "collection_id": {
            "description": "Collection the video is completed in (required with an API key).",
            "type": "string"
          },
          "format": {
            "description": "json (default) or text.",
            "enum": [
              "json",
              "text"
            ],
            "type": "string"
          },
          "youtube_id": {
            "description": "The 11-character YouTube video id, e.g. dQw4w9WgXcQ.",
            "pattern": "^[A-Za-z0-9_-]{11}$",
            "type": "string"
          }
        },
        "required": [
          "youtube_id"
        ],
        "type": "object"
      },
      "name": "get_transcript"
    },
    {
      "description": "Get usage and spend in dollars for the calling key: the account balance (wallet_usd), this period's spend (consumed_usd), query count, and budget remaining. Maps to GET /v1/usage. Requires the key's `read` scope.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "period": {
            "description": "Billing period (default current).",
            "enum": [
              "current",
              "previous"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_usage"
    },
    {
      "description": "List the channels the calling key is scoped to. Maps to GET /v1/channels. Cursor-paginated. Requires the key's `read` scope.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "cursor": {
            "description": "Opaque pagination cursor from a prior response.",
            "type": "string"
          },
          "limit": {
            "description": "Max items (default 25).",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "list_channels"
    },
    {
      "description": "List the sources (video/document/website) in a channel, optionally filtered by type or status. Maps to GET /v1/channels/{channelId}/sources. Cursor-paginated. Requires the key's `read` scope.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "channel_id": {
            "description": "Channel whose sources to list.",
            "type": "string"
          },
          "cursor": {
            "description": "Opaque pagination cursor.",
            "type": "string"
          },
          "limit": {
            "description": "Max items (default 25).",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "status": {
            "description": "Filter by processing status.",
            "enum": [
              "queued",
              "ingesting",
              "indexing",
              "ready",
              "error"
            ],
            "type": "string"
          },
          "type": {
            "description": "Filter by source type.",
            "enum": [
              "video",
              "document",
              "website"
            ],
            "type": "string"
          }
        },
        "required": [
          "channel_id"
        ],
        "type": "object"
      },
      "name": "list_sources"
    },
    {
      "description": "Run a retrieval-augmented query against a channel's indexed knowledge base and return a generated answer with citations. Maps to POST /v1/query. Requires the key's `query` scope and access to the channel. Charged: $0.02 flat per call by default. Prices are the service defaults; `quote` returns the exact price.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "channel_id": {
            "description": "Channel to query. The key must be scoped to it.",
            "type": "string"
          },
          "idempotency_key": {
            "description": "Idempotency-Key for safe retries.",
            "maxLength": 255,
            "type": "string"
          },
          "query": {
            "description": "The natural-language question.",
            "maxLength": 4000,
            "minLength": 1,
            "type": "string"
          },
          "session_id": {
            "description": "Optional session for multi-turn continuity.",
            "type": "string"
          },
          "source_types": {
            "description": "Restrict retrieval to these source types.",
            "items": {
              "enum": [
                "video",
                "document",
                "website"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "top_k": {
            "description": "Chunks to retrieve (default 5).",
            "maximum": 20,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "channel_id",
          "query"
        ],
        "type": "object"
      },
      "name": "query_channel"
    },
    {
      "description": "Charged: $0.02 flat per call by default, no token multiplier. Ask a question of a collection and get a generated answer with citations. Maps to POST /v1/collections/{collectionId}/query. Query a collection once `get_status` says completed. With an API key it needs the key's `query` scope. Without an API key this tool is payable in USDC via x402: the first call returns a payment-required result (`isError` with the payment requirements in `structuredContent`); an x402-aware MCP client signs and retries the same call with `_meta['x402/payment']`, and the receipt returns in the result's `_meta['x402/payment-response']`. Never pay again after a 409 (already presented) or 502 (settlement unknown) result. Keyless, only the address that paid for the collection may query it. Prices are the service defaults; `quote` returns the exact price.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "collection_id": {
            "description": "Collection to query.",
            "type": "string"
          },
          "idempotency_key": {
            "description": "Idempotency-Key for safe retries.",
            "maxLength": 255,
            "type": "string"
          },
          "query": {
            "description": "The natural-language question.",
            "maxLength": 4000,
            "minLength": 1,
            "type": "string"
          },
          "session_id": {
            "description": "Optional session for multi-turn continuity.",
            "type": "string"
          }
        },
        "required": [
          "collection_id",
          "query"
        ],
        "type": "object"
      },
      "name": "query_collection"
    },
    {
      "description": "Free. Expand YouTube URLs exactly as an ingest would and return the price, the per-video lines and the per-source rejections. Maps to POST /v1/quote. $0.01/min standard, $0.03/min whisper by default, 1-minute minimum per video. The `quote_id` is valid for 15 minutes; pass it to `transcribe` or `add_sources` to be charged exactly this price. Pass `collection_id` to price against an existing collection (videos already in it are free). At least one of url, urls, channel_url, channel_urls. Requires the key's `read` scope. Prices are the service defaults; `quote` returns the exact price.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "channel_url": {
            "description": "`https://www.youtube.com/@handle`, `/channel/UC…`, or a playlist URL.",
            "type": "string"
          },
          "channel_urls": {
            "description": "Several channel or playlist URLs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "collection_id": {
            "description": "Price against this collection (videos already in it are free).",
            "type": "string"
          },
          "exclude_shorts": {
            "description": "Skip videos of 3 minutes or less when expanding a channel or playlist (default true); explicit video URLs are never skipped.",
            "type": "boolean"
          },
          "language": {
            "description": "Optional BCP-47 hint for transcription, e.g. en.",
            "type": "string"
          },
          "max_videos_per_channel": {
            "description": "Newest-first cap on eligible videos per channel or playlist (default 25); Shorts and videos below min_duration_seconds are skipped before the cap.",
            "maximum": 200,
            "minimum": 1,
            "type": "integer"
          },
          "min_duration_seconds": {
            "description": "Skip expanded videos shorter than this many seconds.",
            "maximum": 14400,
            "minimum": 0,
            "type": "integer"
          },
          "quality": {
            "description": "Transcription quality (default standard).",
            "enum": [
              "standard",
              "whisper"
            ],
            "type": "string"
          },
          "url": {
            "description": "One YouTube URL (video, @handle, /channel/UC…, or playlist).",
            "format": "uri",
            "type": "string"
          },
          "urls": {
            "description": "Several YouTube URLs.",
            "items": {
              "format": "uri",
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "name": "quote"
    },
    {
      "description": "Ask a question across about 490 curated 2026 conference talks and get a generated answer whose citations give each talk's video URL (with t=) and start_seconds, plus its conference, year and speakers. Optional filters: conference (one of ai-engineer-worlds-fair, ai-engineer-europe, kubecon-eu, google-cloud-next, microsoft-build, pycon-us, google-io, code-with-claude, openai-devday), year, and speaker (part of a name, case-insensitive; speakers are known for about half the talks, so a speaker filter misses the rest). A filter that matches no talk answers `answer: null` and costs nothing. Maps to POST /v1/search/talks. Charged: $0.02 flat per call by default, or free within the daily free allowance. With an API key it needs the key's `query` scope. Without an API key this tool is payable in USDC via x402: the first call returns a payment-required result (`isError` with the payment requirements in `structuredContent`); an x402-aware MCP client signs and retries the same call with `_meta['x402/payment']`, and the receipt returns in the result's `_meta['x402/payment-response']`. Never pay again after a 409 (already presented) or 502 (settlement unknown) result. Prices are the service defaults; `quote` returns the exact price.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "conference": {
            "description": "Conference slug: ai-engineer-worlds-fair, ai-engineer-europe, kubecon-eu, google-cloud-next, microsoft-build, pycon-us, google-io, code-with-claude, openai-devday.",
            "type": "string"
          },
          "idempotency_key": {
            "description": "Idempotency-Key for safe retries.",
            "maxLength": 255,
            "type": "string"
          },
          "question": {
            "description": "The natural-language question.",
            "maxLength": 4000,
            "minLength": 1,
            "type": "string"
          },
          "speaker": {
            "description": "Part of a speaker name, case-insensitive.",
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "year": {
            "description": "Conference year, e.g. 2026.",
            "type": "integer"
          }
        },
        "required": [
          "question"
        ],
        "type": "object"
      },
      "name": "search_talks"
    },
    {
      "description": "Charged. Create a collection and start an ingest job for the given YouTube URLs in one call. Maps to POST /v1/transcribe. $0.01/min standard, $0.03/min whisper by default, 1-minute minimum per video. Pass a `quote_id` from `quote` to be charged exactly that price. Returns `job_id`, `collection_id` and `collection_token` (`ct_…`, shown once: store it; it reads this collection without an API key). Poll `get_status` every 10–30 s until `status` is completed, partial or failed; `completed` means every accepted video is transcribed and indexed, so the collection is queryable. With an API key it needs the key's `write` scope. Without an API key this tool is payable in USDC via x402: the first call returns a payment-required result (`isError` with the payment requirements in `structuredContent`); an x402-aware MCP client signs and retries the same call with `_meta['x402/payment']`, and the receipt returns in the result's `_meta['x402/payment-response']`. Never pay again after a 409 (already presented) or 502 (settlement unknown) result. Keyless `transcribe` takes one channel-like source and at most 3 videos. Prices are the service defaults; `quote` returns the exact price.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "channel_url": {
            "description": "`https://www.youtube.com/@handle`, `/channel/UC…`, or a playlist URL.",
            "type": "string"
          },
          "channel_urls": {
            "description": "Several channel or playlist URLs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "exclude_shorts": {
            "description": "Skip videos of 3 minutes or less when expanding a channel or playlist (default true); explicit video URLs are never skipped.",
            "type": "boolean"
          },
          "idempotency_key": {
            "description": "Idempotency-Key for safe retries.",
            "maxLength": 255,
            "type": "string"
          },
          "language": {
            "description": "Optional BCP-47 hint for transcription, e.g. en.",
            "type": "string"
          },
          "max_videos_per_channel": {
            "description": "Newest-first cap on eligible videos per channel or playlist (default 25); Shorts and videos below min_duration_seconds are skipped before the cap.",
            "maximum": 200,
            "minimum": 1,
            "type": "integer"
          },
          "min_duration_seconds": {
            "description": "Skip expanded videos shorter than this many seconds.",
            "maximum": 14400,
            "minimum": 0,
            "type": "integer"
          },
          "quality": {
            "description": "Transcription quality (default standard).",
            "enum": [
              "standard",
              "whisper"
            ],
            "type": "string"
          },
          "quote_id": {
            "description": "A `quote_id` from `quote`: charges exactly the quoted price (400 if unknown or expired).",
            "type": "string"
          },
          "title": {
            "description": "Title for the new collection (default: generated).",
            "type": "string"
          },
          "url": {
            "description": "One YouTube URL (video, @handle, /channel/UC…, or playlist).",
            "format": "uri",
            "type": "string"
          },
          "urls": {
            "description": "Several YouTube URLs.",
            "items": {
              "format": "uri",
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "name": "transcribe"
    }
  ]
}

What the leaf hashes

{"body":"5958e2797e8902cbd441a7b90fcc99c03c725fbc37d157b430b0ba56b32f7ab5","id":296549,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793051800641456,"prev":null,"subject":"c609b807-c38a-4d28-bc6a-7048ef118218","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. 0xf0344e24fea371e1313cb50bd1c29d53ac9a60a7c977fbd25063f8830f3ad5dd
  2. 0x398d36309ce0bbff2a16101d1144a10feaadc28b10feaf2d24c496fbbe724f27
  3. 0x5b07983c02ac034a303a6bcf121b5a5fa8f6faccfb1abedb70c05535ae5bec62
  4. 0x000e2e8f1116ec6a2a340b216391f8e2cb0c2c6a89dcb11411aa0f29986785fa
  5. 0x00b2377f8f988ef2516f76447ed3a7eea490dba97c1d59e367c661e305ff87d4
  6. 0xb68aa268478321297fe492d1010edef22ddaa6e19191df45f4fbe2a2de641547
  7. 0x67ab5adfc21a573056dfd6547fd76fc037e1eacdc07072be728c247f2b2dca4b
  8. 0xefb91b0fc889a89dfc773bb556f19989e94df239e85de62378a2b67c15b9e026
  9. 0xc75ce0cd46f8a59177489cb9a7e54917eec406d88c64c887fbf9be19288f7781
  10. 0x3596b9717d8451909e6f610690c73b18907f0580f92978c2a8862668158a8f31
  11. 0xe34b4862878cc4926f0e4b84b3f031ef1f0cf0de9bf8fb3c13adbc6abc010ee1
  12. 0xb0cc0b4ce5a68e83d3e3e55b0387f828adf6f5eb6cfa666d75f6e16ed9d89c1f
  13. 0x746e9e5b6765727b6b96f41204cc115b0302259f6c67be0cf0efbf245601d500
  14. 0x614d844c9e0509d9f9e63697aa2935555bce5f13695a8dc0047aa9e9898d70b3
  15. 0x95657a7d540ed6cac0bde9995782333b2562a9a6641853269ac95148827410f0
  16. 0x5fb5dda563336cd1bc1b9f44c52b76237ae72ed2145cb9290f39f304ca7dd678
  17. 0x74a0a08e4e7ab9aa5bfbead33dec7e1c7e8e364cff69a63720d764bbe987aadc
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON