Start here
Standard
For one team running a handful of projects.
per month
Charged every month. Cancel from Settings at any time.
3 active projects
Every feature, on every tier
Connect Claude Code, Codex, Hermes or any MCP client to the Post Array MCP server and it can draft, check platform limits and schedule posts. Not using an agent? The web app, a REST API, a CLI and signed webhooks do the same work.
Free to start. No card. Your first published posts are on us.
Networks in the launch cohort
Availability is shown account by account as each platform completes its review.
Post Array is a publishing desk for people who are accountable for what goes out. You write once, adapt per platform, see the real limits before you schedule, get the approval you need, publish through official platform APIs, and keep a receipt for every post.
One account runs many businesses. Each project is its own business, with its own connected accounts, its own calendar and its own approvals, and you switch between them from one menu, the way you switch properties in a search console.
Demonstration
Create a project
Project
Northbound Tools (sample)
Time zone: Central European Summer Time (GMT+2)
Drafts, accounts, approvals and receipts belong to this project and nowhere else.
Connect accounts
Accounts in this project
Each row would carry token health, the permissions granted and the last successful post. None of them can publish today.
Compose once
Master draft
Northbound 2.4 is out today. Imports are faster, search has a keyboard shortcut, and the export bug two of you reported is fixed.
In project Northbound Tools (sample)
Adapt per platform
What each account receives
X, @northbound
Northbound 2.4 is out. Faster imports, keyboard search, and that export bug is fixed.
Character count and thread order
LinkedIn, Northbound Tools
Northbound 2.4 is out today. The release note explains the import changes and the export fix in full.
Organization role and post length
Instagram, @northbound.tools
The same release picture, with a caption written for the feed and alt text written by a person.
Account type, aspect ratio and alt text
Check it
Checks before scheduling
These run in the composer before anything is scheduled, and again before anything is sent.
Give it a time
Scheduled
Tuesday, September 15, 2026 at 9:15 AM in Central European Summer Time (GMT+2)
One approval is required before anything can be sent.
The queue is the other route: it picks the next slot your rules allow, in this time zone.
See the week
The week
Monday
Nothing scheduled
Tuesday
9:15 AMX, @northbound
1:00 PMLinkedIn, Northbound Tools
Wednesday
5:30 PMInstagram, @northbound.tools
Thursday
Nothing scheduled
Friday
Nothing scheduled
The same three posts on the calendar, read in the project time zone.
Publish and record
Publishing and the record of it
Approved by Ravi, sample reviewer
Queued for its slot
Sent to the platform
Confirmed by the platform
The last two steps are written by the publish run. No connector has passed provider verification yet, so they stay pending and the external post ID and permalink stay unavailable.
Read the digest
Your week, in sentences
Sample
Live analytics appear here as your posts publish.
The composer starts with a master version. Selecting one account opens an override for that account only, with its own live limits and its own preview. Nothing you write for LinkedIn changes what X receives.
Master draft
Master text, shortened, plus a two post thread
Longer master text with the document attached
The same image selected, with a caption rewritten for the feed
The same clip as a Short, with its own title and description
Master text with the link card
An illustrative composition. The limits and settings shown come from the connector definition for each platform, not from an estimate.
The same use cases, the same tenancy checks, the same validators and the same publishing workflows. A surface is a way in, never a shortcut past a rule.
Surfaces on one shared backend
Composer, calendar, approvals, analytics, connections and settings.
Streamable HTTP, OAuth, per tool scopes and a preview before every consequential call.
Scoped keys, idempotency keys on every write, cursor pagination, typed errors.
Stable machine readable output for scripts and continuous integration.
Publish results, approval decisions and connection health, with redelivery.
The MCP server is a resource server in front of the same application services the web app uses. It holds no publishing logic and no second permission system, so an agent cannot reach anything you have not granted it, and it cannot route around an approval by using a different surface.
Create a credential in Post Array, then paste the workspace MCP endpoint into your client. The credential is read from an environment variable rather than written into the file, because a config committed to a repository is the most common way one leaks.
Post Array compares the token audience against this server as an exact string, never a prefix, and re-verifies the grant on every call. A revoked grant stops working in the middle of a long lived agent session.
It lists the accounts you connected, reads the live platform limits for each one, and drafts against those rather than against a guess. Account ids are resolved on the server, so a raw handle is never accepted.
{
"mcpServers": {
"postarray": {
"type": "http",
"url": "https://mcp.relay.example/mcp",
"headers": {
"Authorization": "Bearer ${POSTARRAY_SERVICE_TOKEN}"
}
}
}
}The Claude Code block, with your own endpoint in place of the example.
Reviewed setups ship for these clients
Any MCP client that speaks Streamable HTTP over TLS can connect. There are no unauthenticated tools, not even read ones.
Every tool declares its risk, its scopes and its approval level as data, and the description a client shows is generated from that declaration. A tool whose description disagrees with what is enforced is worse than no description, so the two cannot disagree.
Nothing changes. Each one answers with a bounded page and a link, so a calendar of ten thousand entries comes back as ten and a cursor instead of filling the context window.
Changes something inside Post Array and publishes nothing. A draft sits in the workspace until a person, or a grant you gave for scheduling, moves it forward.
Reaches a platform. Each one requires an idempotency key, rejected rather than defaulted, so an agent retrying in a loop cannot post the same thing twice.
Asking an agent to publish immediately does not publish. Post Array mints a pending confirmation bound to the workspace, the grant, the post and a fingerprint of the exact accounts, and hands back a link on the Post Array domain. You open it in your own session, see what will go out and where, and approve. Change the post afterwards and the fingerprint changes with it, which voids the approval.
Turn one sourced idea into platform-native content, approve it once, publish it reliably, and learn what to improve next.
A true preview per account, deterministic policy and platform checks before anything is queued, the approval your workspace requires, an immutable receipt with the external post ID, and a health state for every connection.
Every external write carries an idempotency key, so a worker crash after the platform accepted a post does not create a second one.
Per platform variants that you can override one account at a time, and transcreation rather than literal translation, with a project glossary and a named reviewer per language.
The interface is available in selected languages. Content adaptation covers 20 content languages and every one of them is reviewable before it publishes.
Analytics that name the metric, the platform that reported it, the denominator and when it was last refreshed. Where a platform does not report something, Post Array says so instead of showing a zero.
A post is compared against your own median rather than against a score nobody can audit.
The web app, a REST API, a remote MCP server, a CLI and signed webhooks call the same application services, the same authorization rules and the same validators.
An agent cannot bypass an approval policy by using a different surface, because the policy is enforced in the service, not in the interface.
One price, every shipped feature, 10 active channels and an owner plus 5 teammates. Platform usage that a provider charges per operation is passed through at cost and shown before you confirm the action.
There is no image or video generation credit system, because Post Array does not generate media.
These are boundaries, not a roadmap tease. If one of them changes, it changes on the changelog first.
No AI image generation and no AI video generation. Post Array adapts, approves, publishes and measures the media you bring.
No automatic likes, follows, reposts, unsolicited replies or direct messages. No engagement pods and no fabricated engagement.
No browser automation, no cookie replay, no scraping and no unofficial posting endpoints. Official platform APIs only.
No promise about reach, ranking or engagement. Post Array can tell you what happened and what to test next. It cannot tell you what an audience will do.
No unattended publishing by default. An agent can draft, validate and request approval. A human decides before anything becomes public, unless you deliberately opt a specific policy out.
Connect one account, draft one post, watch the validation run, schedule it and read the receipt. That is the whole product in about ten minutes.
Post Array costs $25 a month, or $250 a year, which is two months free. Starting is free and takes no card: connect your accounts, schedule as much as you like, and your first published posts are on us. Connector availability is shown account by account as each platform completes its review.