MCP server for Sendbird — chat users, channels, members, and messages from your AI client.
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.
MUTATES Sendbird data: creates a group channel with the given members. Platform API: POST /group_channels.
User ids to add as members of the new channel.
Additional structured data as a string (often JSON).
Channel name.
Channel cover image URL.
If true, the channel is public (joinable without invitation).
Custom channel URL; auto-generated if omitted.
Custom type tag for the channel.
If true, reuse an existing channel with the same members instead of creating a duplicate.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
MUTATES Sendbird data: creates a group channel with the given members. Platform API: POST /group_channels.
| Argument | Type | Description |
|---|---|---|
| data | string | Additional structured data as a string (often JSON). |
| name | string | Channel name. |
| user_ids* | array | User ids to add as members of the new channel. |
| cover_url | string | Channel cover image URL. |
| is_public | boolean | If true, the channel is public (joinable without invitation). |
| channel_url | string | Custom channel URL; auto-generated if omitted. |
| custom_type | string | Custom type tag for the channel. |
| is_distinct | boolean | If true, reuse an existing channel with the same members instead of creating a duplicate. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"user_ids"
],
"properties": {
"data": {
"type": "string",
"description": "Additional structured data as a string (often JSON)."
},
"name": {
"type": "string",
"description": "Channel name."
},
"user_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "User ids to add as members of the new channel."
},
"cover_url": {
"type": "string",
"description": "Channel cover image URL."
},
"is_public": {
"type": "boolean",
"description": "If true, the channel is public (joinable without invitation)."
},
"channel_url": {
"type": "string",
"description": "Custom channel URL; auto-generated if omitted."
},
"custom_type": {
"type": "string",
"description": "Custom type tag for the channel."
},
"is_distinct": {
"type": "boolean",
"description": "If true, reuse an existing channel with the same members instead of creating a duplicate."
}
}
}MUTATES Sendbird data: creates a new user. Platform API: POST /users.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | Unique user id to create. |
| metadata | object | Arbitrary key/value metadata object stored on the user. |
| nickname | string | Display nickname. |
| profile_url | string | Profile image URL (may be empty). |
| issue_access_token | boolean | If true, issues an access token for the user in the response. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"description": "Unique user id to create."
},
"metadata": {
"type": "object",
"description": "Arbitrary key/value metadata object stored on the user.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"nickname": {
"type": "string",
"description": "Display nickname."
},
"profile_url": {
"type": "string",
"description": "Profile image URL (may be empty)."
},
"issue_access_token": {
"type": "boolean",
"description": "If true, issues an access token for the user in the response."
}
}
}Fetch a single group channel by URL, optionally with members and receipts. Platform API: GET /group_channels/{channel_url}.
| Argument | Type | Description |
|---|---|---|
| channel_url* | string | Group channel URL (percent-encoded automatically). |
| show_member | boolean | Include the member list. |
| show_read_receipt | boolean | Include per-member read receipts. |
| show_delivery_receipt | boolean | Include per-member delivery receipts. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"channel_url"
],
"properties": {
"channel_url": {
"type": "string",
"description": "Group channel URL (percent-encoded automatically)."
},
"show_member": {
"type": "boolean",
"description": "Include the member list."
},
"show_read_receipt": {
"type": "boolean",
"description": "Include per-member read receipts."
},
"show_delivery_receipt": {
"type": "boolean",
"description": "Include per-member delivery receipts."
}
}
}Fetch a single open channel by URL. Platform API: GET /open_channels/{channel_url}.
| Argument | Type | Description |
|---|---|---|
| channel_url* | string | Open channel URL (percent-encoded automatically). |
| participants_count | boolean | Include the current participant count. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"channel_url"
],
"properties": {
"channel_url": {
"type": "string",
"description": "Open channel URL (percent-encoded automatically)."
},
"participants_count": {
"type": "boolean",
"description": "Include the current participant count."
}
}
}Fetch a single user by user_id. Platform API: GET /users/{user_id}.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | Target user id (percent-encoded automatically). |
| super_mode | string | Scope unread count by Supergroup vs. group channels. |
| custom_types | string | Comma-separated channel custom types to scope the unread count. |
| include_unread_count | boolean | Include the user's total unread message count. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"description": "Target user id (percent-encoded automatically)."
},
"super_mode": {
"enum": [
"all",
"super",
"nonsuper"
],
"type": "string",
"description": "Scope unread count by Supergroup vs. group channels."
},
"custom_types": {
"type": "string",
"description": "Comma-separated channel custom types to scope the unread count."
},
"include_unread_count": {
"type": "boolean",
"description": "Include the user's total unread message count."
}
}
}List the members of a group channel. Platform API: GET /group_channels/{channel_url}/members. Returns { members[], next }.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, 1-100. Default 10. |
| order | string | Sort order of members. |
| token | string | Pagination token from a previous response's `next`. |
| channel_url* | string | Group channel URL (percent-encoded automatically). |
| operator_filter | string | Filter by operator status. Default all. |
| show_read_receipt | boolean | Include each member's read receipt. |
| member_state_filter | string | Filter by invitation/join state (e.g. joined, invited, invited_by_friend). |
| show_delivery_receipt | boolean | Include each member's delivery receipt. |
List group channels in the application, with rich filtering (name, members, distinct/public/super mode). Platform API: GET /group_channels. Returns { channels[], next }.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, 1-100. Default 10. |
| order | string | Sort order. Default chronological. |
| token | string | Pagination token from a previous response's `next`. |
| super_mode | string | Filter by Supergroup vs. group. Default all. |
| public_mode | string | Filter by public/private. Default all. |
| show_frozen | boolean | Include frozen channels. Default true. |
| show_member | boolean | Include the member list in each channel. |
| custom_types | string | Comma-separated channel custom types to filter on. |
| distinct_mode | string | Filter by distinct flag. Default all. |
List the group channels a given user belongs to. Platform API: GET /users/{user_id}/my_group_channels. Returns { channels[], next }.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, 1-100. Default 10. |
| order | string | Sort order. Default chronological. |
| token | string | Pagination token from a previous response's `next`. |
| user_id* | string | Target user id (percent-encoded automatically). |
| hidden_mode | string | Filter by hidden state (e.g. unhidden_only, hidden_only, all). |
| public_mode | string | Filter by public/private. Default all. |
| show_member | boolean | Include the member list in each channel. |
| custom_types | string | Comma-separated channel custom types to filter on. |
| distinct_mode | string |
List messages in a channel, anchored at a timestamp or message id. Provide EITHER message_ts (unix ms) OR message_id. Platform API: GET /{channel_type}/{channel_url}/messages. Returns { messages[] }.
| Argument | Type | Description |
|---|---|---|
| include | boolean | Include the anchor message itself. |
| reverse | boolean | Return in reverse chronological order. |
| user_ids | string | Comma-separated sender user ids to filter on. |
| message_id | integer | Anchor message id. Provide this OR message_ts. |
| message_ts | integer | Anchor timestamp in unix milliseconds. Provide this OR message_id. |
| next_limit | integer | Number of messages after the anchor, 0-200. |
| prev_limit | integer | Number of messages before the anchor, 0-200. |
| channel_url* | string | Channel URL (percent-encoded automatically). |
| channel_type |
List open (public, participant-based) channels. Platform API: GET /open_channels. Returns { channels[], next }.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, 1-100. Default 10. |
| token | string | Pagination token from a previous response's `next`. |
| custom_types | string | Comma-separated channel custom types to filter on. |
| url_contains | string | Substring match on channel URL. |
| name_contains | string | Substring match on channel name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1-100. Default 10."
},
"token": {
"type": "string",
"description": "Pagination token from a previous response's `next`."
},
"custom_types": {
"type": "string",
"description": "Comma-separated channel custom types to filter on."
},
"url_contains": {
"type": "string",
"description": "Substring match on channel URL."
},
"name_contains": {
"type": "string",
"description": "Substring match on channel name."
}
}
}List the users in the application. Supports filtering by activity, nickname, ids, and metadata. Platform API: GET /users. Returns { users[], next }.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, 1-100. Default 10. |
| token | string | Pagination token from a previous response's `next`. |
| nickname | string | Exact nickname match. |
| show_bot | boolean | Include bot users. Default true. |
| user_ids | string | Comma-separated user ids to fetch specific users. |
| active_mode | string | Filter by activation state. Default activated. |
| metadatakey | string | Metadata key to filter on (pair with metadatavalues_in). |
| metadatavalues_in | string | Comma-separated metadata values matching metadatakey. |
| nickname_startswith | string | Prefix match on nickname. |
Power-user escape hatch: issue a raw GET to any Chat Platform API v3 path not wrapped by a dedicated tool (e.g. /group_channels/{url}/messages/{id}, /report, /applications/settings_global). READ-ONLY — GET only. Platform API: GET {path}.
| Argument | Type | Description |
|---|---|---|
| path* | string | API path beginning with "/", relative to the /v3 base (e.g. "/users/alex%40x.com/blocked_users"). |
| params | string | Optional JSON object (as a string) of query params, e.g. '{"limit":50}'. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"path"
],
"properties": {
"path": {
"type": "string",
"description": "API path beginning with \"/\", relative to the /v3 base (e.g. \"/users/alex%40x.com/blocked_users\")."
},
"params": {
"type": "string",
"description": "Optional JSON object (as a string) of query params, e.g. '{\"limit\":50}'."
}
}
}MUTATES Sendbird data: sends a message into a channel as a user (MESG) or as an admin (ADMM). File/multipart messages are not supported. Platform API: POST /{channel_type}/{channel_url}/messages.
| Argument | Type | Description |
|---|---|---|
| data | string | Additional structured data as a string (often JSON). |
| message* | string | The message text. |
| user_id | string | Sender user id. REQUIRED when message_type is MESG. |
| is_silent | boolean | If true, does not update channel's last message / unread counts. |
| send_push | boolean | Whether to send push notifications. Default true. |
| channel_url* | string | Channel URL (percent-encoded automatically). |
| custom_type | string | Custom type tag for the message. |
| channel_type* | string | Channel type: group_channels (member-based) or open_channels (public, participant-based). |
MUTATES Sendbird data: partially updates a user's profile. Only provided fields change. Platform API: PUT /users/{user_id}.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | Target user id (percent-encoded automatically). |
| nickname | string | New display nickname. |
| profile_url | string | New profile image URL. |
| issue_access_token | boolean | If true, issues a new access token for the user. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"description": "Target user id (percent-encoded automatically)."
},
"nickname": {
"type": "string",
"description": "New display nickname."
},
"profile_url": {
"type": "string",
"description": "New profile image URL."
},
"issue_access_token": {
"type": "boolean",
"description": "If true, issues a new access token for the user."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"channel_url"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1-100. Default 10."
},
"order": {
"enum": [
"member_nickname_alphabetical",
"operator_then_member_alphabetical"
],
"type": "string",
"description": "Sort order of members."
},
"token": {
"type": "string",
"description": "Pagination token from a previous response's `next`."
},
"channel_url": {
"type": "string",
"description": "Group channel URL (percent-encoded automatically)."
},
"operator_filter": {
"enum": [
"all",
"operator",
"nonoperator"
],
"type": "string",
"description": "Filter by operator status. Default all."
},
"show_read_receipt": {
"type": "boolean",
"description": "Include each member's read receipt."
},
"member_state_filter": {
"type": "string",
"description": "Filter by invitation/join state (e.g. joined, invited, invited_by_friend)."
},
"show_delivery_receipt": {
"type": "boolean",
"description": "Include each member's delivery receipt."
}
}
}| name_contains | string | Substring match on channel name. |
| members_include_in | string | Comma-separated user ids; returns channels including any of them. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1-100. Default 10."
},
"order": {
"enum": [
"chronological",
"latest_last_message",
"channel_name_alphabetical",
"metadata_value_alphabetical"
],
"type": "string",
"description": "Sort order. Default chronological."
},
"token": {
"type": "string",
"description": "Pagination token from a previous response's `next`."
},
"super_mode": {
"enum": [
"all",
"super",
"nonsuper"
],
"type": "string",
"description": "Filter by Supergroup vs. group. Default all."
},
"public_mode": {
"enum": [
"all",
"private",
"public"
],
"type": "string",
"description": "Filter by public/private. Default all."
},
"show_frozen": {
"type": "boolean",
"description": "Include frozen channels. Default true."
},
"show_member": {
"type": "boolean",
"description": "Include the member list in each channel."
},
"custom_types": {
"type": "string",
"description": "Comma-separated channel custom types to filter on."
},
"distinct_mode": {
"enum": [
"all",
"distinct",
"nondistinct"
],
"type": "string",
"description": "Filter by distinct flag. Default all."
},
"name_contains": {
"type": "string",
"description": "Substring match on channel name."
},
"members_include_in": {
"type": "string",
"description": "Comma-separated user ids; returns channels including any of them."
}
}
}| Filter by distinct flag. Default all. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"user_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1-100. Default 10."
},
"order": {
"enum": [
"chronological",
"latest_last_message",
"channel_name_alphabetical",
"metadata_value_alphabetical"
],
"type": "string",
"description": "Sort order. Default chronological."
},
"token": {
"type": "string",
"description": "Pagination token from a previous response's `next`."
},
"user_id": {
"type": "string",
"description": "Target user id (percent-encoded automatically)."
},
"hidden_mode": {
"type": "string",
"description": "Filter by hidden state (e.g. unhidden_only, hidden_only, all)."
},
"public_mode": {
"enum": [
"all",
"private",
"public"
],
"type": "string",
"description": "Filter by public/private. Default all."
},
"show_member": {
"type": "boolean",
"description": "Include the member list in each channel."
},
"custom_types": {
"type": "string",
"description": "Comma-separated channel custom types to filter on."
},
"distinct_mode": {
"enum": [
"all",
"distinct",
"nondistinct"
],
"type": "string",
"description": "Filter by distinct flag. Default all."
}
}
}| string |
| Channel type: group_channels (member-based) or open_channels (public, participant-based). |
| custom_types | string | Comma-separated message custom types to filter on. |
| message_type | string | Filter by message type: MESG (text), FILE, or ADMM (admin). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"channel_type",
"channel_url"
],
"properties": {
"include": {
"type": "boolean",
"description": "Include the anchor message itself."
},
"reverse": {
"type": "boolean",
"description": "Return in reverse chronological order."
},
"user_ids": {
"type": "string",
"description": "Comma-separated sender user ids to filter on."
},
"message_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Anchor message id. Provide this OR message_ts."
},
"message_ts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Anchor timestamp in unix milliseconds. Provide this OR message_id."
},
"next_limit": {
"type": "integer",
"maximum": 200,
"minimum": 0,
"description": "Number of messages after the anchor, 0-200."
},
"prev_limit": {
"type": "integer",
"maximum": 200,
"minimum": 0,
"description": "Number of messages before the anchor, 0-200."
},
"channel_url": {
"type": "string",
"description": "Channel URL (percent-encoded automatically)."
},
"channel_type": {
"enum": [
"group_channels",
"open_channels"
],
"type": "string",
"description": "Channel type: group_channels (member-based) or open_channels (public, participant-based)."
},
"custom_types": {
"type": "string",
"description": "Comma-separated message custom types to filter on."
},
"message_type": {
"enum": [
"MESG",
"FILE",
"ADMM"
],
"type": "string",
"description": "Filter by message type: MESG (text), FILE, or ADMM (admin)."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1-100. Default 10."
},
"token": {
"type": "string",
"description": "Pagination token from a previous response's `next`."
},
"nickname": {
"type": "string",
"description": "Exact nickname match."
},
"show_bot": {
"type": "boolean",
"description": "Include bot users. Default true."
},
"user_ids": {
"type": "string",
"description": "Comma-separated user ids to fetch specific users."
},
"active_mode": {
"enum": [
"activated",
"deactivated",
"all"
],
"type": "string",
"description": "Filter by activation state. Default activated."
},
"metadatakey": {
"type": "string",
"description": "Metadata key to filter on (pair with metadatavalues_in)."
},
"metadatavalues_in": {
"type": "string",
"description": "Comma-separated metadata values matching metadatakey."
},
"nickname_startswith": {
"type": "string",
"description": "Prefix match on nickname."
}
}
}| mention_type | string | Mention scope: specific users or the whole channel. |
| message_type | string | MESG (user text, default) or ADMM (admin message, no sender). |
| mentioned_user_ids | array | User ids to mention (when mention_type=users). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"channel_type",
"channel_url",
"message"
],
"properties": {
"data": {
"type": "string",
"description": "Additional structured data as a string (often JSON)."
},
"message": {
"type": "string",
"description": "The message text."
},
"user_id": {
"type": "string",
"description": "Sender user id. REQUIRED when message_type is MESG."
},
"is_silent": {
"type": "boolean",
"description": "If true, does not update channel's last message / unread counts."
},
"send_push": {
"type": "boolean",
"description": "Whether to send push notifications. Default true."
},
"channel_url": {
"type": "string",
"description": "Channel URL (percent-encoded automatically)."
},
"custom_type": {
"type": "string",
"description": "Custom type tag for the message."
},
"channel_type": {
"enum": [
"group_channels",
"open_channels"
],
"type": "string",
"description": "Channel type: group_channels (member-based) or open_channels (public, participant-based)."
},
"mention_type": {
"enum": [
"users",
"channel"
],
"type": "string",
"description": "Mention scope: specific users or the whole channel."
},
"message_type": {
"enum": [
"MESG",
"ADMM"
],
"type": "string",
"description": "MESG (user text, default) or ADMM (admin message, no sender)."
},
"mentioned_user_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "User ids to mention (when mention_type=users)."
}
}
}