Streaming & media · MCP reference

Restream MCP

Prepare broadcasts, inspect recordings and transcripts, and manage Studio assets through 56 documented API tools.

https://restream-mcp-http-production.up.railway.app/mcp

Connect once. Work through your agent.

Provider credentials stay in the Connections Broker. Your first authenticated private tool call returns a consent link when Restream is not connected.

Hosted · Streamable HTTP

Use a private random 32-byte base64url Bearer identity. Keep it stable and private: it identifies your broker connection. Generate one locally:

node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))"

Set the endpoint above and Authorization: Bearer <your-private-identity> in your MCP client. Gateway principals require an HMAC signature; see the README.

Local · stdio

npm ci
npm run build
RESTREAM_MOCK=true npm start

For live stdio, configure the broker install identity and RESTREAM_PRINCIPAL. No provider client secret or refresh token belongs in the MCP.

Writes are disabled by default. The operator must enable RESTREAM_ENABLE_WRITES=true before any mutation. Chat tools observe incoming events; they cannot send replies. Mock previews never contact Restream.

Tool reference

56 tools

GETrestream_list_platformsRead

List supported streaming platforms. Public endpoint.

/v2/platform/all · Provider reference ↗

Required scope: public

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_platforms",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_ingest_serversRead

List available RTMP ingest servers. Public endpoint.

/v2/server/all · Provider reference ↗

Required scope: public

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_ingest_servers",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_profileRead

Read the connected Restream profile.

/v2/user/profile · Provider reference ↗

Required scope: profile.read

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "id": 100,
    "username": "mock-user",
    "email": "mock@example.invalid"
  }
}
GETrestream_get_selected_ingestRead

Read the selected ingest server ID.

/v2/user/ingest · Provider reference ↗

Required scope: channels.read

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_selected_ingest",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_stream_keyRead

Retrieve sensitive encoder stream key and SRT URL; do not publish the result.

/v2/user/streamKey · Provider reference ↗

Required scope: stream.read · Returns sensitive stream credentials or URLs.

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_stream_key",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_chat_urlRead

Retrieve the sensitive chat embed URL; do not publish the result.

/v2/user/webchat/url · Provider reference ↗

Required scope: chat.read · Returns sensitive stream credentials or URLs.

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_chat_url",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_channelsRead

List channels connected to the Restream account.

/v2/user/channels · Provider reference ↗

Required scope: channels.read

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "channels": [
      {
        "id": 123456,
        "platformId": 29,
        "displayName": "Mock RTMP",
        "channelUrl": "https://example.invalid/live"
      }
    ]
  }
}
GETrestream_get_channelRead

Read a channel by numeric ID.

/v2/user/channels/{channelId} · Provider reference ↗

Required scope: channels.read

Input schema

{
  "type": "object",
  "properties": {
    "channelId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "exclusiveMinimum": 0
    }
  },
  "required": [
    "channelId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "channelId": 1
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_channel",
    "notice": "Synthetic offline response; not live provider data."
  }
}
POSTrestream_create_channelWrite

Add a supported manually configured channel. Sends stream credentials to Restream. Writes must be enabled.

/v2/user/channels · Provider reference ↗

Required scope: channels.write

Input schema

{
  "type": "object",
  "properties": {
    "platformId": {
      "type": "number",
      "enum": [
        29,
        37,
        49,
        60,
        61,
        68,
        72,
        73,
        74,
        78,
        79,
        80,
        81,
        82
      ]
    },
    "streamUrl": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048
    },
    "streamKey": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "displayName": {
      "$ref": "#/properties/streamKey"
    },
    "rtmpUsername": {
      "$ref": "#/properties/streamKey"
    },
    "rtmpPassword": {
      "$ref": "#/properties/streamKey"
    },
    "instagramUsername": {
      "$ref": "#/properties/streamKey"
    }
  },
  "required": [
    "platformId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "platformId": 29,
  "streamUrl": "rtmp://example.com/live"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_create_channel",
    "notice": "Synthetic offline response; not live provider data."
  }
}
DELETErestream_delete_channelWrite

Delete a channel; this can interrupt delivery to upcoming or live destinations.

/v2/user/channels/{channelId} · Provider reference ↗

Required scope: channels.write

Input schema

{
  "type": "object",
  "properties": {
    "channelId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "exclusiveMinimum": 0
    }
  },
  "required": [
    "channelId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "channelId": 1
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "success": true
  }
}
GETrestream_list_upcoming_eventsRead

List upcoming events, optionally filtering source (1 Studio, 2 encoder, 3 video) and scheduled state.

/v2/user/events/upcoming · Provider reference ↗

Required scope: stream.read

Input schema

{
  "type": "object",
  "properties": {
    "source": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3
    },
    "scheduled": {
      "type": "boolean"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_upcoming_events",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_in_progress_eventsRead

List events currently in progress.

/v2/user/events/in-progress · Provider reference ↗

Required scope: stream.read

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_in_progress_events",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_event_historyRead

List one page of finished and missed events. Increase page to continue; server caps limit at 100.

/v2/user/events/history · Provider reference ↗

Required scope: stream.read

Input schema

{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 100000,
      "exclusiveMinimum": 0,
      "default": 1
    },
    "limit": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 100,
      "exclusiveMinimum": 0,
      "default": 20
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_event_history",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_eventRead

Read event metadata and destinations.

/v2/user/events/{eventId} · Provider reference ↗

Required scope: stream.read

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "eventId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_event",
    "notice": "Synthetic offline response; not live provider data."
  }
}
POSTrestream_create_eventWrite

Create Studio, encoder or stored-video event. Does not start streaming or add destinations.

/v2/user/events/new · Provider reference ↗

Required scope: stream.write

Input schema

{
  "type": "object",
  "properties": {
    "streamType": {
      "type": "string",
      "enum": [
        "studio",
        "encoder",
        "file"
      ]
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000
    },
    "scheduledFor": {
      "type": "string",
      "format": "date-time"
    },
    "fileId": {
      "type": "string",
      "format": "uuid"
    },
    "loopsCount": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9
    }
  },
  "required": [
    "streamType"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "streamType": "studio"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_create_event",
    "notice": "Synthetic offline response; not live provider data."
  }
}
POSTrestream_add_event_destinationWrite

Attach a supported channel; YouTube/Embed Player require title. createEventPost may publish a scheduled broadcast externally. Facebook, Instagram, TikTok, LinkedIn and X are not supported by this endpoint.

/v2/user/events/{eventId}/destinations · Provider reference ↗

Required scope: stream.write

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    },
    "channelId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "exclusiveMinimum": 0
    },
    "streamingOrientation": {
      "type": "string",
      "enum": [
        "horizontal",
        "vertical"
      ]
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000
    },
    "privacyStatus": {
      "type": "string",
      "enum": [
        "private",
        "public",
        "unlisted"
      ]
    },
    "videoCategoryId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$"
    },
    "latencyPreference": {
      "type": "string",
      "enum": [
        "normal",
        "low",
        "ultraLow"
      ]
    },
    "useEmbeddedClosedCaptions": {
      "type": "boolean"
    },
    "createEventPost": {
      "type": "boolean"
    },
    "reuseExistingBroadcastId": {
      "$ref": "#/properties/videoCategoryId"
    },
    "enableMonetization": {
      "type": "boolean"
    },
    "adsFrequency": {
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high"
      ]
    }
  },
  "required": [
    "eventId",
    "channelId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327",
  "channelId": 1
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_add_event_destination",
    "notice": "Synthetic offline response; not live provider data."
  }
}
DELETErestream_delete_event_destinationWrite

Detach a destination from a scheduled event. Cannot detach from live or finished events; keeps the channel.

/v2/user/events/{eventId}/destinations/{destinationId} · Provider reference ↗

Required scope: stream.write

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    },
    "destinationId": {
      "$ref": "#/properties/eventId"
    }
  },
  "required": [
    "eventId",
    "destinationId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327",
  "destinationId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "success": true
  }
}
GETrestream_get_event_stream_keyRead

Retrieve sensitive event stream key and SRT URL.

/v2/user/events/{eventId}/streamKey · Provider reference ↗

Required scope: stream.read · Returns sensitive stream credentials or URLs.

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "eventId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_event_stream_key",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_event_srt_keysRead

Retrieve sensitive event SRT keys; requires Business or Enterprise plan.

/v2/user/events/{eventId}/srt/streamKey · Provider reference ↗

Required scope: stream.read · Returns sensitive stream credentials or URLs.

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "eventId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_event_srt_keys",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_event_recordingsRead

List video and audio recordings and expiry times.

/v2/user/events/{eventId}/recordings · Provider reference ↗

Required scope: storage.read

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "eventId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_event_recordings",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_event_transcriptsRead

List generated transcript status and temporary download URLs; does not create transcripts.

/v2/user/events/{eventId}/recordings/transcriptions · Provider reference ↗

Required scope: storage.read

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "eventId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "transcriptions": [
      {
        "id": "7f3c9a4e-1b2d-4c5f-8a6b-9d0e1f2a3b4c",
        "status": "Completed",
        "fileName": "mock-recording.mp4",
        "downloadUrl": "https://example.invalid/mock-transcript.txt"
      }
    ]
  }
}
GETrestream_get_viewer_analyticsRead

Read aggregate and per-channel viewer analytics. 404 can mean no stream analytics.

/v2/user/events/{eventId}/analytics/viewers · Provider reference ↗

Required scope: stream.read

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "eventId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_viewer_analytics",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_chat_analyticsRead

Read aggregate and per-channel chat metrics.

/v2/user/events/{eventId}/analytics/messages · Provider reference ↗

Required scope: stream.read

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "eventId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_chat_analytics",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_event_chat_historyRead

Read a page of chat messages. Pass either pageToken or timestamp, never both. Return cursors are preserved.

/v2/user/events/{eventId}/chat/history · Provider reference ↗

Required scope: chat.read

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    },
    "pageSize": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 1000,
      "exclusiveMinimum": 0,
      "default": 100
    },
    "pageToken": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "timestamp": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "eventId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_event_chat_history",
    "notice": "Synthetic offline response; not live provider data."
  }
}
POSTrestream_get_chat_export_urlRead

Generate a one-time chat history download link; does not fetch external content.

/v2/user/events/{eventId}/chat/history/download-url · Provider reference ↗

Required scope: chat.read

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "eventId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_chat_export_url",
    "notice": "Synthetic offline response; not live provider data."
  }
}
POSTrestream_get_recording_download_urlRead

Generate a temporary download URL for a recording filename returned by list_event_recordings.

/v2/user/events/{eventId}/recordings/download-url · Provider reference ↗

Required scope: storage.read

Input schema

{
  "type": "object",
  "properties": {
    "eventId": {
      "type": "string",
      "format": "uuid"
    },
    "fileName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "required": [
    "eventId",
    "fileName"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "eventId": "2527849f-f961-4b1d-8ae0-8eae4f068327",
  "fileName": "example"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_recording_download_url",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_storage_filesRead

List video storage files and processing status.

/v2/user/storage/files · Provider reference ↗

Required scope: storage.read

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_storage_files",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_storage_fileRead

Read a video storage file by ID.

/v2/user/storage/files/{fileId} · Provider reference ↗

Required scope: storage.read

Input schema

{
  "type": "object",
  "properties": {
    "fileId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$"
    }
  },
  "required": [
    "fileId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "fileId": "example"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_storage_file",
    "notice": "Synthetic offline response; not live provider data."
  }
}
POSTrestream_get_storage_download_urlRead

Generate a temporary storage file download URL.

/v2/user/storage/files/{fileId}/download-url · Provider reference ↗

Required scope: storage.read

Input schema

{
  "type": "object",
  "properties": {
    "fileId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$"
    }
  },
  "required": [
    "fileId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "fileId": "example"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_storage_download_url",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_clip_projectsRead

List a page of clip projects; use returned nextCursor to continue.

/v2/user/clips/projects · Provider reference ↗

Required scope: clips.read

Input schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 100,
      "exclusiveMinimum": 0,
      "default": 20
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "sortBy": {
      "type": "string",
      "enum": [
        "CreatedAt",
        "LastActivity"
      ]
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_clip_projects",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_clip_projectRead

Read clip generation progress, clips and posting history.

/v2/user/clips/projects/{projectId} · Provider reference ↗

Required scope: clips.read

Input schema

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$"
    }
  },
  "required": [
    "projectId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "projectId": "example"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_clip_project",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_clip_download_urlRead

Retrieve a temporary clip download URL.

/v2/user/clips/{clipId}/download · Provider reference ↗

Required scope: clips.read

Input schema

{
  "type": "object",
  "properties": {
    "clipId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$"
    }
  },
  "required": [
    "clipId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "clipId": "example"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_clip_download_url",
    "notice": "Synthetic offline response; not live provider data."
  }
}
POSTrestream_create_clip_projectWrite

Generate clips asynchronously from a stored file, past event or public video URL. Can consume plan allowance; forceReprocess regenerates clips. Poll get_clip_project.

/v2/user/clips/projects · Provider reference ↗

Required scope: clips.write

Input schema

{
  "type": "object",
  "properties": {
    "sourceType": {
      "type": "string",
      "enum": [
        "VideoStorageFile",
        "Event",
        "PublicUrl"
      ]
    },
    "videoStorageFileId": {
      "type": "string",
      "format": "uuid"
    },
    "eventId": {
      "$ref": "#/properties/videoStorageFileId"
    },
    "publicUrl": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "singleClipMode": {
      "type": "boolean"
    },
    "forceReprocess": {
      "type": "boolean"
    },
    "selectedTimeRange": {
      "type": "object",
      "properties": {
        "startOffsetSeconds": {
          "type": "number",
          "minimum": 0
        },
        "endOffsetSeconds": {
          "type": "number",
          "exclusiveMinimum": 0
        }
      },
      "required": [
        "startOffsetSeconds",
        "endOffsetSeconds"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "sourceType"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "sourceType": "VideoStorageFile",
  "videoStorageFileId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_create_clip_project",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_brandsRead

List Studio brands.

/v2/user/studio/brands · Provider reference ↗

Required scope: studio.read

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_brands",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_fontsRead

List Studio fonts.

/v2/user/studio/fonts · Provider reference ↗

Required scope: studio.read

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_fonts",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_countdown_musicRead

List Studio countdown music.

/v2/user/studio/audio/countdown-music · Provider reference ↗

Required scope: studio.read

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_countdown_music",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_audio_backgroundsRead

List Studio audio backgrounds.

/v2/user/studio/audio-backgrounds · Provider reference ↗

Required scope: studio.read

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_audio_backgrounds",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_captionsRead

List Studio captions, optionally by brand.

/v2/user/studio/captions · Provider reference ↗

Required scope: studio.read

Input schema

{
  "type": "object",
  "properties": {
    "brandId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_captions",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_captionRead

Read a Studio caption.

/v2/user/studio/captions/{captionId} · Provider reference ↗

Required scope: studio.read

Input schema

{
  "type": "object",
  "properties": {
    "captionId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "captionId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "captionId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_caption",
    "notice": "Synthetic offline response; not live provider data."
  }
}
POSTrestream_create_captionWrite

Create a reusable Studio caption. Does not toggle it on screen.

/v2/user/studio/captions · Provider reference ↗

Required scope: studio.write

Input schema

{
  "type": "object",
  "properties": {
    "brandId": {
      "type": "string",
      "format": "uuid"
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000
    },
    "secondaryText": {
      "type": "string",
      "maxLength": 10000
    }
  },
  "required": [
    "brandId",
    "text"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "brandId": "2527849f-f961-4b1d-8ae0-8eae4f068327",
  "text": "example"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_create_caption",
    "notice": "Synthetic offline response; not live provider data."
  }
}
PATCHrestream_update_captionWrite

Update a Studio caption.

/v2/user/studio/captions/{captionId} · Provider reference ↗

Required scope: studio.write

Input schema

{
  "type": "object",
  "properties": {
    "captionId": {
      "type": "string",
      "format": "uuid"
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000
    },
    "secondaryText": {
      "type": "string",
      "maxLength": 10000
    }
  },
  "required": [
    "captionId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "captionId": "2527849f-f961-4b1d-8ae0-8eae4f068327",
  "text": "Updated caption"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_update_caption",
    "notice": "Synthetic offline response; not live provider data."
  }
}
DELETErestream_delete_captionWrite

Permanently delete a Studio caption.

/v2/user/studio/captions/{captionId} · Provider reference ↗

Required scope: studio.write

Input schema

{
  "type": "object",
  "properties": {
    "captionId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "captionId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "captionId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "success": true
  }
}
GETrestream_list_tickersRead

List Studio tickers, optionally by brand.

/v2/user/studio/tickers · Provider reference ↗

Required scope: studio.read

Input schema

{
  "type": "object",
  "properties": {
    "brandId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_tickers",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_tickerRead

Read a Studio ticker.

/v2/user/studio/tickers/{tickerId} · Provider reference ↗

Required scope: studio.read

Input schema

{
  "type": "object",
  "properties": {
    "tickerId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "tickerId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "tickerId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_ticker",
    "notice": "Synthetic offline response; not live provider data."
  }
}
POSTrestream_create_tickerWrite

Create a reusable Studio ticker. Does not toggle it on screen.

/v2/user/studio/tickers · Provider reference ↗

Required scope: studio.write

Input schema

{
  "type": "object",
  "properties": {
    "brandId": {
      "type": "string",
      "format": "uuid"
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000
    }
  },
  "required": [
    "brandId",
    "text"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "brandId": "2527849f-f961-4b1d-8ae0-8eae4f068327",
  "text": "example"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_create_ticker",
    "notice": "Synthetic offline response; not live provider data."
  }
}
PATCHrestream_update_tickerWrite

Update a Studio ticker.

/v2/user/studio/tickers/{tickerId} · Provider reference ↗

Required scope: studio.write

Input schema

{
  "type": "object",
  "properties": {
    "tickerId": {
      "type": "string",
      "format": "uuid"
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000
    }
  },
  "required": [
    "tickerId",
    "text"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "tickerId": "2527849f-f961-4b1d-8ae0-8eae4f068327",
  "text": "example"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_update_ticker",
    "notice": "Synthetic offline response; not live provider data."
  }
}
DELETErestream_delete_tickerWrite

Permanently delete a Studio ticker.

/v2/user/studio/tickers/{tickerId} · Provider reference ↗

Required scope: studio.write

Input schema

{
  "type": "object",
  "properties": {
    "tickerId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "tickerId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "tickerId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "success": true
  }
}
PATCHrestream_reorder_tickersWrite

Set the order of Studio tickers.

/v2/user/studio/tickers/order · Provider reference ↗

Required scope: studio.write

Input schema

{
  "type": "object",
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "minItems": 1,
      "maxItems": 1000
    }
  },
  "required": [
    "ids"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "ids": [
    "2527849f-f961-4b1d-8ae0-8eae4f068327"
  ]
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_reorder_tickers",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_list_qr_codesRead

List Studio qr-codes, optionally by brand.

/v2/user/studio/qr-codes · Provider reference ↗

Required scope: studio.read

Input schema

{
  "type": "object",
  "properties": {
    "brandId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_list_qr_codes",
    "notice": "Synthetic offline response; not live provider data."
  }
}
GETrestream_get_qr_codeRead

Read a Studio qr code.

/v2/user/studio/qr-codes/{qrCodeId} · Provider reference ↗

Required scope: studio.read

Input schema

{
  "type": "object",
  "properties": {
    "qrCodeId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "qrCodeId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "qrCodeId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_get_qr_code",
    "notice": "Synthetic offline response; not live provider data."
  }
}
POSTrestream_create_qr_codeWrite

Create a reusable Studio qr code. Does not toggle it on screen.

/v2/user/studio/qr-codes · Provider reference ↗

Required scope: studio.write

Input schema

{
  "type": "object",
  "properties": {
    "brandId": {
      "type": "string",
      "format": "uuid"
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "link": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048
    },
    "shouldShowTitle": {
      "type": "boolean"
    }
  },
  "required": [
    "brandId",
    "title",
    "link"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "brandId": "2527849f-f961-4b1d-8ae0-8eae4f068327",
  "title": "example",
  "link": "https://example.com"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_create_qr_code",
    "notice": "Synthetic offline response; not live provider data."
  }
}
PATCHrestream_update_qr_codeWrite

Update a Studio qr code.

/v2/user/studio/qr-codes/{qrCodeId} · Provider reference ↗

Required scope: studio.write

Input schema

{
  "type": "object",
  "properties": {
    "qrCodeId": {
      "type": "string",
      "format": "uuid"
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "link": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048
    },
    "shouldShowTitle": {
      "type": "boolean"
    }
  },
  "required": [
    "qrCodeId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "qrCodeId": "2527849f-f961-4b1d-8ae0-8eae4f068327",
  "title": "Updated title"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_update_qr_code",
    "notice": "Synthetic offline response; not live provider data."
  }
}
DELETErestream_delete_qr_codeWrite

Permanently delete a Studio qr code.

/v2/user/studio/qr-codes/{qrCodeId} · Provider reference ↗

Required scope: studio.write

Input schema

{
  "type": "object",
  "properties": {
    "qrCodeId": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "qrCodeId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "qrCodeId": "2527849f-f961-4b1d-8ae0-8eae4f068327"
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "success": true
  }
}
PATCHrestream_reorder_qr_codesWrite

Set the order of Studio qr-codes.

/v2/user/studio/qr-codes/order · Provider reference ↗

Required scope: studio.write

Input schema

{
  "type": "object",
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "minItems": 1,
      "maxItems": 1000
    }
  },
  "required": [
    "ids"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{
  "ids": [
    "2527849f-f961-4b1d-8ae0-8eae4f068327"
  ]
}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "fixture": true,
    "tool": "restream_reorder_qr_codes",
    "notice": "Synthetic offline response; not live provider data."
  }
}
WSrestream_observe_chatRead

Collect a bounded window of chat WebSocket events, then disconnect. No background subscription or message sending.

Bounded WebSocket observation · Provider reference ↗

Required scope: chat.read

Input schema

{
  "type": "object",
  "properties": {
    "durationSeconds": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 5
    },
    "maxEvents": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 25
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "events": [],
    "truncated": false
  }
}
WSrestream_observe_streamingRead

Collect a bounded window of streaming WebSocket events, then disconnect. No background subscription or message sending.

Bounded WebSocket observation · Provider reference ↗

Required scope: stream.read

Input schema

{
  "type": "object",
  "properties": {
    "durationSeconds": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 5
    },
    "maxEvents": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 25
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Example arguments

{}

Mock output

{
  "status": "ok",
  "mode": "mock",
  "data": {
    "events": [],
    "truncated": false
  }
}

Limits and verification

REST reads use a 15-second timeout and a 2 MB response cap. Paginated tools return one page with provider cursors. WebSocket tools observe up to 20 seconds or 100 messages, then close. Account plans and granted scopes determine which calls succeed.

Offline fixtures are synthetic. The initial release verifies protocol behavior and connection handling separately from live provider operations. No live write operations are run during release validation. Transcript tools return available download links; they do not generate or fetch transcript files.

The public REST API does not document all actions available through Restream’s official MCP, including editing or deleting events. This server exposes documented APIs only.