---
canonical_url: "https://docs.composio.dev/toolkits/audioscrape_mcp"
markdown_url: "https://docs.composio.dev/toolkits/audioscrape_mcp.md"
product: "platform"
version: null
last_updated: null
---

# Audioscrape MCP

Audioscrape MCP lets agents search and retrieve speaker-attributed audio, transcripts, entities, and citations from public and workspace content.

- **Category:** model context protocol
- **Auth:** DCR_OAUTH
- **Composio-managed OAuth available?** No
- **Tools:** 20
- **Triggers:** 0
- **Slug:** `AUDIOSCRAPE_MCP`
- **Version:** 20260910_00

## Tools

### Create share link

**Slug:** `AUDIOSCRAPE_MCP_CREATE_SHARE_LINK`

Create a shareable URL for a specific audio moment that unfurls with a social-media preview card on Twitter, Slack, LinkedIn, etc. Useful when the user wants to share a moment they found via search.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `timestamp` | number | No | Optional moment within the audio (in seconds). If omitted, shares the whole item. |
| `episode_id` | integer | Yes | The audio item id (from search_audio results, get_transcript, or list_my_uploads) |
| `segment_text` | string | No | Optional quote text to embed in the share preview's social card |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes |  |
| `code` | string | Yes |  |
| `og_image_url` | string | Yes |  |

### Fetch

**Slug:** `AUDIOSCRAPE_MCP_FETCH`

Compatibility fetch: the full transcript of a search result as one plain-text document. Clients with structured-output support should prefer get_transcript, which returns typed segments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | A result id from the search tool (e.g. ep_12345) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `url` | string | Yes |  |
| `text` | string | Yes |  |
| `title` | string | Yes |  |
| `metadata` | object | No |  |

### Get charts

**Slug:** `AUDIOSCRAPE_MCP_GET_CHARTS`

Get current podcast chart rankings (Apple Podcasts, Spotify) by country. Shows the top podcasts for a given market.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rankings to return |
| `country` | string | No | Country code (e.g. 'us', 'gb', 'de') |
| `platform` | string ("apple" | "spotify") | No | Chart platform: 'apple' or 'spotify'. Omit to get both platforms (each item includes a 'platform' field). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | No |  |
| `country` | string | No |  |
| `rankings` | array | Yes |  |

### Get entity graph

**Slug:** `AUDIOSCRAPE_MCP_GET_ENTITY_GRAPH`

Explore the knowledge graph extracted from transcribed audio. Given an entity (person, company, topic...), returns its typed relationships (employed_by, founded, supports, opposes, competes_with, invested_in, ...) with quote evidence from the source audio (episode + timestamp). With second_entity, returns how two entities are connected — including co-occurrence evidence when no typed relationship exists. Relationships are machine-extracted claims with evidence, not verified facts.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of relationships to return |
| `entity` | string | Yes | Entity name or slug to explore (e.g. 'Elon Musk' or 'elon-musk') |
| `second_entity` | string | No | Optional second entity name or slug. When given, returns how the two entities are connected instead of the full neighborhood. |
| `relationship_type` | string | No | Optional filter to one relationship type, e.g. 'employed_by', 'founded', 'opposes', 'supports', 'competes_with', 'invested_in'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note` | string | No |  |
| `total` | integer | No |  |
| `entity` | object | Yes |  |
| `relationships` | array | Yes |  |

### Get episode overview

**Slug:** `AUDIOSCRAPE_MCP_GET_EPISODE_OVERVIEW`

START HERE for summaries and key takeaways: one small response with the episode's chapters (titled, timestamped), speakers, most-mentioned entities, and metadata. Orders of magnitude cheaper than reading the transcript. Drill into any chapter with get_transcript(episode_id, start_time=chapter.start_time); use search_audio to find specific quotes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `episode_id` | string | Yes | Episode ID (from search_audio, list_podcast_episodes, or get_transcript) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note` | string | No |  |
| `episode` | object | Yes |  |
| `podcast` | object | No |  |
| `chapters` | array | Yes |  |
| `speakers` | array | No |  |
| `top_entities` | array | No |  |
| `duration_seconds` | integer | No |  |

### Get speaker

**Slug:** `AUDIOSCRAPE_MCP_GET_SPEAKER`

Get a speaker's bio and audio appearances (across podcasts and uploads). Use search_speakers first to find the person_slug.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `person_slug` | string | Yes | URL slug of the person (e.g. 'elon-musk') |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | No |  |
| `name` | string | Yes |  |
| `slug` | string | Yes |  |
| `appearances` | array | No |  |
| `description` | string | No |  |

### Get transcript

**Slug:** `AUDIOSCRAPE_MCP_GET_TRANSCRIPT`

Get the transcript and metadata for one audio item — works for both podcast episodes and uploaded audio. For summaries/takeaways call get_episode_overview FIRST (chapters are far cheaper than reading everything). Returns speaker-identified segments with timestamps. Long episodes are paged to stay under client response limits: check the coverage object (first key in the response) — if truncated=true, call again with start_time=next_start_time until truncated=false; a truncated page means pagination, NOT missing transcription. A 3-hour episode is typically 3-5 calls.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `max_chars` | integer | No | Approximate response-size budget in bytes for the segment list (default 250000, max 400000). Lower it for tighter context budgets. |
| `episode_id` | string | Yes | Episode ID to retrieve |
| `start_time` | number | No | Resume point in seconds — use coverage.next_start_time from the previous response to page through a long episode |
| `include_metadata` | boolean | No | Include metadata (speakers, entities) |
| `include_segments` | boolean | No | Include full transcript segments |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `episode` | object | Yes |  |
| `podcast` | object | No |  |
| `coverage` | object | No | PAGING CONTRACT (first key in the response): which part of the transcript this page covers. If truncated=true, call get_transcript again with start_time=next_start_time to continue. |
| `metadata` | object | No |  |
| `segments` | array | Yes |  |

### Get transcription status

**Slug:** `AUDIOSCRAPE_MCP_GET_TRANSCRIPTION_STATUS`

Check the status of a transcription job submitted via transcribe_audio. Returns status ('pending', 'running', 'completed', 'failed'), current pipeline stage, and when complete an episode_id you can use with search_audio or get_transcript.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | The job_id returned by transcribe_audio |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `usage` | object | No |  |
| `job_id` | integer | Yes |  |
| `status` | string | Yes |  |
| `item_id` | integer | Yes |  |
| `episode_id` | string | No |  |
| `error_stage` | string | No |  |
| `total_stages` | integer | No |  |
| `current_stage` | string | No |  |
| `error_message` | string | No |  |
| `workspace_url` | string | No |  |
| `transcript_url` | string | No |  |
| `completed_stages` | integer | No |  |

### Get trending

**Slug:** `AUDIOSCRAPE_MCP_GET_TRENDING`

Currently trending people, topics, and organizations across recently transcribed audio.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of trending items per category |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `trending_entities` | array | Yes |  |
| `trending_searches` | array | No |  |

### List my datasets

**Slug:** `AUDIOSCRAPE_MCP_LIST_MY_DATASETS`

List the libraries (curated workspaces) the user is subscribed to, and the datasets inside each. Use this FIRST when the user asks what audio is available, what they have access to, or before scoping a search. Returns each library's curator, role, and dataset counts (podcasts, episodes, duration).

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `hint` | string | No |  |
| `libraries` | array | Yes |  |

### List my uploads

**Slug:** `AUDIOSCRAPE_MCP_LIST_MY_UPLOADS`

List audio you have personally uploaded and transcribed (your private workspace only — does not include the public podcast corpus). Natural follow-up after transcribe_audio.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of items to return |
| `offset` | integer | No | Offset for pagination |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `total` | integer | Yes |  |
| `uploads` | array | Yes |  |

### List podcast episodes

**Slug:** `AUDIOSCRAPE_MCP_LIST_PODCAST_EPISODES`

List episodes within one specific podcast show. Use search_podcasts first to find the podcast_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of episodes |
| `offset` | integer | No | Offset for pagination |
| `sort_by` | string ("date" | "title") | No | Sort by: 'date' or 'title' |
| `podcast_id` | string | Yes | Podcast ID to browse |

### List recent transcripts

**Slug:** `AUDIOSCRAPE_MCP_LIST_RECENT_TRANSCRIPTS`

List recently transcribed audio (podcast episodes + your uploads) ordered by date. Use podcast_ids to scope to specific shows.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of episodes |
| `days_back` | integer | No | Number of days to look back |
| `podcast_ids` | array | No | Filter by specific podcast IDs |

### Request upload url

**Slug:** `AUDIOSCRAPE_MCP_REQUEST_UPLOAD_URL`

Get a one-time URL to upload an audio/video file the user attached in this chat when it cannot be passed as a link: PUT the raw file bytes to upload_url (e.g. run `curl -T <file> "<upload_url>"` from where the file is), within 15 minutes. The response of that PUT contains job_id — then poll get_transcription_status. Use transcribe_audio instead when you have a direct link, a Drive/Dropbox/OneDrive share link, or the client supports file inputs (audio_file).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Optional title for the recording. |
| `file_name` | string | No | The file's name with extension (e.g. interview.m4a) so the format is known. Strongly recommended. |
| `description` | string | No | Optional description or notes about the recording. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `method` | string | Yes |  |
| `max_bytes` | integer | Yes |  |
| `expires_at` | string | Yes |  |
| `upload_url` | string | Yes |  |
| `instructions` | string | Yes |  |
| `accepted_formats` | array | No |  |

### Search

**Slug:** `AUDIOSCRAPE_MCP_SEARCH`

Compatibility search returning episode-level citable documents (id/title/url only). Clients with rich-result support should prefer search_audio, which returns the matching segments with timestamps, speakers, and snippets.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | Search query — a topic, phrase, person, or company |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `results` | array | Yes |  |

### Search audio

**Slug:** `AUDIOSCRAPE_MCP_SEARCH_AUDIO`

Search across all transcribed audio — ~125,000 transcribed public podcast episodes (2,300+ shows) plus your own uploaded recordings — for any topic, phrase, or speaker. The wider 360,000-podcast catalog is discoverable via search_podcasts but is not all transcribed; check `searchable` there before scoping by podcast_ids. Returns matching segments with timestamps you can cite; matches and `total` count SPOKEN transcript text only (episode/show metadata affects ranking, never whether something is a hit). Text mode needs the words spoken close together in one short segment — use 1-2 distinctive words, or search_type='semantic' for conceptual questions. To read a whole episode, use get_transcript (paged), not repeated searches. Scope with filters.podcast_ids (ids from search_podcasts) and date filters. When the query names a known person/company/topic, entity_matches identifies it — follow up with get_entity_graph or search_entities for relationships and evidence.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of results |
| `query` | string | Yes | Search query text |
| `offset` | integer | No | Offset for pagination |
| `filters` | object | No | Optional filters |
| `sort_by` | string ("relevance" | "date" | "episode_title") | No | Sort results by: 'relevance', 'date', 'episode_title' |
| `sort_order` | string ("asc" | "desc") | No | Sort order: 'asc' or 'desc' |
| `search_type` | string ("text" | "semantic") | No | Type of search: 'text' or 'semantic' |
| `include_context` | boolean | No | Include surrounding segments for context |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `total` | integer | Yes |  |
| `results` | array | Yes |  |
| `has_more` | boolean | No |  |
| `search_id` | string | No |  |
| `pagination` | object | No |  |
| `query_info` | object | No |  |
| `entity_matches` | array | No | Knowledge-graph entities the query resolved to — pivot via get_entity_graph or search_entities |

### Search entities

**Slug:** `AUDIOSCRAPE_MCP_SEARCH_ENTITIES`

Search the knowledge graph for people, companies, locations, topics, and other entities mentioned in any transcribed audio.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `type` | string ("person" | "organization" | "location" | "topic" | "product") | No | Filter by entity type |
| `limit` | integer | No | Maximum number of results |
| `query` | string | Yes | Entity name to search for |
| `dataset_id` | integer | No | Only entities mentioned in this dataset (must be a dataset you can read) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `total` | integer | Yes |  |
| `entities` | array | Yes |  |

### Search podcasts

**Slug:** `AUDIOSCRAPE_MCP_SEARCH_PODCASTS`

Search the podcast catalog by title. Returns metadata including episode_count (episodes in the FEED) and `searchable` (whether the show has transcribed content). Results with searchable=true are listed first — only those can return hits when used with search_audio filters.podcast_ids.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of results |
| `query` | string | Yes | Podcast title to search for |
| `language` | string | No | Filter by language code (e.g. 'en', 'de') |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `total` | integer | Yes |  |
| `podcasts` | array | Yes |  |

### Search speakers

**Slug:** `AUDIOSCRAPE_MCP_SEARCH_SPEAKERS`

Search speakers and hosts by name across all transcribed audio. Returns matching people with their slug — use get_speaker for their full appearance history.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of results |
| `query` | string | Yes | Person name to search for (e.g. 'Joe Rogan', 'Lex') |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | integer | Yes |  |
| `persons` | array | Yes |  |

### Transcribe audio

**Slug:** `AUDIOSCRAPE_MCP_TRANSCRIBE_AUDIO`

Transcribe an audio or video FILE with speaker diarization; the result is indexed into the user's private workspace for search_audio and get_transcript. Give the file ONE of two ways. (1) audio_url: a direct link to the media file, or a Google Drive / Dropbox / OneDrive share link (share links are converted to direct downloads automatically — the file must be shared 'anyone with the link'). (2) audio_file: a file the user attached in this chat, when the client supports file inputs. NEVER pass a chat-sandbox path (sandbox:/…, /mnt/data/…) or a chatgpt.com URL as audio_url — those cannot be fetched and are rejected with a hint. If the client cannot pass attachments, call request_upload_url and PUT the file bytes to the URL it returns; or ask the user for a share link. Web PAGE links (TikTok/Instagram/YouTube pages) are not files and are rejected. Returns a job_id — poll get_transcription_status. Transcription typically takes a few minutes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Optional title for the recording. Defaults to the filename. |
| `audio_url` | string | No | Direct http(s) URL to the media FILE (mp3, wav, m4a, ogg, flac, aac, opus, mp4, mov, webm, mkv), or a Google Drive / Dropbox / OneDrive share link shared with 'anyone with the link'. Not a web page. Not a sandbox:/ or /mnt/data path. Omit when passing audio_file. |
| `audio_file` | object | No | A file the user attached in the chat (client file input). Preferred over audio_url when the user attached the audio directly. |
| `description` | string | No | Optional description or notes about the recording. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `usage` | object | No |  |
| `job_id` | integer | Yes |  |
| `status` | string | Yes |  |
| `item_id` | integer | Yes |  |
| `message` | string | Yes |  |
| `dataset_id` | integer | Yes |  |
| `workspace_url` | string | No |  |
| `transcript_url` | string | No |  |
