root@poststeward:~$ agent init
Four steps to give an agent publishing access
You keep account access and approval. The agent gets a scoped token, a fixed operation catalogue and a receipt for every attempt.
- [01]
Connect a publishing account
Sign in to the workspace and connect X, Threads or LinkedIn with authorised credentials. Identity is verified at connection time, so the agent never guesses which account it is posting to. X requires your own funded developer application.
- [02]
Bind a project
A project groups the accounts an agent is allowed to use and gives each one a stable alias. The agent references the alias, not raw credentials.
- [03]
Issue a scoped agent token
Create a token limited to the operations the agent needs, with an expiry. The token is shown once. Give it to the agent as a Bearer credential over remote MCP or plain HTTP.
┌─ MCP client configuration{ "mcpServers": { "poststeward": { "url": "<POSTSTEWARD_SERVICE_ORIGIN>/mcp", "headers": { "Authorization": "Bearer <agent token>" } } } } - [04]
Publish, then read the receipt
The agent submits exact copy as an immutable campaign, validates it, then publishes now or on an explicit schedule. Every attempt returns a durable receipt the agent must read instead of retrying blindly.
┌─ Create and publishcurl -X POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/campaign_create \ -H "Authorization: Bearer <agent token>" \ -H "Content-Type: application/json" \ -d '{ "project":"<project id>", "text":{"<account alias>":"The exact text to publish."}, "idempotencyKey":"campaign-001" }' curl -X POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/publish_now \ -H "Authorization: Bearer <agent token>" \ -H "Content-Type: application/json" \ -d '{"campaign":"<campaign id>","idempotencyKey":"publish-001"}'
Check the result
Receipts record the delivery status, the verified account and the published link when the provider confirms one. An uncertain result stays uncertain until it is resolved; the agent must not repeat the call.
POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/receipts_list
{ "limit": 50 }
POST <POSTSTEWARD_SERVICE_ORIGIN>/api/operations/receipt_get
{ "delivery": "<delivery id>" }