Exact copy only
A campaign is immutable once created. Nothing is generated, rewritten or truncated on the agent's behalf.
root@poststeward:~$ man poststeward
One operation catalogue, reachable over remote MCP or plain HTTP, with the same execution rules and durable receipts on both. Browser WebMCP registers the same scoped operations on a connected workspace.
<POSTSTEWARD_SERVICE_ORIGIN> with an authorised service origin when access is opened.The owner signs in, connects a publishing account, binds a project and issues a scoped token. Store that token in the agent's secret manager. Remote MCP uses a Bearer header; OAuth discovery is not required for this flow.
{
"mcpServers": {
"poststeward": {
"url": "<POSTSTEWARD_SERVICE_ORIGIN>/mcp",
"headers": { "Authorization": "Bearer <agent token>" }
}
}
}POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/<operation>
Authorization: Bearer <agent token>
Content-Type: application/json
{ ...operation input }// Real connected workspace in a supported browser
const tools = await document.modelContext.getTools({ fromOrigins: [] });
const status = tools.find(tool => tool.name === "workspace_status");
// Execute only within the scopes granted to the signed-in actor.A token carries only the scopes you grant, plus an expiry. Recommended for publishing: read, campaign:write, publish, schedule. Grant billing, connections or automation only when those actions are intended.
readcampaign:writepublishscheduleconnectionsautomationbillingResolve destinations explicitly, store the exact approved text, validate, then publish or schedule. Every mutation uses an idempotency key. A publication call returns receipt IDs; the receipt is the authority on the result.
# 1 — resolve explicit destinations
POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/projects_list
{}
# 2 — store exact approved text
POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/campaign_create
{ "project":"product",
"text":{"product_x":"The exact approved update."},
"idempotencyKey":"campaign-2026-001" }
# 3 — dry-run routing and provider text rules
POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/campaign_validate
{ "campaign":"<campaign id>" }
# 4 — publish once
POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/publish_now
{ "campaign":"<campaign id>",
"idempotencyKey":"publish-2026-001" }POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/schedule_create
{ "campaign":"<campaign id>",
"at":"2026-10-01T12:00:00Z",
"timezone":"UTC",
"idempotencyKey":"schedule-2026-001" }POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/receipts_list
{ "limit":50 }
POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/receipt_get
{ "delivery":"<delivery id>" }The catalogue is fixed. Each operation declares its required scope and consequence before it runs.
Safe to repeat unless otherwise noted.
workspace_statusInspect workspace, entitlement, limits and publication pause.
accounts_listRead verified account identities and binding versions. Credentials are never returned.
projects_listList project routing.
campaign_getInspect exact content and its immutable digest.
campaign_validateDry-run routing and provider text validation without publication.
receipt_getInspect provider evidence, status and reason for one delivery.
receipts_listRead delivery history. Unverified and ambiguous outcomes stay distinct from verified publication.
workspace_exportExport project, campaign and receipt records without credentials or payment tokens.
automation_inspectInspect profiles, source snapshots, decisions and pending automated deliveries.
billing_statusInspect confirmed paid-through access and payment method availability.
Mutations require an idempotencyKey. Reuse the same key and exact inputs when retrying transport.
project_putCreate or replace explicit project-to-account routing.
campaign_createStore immutable exact text per account alias. No copy is generated or truncated.
publish_nowReserve each delivery once and dispatch. Returns receipt IDs immediately; inspect receipts for the outcome.
schedule_createReserve exact immutable campaign content at an explicit time with UTC offset.
schedule_cancelCancel one unclaimed delivery. Reports already executing if dispatch won the race.
schedule_replaceAtomically replace an unclaimed reservation with a reviewed campaign.
metrics_captureCapture available provider metrics on demand. Unsupported metrics are reported as unavailable, never fabricated zeros.
publishing_pausePause or resume new workspace publication claims. In-flight effects may still finish.
account_disconnectRevoke a connection and block future unclaimed deliveries.
Configuration starts paused. Payment alone never starts posting.
automation_configureStore an explicitly reviewed source profile and exact approved templates.
automation_previewShow the next permitted allocation without storing inventory or schedules.
automation_enableStart bounded continuing authority for a reviewed profile.
automation_pausePause a profile and cancel unclaimed automated deliveries. Remains available after expiry.
A checkout URL never grants access. Only verified server payment state does.
billing_quoteCreate an exact USD 5 workspace purchase quote.
billing_checkoutCreate or retrieve Stripe-hosted subscription checkout for an unexpired quote.
billing_portalOpen the hosted billing portal.
A campaign is immutable once created. Nothing is generated, rewritten or truncated on the agent's behalf.
Retry failed transport with the same key and same inputs. Never mint a fresh key to force a second attempt.
Publication and scheduling return receipt IDs, not outcomes. An ambiguous effect blocks blind repetition.
Cancellation clears an unclaimed reservation. It cannot withdraw an effect already in flight.
Under continuing operation, approved templates are the claim boundary. Monitored content supplies substitutions, never authority.
Admission rejection is not execution failure. Honour Retry-After; workspace and edge windows apply across MCP and HTTP.
A receipt is the authority on what happened. There is no promise of exactly-once execution at an external provider; PostSteward prevents blind repetition after uncertainty.
scheduledwaiting_containerexecutingpublished_verifiedpublished_unverifiedambiguous_effectdrift_blockedfailedcancelledTo recover safely, inspect the receipt and the provider account before acting. Never delete the ledger to enable a second attempt.