Query channels, search messages, and read threads, users and reactions in your Stream Chat app.
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.
Fetch the Stream app's settings and configured channel types. Good first call to confirm credentials and discover available channel types. GET /api/v2/app.
This tool takes no arguments.
Fetch the Stream app's settings and configured channel types. Good first call to confirm credentials and discover available channel types. GET /api/v2/app.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Fetch a single channel's state (config, members) and its most recent messages. Note: uses Stream's get-or-create endpoint — for an existing channel it reads; if the type/id does not exist it may be created empty. POST /api/v2/chat/channels/{type}/{id}/query.
| Argument | Type | Description |
|---|---|---|
| id* | string | Channel id (the part after the type). |
| type* | string | Channel type, e.g. "messaging", "team", "livestream". |
| messages_limit | integer | Recent messages to return. Default 25. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Channel id (the part after the type)."
},
"type": {
"type": "string",
"description": "Channel type, e.g. \"messaging\", \"team\", \"livestream\"."
},
"messages_limit": {
"type": "integer",
"maximum": 300,
"minimum": 0,
"description": "Recent messages to return. Default 25."
}
}
}Fetch a single message by its id. GET /api/v2/chat/messages/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | Message id. |
| show_deleted | boolean | Include the message even if soft-deleted. Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Message id."
},
"show_deleted": {
"type": "boolean",
"description": "Include the message even if soft-deleted. Default false."
}
}
}List the reactions on a message. GET /api/v2/chat/messages/{id}/reactions.
| Argument | Type | Description |
|---|---|---|
| id* | string | Message id. |
| limit | integer | Max reactions. Default 50. |
| offset | integer | Pagination offset. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Message id."
},
"limit": {
"type": "integer",
"maximum": 300,
"description": "Max reactions. Default 50.",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Pagination offset."
}
}
}Fetch the reply messages in a thread, given the parent message id. GET /api/v2/chat/messages/{parent_id}/replies.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max replies (<=300). Default 25. |
| parent_id* | string | Parent (thread-root) message id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"parent_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 300,
"description": "Max replies (<=300). Default 25.",
"exclusiveMinimum": 0
},
"parent_id": {
"type": "string",
"description": "Parent (thread-root) message id."
}
}
}Fetch total and per-channel unread message/mention counts for one user. GET /api/v2/chat/unread.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | User id to fetch unread counts for. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"description": "User id to fetch unread counts for."
}
}
}List/filter channels by a Stream query filter. e.g. filter {"type":"messaging"} or {"members":{"$in":["user-1"]}}. Returns channels with recent state. POST /api/v2/chat/channels.
| Argument | Type | Description |
|---|---|---|
| sort | array | Default [{"field":"last_message_at","direction":-1}]. |
| limit | integer | Max channels (<=30). Default 30. |
| filter | object | Stream filter_conditions object, e.g. {"type":"messaging"} or {"members":{"$in":["u1"]}}. Default {} (all channels the app can see). |
| offset | integer | Pagination offset. |
| message_limit | integer | Recent messages per channel to include. Default 25. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
}
}
},
"description": "Default [{\"field\":\"last_message_at\",\"direction\":-1}]."
},
"limit": {
"type": "integer",
"maximum": 30,
"description": "Max channels (<=30). Default 30.",
"exclusiveMinimum": 0
},
"filter": {
"type": "object",
"description": "Stream filter_conditions object, e.g. {\"type\":\"messaging\"} or {\"members\":{\"$in\":[\"u1\"]}}. Default {} (all channels the app can see).",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Pagination offset."
},
"message_limit": {
"type": "integer",
"maximum": 300,
"minimum": 0,
"description": "Recent messages per channel to include. Default 25."
}
}
}List/filter the members of one channel. Requires the channel type + id. Optional member filter, e.g. {"name":{"$autocomplete":"jo"}}. GET /api/v2/chat/members.
| Argument | Type | Description |
|---|---|---|
| id* | string | Channel id. |
| sort | array | Sort spec, e.g. [{"field":"created_at","direction":1}]. |
| type* | string | Channel type, e.g. "messaging". |
| limit | integer | Max members (<=100). Default 100. |
| filter | object | Member filter_conditions, e.g. {"user_id":{"$in":["u1","u2"]}}. Default {}. |
| offset | integer | Pagination offset. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Channel id."
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
}
}
},
"description": "Sort spec, e.g. [{\"field\":\"created_at\",\"direction\":1}]."
},
"type": {
"type": "string",
"description": "Channel type, e.g. \"messaging\"."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Max members (<=100). Default 100.",
"exclusiveMinimum": 0
},
"filter": {
"type": "object",
"description": "Member filter_conditions, e.g. {\"user_id\":{\"$in\":[\"u1\",\"u2\"]}}. Default {}.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Pagination offset."
}
}
}List threads (messages with replies). Server-side calls should pass a user_id to scope thread read-state to that user. POST /api/v2/chat/threads.
| Argument | Type | Description |
|---|---|---|
| sort | array | Sort spec for threads. |
| limit | integer | Max threads (<=25). Default 10. |
| user_id | string | User id to scope thread participation/read-state to. |
| reply_limit | integer | Replies to preview per thread. Default 3. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
}
}
},
"description": "Sort spec for threads."
},
"limit": {
"type": "integer",
"maximum": 25,
"description": "Max threads (<=25). Default 10.",
"exclusiveMinimum": 0
},
"user_id": {
"type": "string",
"description": "User id to scope thread participation/read-state to."
},
"reply_limit": {
"type": "integer",
"maximum": 10,
"minimum": 0,
"description": "Replies to preview per thread. Default 3."
}
}
}List/filter users in the app. e.g. filter {"role":{"$eq":"admin"}} or {"id":{"$in":["u1"]}}. GET /api/v2/users.
| Argument | Type | Description |
|---|---|---|
| sort | array | Sort spec, e.g. [{"field":"created_at","direction":-1}]. |
| limit | integer | Max users (<=100). Default 100. |
| filter | object | User filter_conditions, e.g. {"role":{"$eq":"admin"}}. Default {} (all users). |
| offset | integer | Pagination offset. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
}
}
},
"description": "Sort spec, e.g. [{\"field\":\"created_at\",\"direction\":-1}]."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Max users (<=100). Default 100.",
"exclusiveMinimum": 0
},
"filter": {
"type": "object",
"description": "User filter_conditions, e.g. {\"role\":{\"$eq\":\"admin\"}}. Default {} (all users).",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Pagination offset."
}
}
}Search messages across channels. Scope with a channel filter (filter, e.g. {"type":"messaging"}) plus EITHER a full-text `query` OR a `message_filter` object (e.g. {"text":{"$q":"refund"}}). GET /api/v2/chat/search.
| Argument | Type | Description |
|---|---|---|
| next | string | Pagination cursor returned by a previous search. |
| sort | array | Sort spec for results. |
| limit | integer | Max results (<=100). Default 20. |
| query | string | Full-text search string. Provide this OR message_filter. |
| filter* | object | Channel filter_conditions, e.g. {"type":"messaging"} or {"members":{"$in":["u1"]}}. |
| message_filter | object | Message filter object, e.g. {"text":{"$q":"refund"}} or {"attachments":{"$exists":true}}. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"filter"
],
"properties": {
"next": {
"type": "string",
"description": "Pagination cursor returned by a previous search."
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
}
}
},
"description": "Sort spec for results."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Max results (<=100). Default 20.",
"exclusiveMinimum": 0
},
"query": {
"type": "string",
"description": "Full-text search string. Provide this OR message_filter."
},
"filter": {
"type": "object",
"description": "Channel filter_conditions, e.g. {\"type\":\"messaging\"} or {\"members\":{\"$in\":[\"u1\"]}}.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"message_filter": {
"type": "object",
"description": "Message filter object, e.g. {\"text\":{\"$q\":\"refund\"}} or {\"attachments\":{\"$exists\":true}}.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}⚠️ WRITE: post a new message to a channel, attributed to user_id (must be an existing user in the app). POST /api/v2/chat/channels/{type}/{id}/message.
| Argument | Type | Description |
|---|---|---|
| id* | string | Channel id. |
| text* | string | Message text. |
| type* | string | Channel type, e.g. "messaging". |
| user_id* | string | Existing user id to send the message as. |
| mentioned_users | array | User ids to @mention. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"id",
"text",
"user_id"
],
"properties": {
"id": {
"type": "string",
"description": "Channel id."
},
"text": {
"type": "string",
"minLength": 1,
"description": "Message text."
},
"type": {
"type": "string",
"description": "Channel type, e.g. \"messaging\"."
},
"user_id": {
"type": "string",
"description": "Existing user id to send the message as."
},
"mentioned_users": {
"type": "array",
"items": {
"type": "string"
},
"description": "User ids to @mention."
}
}
}⚠️ WRITE: add a reaction (e.g. "like", "love") to a message, attributed to user_id (must be an existing user). POST /api/v2/chat/messages/{id}/reaction.
| Argument | Type | Description |
|---|---|---|
| id* | string | Message id to react to. |
| user_id* | string | Existing user id to react as. |
| reaction_type* | string | Reaction type, e.g. "like", "love", "haha". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"reaction_type",
"user_id"
],
"properties": {
"id": {
"type": "string",
"description": "Message id to react to."
},
"user_id": {
"type": "string",
"description": "Existing user id to react as."
},
"reaction_type": {
"type": "string",
"minLength": 1,
"description": "Reaction type, e.g. \"like\", \"love\", \"haha\"."
}
}
}