gmail_archive_ messageArchive a message: removes it from the inbox but keeps it in All Mail, searchable and undeleted.
Search threads, draft and send replies, relabel and archive messages and threads, and read filters, labels and send-as aliases — the agent works the one mailbox you authorized with.
PopMCPGmail
Every message, thread, draft, label, filter and settings operation the connection exposes, plus the mailbox events an agent can watch.
gmail_archive_ messageArchive a message: removes it from the inbox but keeps it in All Mail, searchable and undeleted.
gmail_batch_ get_ messagesRead MANY messages in ONE request.
gmail_forwardForward an email to someone else.
gmail_get_ messageGets the specified message.
gmail_mark_ as_ readMark one message as read (removes the UNREAD label).
gmail_mark_ as_ unreadMark one message as unread (adds the UNREAD label).
gmail_mark_ message_ spamReport a message as spam: adds SPAM and removes INBOX.
gmail_modify_ message_ labelsModifies the labels and the Classification Label values on the specified message.
gmail_move_ to_ inboxUn-archive a message by putting the INBOX label back on it.
gmail_replyReply to an email, keeping it in the same conversation.
gmail_search_ messagesLists the messages in the user's mailbox.
gmail_send_ messageSends the specified message to the recipients in the `To`, `Cc`, and `Bcc` headers.
gmail_star_ messageStar a message (adds the STARRED label).
gmail_trash_ messageMoves the specified message to the trash.
gmail_unmark_ message_ spamRescue a message from the spam folder: removes SPAM and puts INBOX back.
gmail_unstar_ messageRemove the star from a message (removes the STARRED label).
gmail_untrash_ messageRemoves the specified message from the trash.
gmail_archive_ threadArchive a whole conversation: removes INBOX from every message in it, keeping them in All Mail.
gmail_get_ threadGets the specified thread.
gmail_list_ recent_ threadsWhat is in the inbox right now, with no arguments at all.
gmail_mark_ thread_ as_ readMark an entire conversation as read (removes UNREAD from every message in it).
gmail_modify_ thread_ labelsModifies the labels applied to the thread.
gmail_search_ threadsLists the threads in the user's mailbox.
gmail_trash_ threadMoves the specified thread to the trash.
gmail_get_ vacation_ responderGets vacation responder settings.
gmail_update_ vacation_ responderUpdates vacation responder settings.
gmail_list_ send_ as_ aliasesLists the send-as aliases for the specified account.
gmail_create_ draftCreates a draft with the `DRAFT` label.
gmail_create_ labelCreates a label.
gmail_delete_ draftImmediately and permanently deletes the specified draft.
gmail_delete_ labelImmediately and permanently deletes the specified label and removes it from any messages and threads that it's applied to.
gmail_get_ draftGets the specified draft.
gmail_list_ draftsLists the drafts in the user's mailbox.
gmail_list_ labelsLists all labels in the user's mailbox.
gmail_send_ draftSends the specified, existing draft to the recipients in the `To`, `Cc`, and `Bcc` headers.
gmail_update_ draftReplaces a draft's content.
gmail_update_ labelUpdates the specified label.
gmail_create_ filterCreates a filter.
gmail_list_ filtersLists the message filters of a Gmail user.
gmail_get_ profileGets the current user's Gmail profile.
gmail_get_ attachmentGets the specified message attachment.
gmail_list_ historyLists the history of all changes to the given mailbox.
gmail_batch_ delete_ messages_ permanentlyDeletes many messages by message ID.
gmail_batch_ modify_ message_ labelsModifies the labels and the Classification Label values on the specified messages.
gmail_delete_ message_ permanentlyImmediately and permanently deletes the specified message.
gmail_import_ messageImports a message into only this user's mailbox, with standard email delivery scanning and classification similar to receiving via SMTP.
gmail_insert_ messageDirectly inserts a message into only this user's mailbox similar to `IMAP APPEND`, bypassing most scanning and classification.
gmail_delete_ thread_ permanentlyImmediately and permanently deletes the specified thread.
gmail_mark_ thread_ as_ unreadMark an entire conversation as unread (adds UNREAD to it).
gmail_mark_ thread_ spamReport a whole conversation as spam: adds SPAM and removes INBOX.
gmail_unmark_ thread_ spamRescue a whole conversation from spam: removes SPAM and puts INBOX back.
gmail_untrash_ threadRemoves the specified thread from the trash.
gmail_settings_ get_ auto_ forwardingGets the auto-forwarding setting for the specified account.
gmail_settings_ get_ imapGets IMAP settings.
gmail_settings_ get_ languageGets language settings.
gmail_settings_ get_ popGets POP settings.
gmail_settings_ update_ auto_ forwardingUpdates the auto-forwarding setting for the specified account.
gmail_settings_ update_ imapUpdates IMAP settings.
gmail_settings_ update_ languageUpdates language settings.
gmail_settings_ update_ popUpdates POP settings.
gmail_get_ send_ as_ aliasGets the specified send-as alias.
gmail_settings_ send_ as_ createCreates a custom "from" send-as alias.
gmail_settings_ send_ as_ deleteDeletes the specified send-as alias.
gmail_settings_ send_ as_ patchPatch the specified send-as alias.
gmail_settings_ send_ as_ updateUpdates a send-as alias.
gmail_settings_ send_ as_ verifySends a verification email to the specified send-as alias address.
gmail_get_ labelGets the specified label.
gmail_patch_ labelPatch the specified label.
gmail_settings_ cse_ keypairs_ createCreates and uploads a client-side encryption S/MIME public key certificate chain and private key metadata for the authenticated user.
gmail_settings_ cse_ keypairs_ disableTurns off a client-side encryption key pair.
gmail_settings_ cse_ keypairs_ enableTurns on a client-side encryption key pair that was turned off.
gmail_settings_ cse_ keypairs_ getRetrieves an existing client-side encryption key pair.
gmail_settings_ cse_ keypairs_ listLists client-side encryption key pairs for an authenticated user.
gmail_settings_ cse_ keypairs_ obliterateDeletes a client-side encryption key pair permanently and immediately.
gmail_settings_ cse_ identities_ createCreates and configures a client-side encryption identity that's authorized to send mail from the user account.
gmail_settings_ cse_ identities_ deleteDeletes a client-side encryption identity.
gmail_settings_ cse_ identities_ getRetrieves a client-side encryption identity configuration.
gmail_settings_ cse_ identities_ listLists the client-side encrypted identities for an authenticated user.
gmail_settings_ cse_ identities_ patchAssociates a different key pair with an existing client-side encryption identity.
gmail_settings_ send_ as_ smime_ info_ deleteDeletes the specified S/MIME config for the specified send-as alias.
gmail_settings_ send_ as_ smime_ info_ getGets the specified S/MIME config for the specified send-as alias.
gmail_settings_ send_ as_ smime_ info_ insertInsert (upload) the given S/MIME config for the specified send-as alias.
gmail_settings_ send_ as_ smime_ info_ listLists S/MIME configs for the specified send-as alias.
gmail_settings_ send_ as_ smime_ info_ set_ defaultSets the default S/MIME config for the specified send-as alias.
gmail_delete_ filterImmediately and permanently deletes the specified filter.
gmail_get_ filterGets a filter.
gmail_list_ delegatesLists the delegates for the specified account.
gmail_list_ forwarding_ addressesLists the forwarding addresses for the specified account.
gmail_settings_ delegates_ createAdds a delegate with its verification status set directly to `accepted`, without sending any verification email.
gmail_settings_ delegates_ deleteRemoves the specified delegate (which can be of any verification status), and revokes any verification that may have been required for using it.
gmail_settings_ delegates_ getGets the specified delegate.
gmail_settings_ forwarding_ addresses_ createCreates a forwarding address.
gmail_settings_ forwarding_ addresses_ deleteDeletes the specified forwarding address and revokes any verification that may have been required.
gmail_settings_ forwarding_ addresses_ getGets the specified forwarding address.
gmail_stop_ mailbox_ watchTurn off push notification delivery for the given user mailbox.
gmail_watch_ mailboxSet up or update a push notification watch on the given user mailbox.
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Gmail side.
Enable the Gmail API in your Google Cloud project, paste the OAuth Client ID and OAuth Client Secret, then authorize once — ticking every consent box. The connection reaches only the account you sign in with.
1234567890-abc.apps.googleusercontent.com••••••••••••3f7aRead-only keeps the agent to searching and summarizing. Full access with approval on writes holds sending, forwarding, trashing and permanent deletes for review. The long tail stays searchable, or load the full catalog.
Drop the PopMCP URL into Claude, ChatGPT, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Gmail credential never leaves the server.
app.popmcp.com/mcp/…Ask for something harmless before you turn writes on. Once it comes back clean, widen the tool set or switch the connection to full access.
Which unread threads from this week still have no reply from me
gmail_search_threadsok
Then just ask for the work
“Which unread threads from this week still have no reply from me”
“Archive every Jira notification older than a week and mark it read”
“Draft a reply to Priya's contract email and leave it in drafts”
“Do my filters and labels still match the newsletters hitting my inbox”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Settings → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Gmail behind an AI client.
Yes. Enable the Gmail API in your own Google Cloud project, then paste the OAuth Client ID and OAuth Client Secret into the connect form and authorize once. There is no API key or app password to generate afterwards — the authorization itself is what grants access.
Look at the Audience setting on your Google Cloud project. If it is set to External and the app is still in Testing, Google expires the authorization after 7 days regardless of how the connection is used. Publish the app first, then authorize again.
Exactly the account you sign in with during the authorize step. There is no mailbox ID to look up or switch between afterwards, so the way to scope access is to authorize with the account you actually want the agent to have — a shared ops inbox rather than a founder's personal one, for example.
Google shows one checkbox per permission, and anything you leave off does not fail at connect time — it fails later, mid-task, when a tool needs that scope. Tick every box. If you already connected with some missing, run the authorization again and accept all of them.
Ordinary deletion is reversible: trash_message and trash_thread move things to the trash, and untrash_message puts a message back. Two calls are not reversible — delete_draft and delete_label remove a draft or a label immediately and permanently, and deleting a label also strips it from every message and thread it was applied to. Those are the ones worth holding behind write approval.
Both. list_labels, create_label, update_label and delete_label cover a label from creation to deletion — and delete_label is permanent, stripping the label off every message and thread it was applied to. For rules, create_filter adds a filter and list_filters reads the ones already set, which is enough for an agent to check whether your filters still match what is actually landing in the inbox.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server — Claude Desktop, Claude Web, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Loading 96 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 42-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. You can switch a connection to the full catalog at any time.
A tool is something your AI calls — there are 96 here. A trigger is something PopMCP watches for you: 17 Gmail events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Gmail.
Launch a hosted MCP endpoint for Gmail, keep tool access under control, and start testing real workflow prompts right away.