Do I pick a tenant in the portal?

No. There is no tenant picker. Set Mursil:MultiTenancy (environment Mursil__MultiTenancy, or MURSIL_MULTI_TENANCY in Docker Compose). The default is false. While it is false, callers omit the tenant id and the deployment keeps a single internal tenant. Set it to true only when one deployment serves many customer organizations. The header chip labeled Tenant scope is a status label.

The admin portal will not start.

Identity:Authority and Identity:ClientSecret must be set. An empty authority does not open the portal. On a local run with MURSIL_DEV_ISSUER=true, compose points both Server and Admin at https://dev-issuer:8443. The browser needs 127.0.0.1 dev-issuer in the hosts file. A published deployment sets MURSIL_DEV_ISSUER=false and Identity:Authority to your own OpenID Connect issuer.

Can I use the development issuer in production?

No. The development issuer exists so a local stack can sign in and exercise the six roles. A published deployment uses your issuer. Do not copy local placeholder secrets, local certificate material, or the development sign-in form into production configuration.

Where do captured messages go?

Mailpit, at http://localhost:18025/ for the local compose stack. Server submits them over SMTP. Mailpit is a stand-in. It does not place mail in a real inbox. SendGrid is optional and stays unused until you add a connection and a key reference.

The Kind list has more than SMTP and SendGrid.

Those kinds are already modeled: TestSink, AwsSes, AzureCommunicationServices, MicrosoftGraph, Postmark, and Mailgun, plus Smtp and SendGrid. A kind still needs a secret reference the host can resolve. The path this guide documents is SMTP, with Mailpit locally, and SendGrid when you opt in.

Why was my send accepted but not in Mailpit?

202 Accepted stores the request. Dispatch is separate. Check that a version is published for the locale, sandbox is off, the default provider is the SMTP connection, the recipient is not suppressed, and Mailpit is running. Then read GET /api/v1/mursil/messages/status.

Which idempotency key should I use?

Any stable string for that logical send, such as an order id plus the template key. Repeating the same key returns the original request instead of sending again. Use a new key when the product event is genuinely new.

Does the Developers page issue API keys?

No. The menu item is there, and the page does not store credentials yet. Application client ids and secrets are configuration on the host and on Mursil:Integration.

Where is the user store?

There is none. Your OpenID Connect issuer authenticates. Mursil reads the role claim. The six values are SystemAdmin, TenantOwner, TenantAdmin, TemplateEditor, Operator, and Viewer.

Can I send HTML instead of a template key?

The public send route is template-first. POST /api/v1/mursil/messages/email requires templateKey and model. Hosts that use Mursil.Integration can set RawEmailFallbackTemplateKey for the integration queue. That still renders a template. It does not skip the catalog.