BumbleBox MCP
An official MCP server by BumbleBox that allows AI assistants to search, read, and triage emails across connected mailboxes (Gmail, Outlook, IMAP). It enables drafting replies, managing campaigns, and organizing folders, while enforcing strict user controls where sending or committing actions require explicit user approval.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.bumblebox.ai/api/mcpWhat you can do with it
- Search and read emails across all connected mailboxes
- List emails waiting for a reply and prepare drafts
- Manage email campaigns by creating and editing drafts
- Archive, move, or trash emails with user-verified safety
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- bumblebox 2.1.0
- MCP protocol
- 2025-06-18
- Tools
- 17 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
17 advertised
search_emails — Search emails
Searches every connected mailbox (sender, subject, preview), newest first. Operators: from:, subject:, before:YYYY-MM-DD, after:YYYY-MM-DD, in:sent (only what the user sent, from any mailbox or alias); the rest is free text. Deleted emails are not returned.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
}
},
"additionalProperties": true
}{
"title": "Search emails",
"readOnlyHint": true,
"openWorldHint": false
}get_email — Read an email
One email in full: sender, recipients, date, subject, plain-text body, attachment names, folder and BumbleBox classification.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Email id, as returned by search_emails or list_to_answer."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email"
],
"properties": {
"email": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": true
}{
"title": "Read an email",
"readOnlyHint": true,
"openWorldHint": false
}list_to_answer — Emails waiting for a reply
Received emails BumbleBox classified as needing a reply and still in the inbox, newest first.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"emails"
],
"properties": {
"emails": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
}
},
"additionalProperties": true
}{
"title": "Emails waiting for a reply",
"readOnlyHint": true,
"openWorldHint": false
}search_contacts — Search contacts
Contacts BumbleBox knows from the mail history (name, address, organization domain, exchange counts, last exchanges, VIP mark, note), matched on name, address or domain.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"contacts"
],
"properties": {
"contacts": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
}
},
"additionalProperties": true
}{
"title": "Search contacts",
"readOnlyHint": true,
"openWorldHint": false
}list_folders — List mail folders
The folders of each connected mailbox, as last synced. Trash, spam, sent and drafts are left out.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"mailboxes"
],
"properties": {
"mailboxes": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
}
},
"additionalProperties": true
}{
"title": "List mail folders",
"readOnlyHint": true,
"openWorldHint": false
}list_calendar_events — List calendar events
Events of the connected Google calendars between two dates (default: the next 7 days, at most 62 days).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"type": "string",
"format": "date-time"
},
"from": {
"type": "string",
"format": "date-time"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"events"
],
"properties": {
"events": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
}
},
"additionalProperties": true
}{
"title": "List calendar events",
"readOnlyHint": true,
"openWorldHint": false
}draft_reply — Prepare a reply (not sent)
Saves the text as the reply draft of a received email, from the address the email was written to (a brand address or the mailbox). needsIdentity: that address cannot send until the user verifies it in BumbleBox. Nothing is sent: the draft waits in BumbleBox (Pilotage › prepared replies) until the user reviews it and clicks Send. Saving again replaces the previous draft of the same email.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email_id",
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 20000,
"minLength": 1,
"description": "Plain-text reply body."
},
"subject": {
"type": "string",
"maxLength": 300,
"description": "Defaults to \"Re: <original subject>\"."
},
"email_id": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Email id, as returned by search_emails or list_to_answer."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"draft"
],
"properties": {
"draft": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": true
}{
"title": "Prepare a reply (not sent)",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}send_reply — Reply to the sender
Replies to the sender of one received email, and only to them (no Cc, no Bcc, no attachment), from the address the email was written to. What happens next is the level the user set in BumbleBox for this kind of reply: a draft, a reply waiting for one tap (the default), or a reply that leaves after a delay the user can cancel. Anything that commits the user (amounts, bank details, acceptance, contracts, dates, links) always waits for the user, and so does a reply from an address the user has not verified (needsIdentity). The result says which one applied.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email_id",
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 20000,
"minLength": 1,
"description": "Plain-text reply body."
},
"email_id": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Email id, as returned by search_emails or list_to_answer."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"reply"
],
"properties": {
"reply": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": true
}{
"title": "Reply to the sender",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}archive_email — Archive an email
Moves one inbox email to its mailbox's archive folder, on the mail server too. Undone by restore_to_inbox. Nothing is deleted.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email_id"
],
"properties": {
"email_id": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Email id, as returned by search_emails or list_to_answer."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"moved"
],
"properties": {
"moved": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": true
}{
"title": "Archive an email",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}move_email — Move an email to a folder
Moves one inbox email to an existing folder of the same mailbox (see list_folders), on the mail server too. No folder is created. Undone by restore_to_inbox.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email_id",
"folder"
],
"properties": {
"folder": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"email_id": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Email id, as returned by search_emails or list_to_answer."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"moved"
],
"properties": {
"moved": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": true
}{
"title": "Move an email to a folder",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}trash_email — Put an email in the trash
Moves one inbox email to its mailbox's trash when BumbleBox certifies it as noise (spam, newsletter, promotion, with a unanimous safety vote and no known contact or action word). Any other email is not moved: it becomes a proposal the user confirms in one tap in BumbleBox. Never a permanent deletion; undone by restore_to_inbox.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email_id"
],
"properties": {
"reason": {
"type": "string",
"maxLength": 300,
"description": "Why, shown to the user with a proposal."
},
"email_id": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Email id, as returned by search_emails or list_to_answer."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result"
],
"properties": {
"result": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": true
}{
"title": "Put an email in the trash",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}restore_to_inbox — Put an email back in the inbox
Moves an archived, filed or trashed email back to the inbox, on the mail server too.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email_id"
],
"properties": {
"email_id": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Email id, as returned by search_emails or list_to_answer."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"restored",
"email_id"
],
"properties": {
"email_id": {
"type": "string"
},
"restored": {
"type": "number"
}
},
"additionalProperties": true
}{
"title": "Put an email back in the inbox",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_missions — List campaigns
The user's prospection campaigns (missions), most recently active first, with the number of drafts waiting, emails sent and prospects who replied.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"missions"
],
"properties": {
"missions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
}
},
"additionalProperties": true
}{
"title": "List campaigns",
"readOnlyHint": true,
"openWorldHint": false
}list_campaign_drafts — List the drafts of a campaign
The drafts of one campaign that wait for the user to validate them in BumbleBox (recipient, subject, plain-text body, sender), newest first, with the true totals.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"mission_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1
},
"mission_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Campaign id, as returned by list_missions."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"counts",
"drafts"
],
"properties": {
"counts": {
"type": "object",
"additionalProperties": {}
},
"drafts": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
}
},
"additionalProperties": true
}{
"title": "List the drafts of a campaign",
"readOnlyHint": true,
"openWorldHint": false
}list_replies_to_validate — Campaign replies waiting for the user
Replies received on campaigns that still need the user: prepared reply drafts waiting for validation, and replies with no answer yet (with the stored AI triage: kind, summary, whether a human is needed).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"drafts",
"pending"
],
"properties": {
"drafts": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"pending": {
"$ref": "#/properties/drafts"
}
},
"additionalProperties": true
}{
"title": "Campaign replies waiting for the user",
"readOnlyHint": true,
"openWorldHint": false
}create_campaign_draft — Write a campaign draft (not sent)
Writes one draft inside an existing campaign, to one recipient (added to the campaign list if new), from the campaign's sender. Nothing is sent: the draft waits for the user to validate the campaign send in BumbleBox.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"mission_id",
"to",
"subject",
"body"
],
"properties": {
"to": {
"type": "string",
"maxLength": 320,
"minLength": 3
},
"body": {
"type": "string",
"maxLength": 20000,
"minLength": 1,
"description": "Plain-text body."
},
"name": {
"type": "string",
"maxLength": 200,
"description": "Recipient name, for a new prospect."
},
"subject": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"mission_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Campaign id, as returned by list_missions."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"draft"
],
"properties": {
"draft": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": true
}{
"title": "Write a campaign draft (not sent)",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}update_campaign_draft — Edit a campaign draft (not sent)
Changes the subject, body or recipient of a draft that is still a draft. Nothing is sent, and a draft the user already validated cannot be changed.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"mission_id",
"draft_id"
],
"properties": {
"to": {
"type": "string",
"maxLength": 320,
"minLength": 3
},
"body": {
"type": "string",
"maxLength": 20000,
"minLength": 1
},
"subject": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"draft_id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"mission_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Campaign id, as returned by list_missions."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"draft"
],
"properties": {
"draft": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": true
}{
"title": "Edit a campaign draft (not sent)",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1027 ms
- 95th percentile latency
- 1027 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1027 ms · metadata changed · 17 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http bumblebox-mcp https://api.bumblebox.ai/api/mcpCodex
codex mcp add bumblebox-mcp --url https://api.bumblebox.ai/api/mcpCursor
{
"mcpServers": {
"bumblebox-mcp": {
"url": "https://api.bumblebox.ai/api/mcp"
}
}
}Cline
{
"mcpServers": {
"bumblebox-mcp": {
"type": "streamableHttp",
"url": "https://api.bumblebox.ai/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"bumblebox-mcp": {
"type": "http",
"url": "https://api.bumblebox.ai/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http bumblebox-mcp https://api.bumblebox.ai/api/mcpClaude Desktop
{
"mcpServers": {
"bumblebox-mcp": {
"url": "https://api.bumblebox.ai/api/mcp"
}
}
}Windsurf
{
"mcpServers": {
"bumblebox-mcp": {
"serverUrl": "https://api.bumblebox.ai/api/mcp"
}
}
}Let your agent find its tools
Find servers like BumbleBox MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run BumbleBox MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.