Turn YouTube, TikTok, Instagram, Facebook, X and article URLs into transcripts, comments and JSON.
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.
Use this when the user wants the transcript, comments, metadata, video/audio files or structured JSON from a video, post or web page. Starts an extraction on the user's Post Reef account (debits its credits; refunded if it fails) and waits up to wait_seconds for the result. Pass schemaId or schema for JSON, otherwise it is a download. Call quote first if the user wants to know the cost.
Public link to one video, post or web page (YouTube, Shorts, TikTok, Instagram, Facebook, X, Vimeo, an article, …).
Run fresh even if an identical extraction from the last 30 days could be reused for free.
Download-only runs (no schema): which artifacts to fetch. Any of transcript, comments, audio, video. Omit for all of them. Metadata, thumbnail and description always come back.
AI runs (with schemaId or schema): what the model reads. Any of transcript, comments, audio, video. Default transcript + comments. Do not combine with parts.
Inline JSON Schema (top-level object) for the extracted JSON, instead of schemaId. No type unions; enums of strings only; optional fields are simply left out of required.
Turn the content into JSON with a saved schema: a predefined one by name (Recipe, Workout, Product review, …) or id, or one of the user's own schema ids. See list_schemas.
Cap on how many comments to fetch (1-1000, default 1000).
How long to wait for the result before returning (0-50, default 45). If it is not done by then, call get_extraction.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http postreef https://postreef.com/mcp
Use this when the user wants the transcript, comments, metadata, video/audio files or structured JSON from a video, post or web page. Starts an extraction on the user's Post Reef account (debits its credits; refunded if it fails) and waits up to wait_seconds for the result. Pass schemaId or schema for JSON, otherwise it is a download. Call quote first if the user wants to know the cost.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public link to one video, post or web page (YouTube, Shorts, TikTok, Instagram, Facebook, X, Vimeo, an article, …). |
| force | boolean | Run fresh even if an identical extraction from the last 30 days could be reused for free. |
| parts | array | Download-only runs (no schema): which artifacts to fetch. Any of transcript, comments, audio, video. Omit for all of them. Metadata, thumbnail and description always come back. |
| inputs | array | AI runs (with schemaId or schema): what the model reads. Any of transcript, comments, audio, video. Default transcript + comments. Do not combine with parts. |
| schema | object | Inline JSON Schema (top-level object) for the extracted JSON, instead of schemaId. No type unions; enums of strings only; optional fields are simply left out of required. |
| schemaId | string | Turn the content into JSON with a saved schema: a predefined one by name (Recipe, Workout, Product review, …) or id, or one of the user's own schema ids. See list_schemas. |
| maxComments | integer | Cap on how many comments to fetch (1-1000, default 1000). |
| wait_seconds | integer | How long to wait for the result before returning (0-50, default 45). If it is not done by then, call get_extraction. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Public link to one video, post or web page (YouTube, Shorts, TikTok, Instagram, Facebook, X, Vimeo, an article, …)."
},
"force": {
"type": "boolean",
"description": "Run fresh even if an identical extraction from the last 30 days could be reused for free."
},
"parts": {
"type": "array",
"items": {
"enum": [
"transcript",
"comments",
"audio",
"video"
],
"type": "string"
},
"description": "Download-only runs (no schema): which artifacts to fetch. Any of transcript, comments, audio, video. Omit for all of them. Metadata, thumbnail and description always come back."
},
"inputs": {
"type": "array",
"items": {
"enum": [
"transcript",
"comments",
"audio",
"video"
],
"type": "string"
},
"description": "AI runs (with schemaId or schema): what the model reads. Any of transcript, comments, audio, video. Default transcript + comments. Do not combine with parts."
},
"schema": {
"type": "object",
"description": "Inline JSON Schema (top-level object) for the extracted JSON, instead of schemaId. No type unions; enums of strings only; optional fields are simply left out of required.",
"propertyNames": {
"type": "string"
},
"additionalProperties": true
},
"schemaId": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Turn the content into JSON with a saved schema: a predefined one by name (Recipe, Workout, Product review, …) or id, or one of the user's own schema ids. See list_schemas."
},
"maxComments": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Cap on how many comments to fetch (1-1000, default 1000)."
},
"wait_seconds": {
"type": "integer",
"maximum": 50,
"minimum": 0,
"description": "How long to wait for the result before returning (0-50, default 45). If it is not done by then, call get_extraction."
}
}
}Use this to check on or read an extraction by id: its status, and once complete the metadata, transcript, comments, extracted JSON and links to every file.
| Argument | Type | Description |
|---|---|---|
| id* | string | The extraction id returned by extract or list_extractions. |
| comments_max | integer | How many comments to return (default 30). |
| wait_seconds | integer | Wait up to this long for a running extraction to finish (0-50, default 0). |
| transcript_max_chars | integer | How much of the transcript to return (default 20000 characters). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The extraction id returned by extract or list_extractions."
},
"comments_max": {
"type": "integer",
"maximum": 1000,
"minimum": 0,
"description": "How many comments to return (default 30)."
},
"wait_seconds": {
"type": "integer",
"maximum": 50,
"minimum": 0,
"description": "Wait up to this long for a running extraction to finish (0-50, default 0)."
},
"transcript_max_chars": {
"type": "integer",
"maximum": 200000,
"minimum": 0,
"description": "How much of the transcript to return (default 20000 characters)."
}
}
}Use this to see which Post Reef account is connected and its credit balance.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Use this to find the user's previous extractions, newest first, with their ids for get_extraction.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many recent extractions to list (1-25, default 10). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "How many recent extractions to list (1-25, default 10)."
}
}
}Use this to see which schemas can turn content into JSON: the predefined ones (Recipe, Workout, Product review, …) and the user's own. Pass schemaId to get one schema's full definition.
| Argument | Type | Description |
|---|---|---|
| schemaId | string | Also return the full JSON Schema definition of this schema (name or id). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"schemaId": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Also return the full JSON Schema definition of this schema (name or id)."
}
}
}Use this before extract to see what a link is (title, duration, whether it has subtitles and comments) and exactly how many credits the extraction would cost with the same parameters. Nothing is charged and nothing is started.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public link to one video, post or web page (YouTube, Shorts, TikTok, Instagram, Facebook, X, Vimeo, an article, …). |
| parts | array | Download-only runs (no schema): which artifacts to fetch. Any of transcript, comments, audio, video. Omit for all of them. Metadata, thumbnail and description always come back. |
| inputs | array | AI runs (with schemaId or schema): what the model reads. Any of transcript, comments, audio, video. Default transcript + comments. Do not combine with parts. |
| schema | object | Inline JSON Schema (top-level object) for the extracted JSON, instead of schemaId. No type unions; enums of strings only; optional fields are simply left out of required. |
| schemaId | string | Turn the content into JSON with a saved schema: a predefined one by name (Recipe, Workout, Product review, …) or id, or one of the user's own schema ids. See list_schemas. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Public link to one video, post or web page (YouTube, Shorts, TikTok, Instagram, Facebook, X, Vimeo, an article, …)."
},
"parts": {
"type": "array",
"items": {
"enum": [
"transcript",
"comments",
"audio",
"video"
],
"type": "string"
},
"description": "Download-only runs (no schema): which artifacts to fetch. Any of transcript, comments, audio, video. Omit for all of them. Metadata, thumbnail and description always come back."
},
"inputs": {
"type": "array",
"items": {
"enum": [
"transcript",
"comments",
"audio",
"video"
],
"type": "string"
},
"description": "AI runs (with schemaId or schema): what the model reads. Any of transcript, comments, audio, video. Default transcript + comments. Do not combine with parts."
},
"schema": {
"type": "object",
"description": "Inline JSON Schema (top-level object) for the extracted JSON, instead of schemaId. No type unions; enums of strings only; optional fields are simply left out of required.",
"propertyNames": {
"type": "string"
},
"additionalProperties": true
},
"schemaId": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Turn the content into JSON with a saved schema: a predefined one by name (Recipe, Workout, Product review, …) or id, or one of the user's own schema ids. See list_schemas."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 12, 2026.