MCP
The Duobox MCP server
Connect ChatGPT, Claude, Cursor or any MCP client to your company email. Your agent reads mail, writes and sends it, and manages the team, with the permissions you choose.
1.0 Access
It signs in with your account, not a key
The agent signs in over OAuth with your Duobox mail account: the same address and password you open your inbox with.
- When you connect it, Duobox shows you what it asks for. Everything starts checked: take off what you don't want.
- If a tool needs a permission you took off, you are asked for it again.
- In your mail, Agents → Connections lists every connected app, since when, and the last time it came in. Cut off access shuts it out right now.
- Manage the company doesn't replace your role: if you don't administer the company, those tools answer no.
It can
- Read your mailSee the emails you receive.mail:read
- Save draftsLeave them ready, without sending.mail:draft
- Send mailSend from your addresses.mail:send
- Manage the companyThe team, the plan and the inboxes.company
For developers
- Transport
- HTTP, POST /v1/mcp
- Authentication
- OAuth with PKCE. Dynamic client registration or Client ID Metadata Documents.
- Metadata
- https://mcp.duobox.io/.well-known/oauth-protected-resource
- Protocol
- The 2026 version, and 2025-11-25 too.
2.0 Connect
Connect it where you already work
The steps for each one, with the text to paste. When it asks you to sign in, use your Duobox mail account.
- 1Open Customize, then Connectors, and add a connector.
- 2Paste the address. Leave sign-in on so it asks for your account.
https://mcp.duobox.io/v1/mcp
- 1Open Plugins and add an MCP server.
- 2Paste the address and choose OAuth.
https://mcp.duobox.io/v1/mcp
- 1Open Settings, then MCP, and add a server. Or paste this into .cursor/mcp.json.
{
"mcpServers": {
"duobox": {
"url": "https://mcp.duobox.io/v1/mcp"
}
}
}- 1Run this in the project folder. It lands in .mcp.json.
claude mcp add --transport http duobox https://mcp.duobox.io/v1/mcp
- 1In the command palette, MCP: Add Server. Or paste this into .vscode/mcp.json.
{
"servers": {
"duobox": {
"type": "http",
"url": "https://mcp.duobox.io/v1/mcp"
}
}
}- 1In Cascade, open Manage MCPs. Or paste this into ~/.codeium/windsurf/mcp_config.json.
{
"mcpServers": {
"duobox": {
"serverUrl": "https://mcp.duobox.io/v1/mcp"
}
}
}- 1Run this. It lands in ~/.gemini/settings.json.
gemini mcp add --transport http duobox https://mcp.duobox.io/v1/mcp
- 1Run this. It lands in ~/.codex/config.toml.
codex mcp add duobox --url https://mcp.duobox.io/v1/mcp
- 1If it asks for an address, paste the server's. If it asks for a file, paste this. If it asks for the type, it's http.
{
"mcpServers": {
"duobox": {
"url": "https://mcp.duobox.io/v1/mcp"
}
}
}The same steps are in your mail, under Settings → MCP.
3.0 Tools
What it can do
35 tools, grouped by task. Each one tells the app whether it only reads, whether it can't be undone and whether it sends something outside your account, and the app uses that to decide when to ask you.
list_my_mailboxesRead onlymail:readThe inboxes your account can open.
list_messagesRead onlymail:readLists an inbox by folder, with search and filters by alias, date and thread owner.
get_messageRead onlymail:readReads a whole email, with its thread, its attachments and, in a shared inbox, who has it.
get_folder_countsRead onlymail:readHow many emails are in Inbox, Drafts and Spam, and how many of the agent's proposals wait for your OK.
download_attachmentRead onlymail:readDownloads an attachment of up to 25 MB, with a link that expires in 10 minutes.
save_draftmail:draftSaves a draft marked as the agent's, without sending it.
send_messageSends outsideCan't be undonemail:sendWrites an email or a reply. Unless told otherwise, it returns a preview and doesn't send.
confirm_messageSends outsideCan't be undonemail:sendSends the preview exactly as it was shown, after you approved it.
mark_messagemail:draftMarks it read or unread, for everyone who shares the inbox.
assign_threadmail:draftGives a thread an owner: the agent, a person in the inbox, or nobody.
add_notemail:draftLeaves a note for the team on the thread. The customer doesn't see it.
list_skillsRead onlymail:readYour skills: instructions that rewrite an email's body before it goes out.
create_skillmail:draftCreates a skill: the tone, the language, the length, what always has to be said.
update_skillCan't be undonemail:draftEdits a skill's instructions, its description, or whether it always applies.
delete_skillCan't be undonemail:draftDeletes a skill. Mail already sent with it doesn't change.
list_aliasesRead onlymail:readThe aliases that deliver into an inbox.
create_aliasmail:draftAdds an alias to the inbox, on its same domain. Up to five.
delete_aliasCan't be undonemail:draftRemoves an alias. The inbox stays.
get_forwardRead onlymail:readAn inbox's forwarding rules, and whether they are active yet.
set_forwardSends outsideCan't be undonemail:sendForwards what arrives: everything, mail from one sender, or mail sent to one address. An outside address stays pending until it confirms.
delete_forwardCan't be undonemail:sendRemoves a forwarding rule.
list_organizationsRead onlymail:readThe companies on your account.
list_organization_mailboxesRead onlycompanyEvery inbox in the company and who opens it.
create_mailboxcompanyCreates an inbox, personal or shared.
retry_mailboxcompanyTries again an inbox that couldn't be created.
report_mailboxCan't be undonecompanyTells support about an inbox that couldn't be created.
delete_mailboxCan't be undonecompanyDeletes an inbox and its aliases.
list_membersRead onlycompanyThe people in the company and their role.
list_invitationsRead onlycompanyThe invitations not accepted yet.
create_invitationSends outsideCan't be undonecompanyInvites someone: they get an email with a link to pick their password.
resend_invitationSends outsideCan't be undonecompanySends an invitation again. The previous link stops working.
delete_invitationCan't be undonecompanyCancels an invitation not accepted yet.
get_meRead onlymail:readYour account: name, email and language.
set_localemail:readThe language of the emails we send you.
get_entitlementsRead onlycompanyHow many people, domains and inboxes the plan allows, and how many are used.
It also publishes four prompts with the step by step of each task —mail, addresses, team and account— and ready examples, like summarizing what's unread or replying to an email.
4.0 Sending
The agent proposes, you send
send_message doesn't send: it leaves the email as the agent's draft and hands the app the preview, exactly as it would go out. confirm_message sends it untouched.
- If you asked it not to check with you, send_message with auto sends it in the same step.
- Each inbox decides whether the agent can send on its own: Send without your OK, under Settings → MCP. On new inboxes it starts off, and the proposal waits for a person to send it.
- What it proposes sits in Drafts with Waiting for your OK. What it did, in Agents → Activity.
The agent signs in with a mail account
The account is born in the hub: you create the company, turn on mail for your domain and create your address. The agent signs in with that address.
Create accountSomething not working? Write to us