pumble-mcp
OfficialSend messages to channels (
pumble_send_message)List messages in a channel with pagination (
pumble_list_messages)Edit existing messages (
pumble_edit_message)List all channels, including DMs and group DMs (
pumble_list_channels)Send direct messages to users by ID or email (
pumble_send_dm)List workspace users with IDs, names, and emails (
pumble_list_users)
Note: The actual MCP server schema currently exposes only these 6 tools; other documented features (such as thread replies, scheduled messages, reactions, channel management, and search) are not available.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pumble-mcpsend a message to #general saying hello"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pumble-mcp
A small MCP server that wraps Pumble's "API Key addon" REST API, exposing
nineteen tools to any MCP client, covering messages and threads, scheduled
messages, reactions, search, channel and membership management, direct messages,
and the workspace user directory. See SPEC.md for the full design.
Security note: the Pumble API key you configure grants broad, workspace-wide access. Read the Security / Permissions section before installing.
1. Get a Pumble API key
In your Pumble workspace, install the API Key addon (Apps/Integrations).
Generate a key from the addon's settings. Pumble shows it once as an ephemeral message — copy it immediately.
Related MCP server: plutio-mcp
2. Configure the key
The server reads PUMBLE_API_KEY from its own environment. It does not
load a .env file on its own, so set the variable one of these two ways.
For running the server directly (npm run dev, npm start), export it in your
shell — add this to ~/.bashrc to make it stick:
export PUMBLE_API_KEY="<your key>"For normal use through an MCP client, pass it in the client's env block
instead — see step 4. That is the usual path, and it needs nothing in your
shell.
.env.example lists the variables the server understands. If you keep a local
.env for your own tooling, it is gitignored — never commit it.
3. Install, build
npm install
npm run build4. Register with an MCP client
The server speaks MCP over stdio, so any MCP-capable client can run it. Point
the client at the built entry point using an absolute path, and pass
PUMBLE_API_KEY through the environment:
{
"command": "node",
"args": ["/absolute/path/to/pumble-mcp/dist/index.js"],
"env": { "PUMBLE_API_KEY": "<your key>" }
}Claude Code can write that entry for you. Run this from the project root so
$(pwd) resolves correctly:
claude mcp add pumble --env PUMBLE_API_KEY="$PUMBLE_API_KEY" -- node "$(pwd)/dist/index.js"Once registered, all nineteen tools are available in future sessions. Verify with:
claude mcp listDevelopment
npm run dev # watch mode
npm run typecheck # tsc --noEmit
npm test # vitestTools
Messages & threads
Tool | Pumble endpoint | Notes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| At least one of |
channelIdentifier accepts either a channel name or a 24-character ID — names
are resolved for you, and an ambiguous name is rejected rather than guessed.
Thread paging is inclusive: cursor names the reply to resume from and that
reply comes back again, so cursor plus limit: N returns N + 1 items.
The response carries no hasMore flag; a short page means the end.
Scheduled messages
Tool | Pumble endpoint | Notes |
|
|
|
|
| Optional |
|
|
|
|
|
|
Naming a destination by anything other than channelId costs an extra lookup:
these endpoints only accept channelId, so channel names, user IDs, and emails
are resolved first. Targeting a person resolves to the existing DM channel
with them — Pumble creates one only after a first message, so DM someone before
scheduling to them.
Editing is read-modify-write because Pumble rejects an edit missing any of
channelId, text, or sendAt; fields you leave out are read back and resent
unchanged. There is no separate "get" tool — listing already returns whole
messages.
Reactions
Tool | Pumble endpoint | Notes |
|
|
|
|
|
|
Channels
Tool | Pumble endpoint | Notes |
|
| No input; returns every channel visible to the key, including DM ( |
|
|
|
|
|
|
|
|
|
|
|
|
Workspace
Tool | Pumble endpoint | Notes |
|
|
|
|
| No input; returns every workspace member's |
Security / Permissions
This server hands a single static Pumble API key to an MCP server that any connected client can call. Understand the blast radius before installing:
The API key inherits the full visibility and privileges of the Pumble user who generated it. It is a password-equivalent secret.
With these nineteen tools, anyone able to invoke this server (including any model or client session configured with it) can, as you:
read, send, edit, and reply to messages in any channel the key can see, including thread replies;
queue messages to post later in any channel or DM, and read, rewrite, redirect, or cancel anything already queued — a scheduled message can fire long after the session that created it has ended;
search across the workspace by text, author, or channel (
pumble_search_messages) — this makes bulk retrieval far easier than reading channels one at a time;send direct messages to any user (
pumble_send_dm);enumerate every workspace member's name and email (
pumble_list_users);read DM history —
pumble_list_channelsreturns DM channels (channelType DIRECT), whosechannelIdfeedspumble_list_messages;create channels and change who is in them — adding members exposes channel history to those users, and removing them revokes access (
pumble_remove_user_from_channeldemandsconfirm: true, which stops an accidental call but not a deliberate one);react to messages as you (
pumble_add_reaction).
There is no per-tool scoping and no read-only mode: one key means full read/write across channels, DMs, and the user directory.
Recommendations:
Never commit
.env(it is gitignored). Do not paste the key into logs, issues, or chat.If the key is ever exposed, rotate it: generate a new key in the API Key addon, update
.env, confirm it works, then revoke the old key.If your workspace allows it, generate the key from a dedicated, least-privilege service account rather than a full-admin user.
Available Tools
6 toolspumble_edit_messageB
Edit the text of an existing Pumble message.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The new message text | |
| channelId | Yes | The ID of the channel the message is in | |
| messageId | Yes | The ID of the message to edit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only states the operation without revealing whether edits are reversible, require specific permissions, or affect other users. Critical context for a mutation tool is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core action, though it sacrifices behavioral detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (three required params, no output schema, no annotations), the description is insufficient. It omits behavioral context such as permissions, side effects, and prerequisites, leaving the agent underinformed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all three parameters have descriptions). The tool description adds no extra semantic information beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Edit the text of an existing Pumble message' clearly identifies the action (edit), resource (text of an existing message), and distinguishes from sibling tools like pumble_send_message (send new) and pumble_list_messages (list existing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., pumble_send_message for new messages), nor does it mention prerequisites like permissions or message ownership. Without this, an agent may misuse the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pumble_list_channelsA
List all Pumble channels visible to the API key, including DMs (channelType DIRECT) and group DMs. Use the channel's id with pumble_list_messages to read a DM conversation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only mentions scope (visible to API key, including DMs). Lacks details on rate limits, authentication requirements, empty results, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences with no redundancy. Main action and key guidance front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description does not explain return structure (e.g., list of objects with id, name, type). Omits pagination or limits. Acceptable for a simple list but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is trivially 100%. Description does not need to add parameter meaning, baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'List' and resource 'Pumble channels', specifies inclusion of DMs and group DMs. Distinguishes from sibling by mentioning use with pumble_list_messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to use channel id with pumble_list_messages for DMs, but does not cover when not to use or alternative contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pumble_list_messagesB
List messages in a Pumble channel.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max number of messages to fetch | |
| cursor | No | Pagination cursor | |
| channel | No | Channel name (provide this OR channelId) | |
| channelId | No | Channel ID (provide this OR channel) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist; description omits pagination behavior, ordering, error handling, or what happens if channel not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with clear purpose, but could include more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description lacks details on pagination and ordering, but tool is simple; adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters; description adds no extra meaning beyond parameter names and schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List' and the resource 'messages in a Pumble channel', distinguishing it from siblings like send or edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs other tools; no exclusions or context about filtering beyond channel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pumble_list_usersA
List all people in the Pumble workspace (id, name, email). Use this to resolve a person's userId for pumble_send_dm, or find their DM channelId via pumble_list_channels (channelType DIRECT) to read a conversation with pumble_list_messages.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description clearly indicates a read-only list operation without side effects. It does not disclose potential limits or authentication requirements, but for a zero-param tool, the information is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines purpose, second provides usage guidance. Front-loaded and highly concise with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's functionality and output usage for a simple list operation with no output schema. It is complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description does not need to add param meaning. Baseline of 4 is appropriate given 0 parameters and 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'all people in the Pumble workspace' with attributes (id, name, email). It also differentiates from siblings by mentioning its role in resolving userId and DM channelId.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool (to resolve userId for pumble_send_dm or find DM channelId via pumble_list_channels) and references sibling tools for further actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pumble_send_dmA
Send a direct message to a person in Pumble, as your own user. Use pumble_list_users to find their userId/email first if unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The message text to send | |
| No | Recipient's email (provide this OR userId) | ||
| userId | No | Recipient's user ID (provide this OR email) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses no behavioral traits beyond the basic send action. Missing details on authentication requirements, message formatting, delivery guarantees, or rate limits. This is a significant 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Key information is front-loaded: action, target, identity. Suggestions follow logically. Excellent efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the main usage context: sending a DM as the authenticated user. Mentions prerequisite action (list users). For a simple tool with no output schema and only three parameters, this is largely complete. Lacks error handling details, but acceptable for a basic send operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meaning all parameters (text, email, userId) have descriptions in the input schema. The description adds a hint about using pumble_list_users to obtain userId/email but does not enrich parameter semantics beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states sending a direct message to a person in Pumble, using 'your own user'. It distinguishes from siblings like pumble_send_message (channel message) by specifying 'direct message' and from pumble_edit_message (edit). The reference to pumble_list_users further clarifies its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: 'as your own user' and suggests using pumble_list_users to find recipient identifiers. Does not explicitly state when not to use (e.g., for channel messages), but the sibling tools imply alternatives. The guidance is practical and helps avoid errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pumble_send_messageA
Send a message to a Pumble channel, as your own user by default.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The message text to send | |
| asBot | No | Send as the bot identity instead of the API key's user | |
| channel | No | Channel name (provide this OR channelId) | |
| channelId | No | Channel ID (provide this OR channel) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided; the description only notes the default user identity. It lacks disclosure of key behaviors such as rate limits, permissions required, error handling, or response format. The phrase 'by default' hints at the asBot option but does not fully describe 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action. It is concise and contains no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is minimal. It does not explain return values or success/failure indicators, which would be helpful for a write operation. However, it is adequate for a simple send action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all parameters described), setting a baseline of 3. The description adds minimal extra value beyond the schema, only reinforcing the default identity. No new parameter semantics are introduced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'send', the resource 'Pumble channel', and the default scope 'as your own user'. It distinguishes from siblings like pumble_send_dm (direct message) and pumble_edit_message (edit).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for sending messages to channels, but does not explicitly state when to use alternatives like pumble_send_dm for DMs or pumble_edit_message for edits. No when-not-to-use guidance is provided.
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.
6 tool updates
v0.1.0- First observed
pumble_edit_message - First observed
pumble_list_channels - First observed
pumble_list_messages - First observed
pumble_list_users - First observed
pumble_send_dm - First observed
pumble_send_message
TDQS
Scored across 6 tools
Each tool targets a distinct action: edit, list channels, list messages, list users, send DM, send message. Descriptions clearly differentiate between sending to a channel vs a DM, and note how to find DM channel IDs. No ambiguity.
All tools follow a consistent 'pumble_verb_noun' pattern in snake_case (e.g., pumble_edit_message, pumble_list_channels), making the set predictable and easy to navigate.
With 6 tools, the server covers essential messaging operations (read, send, edit) for both channels and DMs, plus user listing. The count feels well-scoped without unnecessary duplication.
Core workflows are covered: reading and sending messages to channels and DMs, editing messages, and listing users. Minor gaps like delete message or thread support are acceptable for a succinct tool surface.
Maintenance
Related MCP Connectors
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Messaging tools for AI agents: send messages, manage chats, groups and channels.
Read, edit, publish, and preview your pepita websites from Claude.
One workspace of tools for Claude and ChatGPT: connect 600+ apps, generate media, build tools.
Related MCP Servers
- FlicenseAqualityNot gradedmaintenanceEnables 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-
- AlicenseNot gradedqualityDmaintenanceEnables Claude and other MCP clients to interact with Plutio's business platform resources including CRM, projects, invoicing, and more through structured tools.17 npm5MIT
- AlicenseAqualityDmaintenanceEnables LLMs like Claude to interact with Pipedrive CRM data through a standardized interface, providing 22 tools for managing deals, persons, organizations, activities, and more.221MIT
- AlicenseBqualityDmaintenanceEnables Claude to manage WhatsApp templates, flows, and send messages through the WhatsApp Cloud API.3112 npmMIT