Modulify

Send a test email from a site

send_test_site_email

Sends one free test email from a site to the email address of the connected account, and to no other address.

POST /v1/send_test_site_emailScopeconfig:writeMakes changes

That address is the only one it can reach: it takes no recipient and cannot be pointed anywhere else. It proves that sending works and shows how the sender name and the sending address look once they land in an inbox. The tool tells the client to run it only when you ask for a test, never to check its own work, and never twice for one request.

It goes out through exactly the same path as the site's own mail and shows up in list_site_email_sends marked as a test, but a test is free. It uses none of the site's monthly sends, never buys an extra block, does not count toward the per minute limit, still goes out on a free plan whose 50 included sends are used up, and is left out of get_site_email_stats.

The one limit is 10 seconds between two tests from the same site. A test asked for sooner is refused with 429, a Retry-After header and the wait in the message, for example Wait 7 seconds before sending another test email! It is also refused while sending is off or not available, while the site's own EMAIL_URL or EMAIL_PRIVATE_KEY secret keeps its email off, and when the account's own address, or its domain, is on the site's blocked list.

The answer has the same shape as the one send_site_email gives: the id and the accepted and suppressed recipients, or code and the reason it was refused, and a refusal for the pause between tests or a busy mail provider carries Retry-After. See Send a test email.

Request

Call it with a POST to https://api.modulify.ai/v1/send_test_site_email, 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/send_test_site_email \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"projectId":"PROJECT_ID"}'

Over MCP, the same method is the send_test_site_email tool.

Inputs

Input Type Required Description
projectId string Yes The site id.

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.