Connect Lovable to Postal
Connect Postal to Lovable as a custom MCP server to use your email data in the project chat.
- How you sign in
- Account or key
- Transport
- Not specified
- Recommended access
- Read and send
Before you start
Check these points before opening the Lovable 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 Lovable requires
Remote server with a URL reachable from the internet (or from Lovable's static IPs, on the Enterprise plan). Custom MCP servers are available on all plans; on Business and Enterprise, an admin can turn them off for the workspace. Each person connects with their own credentials.
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
Open Lovable's Connectors page, click "Add custom" and choose "MCP server" (if it is grayed out, an admin has turned off custom MCP servers).
- 2
Enter the server name and the URL
https://api.postal.so/mcp. Under Connection, keep "Direct connection". - 3
Keep OAuth authentication (the default) and click "Add & authorize"; complete the Postal sign-in (choose the team and click Allow). Alternative: Bearer token / API key, with a Postal API key (
ps_...), then click "Add server". - 4
Test by asking for something the server can answer, such as listing your Postal domains.
Server URL
https://api.postal.so/mcpAccess the tool needs
Postal splits access into three levels, explained in the scopes table. For Lovable:
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.
Lovable connections are personal and only work in the chat (not in the published app). Read-only tools (the mcp:read ones) run without asking for approval; the others show an approval card. mcp:read + mcp:send cover looking things up and sending a test.
How to confirm it worked
The simplest proof is to ask for something read-only inside Lovable itself. The connection also appears 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 Lovable 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) about Lovable.
Check
- The address is exactly
https://api.postal.so/mcp, with/mcpat the end. - Lovable's documentation does not state the transport. If it only speaks the old transport (SSE), Postal won't connect, and we could not confirm this.
- 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
Lovable's documentation mentions neither the transport, nor the OAuth redirect URLs, nor whether it does dynamic registration; a third-party report (a developer forum) says Lovable uses dynamic registration with a redirect to lovable.dev/oauth/callback, an HTTPS URI that Postal accepts. The Bearer API key path was verified with the SDK. Postal annotates read tools with readOnlyHint; Lovable's documentation says read-only tools run without approval, without explaining how it identifies them. Not tested with the real Lovable.
Frequently asked questions
Do I need an API key to connect Lovable?
It is not required. Lovable 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 Lovable does in my account?
Lovable connections are personal and only work in the chat (not in the published app). Read-only tools (the mcp:read ones) run without asking for approval; the others show an approval card. mcp:read + mcp:send cover looking things up and sending a test. 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.
Replit
Add Postal as an MCP server in Replit Agent and use your domains, templates and sends in the project.
See how to connectChatGPT
Add Postal as a custom MCP server in ChatGPT and chat with your email data.
See how to connectWindsurf
Connect Postal to Windsurf's Cascade (now in the Devin Desktop documentation) with a block in mcp_config.json.
See how to connectReady to use Postal in Lovable?
Create your account and connect. If you need help, talk to us through the contact form.