← The evidence ledger
Evidence row 2496853
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint b288b652-ad5f-44d3-8448-a2287a063013
- Recorded
- Previous row
- #1289061
- Body SHA-256
- 0ba0b0977daeb8b86d9e4c32c01f61a5ae2ae330c854865e3554f29af6d92df0
- Leaf
- 0xef0b0bdd2570d2956d8f239ca9bf08b99a5291bc18c8398c41515eab50faf6f9
What was observed
{
"count": 14,
"tools": [
{
"description": "A public web page with the results of a completed job, for your user to open or send to others. Anyone with the link can see it until the job expires.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"job_id": {
"description": "job_id returned by transcribe_url or create_upload.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"robot_key": {
"description": "The robot_key you received with your first job. Required to read or start your jobs.",
"type": "string"
}
},
"required": [
"job_id",
"robot_key"
],
"type": "object"
},
"name": "create_share_link"
},
{
"description": "For a file that is neither a public link nor attached in a ChatGPT chat (for example a file attached in another chat app). Returns upload_url (send the file there with an HTTP PUT, then call start_transcription) and upload_page_url (a page where your user uploads the file in a browser instead; the transcription then starts by itself).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"action_items": {
"description": "Also extract action items when the transcript is ready.",
"type": "boolean"
},
"content_type": {
"description": "MIME type, e.g. \"audio/mpeg\" or \"video/mp4\".",
"maxLength": 100,
"type": "string"
},
"filename": {
"description": "File name including extension, e.g. \"meeting.mp3\".",
"maxLength": 255,
"minLength": 1,
"type": "string"
},
"language": {
"description": "ISO 639-1 code such as \"en\". Omit to auto-detect.",
"maxLength": 16,
"type": "string"
},
"model": {
"description": "Default \"mai-transcribe\". See get_service_info.",
"enum": [
"whisper",
"mai-transcribe",
"gemini-transcribe"
],
"type": "string"
},
"robot_key": {
"description": "Pass the robot_key from your earlier jobs so all your jobs stay together. Omit on your very first call — a new one is returned.",
"type": "string"
},
"size_bytes": {
"description": "Exact file size in bytes (max 2 GB).",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"speaker_labels": {
"description": "Label who speaks when.",
"type": "boolean"
},
"summary": {
"description": "Also write an AI summary when the transcript is ready.",
"type": "boolean"
},
"translate_to_english": {
"description": "Translate the speech to English while transcribing. Only with model \"whisper\".",
"type": "boolean"
}
},
"required": [
"filename",
"content_type",
"size_bytes"
],
"type": "object"
},
"name": "create_upload"
},
{
"description": "Delete the uploaded file, the transcript and all other results of a job right away, instead of waiting for the automatic deletion within 24 hours of its creation. Cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"job_id": {
"description": "job_id returned by transcribe_url or create_upload.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"robot_key": {
"description": "The robot_key you received with your first job. Required to read or start your jobs.",
"type": "string"
}
},
"required": [
"job_id",
"robot_key"
],
"type": "object"
},
"name": "delete_job"
},
{
"description": "Price for transcribing a recording of a given length (EUR, plus price_usdc when USDC is on). For a robot linked to its user's account it also shows the user's free minutes left today, balance and daily limit left.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"duration_minutes": {
"description": "Length of the recording in minutes.",
"exclusiveMinimum": 0,
"maximum": 1440,
"type": "number"
},
"robot_key": {
"description": "Pass the robot_key from your earlier jobs so all your jobs stay together. Omit on your very first call — a new one is returned.",
"type": "string"
}
},
"required": [
"duration_minutes"
],
"type": "object"
},
"name": "estimate_cost"
},
{
"description": "Status and results of one job whose job_id you have (from transcribe_url, transcribe_file or create_upload; list_jobs finds a lost job_id). While status is \"waiting_for_upload\", \"queued\" or \"processing\", call it again every 10-20 seconds; each answer has a next_step. \"completed\": the transcript in the chosen format, download links and zip_url (all results in one ZIP), plus summary, action_items and translations when requested. \"payment_required\": a preview of the first 100 words and a payment_url to show your user; call get_job again after they pay. \"failed\": an error message. \"deleted\": the files are gone (within 24 hours of the job being created, or delete_job).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"format": {
"description": "Transcript format. \"txt\" (default): plain text. \"srt\" or \"vtt\": subtitles with timecodes. \"timed\": timestamps per segment, with speaker names if the job was created with speaker_labels: true.",
"enum": [
"txt",
"srt",
"vtt",
"timed"
],
"type": "string"
},
"job_id": {
"description": "job_id returned by transcribe_url or create_upload.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"robot_key": {
"description": "The robot_key you received with your first job. Required to read or start your jobs.",
"type": "string"
}
},
"required": [
"job_id",
"robot_key"
],
"type": "object"
},
"name": "get_job"
},
{
"description": "Call this first when you are new to convert.express, before quoting a price to your user, or when unsure whether a file, link or language is supported. Returns one JSON object: how_to_use (which tool to call in which order), free_use, price (per minute, minimum charges), models, language, speaker_labels, ai_extras (summary, action items, translation), output_formats, input (max file size, audio and video formats, supported links) and privacy. Takes no parameters and changes nothing.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "get_service_info"
},
{
"description": "Your jobs that still exist (jobs are deleted within 24 hours of being created), newest first, with their status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"robot_key": {
"description": "The robot_key you received with your first job. Required to read or start your jobs.",
"type": "string"
}
},
"required": [
"robot_key"
],
"type": "object"
},
"name": "list_jobs"
},
{
"description": "Pay for the full transcript of a job whose get_job status is \"payment_required\", with USDC on Tempo or a card your user shared through a Stripe Shared Payment Token (MPP). Call without payment: you get a payment challenge with the exact price — in EUR for a card, in USDC for Tempo. Your MPP client pays it and calls again. Without an MPP wallet, show payment_url from get_job to your user instead.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"job_id": {
"description": "job_id returned by transcribe_url or create_upload.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"robot_key": {
"description": "The robot_key you received with your first job. Required to read or start your jobs.",
"type": "string"
}
},
"required": [
"job_id",
"robot_key"
],
"type": "object"
},
"name": "pay_job"
},
{
"description": "Ask for an AI summary or action items of a completed job. Returns at once; the result appears in get_job (\"summary\" / \"action_items\").",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"job_id": {
"description": "job_id returned by transcribe_url or create_upload.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"robot_key": {
"description": "The robot_key you received with your first job. Required to read or start your jobs.",
"type": "string"
},
"type": {
"description": "\"summary\" or \"action_items\".",
"enum": [
"summary",
"action_items"
],
"type": "string"
}
},
"required": [
"job_id",
"robot_key",
"type"
],
"type": "object"
},
"name": "request_summary"
},
{
"description": "Tell the convert.express team about a bug, a missing feature, or a question — from you or your user. A human reads every message; there is no automatic reply. Include reply_email only if your user wants an answer.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"message": {
"description": "The message in plain text. Up to 2000 characters are kept.",
"maxLength": 4000,
"minLength": 1,
"type": "string"
},
"reply_email": {
"description": "Email address for a human reply, only with your user's consent.",
"maxLength": 254,
"type": "string"
},
"robot_key": {
"description": "Pass the robot_key from your earlier jobs so all your jobs stay together. Omit on your very first call — a new one is returned.",
"type": "string"
},
"type": {
"description": "What kind of message this is.",
"enum": [
"feature_request",
"bug",
"question",
"other"
],
"type": "string"
}
},
"required": [
"type",
"message"
],
"type": "object"
},
"name": "send_feedback"
},
{
"description": "Call after the PUT to upload_url has finished. Checks the file arrived and queues it.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"job_id": {
"description": "job_id returned by transcribe_url or create_upload.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"robot_key": {
"description": "The robot_key you received with your first job. Required to read or start your jobs.",
"type": "string"
}
},
"required": [
"job_id",
"robot_key"
],
"type": "object"
},
"name": "start_transcription"
},
{
"description": "Start transcribing an audio or video file your user attached in a ChatGPT chat. ChatGPT fills in a temporary download link and convert.express downloads the file from it. Other chat apps cannot fill in that link: use create_upload for files attached there. Returns job_id; then poll get_job.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"action_items": {
"description": "Also extract action items when the transcript is ready.",
"type": "boolean"
},
"file": {
"description": "An audio or video file your user attached in a ChatGPT chat.",
"properties": {
"download_url": {
"description": "Temporary https:// link to the file, filled in by the chat client.",
"maxLength": 4096,
"type": "string"
},
"file_id": {
"description": "The chat client's id for the file.",
"maxLength": 200,
"type": "string"
},
"file_name": {
"description": "Original file name, shown in the job.",
"maxLength": 255,
"type": "string"
},
"mime_type": {
"description": "MIME type, e.g. \"audio/mpeg\".",
"maxLength": 100,
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"type": "object"
},
"language": {
"description": "ISO 639-1 code such as \"en\". Omit to auto-detect.",
"maxLength": 16,
"type": "string"
},
"model": {
"description": "Default \"mai-transcribe\". See get_service_info.",
"enum": [
"whisper",
"mai-transcribe",
"gemini-transcribe"
],
"type": "string"
},
"robot_key": {
"description": "Pass the robot_key from your earlier jobs so all your jobs stay together. Omit on your very first call — a new one is returned.",
"type": "string"
},
"speaker_labels": {
"description": "Label who speaks when.",
"type": "boolean"
},
"summary": {
"description": "Also write an AI summary when the transcript is ready.",
"type": "boolean"
},
"translate_to_english": {
"description": "Translate the speech to English while transcribing. Only with model \"whisper\".",
"type": "boolean"
}
},
"required": [
"file"
],
"type": "object"
},
"name": "transcribe_file"
},
{
"description": "Start transcribing a media file from a public link (direct file link, YouTube video or Simplecast podcast episode page). Returns job_id and robot_key; then poll get_job.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"action_items": {
"description": "Also extract action items when the transcript is ready.",
"type": "boolean"
},
"language": {
"description": "ISO 639-1 code such as \"en\". Omit to auto-detect.",
"maxLength": 16,
"type": "string"
},
"model": {
"description": "Default \"mai-transcribe\". See get_service_info.",
"enum": [
"whisper",
"mai-transcribe",
"gemini-transcribe"
],
"type": "string"
},
"robot_key": {
"description": "Pass the robot_key from your earlier jobs so all your jobs stay together. Omit on your very first call — a new one is returned.",
"type": "string"
},
"speaker_labels": {
"description": "Label who speaks when.",
"type": "boolean"
},
"summary": {
"description": "Also write an AI summary when the transcript is ready.",
"type": "boolean"
},
"translate_to_english": {
"description": "Translate the speech to English while transcribing. Only with model \"whisper\".",
"type": "boolean"
},
"url": {
"description": "https:// link to the audio/video file, a YouTube video or a Simplecast episode (…simplecast.com/episodes/… or player.simplecast.com/…).",
"maxLength": 2048,
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "transcribe_url"
},
{
"description": "Translate the transcript, subtitles (timecodes kept), summary or action items of a completed job into another language. Returns at once; the result appears in get_job under \"translations\".",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"job_id": {
"description": "job_id returned by transcribe_url or create_upload.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"robot_key": {
"description": "The robot_key you received with your first job. Required to read or start your jobs.",
"type": "string"
},
"source": {
"description": "What to translate. Default \"txt\". summary / action_items must exist first.",
"enum": [
"txt",
"srt",
"vtt",
"timed",
"summary",
"action_items"
],
"type": "string"
},
"target_language": {
"description": "Language name in English, e.g. \"German\", \"Brazilian Portuguese\", \"Japanese\".",
"maxLength": 40,
"minLength": 2,
"type": "string"
}
},
"required": [
"job_id",
"robot_key",
"target_language"
],
"type": "object"
},
"name": "translate"
}
]
}What the leaf hashes
{"body":"0ba0b0977daeb8b86d9e4c32c01f61a5ae2ae330c854865e3554f29af6d92df0","id":2496853,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793668813501009,"prev":1289061,"subject":"b288b652-ad5f-44d3-8448-a2287a063013","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (425475 rows).
- 0xef0b34b81a2aa92f0e829158acfb45fa1e44aeed301c7e6c2dddc40fdd1af963
- 0xf4f0c0548236e8ad5c5fb6ad97b7808269aedb7cd5cfc941d0ff77bdc17355fe
- 0x396723f0eaf3dffefa082ab89ee86df7b8d38185a8bbf786e82baba3ae8e7140
- 0xb4020f810085815b5abaf8eda31f73577b0c58fdc1cf5f11023c102821597d39
- 0xe08bc0e0f528984b2a5521d2c82ce995e1bedc9c6734b0b260b48475a3c366f9
- 0xafdb36090a8eeb919b4d700e95e349beddc81c57c2e53afecf82a4d5f0f0ebe3
- 0xc9416ce902298a0016fb3db3fc54d7499a8060b6ffb978ab9a3f90cfeab52dfb
- 0x67f9f621d6d702401973394e1f818135e5ef0071ba0e8dee43f7bfcaedbfb0ab
- 0x23e400dc6478a20741fd9ce1519f750654cfc437286241e393c9f69757d03100
- 0x63edce8eeb0c2822d10c3486d6bd0130b11eab28cbb6d970b44c6b97ebc0ed39
- 0xe32d67149b3ab2515478adf674b01afebcae77c0efe3369c1ea51eb09462cf3c
- 0x40503628e813f8ddcdce5088c1edce887d490d34ddbacedf2b89aae0441113e6
- 0x01e9de68aa9b43892927b1c264f77e0ac05047278992dbb0b29801b5ee9c6fd2
- 0x2548979bbd7b1568b5a14db6fca0201979c48165192f2b55f45fa21471031e4f
- 0xa29933ab8020ad948edbcf3e65194e73a6b113a0063231c1105b56c2d59ab97d
- 0xd60b16e6a71fbffc93a233ee89f916e50c0206a56f52c852b85e5a246b6b417c
- 0x85f3a27c16056a361d9ba33355a575ca7123f86de901b204c88953c4b8ea441a
- Day root
- 0xb646ffa569e24bf8336b0a15a9d98d0a2f1239f58e10c2b18a9d22e43343566a
- Chained
- 0x35e926359fd19031c6b5e08fb3b44f2524386a57c8fdd353336c185603f53d43
- Published
- On Arc Testnet, block 70601990: 0xa5f9dadba13cde129126b950e64b815e6833cb8ff53b75026c9dbe769c3768c7