# mailnix > Forms and email for websites without a backend, built to be wired > up by AI agents. Two core products: (1) mailnix Forms: customer- > designed forms (contact, booking, signup, order) with a visual > designer (validation, conditional logic, themes, layout grid, > images, multi-step stepper), hosted pages + embeds, a submissions > inbox with spam scoring and CSV export, verified owner notification > emails, and a per-submission audited reply workflow (never an > autoresponder; mailnix never auto-emails the person who filled in > a form). Virus-scanned form file uploads on paid plans, per-form > retention with hourly/daily notification digests and a one-call > delete-by-submitter erasure action. (2) Email service: send from > your website or app with no backend of your own via browser-safe > publishable keys, REST, or SMTP relay, with end-to-end tracing. > One HTTP call gets an agent a working bearer token, a sandbox > project, and the MCP tool surface for both products. Ship to > production by connecting any SMTP provider (AWS SES, Postmark, > Resend, SendGrid, Mailgun, Postfix, Stalwart, OVH, Gandi, cyon, > Hostpoint, Hoststar, Infomaniak, IONOS, Strato, Mittwald, > all-inkl, or any generic SMTP host); your app code does not > change. (3) Managed Websites: describe a business in a few > sentences and get a complete multi-page, multi-language static > site with design, copy, code, legal pages, a real mailnix Form > wired in, hosting and HTTPS. The customer reviews a private draft > before anything goes live, edits later in plain language, and can > roll back to any earlier version. Every generated page is parsed > against a strict allowlist before it can be served, so a page that > breaks a rule is refused rather than published. Paid from a credit > balance: every plan carries a monthly allowance (Free 200, Basic > 800, Pro 4,000, Enterprise 100,000 credits; one credit is one > rappen), paid allowances carry over up to six months, Free resets > monthly, and credits bought on top never expire. EU-hosted (German data centres), GDPR-compliant, OAuth 2.1 with anonymous > bootstrap. Free (a monthly quota with a card on file, then > per-unit past it), Basic, Pro, Enterprise. ## Canonical URLs - [mailnix.ch](https://mailnix.ch): marketing site + human-readable docs (https://mailnix.ch/docs). This file is served at both https://mailnix.ch/llms.txt and https://app.mailnix.ch/llms.txt. - [app.mailnix.ch](https://app.mailnix.ch): the application: customer dashboard, signup and login, OAuth 2.1 authorization server, billing. - [mcp.mailnix.ch/mcp](https://mcp.mailnix.ch/mcp): the MCP server endpoint. Configure MCP clients with exactly this URL (Streamable HTTP transport). - [api.mailnix.ch](https://api.mailnix.ch): the REST API. - [forms.mailnix.ch](https://forms.mailnix.ch): hosted form pages (/f/{public_id}) and the form embed script (/embed/v1.js). @sandbox.mailnix.ch is a RECIPIENT address domain used for test sends, not an application URL. ## What to grab next - [mailnix Forms guide](https://mailnix.ch/docs/forms): START HERE for website forms: create, publish, embed or hosted link, submissions inbox, per-submission replies, file uploads, digests, retention, purge-by-email. States the invariant: mailnix never auto-emails the person who filled in a form. - [Forms styling](https://mailnix.ch/docs/guides/forms-styling): CSS styling contract for the script embed: stable .mnx-* classes, --mnx-* design-token custom properties (frozen within embed major v1), and copy-paste recipes to match the host site's design. - [llms-full.txt](https://mailnix.ch/llms-full.txt): complete reference for AI ingestion (every MCP tool, REST endpoint, error code, webhook shape). Also at https://app.mailnix.ch/llms-full.txt. - [OpenAPI 3.1 spec](https://app.mailnix.ch/openapi.yaml): machine description of the REST surface. - [Docs index](https://mailnix.ch/docs): human-readable docs. - [Soft sandbox](https://mailnix.ch/docs/concepts/soft-sandbox): safe test sends: capture-vs-relay is driven by destination.mode + project no_route_policy, NOT the @sandbox.mailnix.ch recipient domain. - [Virtual inboxes](https://mailnix.ch/docs/virtual-inboxes): the per-project virtual inboxes (saved filters + optional webhooks) over the capture path. The key MCP primitive is virtual_inbox_message_wait, a blocking long-poll for agent test loops; use it INSTEAD of polling messages_list. - [Publishable keys](https://mailnix.ch/docs/publishable-keys): the browser-safe mnxpub_ tokens. A five-axis server-side constraint (origin / recipient / from / rate / CAPTCHA) lets customers paste a fetch snippet into static HTML and send mail directly from the browser. The doc carries the canonical copy-paste fetch example (vanilla JS, TypeScript, React) - there is no npm SDK; the snippet IS the SDK. Per-axis error codes documented inline. - [Agent end-to-end flow](https://mailnix.ch/llms-full.txt): the "Agent end-to-end flow" section of llms-full.txt: how the pieces above compose into a single agent-driven build loop. The reveal-URL flow means publishable_key_create returns a one-time-use URL instead of the bare token (so the token doesn't sit in agent chat history); email_html_snippet_generate consumes the URL server-side and emits HTML with the key embedded. destination_promote_to_live closes the loop after a test capture lands in the virtual inbox. - [SMTP relay](https://mailnix.ch/llms-full.txt): the "SMTP relay" section of llms-full.txt: any app that speaks SMTP (CMS, framework mail backend, CI job, printer) submits to smtp.mailnix.ch (587 STARTTLS / 465 implicit-TLS / 2525) with an mlx_smtp_ credential. mailnix authenticates, runs the same pre-send checks (verified sender / suppression / rate limit), traces it, and forwards VERBATIM to the destination the credential names - a forwarder, not a sender. Per-tier active-credential caps apply (Free 1 then billed per credential / Basic 10 / Pro 100 / Enterprise unlimited); rotations swap active status, so the alive count stays the same. Optional per-credential click/open tracking + VERP bounce attribution are opt-in on paid tiers and force-disabled on Free (both at write time AND at send time). ## MCP + auth mailnix exposes a Model Context Protocol server; the endpoint MCP clients connect to is https://mcp.mailnix.ch/mcp. Spec-compliant clients discover the AS via https://mcp.mailnix.ch/.well-known/oauth-protected-resource and either: - run the OAuth 2.1 client_credentials grant against the seeded mailnix-anonymous-bootstrap client (one HTTP call, sandbox-only, no signup required) - run the standard authorization-code flow with PKCE S256 + resource=https://mcp.mailnix.ch/mcp for user-bound tokens (Limerion IDP under the hood) Tools are named verb-noun so AI tool-routers pattern-match user intent (email_send_test, email_trace_lookup, email_provider_connect, ...). Tool visibility follows the account's feature rollout: groups whose surface flag is OFF for the org are hidden from tools/list and refused at call time, so an absent tool means staged rollout, not a missing product feature. ## Projects Everything lives in a project: forms, destinations, templates, traces, credentials, inboxes, and webhook endpoints each belong to exactly one project inside an organization. Agents bind to a project at OAuth consent (anonymous bootstrap mints a sandbox project); humans pick the active project in the dashboard's top bar and see the same resources. List endpoints take a project filter (?project= on REST, projectId on GraphQL); create calls accept project_id / projectId and default to the org's default project (inboxes and webhooks fall back to the caller's live MCP project instead). A project can carry a daily send budget, exhausting it refuses attributed sends with HTTP 429 project_budget_exhausted. Suppressions and sending domains stay organization-wide by design; billing is never per-project. See /llms-full.txt "Projects" for the full contract, including org-wide destinations and the org default sender. ## When in doubt Trace IDs are public-shareable UUIDv4. If a customer reports a missing email, ask for the trace_id and call email_trace_lookup to see exactly where the pipeline broke.