Streamloop
REMOTE · MCP.STREAMLOOP.APP
Manage cloud-hosted 24/7 video streams, playlists, destinations, schedules, media and workspaces.
Available components
Last scanned (25 minutes ago)
Scores higher than 97% of remote servers
Reachable. Last reached 5 Nov 2026.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security91
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability67
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 13908 tokens (~207/item across 67 items; 67 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
- Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 8 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 68 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 4 Nov 26 +1
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 3 Nov 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 2 Nov 26 +1
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 1 Nov 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 31 Oct 26 +1
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 30 Oct 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 29 Oct 26 +1
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://mcp.streamloop.app/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=streamloop.app | CN=WE1,O=Google Trust Services,C=US | 28 Sept 2026 | 27 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | e877338baf3445140e80a7104fe54b13 |
| SANs: streamloop.app, *.streamloop.app | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of mcp.streamloop.app. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| streamloop.app. | present | 2371 | 13 | Verified |
| mcp.streamloop.app. | Verified address RRset verified with the apex keys |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer realm="streamloop-mcp", resource_metadata="https://mcp.streamloop.app/.well-known/oauth-protected-resource"
Bearer realm="streamloop-mcp", resource_metadata="https://mcp.streamloop.app/.well-known/oauth-protected-resource" Protected resource metadata
| Document | https://mcp.streamloop.app/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.streamloop.app/mcp |
| Authorisation server | https://auth.streamloop.app |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.streamloop.app/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.streamloop.app/mcp | HTTPS enforced | 301 | https://mcp.streamloop.app/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
revoke_scene_ingest_key Revoke an ingest key ~126
Revokes an ingest key for good: the encoder using it is cut off at once. It cannot be restored; a new key for the same source: create_scene_ingest_key. Answers revoked (the key's id).
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set true to actually execute this irreversible action. Without it the tool returns a confirmation prompt and makes no changes. |
| keyId | string | yes | The key's id (ingkey_…), from list_scene_inputs |
| scene | string | yes | The scene (scn_…), from list_scenes or create_scene. |
Structured output declared, but exposes no named fields.
No examples provided.
scene_get Read a scene's draft ~552
Read the scene's draft (or a published version, with version): a resource (with its revision and children, the sub-paths to read next), a type such as element/Text or source/data (its props), a mask ending in /* (a list), or "" (the types). as: "image" on a frame or layer → a picture of it. (In a scene's draft; scene: its id.) Answers summary and value (the resource, with its revision and children), or image for as "image"; plus draftRevision (version, for a published version).
| Name | Type | Req | Description |
|---|---|---|---|
| as | string | – | image: a picture of a frame (the whole of it, at most 1280 px wide) or of one layer (at full design size, to look closely; origin: where its top-left is in the frame), with what drew and the issues:… |
| at | number | – | Picture: ms since the frame went on air (default: entrances settled) |
| data | string | – | Picture: bindings read live values (the default: tables as last read) or sample data (each table's own rows). Either way state.* is the state the show starts with — what onStart sets, else each field… |
| limit | integer | – | Reading a table's rows (source/data/<id>/rows): how many to return; 20 when omitted |
| offset | integer | – | Reading a table's rows (source/data/<id>/rows): the 0-based index of the first one; 0 when omitted |
| overlay | string | – | Picture: a guide drawn over it to check placement — grid: lines every 10 % labelled in design pixels; ids: each layer's outline and id. Omitted: none |
| path | string | yes | type[/kind]/id[/…], a type, a mask ending in /*, or "" for the types |
| scene | string | yes | The scene (scn_…), from list_scenes or create_scene. |
| version | – | – | Read a saved published version instead of the draft: its number, or "published" for the latest one — published even when no stream is running. What a running stream shows: get_scene_state |
Structured output declared, but exposes no named fields.
No examples provided.
scene_probe Look at a URL for a table ~378
Fetch a URL once, changing nothing in the show: HTTP status, content type, an outline of the JSON (keys, their values, array lengths) or the page's title and text, and the rows a table would get from it with connector, pick and headers — or, with connector mcp, an MCP server's tools, or one tool's rows with tool and args. Use it before creating a URL or MCP table, and to find the pick path or selector. (In a scene's draft; scene: its id.)
| Name | Type | Req | Description |
|---|---|---|---|
| args | object | – | mcp, with tool: the arguments to call that tool with, shaped as its input schema (a probe without tool lists each tool's schema). Omitted: none |
| connector | string | – | How to read it as rows (default: from the content type); mcp: the URL is an MCP server |
| headers | object | – | Request headers, e.g. { Authorization: "Bearer <key>" } — a key the user gave, never a guessed one |
| pick | string | – | json, mcp: a path into the document or the tool's result, e.g. chart.result[0].meta — an array there is the rows, an object one row; html: a CSS selector, each match a row |
| scene | string | yes | The scene (scn_…), from list_scenes or create_scene. |
| sheet | string | – | xlsx, sheets: which tab |
| tool | string | – | mcp: the tool to call; without it, the server's tools are listed |
| url | string | yes | The http(s) address to read: a JSON API, a CSV or spreadsheet file, a Google Sheet, a web page, or with connector mcp an MCP server's endpoint |
Structured output declared, but exposes no named fields.
No examples provided.
scene_remove Remove from a scene's draft ~238
Delete whole resources (frames, layers, sources, components). All or nothing: anything in use by something not removed in the same call is refused, with what uses it. (In a scene's draft; scene: its id.) Removing a resource needs its revision in `revisions` (path → the revision you read; "*": whatever is there, on purpose); without it the answer is REVISION_REQUIRED. It changes the draft only: viewers see nothing until publish_scene, and discard_scene_draft brings back what was published. Answers summary, removed (the paths) and draftRevision.
| Name | Type | Req | Description |
|---|---|---|---|
| paths | array | yes | The resources to delete, by path as get answers them: frame/intro, frame/intro/title (one layer), source/data/headlines, component/LowerThird |
| revisions | object | – | path → the revision you read it at (or its frame's; "*": whatever is there); nothing is removed if one changed since (CONFLICT). Over the MCP every path needs one (REVISION_REQUIRED) |
| scene | string | yes | The scene (scn_…), from list_scenes or create_scene. |
Structured output declared, but exposes no named fields.
No examples provided.
scene_set Change a scene's draft ~453
Create, replace or change one resource; get <type> shows what each takes, with an example. value is the whole resource, as get answers it: a frame { code: "<JSX>" } or, as JSON, { name, root }; a component { description, props, tsx }; a source or table its fields. edits change part of it: [{ old, new }] replaces text in its code (copy old from what get answers: code is stored formatted), or an object is merged into its fields. One layer changes alone at its own path: frame/<id>/<layer> with edits { props: { … } }. Every set is checked as the studio checks it; a refused set changes nothing: read the error, fix, send again. The answer has the path it is stored at, its new revision, what changed, and draftRevision (the draft as it is now: what publish takes). (In a scene's draft; scene: its id.) Changing a resource that exists needs its `revision`, from the answer that read it ("*" overwrites whatever is there, on purpose); without it the answer is REVISION_REQUIRED. A new path needs none.
| Name | Type | Req | Description |
|---|---|---|---|
| edits | – | – | Part of the resource: text replacements in its code (a frame's code, a component's tsx, a script), or an object merged into its fields (a JSON merge patch; null removes a field) |
| path | string | yes | What to write, e.g. frame/intro, source/data/headlines, component/LowerThird |
| revision | – | – | The revision get or the last set answered (of this path, or of the frame a layer is in): the set is refused (CONFLICT, with currentRevision) if it changed since. Send it whenever the path exists — "*… |
| scene | string | yes | The scene (scn_…), from list_scenes or create_scene. |
| value | object | – | The whole resource: a field left out is cleared (to change part of it, send edits) |
Structured output declared, but exposes no named fields.
No examples provided.
schedule_stream Schedule stream ~477
Set the window a stream runs in, once or on a repeat, and arm it. The stream must already be startable — a destination plus either a playable video playlist or an attached published scene (check_stream_readiness) — otherwise the window arrives and the start fails. repeat=daily re-arms the window exactly 24h later; repeat=weekly re-arms +7 days, or on the weekdays given in `days`. Both repeats REQUIRE scheduleEndAt and a window shorter than 24h; a one-off (repeat=none, the default) may be open-ended. `days` are UTC weekdays of the start instant, so a 9pm Monday Eastern window repeats on TUESDAY — the result echoes the committed window in UTC with its UTC weekday so this is visible. Replaces any existing window; cancel_stream_schedule disarms it. Returns the stream (id, name, state, scheduleStartAt, scheduleEndAt, scheduleRepeat, scheduleRepeatDays) and committedWindow: the window in UTC, its UTC start weekday, and the times exactly as you sent them.
| Name | Type | Req | Description |
|---|---|---|---|
| days | array | – | Only with repeat=weekly: the UTC weekdays the window starts on (distinct). Omit for the same UTC weekday as scheduleStartAt, every 7 days. |
| repeat | string | – | How the window recurs: once when omitted, every 24h, or every 7 days (or on `days`). A repeat needs scheduleEndAt. |
| scheduleEndAt | string | – | When the stream should stop. Needed for a daily or weekly repeat, less than 24h after the start; omit for a one-off that runs until stopped. An instant in the user's own time zone, with that zone's o… |
| scheduleStartAt | string | yes | When the stream should start. An instant in the user's own time zone, with that zone's offset: 6am US Eastern daylight time is 2026-09-22T06:00:00-04:00. The user's clock numbers are not UTC. |
| streamId | string | yes | Stream id (stream_...) to schedule. |
Structured output declared, but exposes no named fields.
No examples provided.
select_workspace Select workspace ~161
Switch which workspace this connection works in, for every later tool call on this connection (other connections, even ones sharing the same login, are unaffected). Takes an `id` from list_workspaces; membership is checked here and again by the API on every request, so this grants no access by itself. Use it when a stream, upload or destination the user describes is not in this workspace. Overrides a workspace the client pinned in its own configuration (the X-Workspace-Id header, or MCP_WORKSPACE_ID on stdio) for the rest of this connection. Call it again at any time to switch back.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | yes | A workspace `id` (wksp_...) from list_workspaces. The organization id is also accepted. |
Structured output declared, but exposes no named fields.
No examples provided.
set_scene_secret Set scene secret ~147
Saves an API key or token a scene's tables send (sealed; never shown again). A table names it as "$secret:<name>" in a header value or a URL's query. A name that exists already has its value replaced, and tables using it send the new one. Only a key the user gave you. Answers name and updatedAt.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | The name tables refer to it by, as "$secret:<name>", e.g. weatherKey |
| scene | string | yes | The scene (scn_…), from list_scenes or create_scene. |
| value | string | yes | The API key or token itself, exactly as the user gave it |
Structured output declared, but exposes no named fields.
No examples provided.
set_stream_destination_enabled Enable or disable a stream's destination ~147
Stop or resume sending to one of a stream's destinations without removing it. Disabling works while the stream is live — that output goes off the air at once — except for its last enabled destination (LAST_DESTINATION: stop_stream instead). Enabling is refused while live (STREAM_LIVE). Returns the stream's whole destination list after the change, as list_stream_destinations does.
| Name | Type | Req | Description |
|---|---|---|---|
| destinationId | string | yes | Destination id (dest_...), from list_destinations or list_stream_destinations. |
| enabled | boolean | yes | true: send to it; false: stop sending to it. |
| streamId | string | yes | Stream id (stream_...), from list_streams. |
Structured output declared, but exposes no named fields.
No examples provided.
set_stream_scene Put a scene on a stream ~100
Makes a stream play a scene (its published version) instead of a video playlist, or with scene null stops doing so. Refused (STREAM_LIVE) while the stream runs: stop it, set the scene, start it again. The scene must be published first (publish_scene).
| Name | Type | Req | Description |
|---|---|---|---|
| scene | – | yes | The scene (scn_…); null: none |
| streamId | string | yes | A stream's id, from list_streams. |
Structured output declared, but exposes no named fields.
No examples provided.
start_stream Start stream ~353
Start streaming now, looping the stream's playlist (or playing its scene) until it is stopped. THIS PUTS VIDEO IN FRONT OF THE PUBLIC, so confirm with the user first unless they just asked for it. Requires a destination plus either a playable video playlist (at least one item) or an attached published scene (set_stream_scene) — check_stream_readiness reports what is missing without changing anything, and is worth calling first. A failed pre-flight is NOT an error: the call succeeds and the answer's `state` is `invalid` — read `state` first: invalid means refused, with `issues` saying why (fix them and start again); `preparing` means accepted. Media facts (duration, sound) arrive about 15-25 s after an upload completes, so a playlist of just-finished uploads can be refused until then. Other refusals (a state that cannot start, a guard failing at the moment of starting) are errors. Credits are NOT part of the pre-flight: the balance is verified when the stream actually activates, so an otherwise-ready stream can still fail to start on an empty wallet — get_billing_overview is what tells you that. A playlist loop takes the playlist as it currently is, with nothing to publish first; a scene plays its published version (publish_scene). Asynchronous: the stream reports a starting state immediately and is live within about a minute. To start at a future time (or every day) use schedule_stream instead. Returns state, started (false when refused), issues (when refused) and startStream (the stream: id, name, state).
| Name | Type | Req | Description |
|---|---|---|---|
| streamId | string | yes | Stream id (stream_...) to start. |
Structured output declared, but exposes no named fields.
No examples provided.
start_youtube_connection Connect a YouTube account ~147
Begin connecting a Google account so its YouTube channels can be streamed to with managed broadcasts (titles, privacy, thumbnails, live stats). Returns a Google consent URL — give it to the user to open in a browser; consent cannot be completed by an agent. Afterwards, list_youtube_channels shows the authorized channels and create_youtube_destination turns one into a destination. Also the fix for a destination whose status is needs_reauth or revoked. Not needed for plain RTMP publishing to YouTube — that is create_rtmp_destination, but it cannot manage the broadcast.
| Name | Type | Req | Description |
|---|---|---|---|
| returnUrl | string | – | Where Google should send the user after consent. Defaults to the Streamloop destinations page. |
Structured output declared, but exposes no named fields.
No examples provided.
stop_stream Stop stream ~87
Stop a stream that is live or starting. It stops publishing and becomes inactive; nothing is deleted and it can be started again with the same configuration. Does NOT cancel a recurring schedule — a daily or weekly stream stopped here starts again at its next window, so call cancel_stream_schedule as well to keep it off.
| Name | Type | Req | Description |
|---|---|---|---|
| streamId | string | yes | Stream id (stream_...) to stop. |
Structured output declared, but exposes no named fields.
No examples provided.
swap_live_playlist Swap the playlist of a live stream ~235
Use this ONLY to put an edited playlist on the air while its stream is LIVE — the hot swap the product calls publishing. The stream changes over to the new arrangement without going off the air. NOT needed to set a stream up and NOT needed before a first start: starting a stream takes the playlist as it is then, so on a stream that is not live this tool just fails with NOT_LIVE. Asynchronous — newly added media may have to be encoded first, so poll get_playlist until the swap is no longer in progress. expectedDraftVersion is required (the `version` from get_playlist) so a concurrent edit is reported instead of going live by accident. Other failures name their cause: STALE_DRAFT (refetch and retry), EMPTY_PLAYLIST, BROKEN_ITEM (an item's media was deleted or never finished uploading), RECIPE_MISMATCH, NOT_FOUND.
| Name | Type | Req | Description |
|---|---|---|---|
| expectedDraftVersion | integer | yes | Required: the `version` from get_playlist. On STALE_DRAFT, refetch and retry. |
| playlistId | string | yes | Playlist id (pl_...) whose draft should go live. |
Structured output declared, but exposes no named fields.
No examples provided.
unassign_playlist_order Remove playlist order ~86
Stop a playlist using a custom order; it returns to playing in its own item order (or shuffled, per the playlist's mode). The order itself is kept and can be assigned again. Like assigning, it takes effect on a running stream immediately, with no swap_live_playlist needed.
| Name | Type | Req | Description |
|---|---|---|---|
| playlistId | string | yes | Playlist (pl_...) to clear the custom order from. |
Structured output declared, but exposes no named fields.
No examples provided.
update_destination Update destination ~203
Maintain an existing destination: rename it, replace the stream key after the platform rotated it (custom RTMP only — a connected YouTube channel has no key to set), and archive or restore it. Archiving hides a destination from the picker without deleting it; it is reversible with archived=false. A live stream keeps publishing with the key it started with, so restart the stream after rotating a key. Pass only the fields to change. NOT transactional: each change commits on its own, and on a failure the response lists which ones already applied.
| Name | Type | Req | Description |
|---|---|---|---|
| archived | boolean | – | true archives the destination (reversible); false restores it. |
| id | string | yes | Destination id (dest_...), from list_destinations. |
| name | string | – | New display name. |
| rtmpKey | string | – | The new stream key, copied from the platform's own streaming settings after it rotated the old one. Custom RTMP destinations only. Stored encrypted and never shown again. |
Structured output declared, but exposes no named fields.
No examples provided.
update_stream Update stream ~440
Change a stream's settings (name, quality, framerate, duration, storage, backup ingest) and/or its YouTube broadcast settings via the `youtube` object. Where it publishes is add_stream_destination / set_stream_destination_enabled / remove_stream_destination; when it runs is schedule_stream. The `youtube` settings only apply when one of the stream's destinations is a YouTube channel connected through Streamloop — not a custom RTMP destination, and not YouTube reached through a raw RTMP URL and key — and are otherwise skipped with a notice. Set retryMirror=true to re-attempt mirroring the schedule onto YouTube after a reconnect or a quota recovery. PARTIAL SUCCESS: settings are applied first, so if the YouTube settings then fail, `stream` still reflects the applied settings and `youtubeSettingsError` explains the YouTube failure — the settings change is NOT rolled back.
| Name | Type | Req | Description |
|---|---|---|---|
| framerate | string | – | Frames per second the stream is sent at. |
| id | string | yes | Stream id (stream_...) to update. |
| name | string | – | Display name for the stream. |
| quality | string | – | Output resolution sent to every destination; the account's preferred quality when omitted. |
| retryMirror | boolean | – | true re-attempts copying this stream's schedule onto its YouTube broadcast, e.g. after reconnecting the channel. |
| runBackupStream | boolean | – | Also publish to YouTube's backup ingest for redundancy. Doubles the streaming cost while live. |
| storageBackend | string | – | Media storage: standard (included) or large, for big playlists, billed per GiB-month. |
| streamDuration | integer | – | Stop after this many seconds of streaming; 0 = run until stopped. |
| youtube | object | – | YouTube broadcast settings (title/privacy/thumbnail/etc.). ONLY take effect when the stream's destination is a YouTube channel connected through Streamloop. They are NOT supported for custom RTMP des… |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the Streamloop MCP server?
Streamloop is a hosted endpoint at https://mcp.streamloop.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.streamloop.app
claude mcp add --transport http streamloop-mcp 'https://mcp.streamloop.app/mcp'
What is the Streamloop MCP server?
Streamloop is an MCP server listed in the public MCP registry as io.github.streamloop/mcp. Manage cloud-hosted 24/7 video streams, playlists, destinations, schedules, media and workspaces. This page covers its hosted endpoint (https://mcp.streamloop.app/mcp).
Is the Streamloop MCP server safe to use?
Streamloop scores 89 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Streamloop MCP server expose?
Streamloop exposes 67 tools: list_streams, get_stream, start_stream, stop_stream, delete_stream, and 62 more. Their descriptions and schemas cost roughly 13,624 tokens of context every time the server is loaded.
Does the Streamloop MCP server require authentication?
Yes. Streamloop asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Streamloop MCP server still maintained?
Streamloop is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.