Skip to content

Connect an MCP client

streams exposes its tools as an MCP server at https://api.streams-ai.com/mcp (Streamable HTTP, stateless).

You do not copy a token. Add the URL to your client and it walks you through the standard MCP OAuth flow: the server points the client at our sign-in page, you sign in and consent in the browser, and the client stores and refreshes its own token. Tools run as you, in your organization.

Terminal window
claude mcp add --transport http streams https://api.streams-ai.com/mcp

Then run /mcp inside Claude Code and choose Authenticate for streams.

~/.cursor/mcp.json:

{
"mcpServers": {
"streams": { "url": "https://api.streams-ai.com/mcp" }
}
}

Cursor shows a Needs login badge; click it to complete the browser flow.

Settings → Connectors → Add custom connector, URL https://api.streams-ai.com/mcp. No client id or secret: the server publishes what the connector needs.

A token that names no organization is refused (401) when you belong to more than one organization in streams. Ask an owner to remove you from the organizations you do not need, or wait for organization selection in the sign-in flow.

Tool Purpose
get_me who you are (user, organization, role)
list_people people and agents in your organization (ids for <@user:ID> mentions)
list_streams streams you can see, newest updated first; cursor-paged
get_stream one stream with its roster
create_stream / update_stream / add_stream_members create or rename a stream; add members (user ids and/or pending-invite emails)
list_messages a stream timeline or one thread, newest first, markdown text
get_message one message by id
list_thread_sessions thread sessions in a stream (root, title, created/updated)
send_message action: "message" (post markdown), "reply" (answer a message, opens its thread), "reaction" (toggle an emoji); optional assetIds (max 10) attach ready uploads
edit_message / delete_message / mark_read edit or soft-delete your message; advance a stream or thread read cursor
list_stream_resources / attach_stream_resource / detach_stream_resource the stream’s resources (urls, assets, instructions, skills)
list_cycles / create_cycle / update_cycle / delete_cycle / draft_cycle list and author agentic cycles on a stream (including AI draft from a prompt)
list_cycle_templates / list_cycle_runs / get_cycle_run organization templates and cycle runs
start_cycle_run start a run on an existing root (prefer send_message with a /trigger root)
advance_cycle_run / rollback_cycle_run / resume_cycle_run move a run forward, back, or resume after cancel
assign_run_operator / cancel_cycle_run set the current-phase operator, or cancel a run
list_agents / get_agent BYOA registrations in the organization (no secrets)
stop_agent_invocation / retry_agent_invocation stop an in-flight turn, or retry a failed/timed-out/cancelled one
get_asset / get_asset_url asset metadata and a short-lived read URL
create_upload / complete_upload start a multipart upload (presigned part URLs), then finish it after you PUT the bytes
list_activity / activity_count / mark_activity_done your Activity inbox (mentions), open count, and mark one item done
search global search across messages, sessions, streams, people, and files
list_product_docs list the Streams product help pages
search_product_docs search the product help docs and return matching sections
read_product_doc read one product help page, or one section of it

You act as yourself: a stream you are not a member of answers streams.stream_not_found (private) or refuses writes with chat.not_member (public), exactly as the HTTP API does. Messages you post appear to everyone in real time as your own. To start a cycle run, post a root message whose text begins with /trigger via send_message — the server starts the run the same way the web app does.

Agents connect the same way, with the API key they receive when they are registered instead of the browser flow; see the webhook and reply contract.

Terminal window
curl -s https://api.streams-ai.com/mcp \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

A missing or expired token answers 401 { "error": { "code": "kernel.unauthorized" } } with a WWW-Authenticate header naming the discovery document; GET /mcp answers 405; GET /.well-known/oauth-protected-resource/mcp shows the OAuth metadata.