sendbird
Server Details
MCP server for Sendbird — chat users, channels, members, and messages from your AI client.
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
Tool Definition Quality
Average 4/5 across 14 of 14 tools scored. Lowest: 3.4/5.
Each tool maps to a distinct resource-action pair (users, group/open channels, members, messages), and the get/list/create/update/send verbs keep boundaries clear. The raw GET escape hatch is explicitly limited to unwrapped paths, so it does not create meaningful overlap.
All tools follow the predictable sendbird_<verb>_<resource> snake_case pattern, with consistent verbs like create, get, list, update, and send. The generic sendbird_request is a deliberate exception rather than a naming inconsistency.
14 tools is within the ideal range and each tool covers a coherent piece of Sendbird's chat platform: users, channels, members, messages, and a raw GET fallback. There are no redundant or filler tools.
The set covers common read/list flows and some mutations, but lifecycle coverage has notable gaps: group channels can be created and read but not updated/deleted, messages can be sent and listed but not updated/deleted, and users have no delete operation. The raw GET tool is read-only and cannot compensate for these missing write operations.
Available Tools
14 toolssendbird_create_group_channelCreate a group channelADestructiveInspect
MUTATES Sendbird data: creates a group channel with the given members. Platform API: POST /group_channels.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Additional structured data as a string (often JSON). | |
| name | No | Channel name. | |
| user_ids | Yes | User ids to add as members of the new channel. | |
| cover_url | No | Channel cover image URL. | |
| is_public | No | If true, the channel is public (joinable without invitation). | |
| channel_url | No | Custom channel URL; auto-generated if omitted. | |
| custom_type | No | Custom type tag for the channel. | |
| is_distinct | No | If true, reuse an existing channel with the same members instead of creating a duplicate. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly flags the operation as 'MUTATES Sendbird data' and provides the REST endpoint, which adds useful context. Since the annotations already include destructiveHint: true, the mutation warning is partly redundant, but the description does not contradict the annotations. It does not disclose additional side effects, such as distinct-channel reuse behavior or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the most important safety signal ('MUTATES'), clearly states the action, and includes the API endpoint. Every part earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter creation tool with 100% schema coverage and a destructiveHint annotation, the description provides the essential framing: mutation, target resource, and API endpoint. It does not describe return values, but no output schema is present, and the operation is straightforward enough that the missing return details are a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the input schema. The description adds only a general reference to 'given members,' which maps to user_ids, but it does not provide additional semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'creates a group channel with the given members.' It also names the exact Platform API endpoint, which makes the operation unambiguous. This clearly distinguishes it from sibling tools like sendbird_create_user, sendbird_get_group_channel, or sendbird_send_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the description: use this when you need to create a new group channel with specified members. However, it provides no explicit when-to-use versus alternatives, no exclusions, and no mention of related tools such as sendbird_list_group_channels for finding existing channels.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_create_userCreate a userBDestructiveInspect
MUTATES Sendbird data: creates a new user. Platform API: POST /users.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Unique user id to create. | |
| metadata | No | Arbitrary key/value metadata object stored on the user. | |
| nickname | No | Display nickname. | |
| profile_url | No | Profile image URL (may be empty). | |
| issue_access_token | No | If true, issues an access token for the user in the response. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description's 'MUTATES' merely restates that in words. It adds no new behavioral context beyond the annotation, such as error behavior, idempotency, permission requirements, or side effects. Since the description does not enrich the annotation, it falls short.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is just two sentences with zero filler. The core operation is front-loaded ('MUTATES Sendbird data: creates a new user'), followed by the API endpoint. Every word earns its place, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does not explain what the response contains (e.g., created user object, access token when requested), nor does it address failure cases like duplicate user_id conflicts. The description plus schema and annotation are enough to make the call, but missing operational details reduce completeness for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — all five parameters (user_id, metadata, nickname, profile_url, issue_access_token) are fully documented in the input schema. The description adds no parameter-specific meaning, so a baseline of 3 is appropriate given the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('creates') and resource ('a new user'), plus the exact API endpoint 'POST /users'. This clearly distinguishes it from read-only siblings like sendbird_get_user and sendbird_list_users, and from sendbird_update_user. The title and name further reinforce the intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the verb 'creates' — an agent can infer this is the tool for making a new user. However, there is no explicit guidance about when not to use it, what to do if the user already exists, or how it relates to sendbird_update_user as an alternative. The description provides no exclusions or conditional routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_get_group_channelGet a group channelARead-onlyInspect
Fetch a single group channel by URL, optionally with members and receipts. Platform API: GET /group_channels/{channel_url}.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_url | Yes | Group channel URL (percent-encoded automatically). | |
| show_member | No | Include the member list. | |
| show_read_receipt | No | Include per-member read receipts. | |
| show_delivery_receipt | No | Include per-member delivery receipts. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already conveys that this is a safe read operation, lowering the bar. The description adds useful context about optional members and receipts and exposes the exact REST endpoint (GET /group_channels/{channel_url}). It does not describe the response shape, but annotations cover the safety profile sufficiently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The main purpose is front-loaded, and the API endpoint reference provides a useful implementation detail without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-resource GET with fully documented parameters and a readOnly annotation, the definition is almost complete. It does not explicitly describe the return value, but 'Fetch a group channel' implies the channel resource is returned. Given no output schema, a brief return-value note would have been nice, but the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with helpful descriptions for all four parameters. The description only recaps that members and receipts are optional, which adds no semantic detail beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Fetch a single group channel by URL.' It clearly distinguishes from siblings like list_group_channels (single vs. list) and get_open_channel (group vs. open), leaving no ambiguity about which resource and scope is targeted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this tool when you need one group channel identified by URL. It implies exclusion of list operations through the word 'single,' though it does not explicitly name alternatives or state when not to use it. The context is clear enough for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_get_open_channelGet an open channelARead-onlyInspect
Fetch a single open channel by URL. Platform API: GET /open_channels/{channel_url}.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_url | Yes | Open channel URL (percent-encoded automatically). | |
| participants_count | No | Include the current participant count. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation. The description adds the HTTP method and endpoint path, which gives useful protocol-level context, but does not disclose additional behavior such as error cases or response shape. This is acceptable for a simple read endpoint, though not exceptionally rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundancy. The primary action and resource are front-loaded, and the API endpoint adds precision without bloat. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-resource read tool with complete schema documentation and a readOnlyHint, the description covers the essential context. An output schema is absent, but the GET endpoint strongly implies the return value is the open channel object. Slightly more explicit usage guidance versus list/get-group alternatives would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters with descriptions, and coverage is 100%. The description contributes the endpoint template mapping channel_url into the path, but does not add new semantic detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Fetch'), the resource ('a single open channel'), and the lookup key ('by URL'), and even provides the exact API endpoint. It distinguishes this from list-oriented siblings like sendbird_list_open_channels and from group channel tools like sendbird_get_group_channel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended use case clear: fetch a single open channel, as opposed to listing channels. It does not explicitly name alternative tools or provide exclusion criteria, but the 'single open channel by URL' wording is sufficient context for an agent to select this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_get_userGet a userARead-onlyInspect
Fetch a single user by user_id. Platform API: GET /users/{user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Target user id (percent-encoded automatically). | |
| super_mode | No | Scope unread count by Supergroup vs. group channels. | |
| custom_types | No | Comma-separated channel custom types to scope the unread count. | |
| include_unread_count | No | Include the user's total unread message count. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint=true, and the description adds 'GET /users/{user_id}' and 'Fetch', confirming a read operation. It does not disclose additional behavior such as 404 handling, rate limits, or authentication requirements, but with annotations covering the safety profile, no contradiction or major gap exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The core action ('Fetch a single user by user_id') is front-loaded, and the endpoint line is a concise, useful addition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only fetch with a fully described schema and a readOnlyHint annotation, nothing essential is missing. An agent knows the target identifier, the operation, and can rely on the schema for parameter semantics; no output schema is present, but the return value is implied by the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including their formats and meanings. The description adds no parameter-level information, meriting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch'), a clear resource ('a single user'), and the required identifier ('user_id'). Clearly distinguishable from sibling tools like sendbird_list_users and sendbird_update_user, and the endpoint line reinforces the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'a single user by user_id' — an agent can infer it should be used when a specific user_id is known and one user is needed. However, it does not explicitly mention alternatives such as sendbird_list_users for fetching multiple users, nor any exclusions or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_list_group_channel_membersList group channel membersARead-onlyInspect
List the members of a group channel. Platform API: GET /group_channels/{channel_url}/members. Returns { members[], next }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-100. Default 10. | |
| order | No | Sort order of members. | |
| token | No | Pagination token from a previous response's `next`. | |
| channel_url | Yes | Group channel URL (percent-encoded automatically). | |
| operator_filter | No | Filter by operator status. Default all. | |
| show_read_receipt | No | Include each member's read receipt. | |
| member_state_filter | No | Filter by invitation/join state (e.g. joined, invited, invited_by_friend). | |
| show_delivery_receipt | No | Include each member's delivery receipt. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the GET endpoint and the paginated response shape `{ members[], next }`, adding behavioral detail beyond the readOnlyHint annotation. It does not contradict annotations and gives the agent a clear contract for pagination and return value handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences deliver the purpose, the API endpoint, and the response shape with no filler or redundancy. The core purpose is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only paginated list tool with 8 fully documented parameters and no output schema, the description provides the essential contract: endpoint, return shape, and pagination field. Combined with readOnlyHint and complete parameter descriptions, nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all 8 parameters. The description adds no additional parameter-specific meaning, which is acceptable under the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List the members of a group channel.' It also gives the exact API endpoint, making the operation unambiguous. This clearly distinguishes it from sibling tools like sendbird_list_group_channels, which list channels rather than members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for retrieving members of a specific group channel, which provides enough context to route an agent away from channel-level or user-level list tools. It does not explicitly state when not to use it or name alternatives, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_list_group_channelsList group channelsARead-onlyInspect
List group channels in the application, with rich filtering (name, members, distinct/public/super mode). Platform API: GET /group_channels. Returns { channels[], next }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-100. Default 10. | |
| order | No | Sort order. Default chronological. | |
| token | No | Pagination token from a previous response's `next`. | |
| super_mode | No | Filter by Supergroup vs. group. Default all. | |
| public_mode | No | Filter by public/private. Default all. | |
| show_frozen | No | Include frozen channels. Default true. | |
| show_member | No | Include the member list in each channel. | |
| custom_types | No | Comma-separated channel custom types to filter on. | |
| distinct_mode | No | Filter by distinct flag. Default all. | |
| name_contains | No | Substring match on channel name. | |
| members_include_in | No | Comma-separated user ids; returns channels including any of them. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the HTTP endpoint (GET /group_channels), which aligns with the readOnlyHint=true annotation, and explicitly states the return shape { channels[], next }. This adds useful behavioral context about pagination and read-only semantics beyond the annotation alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the primary purpose, then adds the API endpoint and return shape, each earning its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by stating the return shape. All 11 parameters are fully covered by the schema, and the read-only annotation covers safety. The main gap is lack of routing guidance relative to sibling tools, but this is a separate concern and the core invocation details are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all 11 parameters thoroughly. The description adds only a high-level grouping of filters (name, members, distinct/public/super mode), which does not meaningfully enhance the parameter understanding beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List group channels') and the resource ('in the application'), with a specific API endpoint. It mentions rich filtering options but does not explicitly distinguish it from the sibling sendbird_list_group_channels_by_user, so it is clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as sendbird_list_group_channels_by_user or sendbird_get_group_channel. The description only states what it does, not the conditions or context that should lead an agent to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_list_group_channels_by_userList a user's group channelsARead-onlyInspect
List the group channels a given user belongs to. Platform API: GET /users/{user_id}/my_group_channels. Returns { channels[], next }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-100. Default 10. | |
| order | No | Sort order. Default chronological. | |
| token | No | Pagination token from a previous response's `next`. | |
| user_id | Yes | Target user id (percent-encoded automatically). | |
| hidden_mode | No | Filter by hidden state (e.g. unhidden_only, hidden_only, all). | |
| public_mode | No | Filter by public/private. Default all. | |
| show_member | No | Include the member list in each channel. | |
| custom_types | No | Comma-separated channel custom types to filter on. | |
| distinct_mode | No | Filter by distinct flag. Default all. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation, and the description adds the concrete endpoint (GET /users/{user_id}/my_group_channels) and the response shape ({ channels[], next }). This gives useful operational context beyond the annotation without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: it states the action, the endpoint, and the return shape. The key scoping detail is front-loaded, making the description easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with 9 well-documented parameters, the description provides the essential return contract and endpoint reference. The lack of an output schema is partially mitigated by the explicit { channels[], next } note, though more detail about pagination behavior could make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all 9 parameters well. The description itself does not add extra parameter-level meaning, but the baseline of 3 applies because the schema fully carries that burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'List the group channels a given user belongs to,' and the endpoint reinforces the scope. It does not explicitly distinguish itself from the sibling sendbird_list_group_channels, which may also list group channels, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The user-scoped filtering is evident from the wording, implying use when you need a specific user's channels. However, there is no explicit guidance about when to prefer this tool over sendbird_list_group_channels or other sibling list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_list_messagesList messagesARead-onlyInspect
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[] }.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Include the anchor message itself. | |
| reverse | No | Return in reverse chronological order. | |
| user_ids | No | Comma-separated sender user ids to filter on. | |
| message_id | No | Anchor message id. Provide this OR message_ts. | |
| message_ts | No | Anchor timestamp in unix milliseconds. Provide this OR message_id. | |
| next_limit | No | Number of messages after the anchor, 0-200. | |
| prev_limit | No | Number of messages before the anchor, 0-200. | |
| channel_url | Yes | Channel URL (percent-encoded automatically). | |
| channel_type | Yes | Channel type: group_channels (member-based) or open_channels (public, participant-based). | |
| custom_types | No | Comma-separated message custom types to filter on. | |
| message_type | No | Filter by message type: MESG (text), FILE, or ADMM (admin). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already signals a safe read, lowering the bar. The description adds context beyond the annotation: the HTTP GET endpoint (confirming read-only behavior), the anchoring semantics, and the return shape ('Returns { messages[] }'). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each earning its place: purpose, exclusive-anchor rule, underlying REST endpoint, and return format. The most critical constraint (EITHER/OR) is front-loaded in the second sentence; no filler and no repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 11 parameters and no output schema, the description covers the two largest gaps: the mutually exclusive anchor parameters and the return shape ({ messages[] }). Required params (channel_type, channel_url) are visible in the schema and implied by the endpoint URL, so nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds real value beyond the schema by stating the mutual-exclusion rule ('Provide EITHER message_ts OR message_id') that the schema does not enforce, and by confirming the unix-ms unit for message_ts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('List messages in a channel') and adds the distinguishing anchor mechanism ('anchored at a timestamp or message id'). This clearly separates it from siblings like sendbird_list_group_channels, sendbird_list_open_channels, and sendbird_list_users, which list channels or users rather than messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear operational context: the tool lists messages within a specific channel, with concrete anchoring guidance ('Provide EITHER message_ts OR message_id') and required channel parameters implied by the endpoint URI. It does not explicitly name alternatives or state when-not-to-use, but no sibling could plausibly be confused with this operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_list_open_channelsList open channelsARead-onlyInspect
List open (public, participant-based) channels. Platform API: GET /open_channels. Returns { channels[], next }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-100. Default 10. | |
| token | No | Pagination token from a previous response's `next`. | |
| custom_types | No | Comma-separated channel custom types to filter on. | |
| url_contains | No | Substring match on channel URL. | |
| name_contains | No | Substring match on channel name. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already marks this as a safe read operation. The description adds useful behavioral context by naming the exact REST endpoint and the paginated return shape { channels[], next }, which explains how the token parameter connects to responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single economical sentence that front-loads the core action and scope, then adds the API endpoint and return shape. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list operation with five well-documented optional parameters and no output schema, the description is complete. It states the core purpose and the return shape with pagination, so an agent has enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already fully documented. The description does not add new parameter-level meaning beyond mentioning the pagination response field, which is appropriate but not particularly enriching.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and a specific resource ('open (public, participant-based) channels'), and explicitly explains what 'open' means, which distinguishes it from group-channel sibling tools. The API endpoint is also provided as additional confirmation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: use this tool to list open/public channels. It does not explicitly say when not to use it or name alternatives such as sendbird_list_group_channels, but the scope is unambiguous enough that an agent can infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_list_usersList usersARead-onlyInspect
List the users in the application. Supports filtering by activity, nickname, ids, and metadata. Platform API: GET /users. Returns { users[], next }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-100. Default 10. | |
| token | No | Pagination token from a previous response's `next`. | |
| nickname | No | Exact nickname match. | |
| show_bot | No | Include bot users. Default true. | |
| user_ids | No | Comma-separated user ids to fetch specific users. | |
| active_mode | No | Filter by activation state. Default activated. | |
| metadatakey | No | Metadata key to filter on (pair with metadatavalues_in). | |
| metadatavalues_in | No | Comma-separated metadata values matching metadatakey. | |
| nickname_startswith | No | Prefix match on nickname. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description reinforces this by naming the Platform API as GET /users and documenting the return shape as { users[], next }. This adds useful pagination context beyond the annotation without contradicting it, though it does not discuss rate limits or authentication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences: the first states the action and resource, the second summarizes filtering options, and the third gives the API endpoint and return shape. There is no filler, redundant restatement of the title, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with nine parameters and no output schema, the description gives the essential response shape ({ users[], next }) and confirms the safe GET nature of the operation. All parameters are documented in the schema, so the description covers the remaining high-level context well. It could have added explicit sibling routing guidance, but the core information needed to call the tool is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all nine parameters, including defaults and pairings like metadatakey with metadatavalues_in. The description adds only a high-level grouping of filter categories, which is useful but does not provide additional semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List the users in the application,' and names the supported filter dimensions (activity, nickname, ids, metadata). This clearly distinguishes it from single-user tools like sendbird_get_user and from list tools for other resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage as the bulk listing tool for users, and the sibling names suggest alternatives like sendbird_get_user for individual retrieval. However, it never explicitly states when to use this over the alternatives or when not to use it, leaving the guidance at the implied level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_requestRaw GET requestARead-onlyInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | API path beginning with "/", relative to the /v3 base (e.g. "/users/alex%40x.com/blocked_users"). | |
| params | No | Optional JSON object (as a string) of query params, e.g. '{"limit":50}'. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint: true already covers the safety profile; on top of it the description adds the "GET only" method restriction and the raw-passthrough nature. It omits behavior on errors, rate limits, and response passthrough, but with the annotation handling the critical read-only trait this is adequate, not rich. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with purpose front-loaded; the examples compress a lot of meaning into few words. The redundant "READ-ONLY" label duplicates the annotation slightly, but the text is otherwise all signal and correctly ordered: purpose, then constraints, then mechanics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param raw-passthrough tool with a read-only annotation and no output schema, the description covers what, when-not, and safety. Documenting return values would be near-meaningless for arbitrary unwrapped paths since output is whatever the Sendbird API returns, so that gap is acceptable. Minor omission: error or rate-limit behavior, low-value for an escape hatch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed, well-exampled descriptions for both path (including a URL-encoding example) and params. The description's "Platform API: GET {path}" merely echoes that, adding no semantic value beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("issue a raw GET") against a specific resource class ("any Chat Platform API v3 path not wrapped by a dedicated tool") and positions itself as a power-user escape hatch. The concrete examples (/report, /applications/settings_global) make the scope unmistakable and separate it from the dedicated sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Not wrapped by a dedicated tool" is an explicit when-not condition that steers the agent to siblings when they cover the path, and "Power-user escape hatch" signals fallback status. It does not name specific sibling alternatives or phrase the preference directive, but the exclusion is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_send_messageSend a messageADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Additional structured data as a string (often JSON). | |
| message | Yes | The message text. | |
| user_id | No | Sender user id. REQUIRED when message_type is MESG. | |
| is_silent | No | If true, does not update channel's last message / unread counts. | |
| send_push | No | Whether to send push notifications. Default true. | |
| channel_url | Yes | Channel URL (percent-encoded automatically). | |
| custom_type | No | Custom type tag for the message. | |
| channel_type | Yes | Channel type: group_channels (member-based) or open_channels (public, participant-based). | |
| mention_type | No | Mention scope: specific users or the whole channel. | |
| message_type | No | MESG (user text, default) or ADMM (admin message, no sender). | |
| mentioned_user_ids | No | User ids to mention (when mention_type=users). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly leads with 'MUTATES', reinforcing the destructiveHint annotation, and adds behavioral detail beyond the schema: file/multipart payloads are unsupported and the operation maps to POST /{channel_type}/{channel_url}/messages. It does not discuss delivery/push consequences, but the schema already documents silent and push controls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: mutation and function, the unsupported multipart limitation, and the API endpoint. The key MUTATES signal is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with a fully documented schema and destructiveHint, the description plus schema is largely sufficient. The main gap is the lack of any hint about the response/return value, since no output schema is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the description does not need to re-document parameters. It adds little semantic value beyond the schema—'MESG/ADMM' already appears in the message_type property—so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('sends') with a clear resource ('a message into a channel') and distinguishes the two modes (MESG user, ADMM admin). It states the exact API endpoint, making it unambiguous and distinct from sibling read tools like sendbird_list_messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly marks the operation as a mutation and gives a concrete exclusion ('File/multipart messages are not supported'), so an agent knows when not to use it. However, it does not explicitly name alternatives or spell out when to prefer a sibling such as sendbird_request for unsupported payloads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendbird_update_userUpdate a userADestructiveInspect
MUTATES Sendbird data: partially updates a user's profile. Only provided fields change. Platform API: PUT /users/{user_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Target user id (percent-encoded automatically). | |
| nickname | No | New display nickname. | |
| profile_url | No | New profile image URL. | |
| issue_access_token | No | If true, issues a new access token for the user. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reinforces the destructiveHint annotation by explicitly saying 'MUTATES' and adds the useful guarantee that only provided fields change. However, it does not disclose potential side effects such as what happens to the existing access token when issue_access_token is true. The annotation covers the general destructiveness, so this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, front-loaded with the critical mutation warning, and contains no filler. Every sentence adds value: mutation intent, partial-update behavior, and the underlying API endpoint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only four parameters, full schema coverage, and no nested objects, the description provides enough context to select and invoke the tool correctly. The missing return-shape information is minor for a mutation tool, and no output schema exists to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all four parameters, so the baseline is 3. The description adds meaningful parameter-related semantics by stating 'Only provided fields change', which clarifies how optional fields behave during the update. This goes slightly beyond what the schema's individual property descriptions express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('MUTATES', 'partially updates') and the resource ('a user's profile'), making the tool's purpose unambiguous. The partial-update framing and the explicit PUT endpoint differentiate it from sibling create/get/list tools even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when the goal is to mutate an existing user's profile rather than create, read, or list users. It does not explicitly name alternatives or state when not to use it, so the guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for Sendbird chat infrastructure, enabling AI agents to provision users, create channels, fetch history, send admin messages, and moderate users via 5 tools.MIT
- AlicenseAqualityAmaintenanceAn MCP server that enables AI agents to send realtime messages, query channels, and manage users through Pusher Channels.7753MIT

Chamade MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceMCP server for Chamade — a voice and chat gateway that lets your AI agent join meetings and DMs on Discord, Microsoft Teams, Google Meet, Telegram, SIP, Zoom, Nextcloud Talk, Slack, and WhatsApp.204MIT- AlicenseAqualityDmaintenanceMCP server for Sendook - an AI email communication platform. Enables AI agents to send and receive emails, manage inboxes, threads, and webhooks programmatically.16MIT