List the blocked email addresses of a site
list_site_email_suppressions
Lists the addresses and domains a site is blocked from emailing, 50 to a page, newest first, with why each one is there.
The answer carries items and nextCursor. Pass nextCursor back as cursor for the next page, with the same search, and it is null once there is nothing more.
An address lands on this list on its own when a message to it bounced for good (bounce) or when the person receiving it marked the site's email as spam (complaint), and manual is one somebody blocked by hand, for example with block_site_email_address. Each row carries its _id, the Address, the Reason, whatever detail the mail provider gave in Detail, and when it was added in Created_At. A row whose address has no @, such as example.com, is a whole domain blocked by hand, and it blocks every address at exactly that domain.
While an address sits here every message to it is dropped before it goes out, and a message whose recipients are all on the list is refused outright. That makes it the first thing to read when a particular person stopped getting the site's email. The list is per site, and it is what protects the site from being turned off for bouncing. delete_site_email_suppression takes one entry off it. See Blocked addresses.
Request
Call it with a POST to https://api.modulify.ai/v1/list_site_email_suppressions, sending the inputs below as a JSON object. The token needs the config:read scope.
It only reads and changes nothing, so retrying it is safe.
curl -X POST https://api.modulify.ai/v1/list_site_email_suppressions \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"projectId":"PROJECT_ID"}'Over MCP, the same method is the list_site_email_suppressions tool.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
projectId |
string | Yes | The site id. |
search |
string | No | Keeps only the addresses containing this text. |
cursor |
string | No | The nextCursor from the previous page, sent with the same search. Leave it out for the first page. |
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.