Add a forwarding address to a site
add_site_email_forward_address
Adds an address to the forwarding addresses of a site, which every forwarded email goes to once the address is confirmed.
A site can have up to 5 forwarding addresses. Your own account email, when your sign-in confirms it through a verified email or a Google or GitHub sign-in, is confirmed at once, and so is an address at a domain the site already proved it owns: any of its connected custom domains or one of its verified email domains, subdomains included.
Any other address gets an email with a confirmation link straight away and receives nothing until somebody opens that link. Its status is pending until then and verified after, and the link works for 7 days. The tool tells the client to add only an address you gave it.
It is refused for an address at a Modulify site domain, an address at a domain any Modulify site receives mail for, an address already on the list, an address that stopped forwarding from this site through its link, and once the site has 5 addresses. A workspace can try 30 adds an hour across its sites, refused ones included.
Confirmation links are limited to 1 a minute to one address from the same site, 5 a day to one address across every site, 20 a day for one site and 50 a day for one workspace, and a refusal says how long to wait. It needs the Delete projects permission. See Forwarding addresses.
Request
Call it with a POST to https://api.modulify.ai/v1/add_site_email_forward_address, sending the inputs below as a JSON object. The token needs the config:write scope.
It makes changes, so send an Idempotency-Key header whenever you might retry it. A retry with the same key gets the first answer back instead of running again.
curl -X POST https://api.modulify.ai/v1/add_site_email_forward_address \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"projectId":"PROJECT_ID","email":"EMAIL"}'Over MCP, the same method is the add_site_email_forward_address tool.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
projectId |
string | Yes | The site id. |
email |
string | Yes | The email address to forward the site's mail to. |
Response
Every call answers with the JSON envelope of success, message, data, code and version. data holds the result described above, and on a method that returns a total, count carries it. The response headers carry the call's X-Request-Id and what is left of your per-minute budget in X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Errors explains every status code a call can answer with.