Agentic Gmail triage: classify, summarize, extract tasks, draft replies. Never sends.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Published on PyPI and listed on the
Official MCP Registry (io.github.tarunlnmiit/inbox-to-action),
Glama (deployable release, Quality A),
and Smithery (MCPB bundle).
Registry manifests (server.json, glama.json) ship in the repo.
One command. Your inbox triaged, summarized, drafted, and turned into tasks β in a single agentic pass.
Try it with zero setup: inbox-to-action run --mock (bundled sample inbox).
π Full documentation β docs/ β install Β· providers Β· Gmail OAuth Β· multi-account Β· integrations Β· MCP & Skill Β· config Β· troubleshooting Β· testing checklist. Quick version: SETUP.md.
Most people process their inbox with four separate tools: an email client to read, a task manager to capture to-dos, a calendar to block time, and (increasingly) an AI summarizer to make sense of long threads. Every message gets handled four times.
inbox-to-action collapses all four into one agentic pass. Run one command and get
a unified triage report, drafted replies saved to Gmail, and extracted tasks β without
ever leaving the terminal, and without ever sending an email automatically.
This tool cannot send email. It requests only the Gmail readonly + compose
scopes; there is no send scope and no send API call anywhere in the codebase
(enforced by a test). Replies are saved as Gmail drafts for you to review and send.
Email bodies flow into the LLM prompt, so a hostile email could try to steer its own classification or a drafted reply (prompt injection). Because every draft is saved for human review and nothing is ever sent automatically, the worst case is a draft you choose not to send. See SECURITY.md.
inbox-to-action reads your email. Where your email content goes for classification
depends on the LLM provider you pick β and the default (openrouter) is a cloud
provider, so an out-of-the-box run sends your subjects + bodies to a third party.
PROVIDER= | Email content goes to | Key |
|---|---|---|
ollama | Nowhere β fully local π | none |
claude / host | Your existing Claude Code / Anthropic session (keyless) | none |
openrouter (default) Β· openai Β· nim Β· anthropic | Third-party cloud βοΈ | API key |
Want privacy? Use ollama (local) or claude (keyless) so nothing is transmitted
to a third party. --telegram / --todoist also push subjects/tasks off-box (opt-in).
Full breakdown β PRIVACY.md.
Note:
triage-report.mdandtasks.mdare written to your working directory and contain private email content. If you run inside a git repo, add them to.gitignore.
action_needed Β· fyi Β· newsletter Β· noise.tasks.md (optional Todoist via --todoist).action_needed mail β saved as Gmail drafts.Final output: a single triage-report.md with a section per category, drafted-reply
previews, a tasks summary, and a calendar list.
The model's own classification of each email drives which tools fire next β the pipeline is not hardcoded. The same tool functions back the CLI agent and the MCP server.
This installs an inbox-to-action console command (and the python -m inbox_to_action.mcp_server entry point used by Claude Code / Glama).
Pick whichever keyless/free path you like β all run the full pipeline at no cost:
Option A β claude CLI (keyless, fastest; uses your Claude Code login):
Option B β Ollama (truly keyless, fully local):
Option C β OpenRouter free model (free signup key):
Option D β inside Claude Code (keyless, Claude Code is the LLM): see below.
--mock uses the bundled sample inbox so you can see a full report with zero Gmail
setup. Drop --mock once you've authorized Gmail. Free OpenRouter models are often
rate-limited; the client auto-rotates a fallback list and retries with backoff.
--no-drafts β classify, summarize, extract tasks, write the report, but create
no Gmail drafts. Recommended for a first run.--max N β cap emails per account (default 25) to bound cost/volume.--telegram)Push a concise summary to your phone after each run β counts, action-needed subjects (with draft-ready status), extracted tasks, and a link to your Gmail Drafts.
Off by default (opt-in flag). A send failure never breaks the run. Privacy: this sends email subjects + extracted tasks to Telegram's servers (into your own chat). It's notification only β it never sends email.
Declare accounts in config.json β one merged report, each email tagged with its
account. Personal Gmail and Workspace both use the Gmail path (Workspace may need
your admin to allow the OAuth app).
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/inbox-to-action)<a href="https://allmcps.com/mcp/inbox-to-action"><img src="https://allmcps.com/api/badge/inbox-to-action?style=directory" alt="Inbox To Action on AllMCPs" /></a>