Onplana: project plans agents can run, via MCP or in-app
Microsoft Project Online retires September 30, 2026 , migrate to a modern platform before it's too late.Start migration
~/.config/claude/mcp.json<br>"mcpServers": {<br>"onplana": {<br>"url": "https://mcp.onplana.com/mcp"
Project plans that agents can run, via MCP or in-app.<br>The plan is the source of truth: tasks, sprints, milestones, dependencies, baselines, and an audit log. Agents read from it and write structured changes back. Two surfaces reach the same plan, an MCP server for external agents from any ecosystem (ChatGPT, Claude, Cursor, Codex) and Run-with-Agent for the in-app experience.<br>Try it free Connect your agent<br>MCP endpoint https://mcp.onplana.com/mcp<br>250 MCP tools · OAuth 2.1 + DCR · idempotent · audited · free tier, no credit card
Watch the plan run itself<br>One brief becomes a full project plan, then ChatGPT, Claude, and Onplana's own AI each execute their tasks through that shared plan, with a human approving the final send. Different ecosystems, one control plane.
Onplana's AI plans and staffs the work, ChatGPT writes the copy, Claude builds and publishes the site, you click Send.Watch the full breakdown
The assistant-in-a-tab problem<br>Most project tools bolt an assistant onto the side of the app. You ask it a question, it answers in a chat panel, and the result lives in scrollback. The next person who opens the project cannot see what the assistant concluded, and neither can the next agent. The work product is a conversation, and a conversation is not something a team or a second agent can build on.<br>The fix is to stop treating the plan as context for a chat and start treating it as the substrate the chat writes to. When an agent moves a task, flags a risk, or drafts a status report, the change lands on the plan itself, with the same permission checks, idempotency, and audit trail a human edit gets. The conversation is disposable. The plan is what persists, and it is what the next worker, human or agent, picks up.
The model: plan as substrate<br>Two surfaces write into one plan. Both go through the same gate.<br>MCP serverExternal agentsClaude · Cursor · CodexRun-with-AgentIn-app agentPropose, then ratifyThe plansource of truthTasksSprintsMilestonesDependenciesBaselinesAudit logread / writeread / writeEvery write passes through the same gateRBAC · plan-gating · idempotency · audit trail
What it looks like<br>Three real interactions. The bracketed lines are tool calls against the plan.<br>Claude desktop, via MCP<br>You: Connect to Onplana, what's overdue<br>on Mobile App v2?
Claude: [list_overdue, project filter]<br>4 overdue. Top 2: "API rate limit<br>handling" (Sarah, 6d), "Push<br>notification config" (Mike, 3d).<br>Both in Sprint 14.
You: Move them to Sprint 15. Reassign<br>Sarah's to Mike, she's at capacity.
Claude: [move_task_to_sprint x2,<br>assign_task]<br>Done. Both in Sprint 15. Sarah's<br>task reassigned to Mike.<br>Audit log: /audit/...<br>Cursor, via MCP, mid-coding<br>[Cursor finishes refresh token<br>rotation, commits a3f7c2]
Cursor (via MCP):<br>update_task taskId=tsk_abc<br>status=DONE<br>note="Commit a3f7c2: refresh<br>token rotation"
Onplana:<br>Task moved to DONE.<br>2h logged to draft timesheet.<br>Run-with-Agent, in-app<br>PM clicks "Run with Agent" on the<br>Q4 Launch project.<br>Goal: "Identify blockers before<br>standup."
Agent runs (read state):<br>list_tasks, list_risks, list_overdue<br>analyze_project_health (AI pass over<br>comments + state)
Returns a proposal:<br>3 risks flagged, 2 mitigation tasks<br>drafted, 4 reassignment suggestions.
PM accepts 2 risks, edits the 3rd,<br>accepts both mitigations, accepts 1<br>reassignment, rejects 3. Status report<br>draft attached.
Two surfaces, two sizes<br>250tools over MCP→10capabilities in-app, additive only<br>The MCP server registers 250 tools, spanning projects, tasks, sprints, milestones, earned value, risks, issues, governance, change control, timesheets, wikis, whiteboards, workflows, and the Microsoft Graph integrations. Every one is RBAC-checked against the caller's role, plan-gated against the org's tier, idempotent on a client-supplied key, and written to an audit trail. An external agent with the right token can reach all of it.<br>250 tools is too large a surface for an autonomous in-app agent to navigate well, so Run-with-Agent works through a curated set of ten capabilities, biased toward analysis, drafting, and proposing rather than executing irreversible decisions. It can summarize a project, analyze project health, generate a risk register, calculate earned value, run a schedule health check, break a task into subtasks, and draft documents and workspace tables. Every Run-with-Agent capability is additive by construction: it writes new artifacts and never edits an existing row, and a test fails the build if a capability declares otherwise. It cannot move tasks between sprints, reassign people, approve timesheets, or advance governance gates. Those stay with humans, who accept, edit, or reject each proposal. The docs walk through both halves of the loop:...