https://app.specdeck.ai/mcpHow connecting works
SpecDeck uses OAuth to connect AI agents. You never copy or paste a token. The flow is:
- 1You add the SpecDeck MCP URL to your agent.
- 2The agent opens your browser to SpecDeck's authorization screen.
- 3You sign in if needed, pick which workspace the agent may access, and approve.
- 4The agent receives a token scoped to that one workspace and uses it for every request.
Two kinds of agent support
Coding agents fall into two groups:
mcp-remote, a small adapter run through npx. It handles OAuth and proxies the connection.The universal stdio bridge command is:
Connecting each agent
After you add the server, trigger the connection so the OAuth screen opens (each section says how). Approve access and pick a workspace. The agent is then ready.
Add the server with the CLI:
Then run /mcp inside Claude Code and select specdeck to authenticate. The browser opens the SpecDeck approval screen.
Use --scope user to make the server available across all your projects, or --scope project to share it with your team through a checked-in .mcp.json.
Any other agent
If your agent supports remote HTTP MCP servers, give it https://app.specdeck.ai/mcp and let it run OAuth. If it only supports local command-based servers, point it at the mcp-remote bridge command shown above.
A typical agent workflow
A common end-to-end flow for an AI agent connected to SpecDeck:
- 1
list_specificationsandread_specificationto understand the project. - 2
create_goalto record a task linked to a spec, orlist_goalsto find existing work. - 3
get_next_goalto claim the highest-priority idle goal. It assigns the goal to you and sets it to in_progress. - 4
read_goalto load the linked sections, status, and prior context. - 5Do the implementation work. When something is unclear,
ask_questionorask_spec_question— both pause the goal until a person answers. - 6If the spec is wrong or incomplete,
create_draft,update_draft, andcreate_proposalto draft a fix, thenpropose_spec_changeto raise it on the goal. - 7
submit_goalwith the artifacts you produced (branch, pull request, deployment) to mark the goal done.
Onboard an existing codebase
Already have a codebase with no specs? Point a connected AI coding agent at SpecDeck and run the onboard_codebase prompt. By default it posts a short plan for you to approve, then builds everything without stopping again. It reads the repository, creates the areas the system splits into, then writes foundational docs and a spec for every feature, all as proposals you review and publish. Approve the plan and come back to a review queue that covers the whole codebase.
mode: autonomous to skip even that checkpoint, or mode: interactive to also review each document one at a time.Run it
- 1Connect a coding agent to the SpecDeck MCP server, as described above.
- 2Run the
onboard_codebaseprompt in the agent. Agents that list MCP prompts show it as a slash command. - 3Read the short plan it posts in chat, then approve it (or cut and reorder first). From there it creates areas and proposals across the codebase without stopping.
- 4Review the proposals in the SpecDeck merge screen and publish the ones you want.
Options
The prompt takes five optional arguments:
focus_path limits the survey to one directory, for example services/billing. Omit it to cover the whole repository.
mode sets how it runs: plan_first (the default) stops once for you to approve the plan, then builds everything without stopping again; autonomous runs start to finish without stopping, creating proposals for everything the code implements; interactive proposes a plan, waits for your approval, and works one document at a time.
output decides where each spec lands, independent of mode: proposals (the default) routes every spec through the review queue for you to publish, while published publishes each one directly, live at once, with no review queue.
depth sets how far to go: full (the default) for foundational docs plus a spec for every feature, or foundational_only to stop after the foundational docs.
max_feature_specs caps how many feature specs to propose. Omit it to cover every feature in the code.
onboard_codebase prompt runs through MCP, on the agent that writes your code. The in-app Assistant is separate: it helps people author specs by hand and never touches code.Tool reference
Every tool runs against the workspace the agent's token is scoped to. Tools that need an ID expect IDs returned by other tools, such as a specification_id from list_specifications or a goal_id from list_goals.
SPECIFICATION TOOLSRead & write specifications
list_specificationsTOOLList every specification in the workspace, with each spec's scope.
read_specificationTOOLRead a spec with all its sections, including published content and any in-progress drafts and proposals.
specification_idstringREQUIREDcreate_specificationTOOLCreate a new spec. Feature scope creates product and engineering sections. Foundational scope creates one foundational section.
titlestringREQUIREDscope"feature" | "foundational"REQUIREDtemplatesobjectOPTIONALproduct, engineering, or foundational) to template IDs from list_templates.rename_specificationTOOLChange the title of an existing specification. Scope, sections, and content are not affected.
specification_idstringREQUIREDtitlestringREQUIREDread_sectionTOOLRead one section of a spec. Returns the published version by default.
specification_idstringREQUIREDsection_idstringREQUIREDbranch_idstringOPTIONALversionnumberOPTIONALbranch_id and version cannot both be set.create_draftTOOLCreate an editable copy of a section from its current published content.
specification_idstringREQUIREDsection_idstringREQUIREDgoal_idstringOPTIONALupdate_draftTOOLOverwrite the content of a draft.
specification_idstringREQUIREDsection_idstringREQUIREDbranch_idstringREQUIREDcontentmarkdownREQUIREDcreate_proposalTOOLMark a draft ready for human review. The draft becomes read-only until a person publishes or rejects it.
specification_idstringREQUIREDsection_idstringREQUIREDbranch_idstringREQUIREDpublish_draftTOOLPublish a draft straight to the live spec, skipping human review. Its content is merged into the published section at once. Use create_proposal instead when a person should review first.
specification_idstringREQUIREDsection_idstringREQUIREDbranch_idstringREQUIREDadd_commentTOOLPost a comment on an edit or a published section.
specification_idstringREQUIREDsection_idstringREQUIREDbranch_idstringREQUIREDcontentstringREQUIREDmermaid in any section content, and it renders as a diagram for human readers in the published and read views, goal views, and the Markdown editor preview. Nothing extra to enable.GOAL TOOLSCreate and run goals
list_goalsTOOLList goals in the workspace.
status"idle" | "in_progress" | "done"OPTIONALread_goalTOOLRead a goal with its linked specification sections, status, assignee, activity stream, and artifacts (branches, PRs, deployments, reports).
goal_idstringREQUIREDcreate_goalTOOLCreate a goal linked to a specification. It starts idle and unassigned.
specification_idstringREQUIREDtitlestringREQUIREDsummarymarkdownOPTIONALacceptance_criteriamarkdownOPTIONALget_next_goalTOOLAtomically claim the highest-priority idle goal, assign it to yourself, and set it to in_progress. Goals with an open blocking action are skipped until it is resolved. Returns no_goals_available when nothing is claimable.
submit_goalTOOLMark a goal done. Use it when your work is complete. Optionally attach the artifacts the work produced — they are recorded on the goal before it is marked done.
goal_idstringREQUIREDartifactsobject[]OPTIONALtype, value, and (for deployments) an environment.update_goalTOOLUpdate a goal's status and/or its assignee. Reassigning a goal is how work is handed off. To mark a goal done prefer submit_goal.
goal_idstringREQUIREDstatus"idle" | "in_progress" | "done"OPTIONALassignee_idstringOPTIONALask_questionTOOLAsk the human a blocking question about a goal. The goal flips back to idle in the same transaction — work pauses until a person resolves it.
goal_idstringREQUIREDcontentmarkdownREQUIREDask_spec_questionTOOLLike ask_question, but scoped to a specification decision. Use it when the question is about whether or how the spec should change. Blocks the goal until resolved.
goal_idstringREQUIREDcontentmarkdownREQUIREDpropose_spec_changeTOOLPropose a concrete spec change by linking a draft or proposal branch you already created. The goal flips back to idle until the suggestion is resolved; it auto-resolves when the branch is published or deleted.
goal_idstringREQUIREDspec_branch_idstringREQUIREDcontentmarkdownREQUIREDadd_artifactTOOLRecord an artifact on a goal — evidence of the work: a branch, commit, pull request, deployment, test report, or CI run. Visible via read_goal.
goal_idstringREQUIREDtype"branch" | "commit" | "pull_request" | "deployment" | "test_report" | "ci_run"REQUIREDvaluestringREQUIREDenvironment"local" | "dev" | "qa" | "stage" | "prod"OPTIONALdeployment; omit for every other type.update_artifactTOOLUpdate an existing artifact's value or environment — for example, correct a deployment URL. Type and authorship are fixed at creation.
goal_idstringREQUIREDartifact_idstringREQUIREDvaluestringOPTIONALenvironment"local" | "dev" | "qa" | "stage" | "prod"OPTIONALremove_artifactTOOLRemove an artifact from a goal.
goal_idstringREQUIREDartifact_idstringREQUIREDTEMPLATE TOOLSStarter content
list_templatesTOOLList the document templates available as starter content for new spec sections. Each template has a kind that must match the section it fills.
kind"product" | "engineering" | "foundational"OPTIONAL