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
list_streams streams you can see, newest updated first; cursor-paged
get_stream one stream with its roster
list_messages a stream timeline or one thread, newest first, markdown text
send_message action: "message" (post markdown), "reply" (answer a message, opens its thread), "reaction" (toggle an emoji)
list_stream_resources / attach_stream_resource / detach_stream_resource the stream’s resources (urls, assets, instructions, skills)

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.

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.