Skip to main content
Glama

Server Details

MCP server for Sendbird — chat users, channels, members, and messages from your AI client.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Unhealthy
Last Tested
Transport
Streamable HTTP
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0
Tool DescriptionsA

Average 4/5 across 14 of 14 tools scored. Lowest: 3.4/5.

Server CoherenceA
Disambiguation5/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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness3/5

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 tools
sendbird_create_group_channelCreate a group channelA
Destructive
Inspect

MUTATES Sendbird data: creates a group channel with the given members. Platform API: POST /group_channels.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoAdditional structured data as a string (often JSON).
nameNoChannel name.
user_idsYesUser ids to add as members of the new channel.
cover_urlNoChannel cover image URL.
is_publicNoIf true, the channel is public (joinable without invitation).
channel_urlNoCustom channel URL; auto-generated if omitted.
custom_typeNoCustom type tag for the channel.
is_distinctNoIf true, reuse an existing channel with the same members instead of creating a duplicate.
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 userB
Destructive
Inspect

MUTATES Sendbird data: creates a new user. Platform API: POST /users.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesUnique user id to create.
metadataNoArbitrary key/value metadata object stored on the user.
nicknameNoDisplay nickname.
profile_urlNoProfile image URL (may be empty).
issue_access_tokenNoIf true, issues an access token for the user in the response.
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 channelA
Read-only
Inspect

Fetch a single group channel by URL, optionally with members and receipts. Platform API: GET /group_channels/{channel_url}.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_urlYesGroup channel URL (percent-encoded automatically).
show_memberNoInclude the member list.
show_read_receiptNoInclude per-member read receipts.
show_delivery_receiptNoInclude per-member delivery receipts.
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 channelA
Read-only
Inspect

Fetch a single open channel by URL. Platform API: GET /open_channels/{channel_url}.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_urlYesOpen channel URL (percent-encoded automatically).
participants_countNoInclude the current participant count.
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 userA
Read-only
Inspect

Fetch a single user by user_id. Platform API: GET /users/{user_id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesTarget user id (percent-encoded automatically).
super_modeNoScope unread count by Supergroup vs. group channels.
custom_typesNoComma-separated channel custom types to scope the unread count.
include_unread_countNoInclude the user's total unread message count.
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 membersA
Read-only
Inspect

List the members of a group channel. Platform API: GET /group_channels/{channel_url}/members. Returns { members[], next }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1-100. Default 10.
orderNoSort order of members.
tokenNoPagination token from a previous response's `next`.
channel_urlYesGroup channel URL (percent-encoded automatically).
operator_filterNoFilter by operator status. Default all.
show_read_receiptNoInclude each member's read receipt.
member_state_filterNoFilter by invitation/join state (e.g. joined, invited, invited_by_friend).
show_delivery_receiptNoInclude each member's delivery receipt.
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 channelsA
Read-only
Inspect

List group channels in the application, with rich filtering (name, members, distinct/public/super mode). Platform API: GET /group_channels. Returns { channels[], next }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1-100. Default 10.
orderNoSort order. Default chronological.
tokenNoPagination token from a previous response's `next`.
super_modeNoFilter by Supergroup vs. group. Default all.
public_modeNoFilter by public/private. Default all.
show_frozenNoInclude frozen channels. Default true.
show_memberNoInclude the member list in each channel.
custom_typesNoComma-separated channel custom types to filter on.
distinct_modeNoFilter by distinct flag. Default all.
name_containsNoSubstring match on channel name.
members_include_inNoComma-separated user ids; returns channels including any of them.
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 channelsA
Read-only
Inspect

List the group channels a given user belongs to. Platform API: GET /users/{user_id}/my_group_channels. Returns { channels[], next }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1-100. Default 10.
orderNoSort order. Default chronological.
tokenNoPagination token from a previous response's `next`.
user_idYesTarget user id (percent-encoded automatically).
hidden_modeNoFilter by hidden state (e.g. unhidden_only, hidden_only, all).
public_modeNoFilter by public/private. Default all.
show_memberNoInclude the member list in each channel.
custom_typesNoComma-separated channel custom types to filter on.
distinct_modeNoFilter by distinct flag. Default all.
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 messagesA
Read-only
Inspect

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[] }.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoInclude the anchor message itself.
reverseNoReturn in reverse chronological order.
user_idsNoComma-separated sender user ids to filter on.
message_idNoAnchor message id. Provide this OR message_ts.
message_tsNoAnchor timestamp in unix milliseconds. Provide this OR message_id.
next_limitNoNumber of messages after the anchor, 0-200.
prev_limitNoNumber of messages before the anchor, 0-200.
channel_urlYesChannel URL (percent-encoded automatically).
channel_typeYesChannel type: group_channels (member-based) or open_channels (public, participant-based).
custom_typesNoComma-separated message custom types to filter on.
message_typeNoFilter by message type: MESG (text), FILE, or ADMM (admin).
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 channelsA
Read-only
Inspect

List open (public, participant-based) channels. Platform API: GET /open_channels. Returns { channels[], next }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1-100. Default 10.
tokenNoPagination token from a previous response's `next`.
custom_typesNoComma-separated channel custom types to filter on.
url_containsNoSubstring match on channel URL.
name_containsNoSubstring match on channel name.
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 usersA
Read-only
Inspect

List the users in the application. Supports filtering by activity, nickname, ids, and metadata. Platform API: GET /users. Returns { users[], next }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1-100. Default 10.
tokenNoPagination token from a previous response's `next`.
nicknameNoExact nickname match.
show_botNoInclude bot users. Default true.
user_idsNoComma-separated user ids to fetch specific users.
active_modeNoFilter by activation state. Default activated.
metadatakeyNoMetadata key to filter on (pair with metadatavalues_in).
metadatavalues_inNoComma-separated metadata values matching metadatakey.
nickname_startswithNoPrefix match on nickname.
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 requestA
Read-only
Inspect

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAPI path beginning with "/", relative to the /v3 base (e.g. "/users/alex%40x.com/blocked_users").
paramsNoOptional JSON object (as a string) of query params, e.g. '{"limit":50}'.
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 messageA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoAdditional structured data as a string (often JSON).
messageYesThe message text.
user_idNoSender user id. REQUIRED when message_type is MESG.
is_silentNoIf true, does not update channel's last message / unread counts.
send_pushNoWhether to send push notifications. Default true.
channel_urlYesChannel URL (percent-encoded automatically).
custom_typeNoCustom type tag for the message.
channel_typeYesChannel type: group_channels (member-based) or open_channels (public, participant-based).
mention_typeNoMention scope: specific users or the whole channel.
message_typeNoMESG (user text, default) or ADMM (admin message, no sender).
mentioned_user_idsNoUser ids to mention (when mention_type=users).
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 userA
Destructive
Inspect

MUTATES Sendbird data: partially updates a user's profile. Only provided fields change. Platform API: PUT /users/{user_id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesTarget user id (percent-encoded automatically).
nicknameNoNew display nickname.
profile_urlNoNew profile image URL.
issue_access_tokenNoIf true, issues a new access token for the user.
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP 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.
    204
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Sendook - an AI email communication platform. Enables AI agents to send and receive emails, manage inboxes, threads, and webhooks programmatically.
    16
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.