Transcribe audio with Rev.ai: submit jobs by URL, read transcripts, summaries and captions.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: permanently delete a finished (transcribed or failed) job with its media and transcript. This cannot be undone. A job still in progress cannot be deleted. DELETE /jobs/{id}.
Rev.ai job id (the `id` from revai_submit_job or revai_list_jobs).
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
WRITE: permanently delete a finished (transcribed or failed) job with its media and transcript. This cannot be undone. A job still in progress cannot be deleted. DELETE /jobs/{id}.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | Rev.ai job id (the `id` from revai_submit_job or revai_list_jobs). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Rev.ai job id (the `id` from revai_submit_job or revai_list_jobs)."
}
}
}The Rev.ai account behind the token: email, free, purchased, total and invoiced balance (USD) and whether HIPAA is on. GET /account.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Captions for a transcribed job as SRT (default) or WebVTT. Long files are paged by character: repeat with next_offset until it is null. For multichannel jobs pass speaker_channel. GET /jobs/{id}/captions.
| Argument | Type | Description |
|---|---|---|
| format | string | srt (default) or vtt. |
| job_id* | string | Rev.ai job id (the `id` from revai_submit_job or revai_list_jobs). |
| offset | integer | Start position from the previous reply's next_offset (default 0). |
| max_chars | integer | Most characters to return in one reply, 1000-20000 (default 15000). |
| speaker_channel | integer | Channel to caption, for jobs submitted with speaker_channels_count. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id"
],
"properties": {
"format": {
"enum": [
"srt",
"vtt"
],
"type": "string",
"description": "srt (default) or vtt."
},
"job_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Rev.ai job id (the `id` from revai_submit_job or revai_list_jobs)."
},
"offset": {
"type": "integer",
"maximum": 100000000,
"minimum": 0,
"description": "Start position from the previous reply's next_offset (default 0)."
},
"max_chars": {
"type": "integer",
"maximum": 20000,
"minimum": 1000,
"description": "Most characters to return in one reply, 1000-20000 (default 15000)."
},
"speaker_channel": {
"type": "integer",
"maximum": 32,
"minimum": 0,
"description": "Channel to caption, for jobs submitted with speaker_channels_count."
}
}
}One transcription job by id: status (in_progress, transcribed, failed), timestamps, duration, language, failure reason. Poll this until status is transcribed. GET /jobs/{id}.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | Rev.ai job id (the `id` from revai_submit_job or revai_list_jobs). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Rev.ai job id (the `id` from revai_submit_job or revai_list_jobs)."
}
}
}The summary of a transcribed job. It exists only if the job was submitted with summarization_type. Paged by character like revai_get_transcript. GET /jobs/{id}/transcript/summary.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | Rev.ai job id (the `id` from revai_submit_job or revai_list_jobs). |
| offset | integer | Start position from the previous reply's next_offset (default 0). |
| max_chars | integer | Most characters to return in one reply, 1000-20000 (default 15000). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Rev.ai job id (the `id` from revai_submit_job or revai_list_jobs)."
},
"offset": {
"type": "integer",
"maximum": 100000000,
"minimum": 0,
"description": "Start position from the previous reply's next_offset (default 0)."
},
"max_chars": {
"type": "integer",
"maximum": 20000,
"minimum": 1000,
"description": "Most characters to return in one reply, 1000-20000 (default 15000)."
}
}
}The transcript of a transcribed job. format=text (default) is plain text with speaker labels and timestamps; format=segments is a list of {speaker, start, end, text} per speaker turn (seconds). Long transcripts are paged: repeat with next_offset until it is null. GET /jobs/{id}/transcript.
| Argument | Type | Description |
|---|---|---|
| format | string | text (default) or segments. |
| job_id* | string | Rev.ai job id (the `id` from revai_submit_job or revai_list_jobs). |
| offset | integer | text: character position; segments: segment index. Use the previous reply's next_offset (default 0). |
| max_chars | integer | Most characters to return in one reply, 1000-20000 (default 15000). |
| group_channels_by | string | Multichannel jobs only: how to group words into turns. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id"
],
"properties": {
"format": {
"enum": [
"text",
"segments"
],
"type": "string",
"description": "text (default) or segments."
},
"job_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Rev.ai job id (the `id` from revai_submit_job or revai_list_jobs)."
},
"offset": {
"type": "integer",
"maximum": 100000000,
"minimum": 0,
"description": "text: character position; segments: segment index. Use the previous reply's next_offset (default 0)."
},
"max_chars": {
"type": "integer",
"maximum": 20000,
"minimum": 1000,
"description": "Most characters to return in one reply, 1000-20000 (default 15000)."
},
"group_channels_by": {
"enum": [
"speaker",
"sentence",
"word"
],
"type": "string",
"description": "Multichannel jobs only: how to group words into turns."
}
}
}List transcription jobs from the last 30 days, newest first: id, status (in_progress, transcribed, failed), name, duration, language, failure reason. Page with starting_after = the previous reply's next_starting_after. GET /jobs.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Jobs per page, 1-100 (default 20). |
| starting_after | string | Return jobs older than this job id (exclusive), from next_starting_after. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Jobs per page, 1-100 (default 20)."
},
"starting_after": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Return jobs older than this job id (exclusive), from next_starting_after."
}
}
}WRITE: start an asynchronous machine transcription job for an audio or video file at a public URL. It uses Rev.ai credit (free credit first). Returns the job with status in_progress; then poll revai_get_job and read the result with revai_get_transcript. Human transcription is not offered. POST /jobs.
| Argument | Type | Description |
|---|---|---|
| language | string | Spoken language as an ISO 639-1 code (en, en-us, en-gb, es, fr, de, ...). Default en. |
| metadata | string | A note stored with the job and returned with it (for example your own reference). |
| verbatim | boolean | Keep every false start and disfluency (default true for machine jobs). |
| media_url* | string | Direct download URL of the audio or video file. Rev.ai fetches it; it must be reachable without login. |
| speakers_count | integer | Number of speakers, if known (English, Spanish, French); improves speaker labels. |
| filter_profanity | boolean | Mask profanity in the transcript. |
| forced_alignment | boolean | More accurate per-word timestamps (en, fr, it, de, es). |
| skip_diarization |
| boolean |
| Do not label speakers. |
| skip_punctuation | boolean | Return words without punctuation. |
| summarization_type | string | Also create a summary, read later with revai_get_summary. |
| remove_disfluencies | boolean | Drop 'ums' and similar fillers. |
| delete_after_seconds | integer | Delete the job and its data this many seconds after it completes. |
| speaker_channels_count | integer | Number of audio channels with one speaker each. Billed per channel. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"media_url"
],
"properties": {
"language": {
"type": "string",
"pattern": "^[a-z]{2,3}(-[a-z]{2})?(\\/[a-z]{2})?$|^auto$",
"description": "Spoken language as an ISO 639-1 code (en, en-us, en-gb, es, fr, de, ...). Default en."
},
"metadata": {
"type": "string",
"maxLength": 512,
"description": "A note stored with the job and returned with it (for example your own reference)."
},
"verbatim": {
"type": "boolean",
"description": "Keep every false start and disfluency (default true for machine jobs)."
},
"media_url": {
"type": "string",
"pattern": "^https?:\\/\\/\\S+$",
"maxLength": 4096,
"description": "Direct download URL of the audio or video file. Rev.ai fetches it; it must be reachable without login."
},
"speakers_count": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Number of speakers, if known (English, Spanish, French); improves speaker labels."
},
"filter_profanity": {
"type": "boolean",
"description": "Mask profanity in the transcript."
},
"forced_alignment": {
"type": "boolean",
"description": "More accurate per-word timestamps (en, fr, it, de, es)."
},
"skip_diarization": {
"type": "boolean",
"description": "Do not label speakers."
},
"skip_punctuation": {
"type": "boolean",
"description": "Return words without punctuation."
},
"summarization_type": {
"enum": [
"paragraph",
"bullets"
],
"type": "string",
"description": "Also create a summary, read later with revai_get_summary."
},
"remove_disfluencies": {
"type": "boolean",
"description": "Drop 'ums' and similar fillers."
},
"delete_after_seconds": {
"type": "integer",
"maximum": 2592000,
"minimum": 0,
"description": "Delete the job and its data this many seconds after it completes."
},
"speaker_channels_count": {
"type": "integer",
"maximum": 8,
"minimum": 1,
"description": "Number of audio channels with one speaker each. Billed per channel."
}
}
}