Documentation
Postwind is controlled through two interfaces that do the same things: an HTTP API for your code and MCP tools for your agents. Each operation has one name, operationId in OpenAPI and the tool name in MCP, and one set of rules.
HTTP API
REST JSON under /api/v1. 57 operations on 38 paths: projects, keys, sending domains, lists, subscribers, suppressions, templates, campaigns. Bearer keys with scopes, problem+json errors with stable codes, Idempotency-Key, cursor pagination, per-key rate limits. The reference is rendered from the OpenAPI 3.1 document that the server itself serves at /api/openapi.json.
# set POSTWIND_URL and POSTWIND_KEY first
curl "$POSTWIND_URL/api/v1/whoami" \
-H "Authorization: Bearer $POSTWIND_KEY"
MCP
57 tools over Streamable HTTP at /mcp, on the same listener and with the same keys as the API. One tool per API operation. Irreversible tools need confirm: true and run as a dry run without it. The reference is rendered from the server’s tools/list answer, with every input schema.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "whoami",
"arguments": {}
}
}
Operations
Guides for the operator: one server with Docker Compose or a Kubernetes cluster with the Helm chart, the DNS records for deliverability, the Helm values files. They are in Russian; an English version is pending.
Where to start
- Get a key. On the node,
postwind keys create-adminprints an admin key once. Keys look likepw_adm_…(admin) orpw_prj_…(project) and go inAuthorization: Bearer. - Check it.
GET /api/v1/whoamior thewhoamitool returns the key’s kind, project and scopes.GET /api/v1/serverorget_server_inforeturns the node’s version, enabled subservices and available transports. - Create a project and a project key with the scopes you need:
read,write,send,keys. - Add a sending domain. Get the required DNS records, create them (through Porkbun or by hand), then verify. A campaign sends only from a verified domain.
- Create a list, add subscribers, create a template. Preview the template, send a test email to yourself.
- Create a campaign, preflight it, launch it. Preflight shows the recipient count after deduplication and suppression and every unmet precondition. Launch needs scope
send; in MCP it also needsconfirm: true.
The normative specification lives in the Postwind repository under docs/spec/ and is written in Russian. Everything on these pages is in English and is generated from, or checked against, the code.