Agents
PostAtom is building an MCP server and an installable skill, so an agent can post on someone's behalf without you writing the integration — and without it being able to do more than you intended. Neither is available yet. This page describes what they will do; until then, an agent can call the API directly with a key of its own.
The tools
Eight, not one per endpoint. A mechanical mapping of a REST surface gives a model thirty near-identical choices and it picks the wrong one; a small set with the constraints written into the descriptions gives it one obvious choice each time.
- list_accounts
- What the workspace can post to, with each account’s live limits.
- publish_post
- Publish or schedule to one or more accounts.
- get_post
- What happened, per destination.
- list_scheduled
- What is queued and has not gone out.
- cancel_post
- Cancel a scheduled post, per destination.
- get_analytics
- Normalized engagement, with how many platforms reported it.
- list_conversations
- Comment threads on the workspace’s posts.
- reply
- Answer publicly in a thread.
There is no direct-message tool. No platform offers a third-party messaging API a product could be built on, and a tool that works nowhere is worse than an absent one.
Two things that keep this safe
Start in the sandbox
Give an agent a test key, pn_test_…, first. An
agent rehearsing a campaign should not reach a real timeline on its first
attempt, and a sandbox key exercises the entire pipeline without one being
possible.
Approval mode
A key scoped approval:required turns publishing into
drafting: the post is held for a person to release, and nothing is queued until
they do. The hold is in the API, not in a prompt, so it cannot be argued out
of — and the key that drafted a post cannot approve it, which is what stops
the arrangement being decoration.
What the skill tells an agent
The installed skill is instructions, not tooling: discover the accounts and their limits before composing, never report success from the publish response alone, never render an unreported metric as a zero, and say out loud that a reply is public before posting one. Those are the four ways an agent integration usually embarrasses its owner.
Using it as a library instead
The server takes a key and speaks to the ordinary API, so everything the API enforces is enforced for an agent too: scopes, rate limits, validation, and the approval hold. If you would rather call PostAtom directly, the TypeScript SDK is the same surface.