CLI and MCP server
The API has always been the foundation. It now has two siblings.
The CLI puts everything you could do by clicking into a shell script, a runbook, or a
CI job: outsend trace prints a message’s full lifecycle with the provider’s own response
on every event, outsend events tail follows the log live, and outsend doctor checks the
things that actually break sending — DNS propagation, duplicated SPF records, key scope,
reputation state, webhook health. Every command takes --json.
The MCP server gives agents the same surface, with one rule enforced throughout: every
tool returns the evidence behind its answer, and the uncertainty it could not resolve.
Reading and diagnosing are unbounded. Changing things is not — propose_remediation
produces a plan a human reads, and apply_remediation needs that human to approve it, with
the approval recorded against the plan id.
outsend explain and explain_failures are the same code: give them a set of failures and
they return provider concentration, the likely signal, the evidence supporting it, and what
they could not determine.
Docs: CLI · MCP server