PlanStack · Product documentation
The shared, versioned plan layer for developers running multiple AI coding agents. This page covers what PlanStack is, when to reach for it, and how to connect your first agent in under five minutes.
This documentation is a real PlanStack plan. Use the version picker to follow updates, Copy link to share it, or Raw ↗ to open the document without the reader controls.
AI coding agents are great at producing implementation plans — and those plans usually die in chat scrollback the moment the next message arrives. They aren't addressable, they aren't shareable with teammates who don't have the agent open, and a second agent (or the same agent tomorrow) can't pick up where the first one left off.
PlanStack gives plans a permanent home. An agent connects over the Model Context Protocol (MCP), publishes a plan, and gets back a stable, public URL. Every revision is a new immutable version at that same link. The plan becomes a first-class artifact: re-consumable by other agents as context, and readable by any human with the URL — no login, no install.
The core loop is four moves:
publish_plan over MCP. PlanStack applies the house theme, stores an immutable version, and returns a stable URL like planstack.dev/p/k3f9qm2p.get_plan and keeps working.update_plan to publish a new version at the same URL. The previous version stays reachable at ?v=N — nothing is ever overwritten.Four properties make that loop useful:
?v=1 always shows v1; the bare link always shows the latest.Reach for PlanStack whenever a plan needs to outlive the chat it was born in:
get_plan and executes against the agreed plan. Same context, no copy-paste.From zero to your first published plan:
ps_live_. This key authenticates your agent.publish_plan and returns a URL.update_plan — a new version appears at the same link.PlanStack speaks MCP two ways. Most people want the first.
No install or local process is required. Open Settings → API Keys and copy the ready-made MCP configuration for your client. It includes the correct endpoint and authentication header.
{
"mcpServers": {
"planstack": {
"url": "<endpoint from PlanStack settings>",
"headers": { "Authorization": "Bearer ps_live_…" }
}
}
}
Prefer a local process? Run the @planstack/mcp stdio server. It's a thin client that forwards every tool call to the same backend, configured with two environment variables:
{
"mcpServers": {
"planstack": {
"command": "node",
"args": ["/abs/path/to/planstack/packages/mcp/dist/index.js"],
"env": {
"PLANSTACK_API_KEY": "ps_live_…",
"PLANSTACK_API_URL": "<API URL from PlanStack settings>"
}
}
}
}
Copy both values from PlanStack settings. Remote and local connections expose the same tools.
Connecting exposes four tools. Each returns a short, human-readable summary to the agent; plan accepts either a plan id (e.g. k3f9qm2p) or a full plan URL.
| Tool | Parameters | What it does |
|---|---|---|
publish_plan |
title, html, project?, note? |
Publishes a new plan as version 1. Returns the public URL, id, version, and slug. |
update_plan |
plan, html, note?, title? |
Publishes a revision — a new immutable version at the same URL. Returns the current URL and the exact-version URL. |
get_plan |
plan, version? |
Returns the raw source HTML (current or a specific version) so an agent can read and refine it. |
list_plans |
project?, limit? |
Lists your plans, most recently updated first, optionally filtered by project. |
Write plans as semantic HTML — a full document or a bare fragment. The baseline theme is applied automatically at publish, so you never style a plan by hand.
Versioning is the heart of PlanStack, and it's deliberately simple:
publish_plan creates version 1 at a fresh URL.update_plan appends a new immutable version and bumps the "current" pointer. Older versions are never mutated./p/<id> — always serves the latest version. A pinned link — /p/<id>?v=N — always serves exactly that version.On the free tier the latest 10 versions per plan are retained; older ones are pruned. Paid tiers retain full history.
PlanStack applies a clean house theme automatically. If your plan includes its own styles, they take precedence, so you can customize the result without rebuilding the baseline reader.
Published content opens in an isolated reader and cannot access your PlanStack account or session. Submissions are capped at 4 MB, with lower limits on some plans.
PlanStack is free to start. The free tier is enough to run the full loop; paid tiers lift limits and add sharing controls.
| Capability | Free | Pro (roadmap) | Team (roadmap) |
|---|---|---|---|
| Plans | 25 | Unlimited | Unlimited |
| Publishes / month | 100 | ~5,000 | Unlimited |
| Versions retained | Latest 10 | All | All |
| Max size / publish | 1 MB | 4 MB | 4 MB |
| API keys | 1 | 5 | 20 |
| Custom slug | — | ✓ | ✓ |
| Private / password / expiring links | — | ✓ | ✓ |
| Branding & custom domain | — | Add-on | ✓ |
A 4 MB hard cap applies to every submission regardless of tier. When you hit a limit, the tool call returns a clear message to the agent rather than failing silently. Pro and Team are on the roadmap; today every account is on the free tier.
Do my teammates need an account?
No. Published plans are public URLs — anyone with the link can read them, no login or MCP client required.
What HTML can I publish?
Any semantic HTML, as a full document or a fragment. PlanStack applies the house theme automatically and opens the result in an isolated reader.
Remote or local (stdio)?
Prefer the remote endpoint — it's hosted, needs no install, and updates with the service. Use stdio only if you specifically want a local process.
Can I make a plan private?
Private, password, and expiring links are on the roadmap (Pro). Today every plan is a public, unguessable URL.
I got a 401 from the MCP server.
Check that your client sends Authorization: Bearer ps_live_… with a valid, un-revoked key. A 402/413 means you hit a tier limit or the 4 MB size cap.
Why didn't an old version change after I revised the plan?
That's by design — versions are immutable. Revisions create a new version; ?v=N always shows the original.
This document is versioned like any other plan. Its history so far: