catalog / protocols

SMTP Submission

Handing an email to a server so that it arrives rather than lands in spam.

16 capabilities 1 sections reference specification

Build against it

# give your agent the catalog — no account, no install
claude mcp add provespec -- npx -y provespec-mcp

# then, from any agent session
spec_get(slug: "smtp-submission")                → the capability tree
spec_checklist(slug: "smtp-submission")          → the questions to answer
spec_grade(slug: "smtp-submission", grades: [...])  → parity % + the gap list

# or just fetch it
curl https://provespec.com/catalog/smtp-submission/spec.json

Grade every capability below as yes · partial · no · na, with a file reference as evidence. Whatever you leave ungraded counts as missing — the gap list is the work queue.

Or just paste this to your agent

Use the ProveSpec MCP server. Fetch the "smtp-submission" spec with
spec_get, then walk spec_checklist and grade this repository against it —
one verdict per capability, each with a file reference as the note.
Call spec_grade with the results and give me the gap list as the plan.

If the server is not registered, add it first:
  claude mcp add provespec -- npx -y provespec-mcp

The specification

AI 16

Connection
  • Submission on port 587 with STARTTLS or implicit TLS on 465
  • TLS certificate verified; plaintext refused
Auth
  • SMTP AUTH with a documented mechanism PLAIN over TLS, OAUTHBEARER
  • Credentials never logged
Envelope
  • MAIL FROM and RCPT TO distinct from header addresses the envelope-vs-header distinction
  • Multiple recipients with per-recipient status
Message
  • Correct MIME structure for text, HTML and attachments
  • Header encoding for non-ASCII RFC 2047
  • Message-ID, Date and required headers present
Deliverability
  • SPF record authorises the sending host
  • DKIM signature over stable headers and body
  • DMARC alignment between From and the authenticated domain
  • List-Unsubscribe for bulk mail one-click variant
Errors
  • 4xx retried with backoff, 5xx not retried the distinction that matters
  • Bounces parsed and the address suppressed
  • Rate and concurrency limits respected per destination
Download spec.json All 85 specs