# Remail Open-source email sending and receiving infrastructure. No domain caps. ## API - OpenAPI 3.1: https://remail.foo/openapi.json - Reference UI: https://remail.foo/docs - MCP (streamable HTTP): https://remail.foo/mcp - Resend-compatible surface: https://remail.foo/resend — the official resend SDK works with only a base URL and API key change. - Auth: Authorization: Bearer rk_... ## Start here Call account.status first. It reports transport health and whether the SES sandbox is limiting delivery, which is the most common reason a new install appears to send while nothing arrives. Every 4xx response carries a next_actions array of machine-executable remediation steps. Read it rather than inferring a fix from the message. For "why did this not arrive", call diagnose.message — it returns the whole chain: acceptance, suppression, domain verification, signing, transport handoff, provider acceptance, delivery, and bounce detail. ## Mailing lists lists.* manage audiences bound to a verified domain (configurator); contacts.* and broadcasts.* are sending operations (sending_only). broadcasts.send refuses with postal_address_missing until the list has a physical_postal_address. Every broadcast gets a footer with that address and a per-recipient unsubscribe link, plus List-Unsubscribe and List-Unsubscribe-Post headers. Public signup forms POST to a list's signup_url (double opt-in; see docs/mailing-lists.md). With a transport that reports no bounces or complaints (SMTP) broadcasts.send refuses with feedback_unavailable. lists_unavailable (503) means the opt-out registry is still being brought up to date at start-up: retry shortly.