Connect Gemini to Postal
Connect Postal to the Gemini CLI (and to Antigravity, which replaces it for those without a paid plan) to look up and send emails from the terminal.
- How you sign in
- Account or key
- Transport
- HTTP
- Recommended access
- Read and send
Before you start
Check these points before opening the Gemini setup. They prevent most connection failures.
- A team with the "MCP server" plan feature (
mcp_access); without it the server responds 403plan_limit_reached. - To send emails, the team needs at least one verified domain.
- If you will use an API key: create the key in the dashboard, under API keys. It starts with
ps_; a send-only key is enough if you will only send. - Each connection acts on a single team. To use another team, connect again and pick the other one.
- Connections are listed under Settings › AI connections in the dashboard, where they can be revoked at any time.
What Gemini requires
Gemini CLI with support for remote MCP servers (httpUrl for Streamable HTTP; url is SSE) or Antigravity (Streamable HTTP only, serverUrl field). A local browser for the OAuth login. Default timeout for Gemini CLI: 10 minutes; for Antigravity: 180 s per call.
Connect
Follow the steps in order. The server address is always https://api.postal.so/mcp. Recommended path: sign in with your account (OAuth). The API key is the alternative. Wherever ps_... appears, use your own API key: the value shown is only an example.
- 1
Gemini CLI: run the first command (it creates the entry in the project's
.gemini/settings.json; to apply to all projects, edit~/.gemini/settings.jsonwith the second snippet). - 2
Inside the Gemini CLI, run
/mcp auth postal. The browser opens the Postal login; choose the team and click Allow. The login needs a local browser (it does not work over SSH without X11 or in a container without a browser). - 3
For an API key, use the third command.
- 4
Antigravity (Google): edit
~/.gemini/config/mcp_config.jsonwith the fourth snippet (the field isserverUrl; url andhttpUrldo not work there). Under Agent settings > Customizations, click Authenticate, finish the login and paste the authorization code into the panel.
Gemini CLI (OAuth)
gemini mcp add --transport http postal https://api.postal.so/mcpGemini CLI (file)
{
"mcpServers": {
"postal": {
"httpUrl": "https://api.postal.so/mcp"
}
}
}Gemini CLI (API key)
gemini mcp add --transport http --header "Authorization: Bearer ps_..." postal https://api.postal.so/mcpAntigravity
{
"mcpServers": {
"postal": {
"serverUrl": "https://api.postal.so/mcp"
}
}
}Access the tool needs
Postal splits access into three levels, explained in the scopes table. For Gemini:
mcp:readView emails, domains, contacts, segments, topics, templates, broadcasts, automations, forms, inbox conversations, metrics and usage.
mcp:sendSend and schedule emails from verified domains and record events for automations.
mcp:fullEverything above, plus creating, changing and deleting contacts and templates, creating and sending broadcasts (send_broadcast requires confirm: true), canceling scheduled emails and working in inboxes (organize, reply, create drafts).
To look up deliveries and send test emails, mcp:read and mcp:send are enough. The Gemini CLI lets you pin scopes in the oauth block of the configuration file (see its documentation); without that, dynamic registration requests the three announced scopes.
How to confirm it worked
The simplest proof is to ask for something read-only inside Gemini itself. The connection also shows up under Settings › AI connections in the Postal dashboard, with the app, the team and the last use.
Illustrative example
For those who want the technical proof
npx @modelcontextprotocol/inspector --cli https://api.postal.so/mcp \
--transport http \
--header "Authorization: Bearer ps_..." \
--method tools/listThe Inspector proves that the Postal server responds. It does not test Gemini itself. The full walkthrough is in Validate the connection.
If something goes wrong
Go through the list in order. Then read what we know (and what we don't know) about Gemini.
Check
- The address is exactly
https://api.postal.so/mcp, with/mcpat the end. - The connection type is HTTP (Streamable HTTP). Postal does not offer SSE: if the tool gives you the choice, use HTTP.
- The team has the "MCP server" feature on its plan. Without it, the server responds 403
plan_limit_reached. - To send emails, the team has at least one verified domain.
- Each connection acts on a single team. To use another one, connect again and pick the other.
- 429 response (
rate_limit_exceeded): the plan's requests-per-second limit was reached. Wait a moment and try again. - If the tool complains about the response size, ask for smaller lists (at most 100 items per call; the default is 20).
- To start over from scratch, revoke the connection under Settings › AI connections and connect again.
What was tested and what was not
We followed the app's specification and documentation, but have not yet tested with the real app. Below is the full note on what was and was not verified.
Test details
Verified by test: the redirect http://localhost:PORTA/oauth/callback (dynamic registration with the chosen port) and https://antigravity.google/oauth-callback are accepted, Postal returns the iss parameter (RFC 9207) that the Gemini CLI validates, and the API key in a header works with the SDK. The Gemini CLI documentation does not mention discovery through protected resource metadata (RFC 9728); Postal also serves the authorization metadata at the standard path, but this was not confirmed with the real Gemini. The Gemini CLI documentation warns that it was replaced by the Antigravity CLI on 06/18/2026 for those on the free tier or Google One. Not tested with the real Gemini CLI or Antigravity.
Frequently asked questions
Do I need an API key to connect Gemini?
Not required. Gemini can sign in with your Postal account (OAuth) or with an API key. Recommended path: sign in with your account (OAuth). The API key is the alternative. The send-only key (sending_access) exposes only send_email and track_event.
Can I limit what Gemini does on my account?
To look up deliveries and send test emails, mcp:read and mcp:send are enough. The Gemini CLI lets you pin scopes in the oauth block of the configuration file (see its documentation); without that, dynamic registration requests the three announced scopes. You can revoke the connection at any time under Settings › AI connections.
Keep going
Other tools
Each tool has its own walkthrough. See also the full list under AI.
v0
Connect Postal to v0 so it can look up your domains and templates and send test emails while it generates the app.
See how to connectBolt
Add Postal as a custom Bolt connector to look up and send emails while you build your project.
See how to connectLovable
Connect Postal to Lovable as a custom MCP server to use your email data in the project chat.
See how to connectReady to use Postal in Gemini?
Create your account and connect. If you need help, talk to us through the contact form.