Skip to main content
Glama

@infralayers/pumble-mcp

npm version License: MIT Node: >=18 MCP Standard Tests: 100% Green

Universal, production-ready Model Context Protocol (MCP) server for Pumble. It connects autonomous AI agents and LLMs to your Pumble workspace with 100% official REST API coverage (26 tools), sub-millisecond in-memory entity resolution, affirmative execution receipts, and built-in anti-loop security guardrails.

Works seamlessly across Cursor, Cline / Roo Code, Windsurf, Claude Desktop, Claude Code CLI, Google Antigravity, Zed, and any custom agent framework.

Security note: the Pumble API key you configure grants broad, workspace-wide access. Read the Security / Permissions section before installing.


⚡ Highlights & Performance

  • 100% Official REST API Coverage: 26 autonomous tools covering messaging, threads, scheduling, reactions, channel operations, user directories, and status updates.

  • Ultra-Low Latency (~0.05ms Resolution): Standard API calls take ~1,500ms to resolve user and channel identifiers over the network. Our in-memory RAM cache reduces steady-state lookups to ~0.05ms (30,000x faster), completely eliminating network penalties.

  • Boot-Time Prefetching: Users and channels are prefetched in parallel during server startup without blocking the client MCP handshake.

  • Write-Through In-Place Updates: Channel creation, member additions/removals, and custom status updates sync directly to the local RAM cache in 0ms.

  • Affirmative Execution Receipts: Mutation tools return structured receipts (ok: true, delivered: true, status: "Verification complete") that eliminate compulsive post-action read loops (e.g. list_messages spam).

  • Loop-Prevention Circuit Breaker: Finite State Machine (FSM) guardrail locks out speculative reconnaissance and fast-fails missing entities with actionable guidance.

  • Security Challenge Gate (AUTH-XXXX): Destructive actions (deleting messages, removing members) require single-use, time-limited confirmation codes, stopping accidental deletions.


Related MCP server: plutio-mcp

💾 Memory Footprint: Scaling in Large Workspaces

A common concern with in-memory caching is memory consumption in large organizations. This server uses an optimized, lean data model that retains only essential routing identifiers (id, name, email for users; id, name, channelType, userIds for channels):

Workspace Scale

Entities Cached

Estimated RAM Footprint

Memory Impact

Small Team

50 users, 20 channels

~15 KB

Negligible

Mid-Size Company

1,000 users, 100 channels

~230 KB

< 0.25 MB

Enterprise Workspace

5,000 users, 500 channels

~1.1 MB

~1 MB

Massive Workspace

20,000 users, 2,000 channels

~4.5 MB

< 5 MB

Takeaway: Even in an enterprise workspace with thousands of users and hundreds of channels, the cache consumes less than 5 MB of RAM—a microscopic fraction of Node.js's standard baseline memory (~30 MB). The cache operates with a 60-second TTL, ensuring fresh data without memory leaks or bloat.


🚀 Quick Start (Zero-Install via npx)

Run directly with npx in any MCP-compliant client without cloning or manual building:

Standard MCP Configuration

Works out of the box in Cursor, Cline / Roo Code, Windsurf, Claude Desktop, and Antigravity.

Add this block to your client's MCP configuration file (e.g. claude_desktop_config.json, .cursor/mcp.json, or Cline MCP settings):

{
  "mcpServers": {
    "pumble": {
      "command": "npx",
      "args": ["-y", "@infralayers/pumble-mcp"],
      "env": {
        "PUMBLE_API_KEY": "<your-pumble-api-key>"
      }
    }
  }
}

CLI Agents (Claude Code, Gemini CLI, Terminal)

Register directly from your shell:

# Claude Code CLI
claude mcp add pumble --env PUMBLE_API_KEY="<your-pumble-api-key>" -- npx -y @infralayers/pumble-mcp

Verify your registered tools:

claude mcp list

🔑 Getting Your Pumble API Key

  1. In your Pumble workspace, install the API Key addon (Apps & Integrations).

  2. Generate a key from the addon's settings. Pumble shows it once as an ephemeral message — copy it immediately.

  3. Pass the key in your client's env configuration as PUMBLE_API_KEY.


🛠️ Complete 26-Tool Reference

Architecture Note: All tools natively accept human-readable fuzzy names, emails, and exact IDs, automatically resolving them via the backend to prevent the AI from wasting context tokens on manual lookups. Ambiguous names will safely throw an error requesting clarification.

1. Messages & Threads (8 Tools)

Tool

Pumble Endpoint

Notes & Parameters

send_message_via_channel_name_or_id

POST /sendMessage

Send a message to any channel or DM. Takes channelIdentifier (name or ID), text, optional asBot. Returns affirmative delivery receipt.

list_messages_via_channel_name_or_id

GET /listMessages

List messages in a channel or DM. Takes channelIdentifier, optional limit (default: 10, max: 50), and cursor.

get_message_via_id

GET /fetchMessage

Fetch a single message by ID. Takes channelIdentifier and messageId.

edit_message

POST /editMessage

Edit an existing message. Takes channelIdentifier, messageId, and updated text.

delete_message

DELETE /deleteMessage

Delete a message. Takes channelIdentifier, messageId, and confirm: true (destructive).

reply_message_via_channel_name_or_id

POST /sendReply

Reply to a message to start or continue a thread. Takes channelIdentifier, messageId, text, optional asBot.

list_thread_replies_via_channel_name_or_id

GET /fetchThreadReplies

Fetch replies in a thread. Takes channelIdentifier, messageId, optional limit, cursor. Returns replies newest first.

search_messages

POST /searchMessages

Search messages across the workspace by text, fromUser, or inChannel. User and channel names resolve automatically.

2. Scheduled Messages (5 Tools)

Tool

Pumble Endpoint

Notes & Parameters

create_scheduled_message_via_name_or_id

POST /createScheduledMessage

Schedule a future message. Takes channelIdentifier OR userIdentifier, text, and sendAt (ISO string or epoch ms, min 30s in future).

list_scheduled_messages

GET /fetchScheduledMessages

List queued scheduled messages. Supports optional destination filters, limit, and cursor.

get_scheduled_message_via_name_or_id

GET /getScheduledMessage

Inspect a scheduled message by its scheduledMessageId.

edit_scheduled_message_via_name_or_id

POST /editScheduledMessage

Modify a scheduled message's text, sendAt, or move it to a new channel/DM destination.

delete_scheduled_message_via_name_or_id

DELETE /deleteScheduledMessage

Cancel and delete a queued scheduled message. Takes scheduledMessageId and confirm: true (destructive).

3. Reactions (2 Tools)

Tool

Pumble Endpoint

Notes & Parameters

add_reaction

POST /addReaction

Add an emoji reaction to a message. Takes channelIdentifier, messageId, and reaction code (e.g. :thumbsup:).

remove_reaction

POST /removeReaction

Remove an emoji reaction from a message. Takes channelIdentifier, messageId, and reaction code.

4. Channels & Membership (5 Tools)

Tool

Pumble Endpoint

Notes & Parameters

list_channels_only_when_user_calls

GET /listChannels

List all visible channels (public, private, and direct). Guarded against unnecessary agent discovery loops.

get_channel_detail_via_channel_name_or_id

GET /getChannel

Hydrate full channel details, including resolved member lists with names and emails.

create_channel

POST /createChannel

Create a new channel. Takes name and type (PUBLIC or PRIVATE). Updates cache immediately.

add_users_to_channel_via_name_or_id

POST /addUsersToChannel

Add workspace members to a channel. Takes channelIdentifier and an array of userIdentifiers (names, emails, or IDs). Blocks DM additions.

remove_user_from_channel_via_name_or_id

POST /removeUserFromChannel

Remove a member from a channel. Takes channelIdentifier, userIdentifier, and confirm: true (destructive). Blocks DM removals.

5. Workspace, Users & Status (6 Tools)

Tool

Pumble Endpoint

Notes & Parameters

send_dm_via_name_email_or_id

POST /dmUser

Send a 1-on-1 direct message. Takes userIdentifier (name, email, or ID) and text.

send_group_dm_via_names_emails_or_ids

POST /groupDm

Send a multi-person group direct message. Takes userIdentifiers (array of names/emails/IDs) and text.

list_users_not_for_id_lookup

GET /listUsers

List workspace users. Guarded against speculative agent reconnaissance.

get_my_info

GET /myInfo

Get account and profile details of the authenticated bot / API key owner.

list_user_groups

GET /listUserGroups

List all user groups configured in the Pumble workspace.

update_my_custom_status

POST /updateCustomStatus

Set or clear custom status text, emoji, and expiration duration. Write-through to cache in 0ms.


🛡️ Security / Permissions

This server hands a single static Pumble API key to an MCP server that any connected client or LLM session can invoke. Understand the blast radius before installing:

Blast Radius & Capabilities

The API key inherits the full visibility and privileges of the Pumble user who generated it. It is a password-equivalent secret.

With these twenty-six tools, anyone able to invoke this server can, as you:

  • Messages: Read, send, edit, delete, and reply to messages in any channel or DM the key can access.

  • Scheduled Messages: Queue messages to post later in any channel or DM, and read, rewrite, redirect, or delete anything already queued.

  • Workspace Search: Search across workspace history by text, author, or channel.

  • Direct Messages: Send 1-on-1 and group DMs to any user in the workspace.

  • User Directory: Enumerate every workspace member's name and email address.

  • Channel Membership: Create channels, add users to channels, or remove users from channels.

  • Reactions & Status: Add/remove emoji reactions and modify your profile's custom status.

Built-in Agent Defenses

  1. Destructive Challenge Gates (AUTH-XXXX): Destructive operations (remove_user_from_channel, delete_scheduled_message, delete_message) cannot be executed speculatively by autonomous agents. If called without human authorization, the server intercepts execution and issues a dynamic 60-second runtime confirmation token challenge requiring human verification.

  2. Missing Entity Fast-Fail: Missing users or channels fail immediately with a strict directive stopping partial batches or hallucinations.

Recommendations & Best Practices

  • Never commit .env: .env is gitignored by default. Never paste your API key into logs, commit messages, or chat transcripts.

  • Key Rotation: If a key is ever exposed, rotate it immediately in Pumble (Apps & Integrations > API Key Addon), update your environment, and revoke the old key.

  • Dedicated Service Account: If your Pumble workspace allows it, generate the key from a dedicated service account rather than an individual admin user's personal account.


💻 Local Development

1. Clone & Install

git clone https://github.com/infralayers/pumble-mcp.git
cd pumble-mcp
npm install

2. Configure Environment

The server reads PUMBLE_API_KEY from its environment. It does not load a .env file on its own.

For development, export it in your shell (or add to ~/.bashrc):

export PUMBLE_API_KEY="<your-pumble-api-key>"

3. Development Scripts

npm run dev         # Watch mode via tsx
npm run typecheck   # Typecheck without emitting (tsc --noEmit)
npm test            # Run unit tests via vitest
npm run build       # Compile TypeScript to dist/
npm start           # Run compiled server (node dist/index.js)

To run your local build directly in an MCP client:

{
  "command": "node",
  "args": ["/absolute/path/to/pumble-mcp/dist/index.js"],
  "env": {
    "PUMBLE_API_KEY": "<your-pumble-api-key>"
  }
}

📄 License

MIT License. Copyright (c) 2026 InfraLayers.

Available Tools

26 tools
add_reactionB

Add an emoji reaction to a message by ID.

NameRequiredDescriptionDefault
reactionYesThe emoji code (e.g., :thumbsup:). Must be a single emoji code, no conversational text or spaces. (Do not guess)
messageIdYesThe exact ID of the target message. Note: if the target message was recently sent, use the id returned in that response. If unknown, use pumble_search_messages to find it first.
channelIdentifierYesChannel name, slug, or ID. If not provided, MUST ASK. DO NOT GUESS.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full burden of behavioral disclosure and provides none. It doesn't say what happens if the reaction already exists (duplicate vs error), whether the call needs write permission on the channel, or what the response contains. For a mutation tool with zero annotation coverage this is a significant gap.

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?

A single front-loaded sentence with no filler. It is efficient, though its brevity borders on under-specification rather than disciplined concision.

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?

Three required parameters, no annotations, and no output schema, so the description is the only place to explain edge-case behavior and it doesn't. Duplicate-reaction handling, idempotency, and result shape are all left unspecified.

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% and the schema descriptions are strong, including emoji-code format, the search_messages fallback for unknown message IDs, and 'MUST ASK / DO NOT GUESS' for channelIdentifier. The description adds nothing beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource: 'Add an emoji reaction to a message'. The inverse sibling remove_reaction makes the add/remove split self-evident, and 'by ID' hints at the targeting parameter. It stops short of naming siblings explicitly, but the operation is unambiguous.

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?

No explicit when-to-use or when-not-to-use guidance, and no mention of remove_reaction as the inverse. Usage is only implied by the verb 'Add', which an agent can infer but must do without help from the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_users_to_channel_via_name_or_idC

Add users to a channel by names or emails. Resolves entities natively.

NameRequiredDescriptionDefault
userIdentifiersYesArray of user names, emails, or IDs to add. If not provided, MUST ASK. DO NOT GUESS.
channelIdentifierYesChannel name, slug, or ID. If not provided, MUST ASK. DO NOT GUESS.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, but 'Resolves entities natively' is opaque jargon that does not explain what happens if a name is ambiguous, if a user is already a member, or whether the operation is idempotent. Permissions, partial-failure behavior, and reversibility are all absent.

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 short sentences with the core action front-loaded and no filler. The second sentence is vague enough ('natively') that it earns only partial credit, but there is no wasted bulk.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation with a fully documented schema, the essentials are present, but with no annotations and no output schema the description should say what a successful call returns or how duplicate/ambiguous users are handled. It is minimally viable rather than 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 coverage is 100%, so the schema already documents both parameters thoroughly, including the 'MUST ASK. DO NOT GUESS.' constraint. The description adds nothing beyond restating identifier types, and actually omits IDs, so the baseline 3 is appropriate.

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?

States a specific verb and resource (add users to a channel) plus the resolution mode, which separates it from remove_user_from_channel_via_name_or_id. However, it says 'by names or emails' while the tool name and schema also support IDs, leaving the accepted identifier forms slightly inconsistent.

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?

No when-to-use, when-not-to-use, or alternative is named. The sibling remove_user_from_channel_via_name_or_id is the obvious counterpart but is never referenced, and prerequisites (membership, permissions, whether the channel must already exist) are unstated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_channelB

Create a new public or private channel.

NameRequiredDescriptionDefault
nameYesThe name of the new channel. If not provided, MUST ASK. DO NOT GUESS.
typeNoThe type of the channel (PUBLIC or PRIVATE). Defaults to PUBLIC unless private is explicitly requested.PUBLIC

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden but only says what is created. It does not disclose whether the creator is automatically added, whether private channels require inviting members, what happens on a duplicate name, or whether the operation is reversible.

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?

A single front-loaded sentence with no filler; the channel-type distinction is placed where it will be read first. It is arguably too terse rather than padded, so the brevity is efficient but leaves gaps rather than wasting words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter create tool with a fully described schema, the essentials are covered. However, with no annotations and no output schema, the description should still state the permission/membership consequences and what the call returns (e.g., the new channel id), which it omits entirely.

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%, so both parameters and the PUBLIC/PRIVATE enum are already documented in the schema, and the guardrail against guessing a name lives there too. The description only restates the enum in prose ("public or private"), adding no formatting, length, or uniqueness constraints beyond the schema.

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 gives a specific verb+resource pair ("Create a new ... channel") and adds the public/private scope, which is enough to distinguish it from every sibling (all of which are read, send, edit, react, or membership tools). It stops short of naming any sibling, but none is a plausible substitute.

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 only implied by the verb – an agent can infer this is the tool for provisioning a channel rather than joining or messaging in one. There is no explicit when-to-use or when-not-to-use statement, and no note on prerequisites such as existing membership or naming conflicts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_scheduled_message_via_name_or_idB

Schedule a message for future delivery to a channel or user.

NameRequiredDescriptionDefault
textYesThe scheduled message text (max 4000 characters). If not provided, MUST ASK. DO NOT GUESS.
sendAtYesTime to send message (ISO date string or epoch timestamp in milliseconds at least 30s in future). If not provided, MUST ASK. DO NOT GUESS.
userIdentifierNoRecipient user name, email, or ID for a DM (provide this OR channelIdentifier). If not provided, MUST ASK. DO NOT GUESS.
channelIdentifierNoChannel name, slug, or ID (provide this OR userIdentifier). If not provided, MUST ASK. DO NOT GUESS.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it covers only one sentence of intent. It says nothing about permissions needed, what the tool returns, timezone/format handling of the send time, or the 30-second minimum future constraint that lives only in the schema.

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?

A single front-loaded sentence with no filler. It is efficient, though the brevity reflects under-specification as much as tight writing.

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?

This is a write/mutation tool with no annotations and no output schema, and scheduling has real behavioral nuance (send-time format, who can schedule, how to verify afterwards). None of that is addressed, so an agent must guess at behavior the description should have covered.

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 params, including the userIdentifier/channelIdentifier mutual-exclusivity rule. The description adds nothing beyond that, making baseline 3 appropriate.

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?

States a specific verb and resource ('Schedule a message') plus the target ('to a channel or user'), and 'for future delivery' implicitly separates it from the immediate-send siblings. It never names those siblings, though, so the differentiation is inferred rather than explicit.

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 phrase 'for future delivery' hints at when to use this rather than send_message_via_channel_name_or_id, but no alternative is named and no exclusion or prerequisite is given. Usage is only implied, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_messageB

Delete a message by ID in a channel. Destructive; requires confirmation code.

NameRequiredDescriptionDefault
confirmYesExplicit confirmation boolean. Must be true to confirm deletion. (Do not guess)
messageIdYesThe unique identifier of the message to delete. If not provided, MUST ASK. DO NOT GUESS.
channelIdentifierYesChannel name, slug, or ID where the message is located. If not provided, MUST ASK. DO NOT GUESS.
confirmationTokenNoOne-time security confirmation token authorized by the caller.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose two important traits: it is destructive and requires confirmation. However, it does not clarify irreversibility, permission requirements, or why confirmationToken is optional while the description says a confirmation code is required.

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 short sentences, front-loaded with the action and followed by the critical safety constraint. There is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema is rich and the description covers the destructive nature and confirmation requirement. Still, for a deletion tool with no annotations and no output schema, it leaves out irreversibility, failure behavior, and how the optional confirmationToken relates to the stated confirmation requirement.

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 messageId, channelIdentifier, confirm, and confirmationToken are already documented in the schema. The description only restates that deletion is by ID in a channel and adds no parameter-level detail beyond that baseline.

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 states a specific verb and resource: delete a message by ID in a channel. It is clearly distinguishable from edit_message and delete_scheduled_message by resource, though it does not explicitly name alternatives or scope boundaries.

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?

It says the operation is destructive and requires a confirmation code, but gives no guidance on when to use this versus edit_message, when not to delete, or what prerequisite conditions must be met beyond confirmation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_scheduled_message_via_name_or_idA

Delete a scheduled message before delivery. Destructive; requires confirmation code.

NameRequiredDescriptionDefault
confirmYesExplicit confirmation boolean. Must be true to confirm deletion. (Do not guess)
confirmationTokenNoOne-time security confirmation token authorized by the caller.
scheduledMessageIdYesThe exact ID of the scheduled message to delete. If unknown, use listScheduledMessages to find it first. (Do not guess)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the two key traits: destructiveness and a confirmation gate. However, 'requires confirmation code' is ambiguous against the schema, where the required gate is a boolean `confirm` and the token is an optional `confirmationToken`; irreversibility and what happens on a bad token are unstated.

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 short sentences, purpose front-loaded, hazard signal second. Zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations, so the description must stand alone for a destructive three-parameter tool. It flags destruction and confirmation but leaves the confirm-vs-confirmationToken relationship and success/failure outcomes unexplained.

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 properties already document scheduledMessageId, confirm, and confirmationToken thoroughly (including 'Do not guess'). The description adds nothing parameter-level beyond repeating that confirmation is required, so baseline 3 applies.

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?

States a specific verb and resource ('Delete a scheduled message') plus a scoping constraint ('before delivery') that separates it from delete_message and edit_scheduled_message. It stops short of naming the sibling it is not, but the scheduled-message qualifier already does most of that work.

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 phrase 'before delivery' implies the only valid window for use, but there is no explicit 'do not use for already-sent messages, use delete_message instead,' and no pointer to list_scheduled_messages for ID discovery — that guidance lives only in the schema property text.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_messageC

Edit a previously sent message by ID.

NameRequiredDescriptionDefault
textYesThe new message text (max 4000 characters). If not provided, MUST ASK. DO NOT GUESS.
messageIdYesThe exact ID of the target message. Note: if the target message was recently sent, use the id returned in that response. If unknown, use pumble_search_messages to find it first.
channelIdentifierYesChannel name, slug, or ID. If not provided, MUST ASK. DO NOT GUESS.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a mutation on an existing message but does not disclose permission requirements, edit visibility, reversibility, rate limits, or handling of missing/deleted messages.

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?

A single, front-loaded sentence with no wasted words. It is appropriately sized for a terse description, though its brevity contributes to gaps elsewhere.

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?

For a mutation tool with no annotations and no output schema, the description is too thin. It leaves important behavioral context unexplained, even though the input schema is richly documented.

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 parameters are already well documented in the schema. The description only adds 'by ID', which is redundant with the schema's messageId parameter, so the baseline 3 is appropriate.

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?

States a specific verb (Edit) and resource (message), and narrows scope to previously sent messages, which implicitly distinguishes it from edit_scheduled_message. It does not explicitly name siblings or contrast alternatives, so it falls 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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'previously sent message' gives a narrow usage context, but there is no explicit when-to-use/when-not-to-use guidance or mention of alternatives such as delete_message or edit_scheduled_message. The schema adds operational guidance, but the description itself does not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_scheduled_message_via_name_or_idC

Edit text, target, or send time of a scheduled message.

NameRequiredDescriptionDefault
textNoNew text for the scheduled message (max 4000 characters). If not provided, DO NOT GUESS.
sendAtNoNew time to send message (ISO date string or epoch timestamp in milliseconds at least 30s in future). If not provided, DO NOT GUESS.
userIdentifierNoRecipient user name, email, or ID to move scheduled message to a DM (provide this OR channelIdentifier). If not provided, DO NOT GUESS.
channelIdentifierNoChannel name, slug, or ID to move scheduled message to (provide this OR userIdentifier). If not provided, DO NOT GUESS.
scheduledMessageIdYesThe ID of the scheduled message to edit. If unknown, use pumble_list_scheduled_messages first. (Do not guess)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden and does not disclose permissions, whether partial edits leave unspecified fields unchanged, side effects, or error behavior. It only lists the editable aspects, which is minimal for a mutation tool.

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?

A single front-loaded sentence with no filler. It is appropriately concise, though its brevity means it also omits useful context.

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?

For a 5-parameter edit mutation with no annotations and no output schema, the description is too thin. The schema covers parameter-level details, but the description should at least mention prerequisites, partial-update behavior, or that unknown IDs should be resolved first.

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 explains each parameter in detail. The description only maps 'text, target, or send time' to the parameters and adds no syntax or format details beyond the schema.

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?

States a specific verb ('Edit') and resource ('scheduled message') plus the editable fields, making the tool's purpose clear. It does not explicitly differentiate itself from the regular message editing sibling or the other scheduled-message siblings, so it falls 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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as edit_message for non-scheduled messages, create_scheduled_message, or delete_scheduled_message. Usage is only inferable from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_channel_detail_via_channel_name_or_idA

Get details of a specific channel. Use ONLY when the caller explicitly requests channel metadata.

NameRequiredDescriptionDefault
channelIdentifierYesChannel name, slug, or ID. If not provided, MUST ASK. DO NOT GUESS.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden, and it says nothing about what metadata is returned, whether the call is read-only in side-effect terms, or how it behaves if the identifier doesn't resolve. Beyond the implicit read semantics of "Get", the agent learns no behavioral traits.

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 short sentences with zero padding, and the gating condition is placed after the purpose statement so the agent reads what it does first. Nothing is redundant or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter, no annotations, and no output schema, the description is minimally sufficient to invoke the tool correctly. It never indicates what the returned "details" comprise, which leaves a real gap for an agent deciding whether this call answers the caller's question.

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% and the parameter already documents itself as accepting "Channel name, slug, or ID" along with a strong anti-guessing instruction. The description adds no meaning beyond the schema, which is the expected baseline here.

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?

States a specific verb and resource ("Get details of a specific channel"), which is unambiguous against write-oriented siblings like edit_message or delete_message. It does not differentiate from the closest read siblings such as list_channels_only_when_user_calls, but the purpose itself is clear.

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?

"Use ONLY when the caller explicitly requests channel metadata" is a genuine gating condition that tells the agent when not to call it speculatively. It stops short of naming which alternative to use instead (e.g. listing channels vs. fetching one), so it is clear context without explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_message_via_idC

Get full details of a specific message by ID and channel name or ID.

NameRequiredDescriptionDefault
messageIdYesThe exact ID of the message to retrieve. If not provided, MUST ASK. DO NOT GUESS.
channelIdentifierYesChannel name, slug, or ID where the message is located. If not provided, MUST ASK. DO NOT GUESS.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about permission requirements, what happens when the message is not found or was deleted, or what 'full details' actually encompasses. Only the word 'Get' hints at a read-only operation.

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?

A single front-loaded sentence with no filler; the identifying keys are stated up front. It is arguably too terse, but that gap is captured under the other dimensions rather than here.

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 and no annotations, the description should clarify what 'full details' returns (content, author, timestamp, reactions?) and any access constraints. For a two-parameter lookup tool with zero structured behavioral metadata, this leaves the agent under-informed.

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% and both parameters are fully documented in the schema, including the 'MUST ASK, DO NOT GUESS' constraint. The description merely restates that an ID and a channel name-or-ID are required, adding no format or edge-case detail beyond the schema.

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?

States a specific verb and resource: fetch the full details of one message identified by messageId plus channelIdentifier. That clearly separates it from list_messages_via_name_or_id and search_messages, though the description never names those alternatives explicitly.

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 statement of when to prefer this over search_messages or list_messages_via_name_or_id, nor any prerequisite such as membership in the channel. The only implied usage is 'you already know the message ID and channel', which the reader must infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_infoB

Get profile information of the authenticated user/bot.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the implicit read-only nature via "Get" and the authentication requirement via "authenticated user/bot," but says nothing about what fields are returned, how bot profiles differ from user profiles, or the failure mode when unauthenticated.

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?

A single short sentence with zero redundancy, and the resource and scope are front-loaded. Nothing to trim and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read with no output schema, the description omits the one thing an agent cannot get elsewhere: what the profile object actually contains (fields, bot vs user shape). It is callable as written but leaves the agent guessing at the return payload.

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 tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the description correctly implies the identity is derived from the caller's credentials rather than an argument.

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?

States a specific verb and resource ("Get profile information") plus a clear scope: the authenticated user/bot, which separates it from the sibling list_users_not_for_id_lookup. It doesn't name that sibling explicitly, so it falls short of full 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?

No explicit when-to-use or when-not-to-use guidance and no named alternative. An agent must infer that this is the 'self' lookup versus list_users_not_for_id_lookup for other users; that inference is easy but not stated anywhere.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scheduled_message_via_name_or_idB

Get details of a specific scheduled message by ID.

NameRequiredDescriptionDefault
scheduledMessageIdYesThe exact ID of the scheduled message to retrieve. If unknown, use listScheduledMessages to find it first. (Do not guess)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral context. 'Get details' implies a read, but it does not explicitly confirm read-only/no side effects, authorization requirements, error behavior, or what the returned details include.

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 single sentence is front-loaded and contains no filler. Every part of the sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read tool with full schema coverage and no output schema, the core retrieval purpose is covered. However, it lacks explicit read-only confirmation and does not mention the list_scheduled_messages fallback that an agent may need when the ID is unknown.

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%, and the schema itself explains the ID parameter thoroughly, including the warning not to guess. The description adds only 'by ID' and no additional syntax, format, or handling details beyond the schema.

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 states a specific verb ('Get details') and resource ('scheduled message') with an ID-scoping condition. It distinguishes retrieval from sibling operations like create/edit/delete/list, but does not explicitly name any sibling tool.

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?

The description gives no when-to-use guidance, exclusions, or alternatives. The only related guidance ('use listScheduledMessages to find it first') appears in the schema, not in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_channels_only_when_user_callsA

List all visible channels. Use ONLY when the caller explicitly asks to view the channel directory.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. "List all visible channels" usefully discloses permission-based scoping and implies a read-only operation, but says nothing about pagination, result size, ordering, or auth requirements — gaps that matter for a directory listing with no output schema.

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 short sentences with zero waste: what it does first, then the usage restriction. Nothing is buried or repeated.

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 zero-parameter, non-destructive list tool with no output schema, the description covers the essentials of what and when. The only shortfall is that an agent still cannot tell how large a result to expect or whether results are truncated.

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 tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No parameter claims are made that could mislead.

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?

States a specific verb and resource ("List all visible channels") and adds a scope qualifier ("visible") that tells the agent this is a directory enumeration, not a lookup. It is clearly distinct from get_channel_detail_via_channel_name_or_id and create_channel, though it never names those siblings explicitly.

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 second sentence gives an explicit, restrictive when-to-use condition: only when the caller explicitly asks to view the channel directory. That is a real gating rule rather than vague guidance, but it does not point to the alternative (get_channel_detail) for the single-channel case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_messages_via_name_or_idB

List messages from a channel or direct message (DM) conversation. Resolves names natively.

NameRequiredDescriptionDefault
limitNoMax number of messages to fetch (defaults to 10, max: 20).
cursorNoPagination cursor for next page.
userIdentifierNoUser name, email, or ID to list Direct Messages (DM) from.
channelIdentifierNoChannel name, slug, or ID to list messages from.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses almost nothing beyond the basic action and that names resolve natively, leaving permission requirements, result ordering, and pagination behavior largely undocumented.

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 short, front-loaded sentences with no wasted language. It immediately states the action and supported conversation types.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter read tool with no annotations and no output schema, the description is minimally adequate. It does not clarify that channelIdentifier and userIdentifier are alternative targeting modes or that at least one is expected, even though required parameters are zero.

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 well documented. The description's 'Resolves names natively' aligns with the identifier parameters but adds little beyond what the schema already states.

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 states a specific verb and resource ('List messages') and scopes it to channels or DMs, which is clear enough to distinguish it from write-oriented siblings. It does not explicitly differentiate itself from search_messages or list_thread_replies, so it falls 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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description identifies the object scope (channel or DM) but gives no guidance on when to use this tool versus search_messages, list_thread_replies, or get_message_via_id. There are no exclusions or alternative-selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_scheduled_messagesB

List scheduled messages, optionally filtered by channel or user.

NameRequiredDescriptionDefault
limitNoMaximum number of scheduled messages to fetch.
cursorNoPagination cursor for fetching next page.
userIdentifierNoRecipient user name, email, or ID to filter DM scheduled messages (provide this OR channelIdentifier). If not provided, DO NOT GUESS.
channelIdentifierNoChannel name, slug, or ID to filter scheduled messages (provide this OR userIdentifier). If not provided, DO NOT GUESS.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it only implies read-only behavior through the word 'List'. It says nothing about result ordering, whether pagination is required for large result sets, defaults for limit, or what happens when neither filter is supplied.

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?

A single front-loaded sentence with no filler. It is efficient, though its brevity leaves the other dimensions thin rather than being a flaw of structure itself.

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?

For a four-parameter, paginated list tool with no annotations and no output schema, the description omits return shape, pagination behavior, and ordering. The schema covers parameters well, but the agent gets no picture of what a call actually yields.

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 all four parameters are already documented, including the OR relationship between userIdentifier and channelIdentifier. The description restates the filter concept but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb ('List') and resource ('scheduled messages') with the optional filter dimensions. An agent can distinguish it from get_scheduled_message or create_scheduled_message by the 'list' verb, though the description never names those siblings explicitly.

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 phrase 'optionally filtered by channel or user' implies when the filters apply, but there is no explicit when-to-use vs. when-to-use-get_scheduled_message guidance and no mention of pagination workflow. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_thread_replies_via_channel_name_or_idC

List all replies in a message thread. Resolves names natively.

NameRequiredDescriptionDefault
limitNoMax number of replies to fetch.
cursorNoPagination cursor for next page.
messageIdYesThe exact ID of the parent message/thread. If unknown, use pumble_search_messages to find it first. (Do not guess)
channelIdentifierYesChannel name, slug, or ID. If not provided, MUST ASK. DO NOT GUESS.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and discloses almost nothing: no indication this is a read-only/paginated operation, no rate-limit or permission notes, no sense of what replies contain. 'Resolves names natively' is the only behavioral claim, and it is vague.

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 short sentences, front-loaded with the operation and no wasted words. The terseness edges into under-specification rather than verbosity, but structurally it is clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The rich schema covers all four parameters and there is no output schema to explain, so the essentials for invocation are present. However, for a thread-listing tool with no annotations, the description omits useful context such as pagination expectations and what a reply object includes, leaving it merely adequate.

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 messageId, channelIdentifier, limit, and cursor thoroughly, including the 'do not guess' warnings. The description adds only 'Resolves names natively,' which loosely reinforces the channelIdentifier semantics already spelled out in the schema, so baseline 3 applies.

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?

States a specific verb and resource ('List all replies in a message thread'), which distinguishes it from siblings like list_messages_via_name_or_id or get_message_via_id. It does not explicitly name those siblings or contrast itself, but the resource is unambiguous.

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?

No when-to-use or when-not-to-use guidance, no mention of the sibling tools that could be confused with it, and no stated prerequisites. The description gives no routing signal beyond the bare purpose; all sequencing guidance lives in the schema's parameter descriptions, not here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_user_groupsB

List workspace user groups.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full burden; 'List' reasonably implies a non-destructive read and 'workspace' scopes the result set. It says nothing about pagination, result size, or required permissions, which is a real gap for a tool with zero annotation coverage.

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?

One short sentence with the resource front-loaded and no filler. It is efficient, though the brevity is partly under-specification rather than disciplined compression.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A zero-param list tool is low complexity and needs little, but with no output schema and no annotations the description could still say what a 'group' contains or whether results are paginated. Adequate but with clear gaps.

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?

Zero parameters, so there is nothing for the description to disambiguate and the baseline applies. The schema is empty and consistent with the description.

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?

Specific verb (List) plus resource (workspace user groups) makes the operation unambiguous. It does not differentiate from siblings such as list_users_not_for_id_lookup, so an agent must infer whether 'users' and 'user groups' are distinct resources.

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?

No statement of when to use this versus the user-listing sibling, no prerequisites, no exclusions. The agent gets the what but must guess the when.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_users_not_for_id_lookupA

List all workspace users. Use ONLY when the caller explicitly asks to view the user directory.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. "List" implies a read-only operation, but the description does not disclose return contents, pagination, ordering, permissions, or rate limits. For a simple no-parameter read tool this is minimally viable, but meaningful behavioral gaps remain.

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 short sentences with no wasted text. The primary purpose is front-loaded, followed immediately by the usage constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, zero-parameter list tool, the description covers the core purpose and the triggering condition. However, there is no output schema explaining what is returned, and the description does not clarify whether results are paginated, how users are ordered, or what fields are included.

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 tool has zero parameters, and the schema coverage is 100%, so there is no parameter semantics for the description to compensate for. The baseline for a zero-parameter tool applies.

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 uses a specific verb and resource: "List all workspace users." That is clear enough to distinguish it from message- and channel-oriented siblings. However, it does not explicitly name the sibling it substitutes for, such as get_my_info or ID-resolution tools; the distinction is only implied by the tool name and the usage restriction.

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 an explicit trigger: "Use ONLY when the caller explicitly asks to view the user directory." The word "ONLY" also excludes other uses. But it does not name an alternative tool for resolving user IDs, so it stops short of full when-to-use/when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_reactionC

Remove an emoji reaction from a message by ID.

NameRequiredDescriptionDefault
reactionYesThe emoji code to remove (e.g., :thumbsup:). Must be a single emoji code, no conversational text or spaces. (Do not guess)
messageIdYesThe exact ID of the message to remove reaction from. If unknown, use pumble_search_messages to find it first. (Do not guess)
channelIdentifierYesChannel name, slug, or ID. If not provided, MUST ASK. DO NOT GUESS.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It says nothing about permissions (can you remove another user's reaction?), idempotency or error behavior when the reaction is absent, or what the response confirms — a meaningful gap for a mutation tool.

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?

One sentence, front-loaded with the action and resource, with zero filler. It is efficient but arguably over-terse given how much behavioral context the tool lacks.

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?

Three required parameters, a mutation, no annotations, and no output schema — yet the description does not cover permission scope, failure modes, or effect on the message. The rich schema descriptions help on inputs, but the agent still lacks the information needed to call this safely.

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%, and the schema itself documents reaction format, message ID lookup, and channel identifier rules, so the baseline of 3 applies. The description adds only the phrase 'by ID', contributing essentially nothing beyond the structured fields.

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?

States a specific verb and resource (remove + emoji reaction on a message) and narrows scope with 'by ID'. It is distinguishable from the sibling add_reaction by the verb alone, but it never names that sibling or any other tool to contrast with.

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 statement of when to use this versus add_reaction, no prerequisites (e.g., must already have reacted), and no exclusions. Usage is only inferable from the verb; the useful guidance ('search first', 'ask if channel unknown') lives in the schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_user_from_channel_via_name_or_idB

Remove a user from a channel. Destructive; requires confirmation code.

NameRequiredDescriptionDefault
confirmYesExplicit confirmation boolean. Must be true. (Do not guess)
userIdentifierYesUser name, email, or ID of the user to remove. If not provided, MUST ASK. DO NOT GUESS.
channelIdentifierYesChannel name, slug, or ID. If not provided, MUST ASK. DO NOT GUESS.
confirmationTokenNoOne-time security confirmation token authorized by the caller.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description does do real work by flagging the operation as destructive and disclosing a confirmation requirement — meaningful for a mutation tool. However, it omits permission requirements, reversibility (a removed user can presumably be re-added), and error behavior when the user is not a member; it also says "confirmation code" while the schema's `confirmationToken` is optional and only `confirm: true` is required, an ambiguity left unaddressed.

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, zero filler, with the destructive nature front-loaded immediately after the purpose. Every clause carries information an agent needs before invoking a delete-style operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, four-parameter mutation with no annotations and no output schema, the description covers the safety headline but leaves gaps: it does not say whether the removal is reversible, what scope of permission the caller needs, or what the tool returns on success or failure. The rich schema compensates for the identifier parameters, so the definition is workable but thin on the destructive-operation context.

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 four parameters (including the MUST-ASK/DO-NOT-GUESS guidance) are fully documented in the schema; baseline is 3. The description adds only the loose nod that a confirmation token exists, which the schema already explains more precisely.

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?

Specific verb + resource ("Remove a user from a channel") that is unmistakable against the sibling `add_users_to_channel_via_name_or_id`. It stops short of the 5 bar because it never explicitly contrasts itself with siblings or clarifies that this removes membership rather than the user account itself.

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?

No when-to-use / when-not-to-use guidance and no named alternatives. The only contextual cue is "requires confirmation code," which is a prerequisite, not usage guidance — an agent gets no help deciding between this and other channel-membership tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reply_message_via_channel_name_or_idB

Reply to a message in a channel or DM thread using parent messageId. Resolves names natively.

NameRequiredDescriptionDefault
textYesThe reply message text (max 4000 characters). If not provided, MUST ASK. DO NOT GUESS.
asBotNoSend as bot identity instead of API key user. Defaults to false. If not provided, DO NOT GUESS.
messageIdYesThe exact ID of the target message. Note: if the target message was recently sent, use the id returned in that response. If unknown, use pumble_search_messages to find it first.
channelIdentifierYesChannel name, slug, or ID. If not provided, MUST ASK. DO NOT GUESS.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It adds only that names are resolved natively and that messageId is the parent message; it does not disclose permissions, side effects, rate limits, ambiguity handling, or return behavior for this write operation.

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 short sentences, front-loaded with the action and key identifier. There is no redundant or wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema fully specifies the required and optional parameters, and no output schema is needed here. However, given the lack of annotations and the fact that this is a write tool, the description is minimal on behavioral context such as permissions, failure modes, or threading effects.

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 in detail. The description adds minor meaning by calling messageId the parent message and noting native name resolution for channel identifiers, but it does not meaningfully supplement the schema's parameter guidance.

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 states a specific verb and resource: replying to a message in a channel or DM thread using parent messageId. It clearly separates thread replies from ordinary message sending, though it does not explicitly name sibling alternatives such as send_message or list_thread_replies.

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 phrase 'Reply to a message ... using parent messageId' implies the appropriate usage context, but there is no explicit guidance on when to use this tool versus send_message, list_thread_replies, or edit_message. Usage is inferable rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_messagesA

Search message history by text query (~15s indexing delay). Do not use for user/channel ID lookups.

NameRequiredDescriptionDefault
textYesText query to search for. If not provided, MUST ASK. DO NOT GUESS.
afterNoFilter messages after this date (ISO 8601 date string).
beforeNoFilter messages before this date (ISO 8601 date string).
fromUserIdentifiersNoUser names, emails, or IDs to filter by. If not provided, DO NOT GUESS.
inChannelIdentifiersNoChannel names, slugs, or IDs to filter by. If not provided, DO NOT GUESS.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden, and the "~15s indexing delay" is a genuinely valuable behavioral fact the agent cannot get elsewhere. However, it omits result limits, ordering, pagination, and permission scope for a search tool over potentially large history — meaningful gaps when nothing else covers them.

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 short sentences, no filler, with the core purpose and the freshness caveat front-loaded before the exclusion. There is no redundancy or padding to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The indexing delay and the schema's parameter documentation cover the basics for a five-parameter search tool. Still, with no output schema and no annotations, the description says nothing about what results look like, how many are returned, or their ordering, which an agent needs to use the results 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 all five parameters are already documented, including the strong "MUST ASK. DO NOT GUESS." guidance on text. The description adds only the phrase "text query," contributing nothing beyond the schema, so the baseline of 3 applies.

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 pairs a specific verb and resource ("Search message history") with the retrieval mechanism ("by text query"), which distinguishes it from single-message siblings like get_message_via_id. The added exclusion ("Do not use for user/channel ID lookups") muddies the line, however, since the schema itself exposes fromUserIdentifiers and inChannelIdentifiers as filters, leaving the intended boundary with list_users_not_for_id_lookup only implied.

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?

It supplies one negative rule and a freshness caveat, giving some context for tool selection. But no alternative is named for the excluded case, and it never tells the agent when to prefer list_messages_via_name_or_id or get_message_via_id over this search, which is the main routing decision among these siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_dm_via_name_email_or_idB

Send a 1-on-1 direct message. Resolves user names/emails natively.

NameRequiredDescriptionDefault
textYesThe message text to send (max 4000 characters). If not provided, MUST ASK. DO NOT GUESS.
userIdentifierYesUser name, email, or ID. If not provided, MUST ASK. DO NOT GUESS.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Resolves user names/emails natively' hints at identifier resolution, but nothing says what happens with an ambiguous or non-matching name, whether a DM conversation is auto-created, whether the send is irreversible, or what rate limits apply to an outbound-message action.

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 short sentences with the action front-loaded; nothing is padded. The second sentence largely restates what the userIdentifier schema already says, so it is not fully earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter send tool with full schema coverage and no output schema, the description covers the basics. It still omits resolution-failure behavior and the result of a successful send, which an agent needs when a name is ambiguous.

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% and both parameters already document accepted identifier forms and the 'MUST ASK, DO NOT GUESS' constraint. 'Resolves user names/emails natively' slightly reinforces userIdentifier semantics but adds no format or resolution-failure detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ('Send a 1-on-1 direct message'), and '1-on-1' implicitly separates it from send_group_dm_via_names_emails_or_ids and send_message_via_channel_name_or_id. It never names those siblings outright, so the differentiation is inferential rather than explicit.

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?

'1-on-1' implies this is for a single recipient rather than a channel or group, which is implied usage guidance. There is no explicit when-to-use/when-not statement, no mention of the group DM alternative, and no prerequisites such as whether the target user must exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_group_dm_via_names_emails_or_idsC

Send a group direct message to multiple users. Resolves names/emails natively.

NameRequiredDescriptionDefault
textYesThe message text to send (max 4000 characters). If not provided, MUST ASK. DO NOT GUESS.
userIdentifiersYesArray of recipient user names, emails, or IDs (min 2, max 8). If not provided, MUST ASK. DO NOT GUESS.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for a write operation. It does not disclose permission requirements, whether a new group conversation is created, what happens when a name or email cannot be resolved, any rate limits, or what the response contains.

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 short sentences with the core purpose front-loaded and no wasted words. The second sentence largely restates what the tool name already says about identifier resolution, so it is efficient but not entirely load-bearing.

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?

For a 2-parameter mutation tool with no annotations and no output schema, the description is too thin. An agent still lacks the failure behavior, permissions context, and confirmation of what a successful send returns.

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 both parameters and their 2-to-8 recipient limit are fully documented in the schema and the baseline is 3. The line 'Resolves names/emails natively' relates to userIdentifiers but adds no format or behavior detail beyond what the schema already states.

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 gives a clear verb and resource ('Send a group direct message') plus the scope 'multiple users', which implicitly separates it from the single-recipient sibling send_dm_via_name_email_or_id. It does not explicitly name that alternative, so it falls 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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of alternatives such as send_dm_via_name_email_or_id for one-to-one messages or send_message_via_channel_name_or_id for channels. The reader must infer the selection criteria from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_message_via_channel_name_or_idB

Send a message to a public or private channel. Resolves channel names natively.

NameRequiredDescriptionDefault
textYesThe message text to send (max 4000 characters). If not provided, MUST ASK. DO NOT GUESS.
asBotNoSend as bot identity instead of API key user. Defaults to false. If not provided, DO NOT GUESS.
channelIdentifierYesChannel name, slug, or ID. If not provided, MUST ASK. DO NOT GUESS.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden for a mutation tool. It usefully discloses native channel-name resolution, but says nothing about required permissions, whether DMs are excluded, delivery behavior, error cases, or what a successful send returns.

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 short sentences with no waste. The core action is front-loaded and the name-resolution trait follows immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter send tool with full schema coverage, the description covers the core action and name resolution. However, with no annotations and no output schema, it omits mutation-relevant context such as permissions, failure modes, and whether the response includes message metadata.

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%, including explicit guidance for text, channelIdentifier, and asBot, so the schema already handles parameter meaning thoroughly. The description's note that channel names are resolved natively adds only marginal semantic value beyond the schema's 'Channel name, slug, or ID' wording.

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 gives a specific verb and resource ('send a message to a channel') and clarifies that both public and private channels are supported. It implicitly distinguishes channel messaging from DM/group-DM siblings by naming 'channel,' but does not explicitly contrast with reply_message or scheduled-message tools.

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?

It implies the tool is for channel messages, but provides no explicit when-to-use guidance versus send_dm_via_name_email_or_id, reply_message_via_channel_name_or_id, or create_scheduled_message_via_name_or_id. The agent must infer which messaging tool applies from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_my_custom_statusC

Update the custom status of the authenticated user.

NameRequiredDescriptionDefault
codeNoEmoji code shorthand (e.g. ':joy:'). Send empty string or omit to clear.
statusNoThe status message text (max 128 chars). Send empty string or omit to clear.
expiresAtNoThe exact timestamp when the status expires. Required only if expiration is 'custom'.
expirationNoStatus expiration mode (e.g., 'never', 'min30', 'thisWeek'). Defaults to 'never'.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, yet it omits that this is a mutation, whether omitted fields are cleared or left untouched, permission requirements, and rate limits. The subtle clear-via-empty-string semantics exist only in the schema, not the description.

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?

A single front-loaded sentence with zero filler. It is efficient, though its brevity borders on under-specification for a four-parameter mutation.

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?

For a mutation tool with no annotations and no output schema, the description should disclose replace-vs-merge semantics, clearing behavior, and the response shape. None of that is present, leaving the agent dependent entirely on the input schema.

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% and each of the four parameters is documented inline, including the expiration enum and the custom-expiresAt dependency. The description adds nothing beyond the schema, so the baseline 3 applies.

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 states a specific verb and resource ("Update the custom status") and scopes it to "the authenticated user," making it unambiguous which record is modified. It does not need sibling differentiation since no other sibling tool touches custom status, but it also does not explicitly say so.

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 call this versus alternatives, no preconditions, and no mention of how to clear a status versus set one. The only usage signal is the implied 'change my status,' leaving the agent to infer everything else.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 32 tool updates
    • Addedadd_reaction
    • Addedadd_users_to_channel_via_name_or_id
    • Addedcreate_channel
    • Addedcreate_scheduled_message_via_name_or_id
    • Addeddelete_message
    • Addeddelete_scheduled_message_via_name_or_id
    • Addededit_message
    • Addededit_scheduled_message_via_name_or_id
    • Addedget_channel_detail_via_channel_name_or_id
    • Addedget_message_via_id
    • Addedget_my_info
    • Addedget_scheduled_message_via_name_or_id
    • Addedlist_channels_only_when_user_calls
    • Addedlist_messages_via_name_or_id
    • Addedlist_scheduled_messages
    • Addedlist_thread_replies_via_channel_name_or_id
    • Addedlist_user_groups
    • Addedlist_users_not_for_id_lookup
    • Removedpumble_edit_message
    • Removedpumble_list_channels
    • Removedpumble_list_messages
    • Removedpumble_list_users
    • Removedpumble_send_dm
    • Removedpumble_send_message
    • Addedremove_reaction
    • Addedremove_user_from_channel_via_name_or_id
    • Addedreply_message_via_channel_name_or_id
    • Addedsearch_messages
    • Addedsend_dm_via_name_email_or_id
    • Addedsend_group_dm_via_names_emails_or_ids
    • Addedsend_message_via_channel_name_or_id
    • Addedupdate_my_custom_status
  2. 6 tool updatesv0.1.0
    • First observedpumble_edit_message
    • First observedpumble_list_channels
    • First observedpumble_list_messages
    • First observedpumble_list_users
    • First observedpumble_send_dm
    • First observedpumble_send_message

TDQS

B3.2/5.0

Scored across 26 tools

Disambiguation4/5

Tools mostly target distinct resource+action pairs (send vs reply vs schedule vs edit vs delete message, channel vs DM vs group DM, reactions, threads). Some names awkwardly embed usage guidance (list_channels_only_when_user_calls, list_users_not_for_id_lookup), but this actually reduces misselection. Minor overlap between send_message_via_channel_name_or_id and send_dm/send_group_dm, but descriptions clarify.

Naming Consistency3/5

Most tools follow verb_noun but with inconsistent long suffixes (via_channel_name_or_id, via_name_email_or_id, via_names_emails_or_ids, via_name_or_id), while others (edit_message, delete_message, add_reaction) drop the suffix entirely. Two tools embed conditional instructions in the name (only_when_user_calls, not_for_id_lookup), breaking the pattern. Still readable but mixed conventions.

Tool Count3/5

At 26 tools it sits just over the heavy threshold, and the surface spans messages, channels, DMs, threads, reactions, scheduled messages, users, groups, and status. Each tool does map to a distinct operation, but the set feels large and could be consolidated (e.g. the via_name_or_id variants).

Completeness4/5

Strong coverage of the chat domain: full message lifecycle, threads, reactions, DMs/group DMs, channel create and membership management, and complete scheduled-message CRUD. Gaps remain (no channel delete/archive/update, no file/attachment handling, user groups are list-only), but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    Not graded
    maintenance
    Enables two-way communication between Claude and Slack for posting messages, managing threads, and handling files. It specifically supports asynchronous workflows by allowing Claude to poll for remote user replies and send task notifications.
    9
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude and other MCP clients to interact with Plutio's business platform resources including CRM, projects, invoicing, and more through structured tools.
    44 npm
    5
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with Discord through the REST API, supporting message reading and sending, channel and guild management, threads, pins, and reactions.
    17
    MIT