Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

PAPI: Persistent Adaptive Project Intelligence

NPM · @PAPI-AI/SERVER · 2 COMPONENTS · SCANNED AUG 3

Adaptive plan/build/review cycles for AI coding assistants, persisted across sessions.

+12 this week 54 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security79
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known medium-severity CVE affects @anthropic-ai/sdk 0.82.0, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (105 of 109), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency32
Schema Quality & AI Usability25
  • AI-judged instruction clarity (poor).Fail
  • Context-footprint check failed: tool/resource definitions use about 12479 tokens (~265/item across 47 items; 47 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @papi-ai/server

# add to Claude Code
claude mcp add getpapi-papi -- npx -y @papi-ai/server
# add to Codex CLI
codex mcp add getpapi-papi -- npx -y @papi-ai/server
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "getpapi-papi": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@papi-ai/server"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add getpapi-papi --command npx --arg -y --arg @papi-ai/server
# ~/.hermes/config.yaml
mcp_servers:
  getpapi-papi:
    command: "npx"
    args: ["-y", "@papi-ai/server"]
// mcp.json
{
  "mcpServers": {
    "getpapi-papi": {
      "command": "npx",
      "args": [
        "-y",
        "@papi-ai/server"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +4
    • Stability: unverified → 0.27 functional
  • 2 Aug 26 +33
    • CVE-2026-41686 affects this package: medium security
    • Provenance: unverified → fail security
    • Known CVEs: unverified → fail security
    • Install scripts: unverified → pass security
    • Malware scan: unverified → pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • License: unverified → fail functional
    • MCP protocol: unverified → pass functional
    • Dependency health: unverified → partial functional
    • Maintenance: unverified → pass functional
    • Schema quality: unverified → poor functional
    • Licence: Elastic-2.0 functional
  • 31 Jul 26 −25
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +18
    • Tool coverage: unverified → 100 functional
  • 28 Jul 26 −18
    • Tool coverage: 100 → unverified functional
    • First check of Schema quality: unverified functional
  • 27 Jul 26 42

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/@papi-ai/[email protected]

Provenance none

Ecosystem: npm · Outcome: none

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-p7fg-763f-g4gf CVE-2026-41686 medium yes
Dependencies 105 packages

105 packages in the resolved dependency tree · 100 deprecated · 30 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 47 exposed · ~12,479 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
ad_hoc ~542

Record work done outside the normal cycle. Creates a Done task with a lightweight build report, or associates work with an existing task if task_id is provided (without changing task status — use build_execute for status transitions). Use for quick fixes, bug patches, or ad-hoc changes. Does not call the Anthropic API.

NameTypeReqDescription
cycletask-2352: promote this ad-hoc work into a cycle so it shows on the hub and is counted as INJECTED work (distinct from planned). Omit for the default behaviour (an immediate Done task with no cycle).…
effortstringActual effort spent (default: S).
epicstringEpic this relates to (default: "Platform").
holdbooleantask-2477: held-adhoc. When true, do NOT force-complete or commit to main — record the task In Review pinned to the NEXT cycle (current + 1) so the planner won't re-plan it, and return a branch/PR di…
modulestringModule this relates to (default: "Core").
notesstringAdditional context about the work.
prioritystringTask priority (default: P2 Medium). Use P1 for important fixes, P0 for critical incidents.
stagestringtask-2352: where promoted work lands. "done" (default) records it as Done + reviewed. "release" lands it In Review so it is reviewed and released WITH the cycle (fold-in) instead of being force-compl…
task_idstringExisting task ID to associate this work with (e.g. "task-42"). When provided, appends notes and attaches a build report to the existing task without changing its status.
titlestringWhat was done — becomes the task title (required when creating new task, optional when completing existing via task_id).
typestringTask type (default: inferred from description — "fix"/"bug" → bug, "research"/"investigate" → research, otherwise task).

No output schema declared.

No examples provided.

ad_view ~91

View one or all Active Decisions with full bodies. Use when you need to read the complete reasoning and evidence behind a specific AD before running strategy_change.

NameTypeReqDescription
ad_idstringSpecific AD to fetch (e.g. "AD-12"). Omit to list all active decisions with full bodies.
include_supersededbooleanInclude superseded (retired) ADs. Default false.

No output schema declared.

No examples provided.

agent_list ~91

List the sub-agents discovered in the project's `.claude/agents/*.md` files (read-only). Returns each agent's name and description so you can see which specialised sub-agents are available before dispatching one via the Task/Agent tool. Discovery only — does not invoke or manage agents.

NameTypeReqDescription
include_pathbooleanInclude each agent's project-relative file path in the output. Default false.

No output schema declared.

No examples provided.

board_archive ~119

Archive tasks from the Board to the archive file. When both phase and status are provided, only tasks matching BOTH are archived (AND logic). When only one is provided, all matching tasks are archived. Does not call the Anthropic API.

NameTypeReqDescription
phasestringPhase(s) to archive, comma-separated (e.g. "Phase 5: MCP Server MVP").
statusstringStatus(es) to archive, comma-separated (e.g. "Archived" or "Done,Archived"). Tasks matching any listed status will be archived.

No output schema declared.

No examples provided.

board_deprioritise ~432

Remove a task from the current cycle. Four actions: "backlog" (not now, maybe later — preserves handoff), "defer" (valid but premature — hidden from planner), "block" (waiting on external dependency — visible on board but skipped by planner), "cancel" (don't want this — permanently closed with reason). When a user rejects a task, ALWAYS ask which action they want. Does not call the Anthropic API.

NameTypeReqDescription
actionstring"backlog" = not now, maybe later (preserves handoff). "defer" = valid but premature (hidden from planner). "block" = waiting on external dependency (visible but skipped by planner — reason required).…
blocker_refstringRequired when blocker_type is set. The identifier being waited on: a task display-id (depends-on), an AD/decision id (decision-gate), or an owner_action id (owner-action).
blocker_typestringOptional (action="block" only). Typed blocker so the plan/orient scan can auto-detect when the block clears. "depends-on" = another task must be Done (blocker_ref = task display-id). "decision-gate"…
deferbooleanDEPRECATED — use action instead. If true, equivalent to action="defer".
phasestringOptional new phase (only applies to "backlog" and "defer" actions).
prioritystringOptional new priority (only applies to "backlog" action).
reasonstringWhy this task is being removed. Required for "cancel", recommended for "defer".
task_idstringyesThe task ID to act on.

No output schema declared.

No examples provided.

board_edit ~380

Edit fields on an existing task. Supports title, priority, complexity, module, epic, phase, notes (with notes_mode for append/replace/clear), status, maturity, and cycle (number or null). Pass task_id plus any fields to update. Does not call the Anthropic API.

NameTypeReqDescription
actual_effortstringtask-2182: correct the actual effort on this task's LATEST build report (fixes a mis-recorded actual).
complexitystringNew complexity/effort estimate.
cyclenumber|nullCycle assignment. Pass a cycle number to assign, or null to remove from any cycle. Validated against existing cycles. Replaces the prior workaround of editing cycle_tasks.cycle directly via SQL.
epicstringNew epic assignment.
estimated_effortstringtask-2182: correct the estimated effort on this task's LATEST build report (fixes a mis-recorded estimate). Updates the build_reports row, not the task — feeds the next estimation-accuracy recompute.
maturitystringNew maturity level.
modulestringNew module assignment.
notesstringNote content. Default behaviour is append — see notes_mode to control.
notes_modestringHow to apply the notes value. append (default) = add a new dated entry above existing notes; replace = overwrite all existing notes; clear = empty the notes field (notes value ignored).
phasestringNew phase assignment.
prioritystringNew priority level.
statusstringNew status. Must be a valid transition from the current status.
task_idstringyesThe task ID to edit (e.g. "task-42").
titlestringNew task title.

No output schema declared.

No examples provided.

board_reconcile ~144

Holistic board review — backlog + deferred tasks in one pass. Surfaces strategic context (ADs, phases, docs), grouping signals, merge candidates, priority drift, and stale tasks. "prepare" assembles context for you to analyse; "apply" commits your decisions after user confirmation. Does not call the Anthropic API.

NameTypeReqDescription
llm_responsestringYour reconciliation output (mode "apply" only). Must include a JSON block after <!-- PAPI_RECONCILE_OUTPUT --> with a "corrections" array.
modestring"prepare" (default) assembles full board context. "apply" commits your confirmed decisions.

No output schema declared.

No examples provided.

board_view ~345

View the Board. To find a SPECIFIC task or subset, FILTER FIRST — do not dump the whole board: pass task_id for one task (full detail), query="<text>" for a title/notes substring match, or cycle=<n> for one cycle. Combine with status/phase. By default shows active tasks only (excludes Done/Cancelled), sorted by priority, limited to 50; titles are truncated in the table (single-task lookup shows the full title). Use status="all" to see everything, mode="summary" for counts only. Does not call the Anthropic API.

NameTypeReqDescription
cyclenumberFilter to tasks assigned to this cycle number.
limitnumberMax tasks to return (default: 50).
modestringOutput mode: "full" (default) shows task table, "summary" shows counts only.
offsetnumberSkip first N tasks for pagination (default: 0).
phasestringFilter to tasks in this phase (e.g. "Phase 5").
querystringCase-insensitive substring match on task title OR notes. Returns only matching tasks — use this instead of dumping the whole board to find something.
statusstringStatus filter: omit for active tasks only, "all" for everything, or comma-separated statuses (e.g. "In Progress,Backlog").
task_idstringDirect lookup of a single task by its display_id (e.g. "task-2154"). Returns full untruncated detail for just that task — no board scan. Takes precedence over the list filters.

No output schema declared.

No examples provided.

bug ~652

Report a bug OR submit an idea. Routing: a bug about PAPI itself (a PAPI tool/MCP error, the connector, a handoff/cycle problem) auto-submits UPSTREAM to PAPI maintainers with diagnostics — you do NOT need to set report=true for these. A bug in the user's OWN project auto-files as a Backlog task on their board. IMPORTANT: report=true is ONLY for a genuine PAPI-product defect — it is NOT the catch-all for "not about my app". A bug in the user's harness/editor/OS/git/other tooling (e.g. Claude Code, Codex, VS Code, a shell command) is NOT a PAPI bug: file it on the user's own board (report=false / default) or that tool's own tracker, never upstream. Override the routing explicitly: report=true forces upstream (PAPI-product only), report=false forces the user's own board. Set `type` ("bug"/"idea") and optional notify-when-fixed / contact-ok consent for upstream submissions. Does not call the Anthropic API.

NameTypeReqDescription
contact_okbooleanReport mode only: set true if the user consents to the PAPI team reaching out about this submission.
epicstringEpic this relates to (default: "Platform").
modulestringModule this relates to (default: "Core").
notesstringSteps to reproduce, expected vs actual behaviour, or other context.
notify_when_fixedbooleanReport mode only: set true if the user wants to be notified when this submission is resolved (surfaced in a later orient/MCP call and on their dashboard).
phasestringTarget phase (default: current active phase).
projectstringBOARD MODE ONLY. Project id (UUID) or slug to file this bug under, overriding the session project for THIS call only. Must be a project on your account — fails closed otherwise. It CANNOT redirect an…
reportbooleanRouting override. Leave UNSET to auto-route: PAPI-product bugs go upstream to maintainers, project-domain bugs go to the user's board. Set true ONLY for a genuine PAPI-product defect (PAPI tool/MCP/c…
severitystringBug severity (default: "major"). Critical = P1, Major/Minor = P2.
textstringyesThe bug description — becomes the task title (default mode) or report description (report mode).
typestringReport mode only: submission kind — "bug" (default) or "idea" (feature request / suggestion). Both route to the same upstream PAPI triage.

No output schema declared.

No examples provided.

build_cancel ~62

Cancel a build task with a reason. Sets the task status to Cancelled and records the closure reason. Does not call the Anthropic API.

NameTypeReqDescription
reasonstringyesReason for cancelling the task.
task_idstringyesThe task ID to cancel.

No output schema declared.

No examples provided.

build_describe ~59

Show the full BUILD HANDOFF for a specific task, including scope, acceptance criteria, and implementation guidance. Does not call the Anthropic API.

NameTypeReqDescription
task_idstringyesThe task ID to describe (e.g. "task-042").

No output schema declared.

No examples provided.

build_execute ~1,166

Start or complete a build task. Call with just task_id to start (returns BUILD HANDOFF, creates feature branch, marks In Progress). After implementing the task, you MUST call build_execute again with all report fields (completed, effort, estimated_effort, surprises, discovered_issues, architecture_notes) to finish — do not wait for user confirmation between start and complete. Never call on tasks that are already In Review or Done. Does not call the Anthropic API. Set light=true to skip branch/PR creation (commits to current branch). Set PAPI_LIGHT_MODE=true in env to default all builds to light mode.

NameTypeReqDescription
architecture_notesstringPatterns established or decisions made during this build that AFFECT FUTURE WORK. Good: "Created shared service layer for cockpit data — all cockpit components should use it." Bad: "Used React hooks.…
brief_implicationsarrayStrategic learnings discovered during this build that the planner and strategy review should know about. Include when a build reveals: (1) something about assumptions that were wrong, (2) competitive…
completedstringWhether the build was completed. Required for complete.
corrections_countintegerNumber of times the user corrected or redirected the build during implementation. Captures informal pushback that bypasses review_submit. Default 0.
dead_endsstringCONTRACT: send this on every complete. List approaches you tried and RULED OUT during this build, with why each failed. Example: "Tried Supabase realtime but Edge Functions can't hold persistent conn…
discovered_issuesstringProblems found DURING this build that are OUTSIDE this task's scope. Include severity (P0-P3). Good: "P2: Auth middleware doesn't validate token expiry — affects all protected routes." Bad: "Had to i…
effortstringActual effort: XS, S, M, L, or XL. Required for complete.
estimated_effortstringEstimated effort from the BUILD HANDOFF. Required for complete.
handoff_accuracyobjectStructured handoff accuracy assessment. Optional — provides granular accuracy data beyond scope_accuracy.
lightbooleanLight-ceremony mode for XS/S tasks. Skips feature branch creation and PR. Work stays on current branch. Build report is still captured. Default false.
previewobjectOptional. For a build that touched USER-FACING UI: tell the owner how to SEE the result locally so reviewing it doesn't mean reading code or asking "show me". urls = the localhost route(s) to open (e…
production_verificationobjectRequired when the branch diff touches a trigger surface (install snippets, MCP transport, auth/middleware, OAuth well-known, vercel.json, supabase functions, Dockerfile, Procfile, env declarations).…
related_decisionsstringComma-separated AD IDs this build validated or challenged (e.g. "AD-5,AD-12"). Optional but high-value: name any Active Decision your work CONFIRMED, CONTRADICTED, or DEPENDED ON — this is the primar…
resolves_learningsarrayIDs of cycle_learnings this build directly resolves or acts on. Use when the BUILD HANDOFF references a prior learning entry (e.g. "addresses learning abc-123"). Links the learning to this task as ac…
scope_accuracystringHow well the BUILD HANDOFF matched actual work. Optional for complete.
surprisesstringWhat was DIFFERENT from what you expected? Scope changes, wrong assumptions, unexpected complexity, or missing infrastructure. NOT implementation details. Good: "Assumed table had status column but i…
task_idstringyesThe task ID to execute.

No output schema declared.

No examples provided.

build_list ~89

List cycle tasks that have BUILD HANDOFFs ready for execution. Shows task ID, title, status, priority, and complexity. In Progress tasks appear first, then Backlog. Does not call the Anthropic API.

NameTypeReqDescription
limitintegerOptional maximum number of tasks to return per section. Omit to return all. Reserved for future pagination — current behaviour returns all matching tasks regardless of value.

No output schema declared.

No examples provided.

contributor_add ~70

Add a contributor to the current project by email (owner-only). The person must already have a PAPI account. Grants cohort membership on project_contributors — contributors-tier visibility, no roles yet.

NameTypeReqDescription
emailstringyesEmail of the PAPI account to add (e.g. "[email protected]").

No output schema declared.

No examples provided.

contributor_list ~61

List the current project's contributors (any project member). Shows each member's email, display name, role, and join date. Does not call the Anthropic API.

NameTypeReqDescription
limitintegerOptional maximum number of contributors to return. Omit to return all.

No output schema declared.

No examples provided.

contributor_remove ~47

Remove a contributor from the current project by email (owner-only). Deletes their project_contributors row — they lose contributors-tier visibility.

NameTypeReqDescription
emailstringyesEmail of the contributor to remove.

No output schema declared.

No examples provided.

discovered_issue_resolve ~164

Mark a discovered_issue (cycle_learnings row, category="issue") as resolved. Pass the learning_id you saw in orient / learning_action list output. The row stays in the database for history, but default reads exclude it. Use this when the underlying fix has actually landed — NOT when you just created a follow-up task (that is `learning_action mark` with action_taken="task_created"). Optional `note` is recorded as resolved_by.

NameTypeReqDescription
issue_idstringyesThe cycle_learnings id (UUID) to mark resolved. Find it via `learning_action list` or recent orient output.
notestringOptional resolved_by tag — e.g. the task id whose merge resolved this issue, or the agent name. Recorded for audit.

No output schema declared.

No examples provided.

doc_action_promote ~290

Promote a single pending action from a registered doc into a Backlog task. The new task gets a `Reference:` line pointing to the source doc, and the doc action is marked resolved with `linkedTaskId` set. Use to close the research-to-action loop — turn unactioned findings into trackable cycle work. Identify the doc by `doc_path` (preferred) or `doc_id`, and the action by 0-based `action_index` (as listed in `doc_search` output).

NameTypeReqDescription
action_indexnumberyes0-based index of the action in the doc's actions array.
complexitystringTask complexity. Defaults to "Small".
doc_idstringUUID of the source doc. Either this or doc_path is required.
doc_pathstringPath of the source doc (e.g. "docs/research/funding-landscape.md"). Either this or doc_id is required.
epicstringTask epic. Defaults to "Platform".
modulestringTask module. Defaults to "Core".
notesstringAdditional notes. A `Reference:` line pointing at the source doc is always prepended.
prioritystringTask priority. Defaults to "P2 Medium".
titlestringOptional task title override. Defaults to the action description (truncated).

No output schema declared.

No examples provided.

doc_register ~358

Register or update a document in the doc registry. Called after finalising a research/planning doc, or when build_execute detects unregistered docs. Stores metadata and structured summary — not full content. Re-registering an existing doc updates its summary, tags, actions, type, and status (upsert). Visibility and owner are not changed on re-register.

NameTypeReqDescription
actionsarrayActionable findings from the document.
cyclenumberyesCurrent cycle number.
pathstringyesRelative path from project root (e.g. "docs/research/funding-landscape.md").
statusstringDocument status. Defaults to "active".
summarystringyesStructured 2-4 sentence summary. Format: "Conclusions: ... Open questions: ... Unactioned: ..."
superseded_by_pathstringPath of the doc that supersedes this one (sets status to superseded).
tagsarrayTags from project vocabulary.
titlestringyesDocument title.
typestringyesDocument type. `landscape` is for competitor-audit-skill outputs under docs/landscape/audits/.
visibilitystringVisibility tier. Defaults to "private" (owner-only). "public" = shipped with PAPI (anyone can read); "contributors" = team-member tier (shared with the project cohort). Choose private unless you have…

No output schema declared.

No examples provided.

doc_scan ~66

Scan docs/ and plans directories for unregistered .md files. Returns a list of files not yet in the doc registry. Use this to find docs that need registration.

NameTypeReqDescription
include_plansbooleanAlso scan ~/.claude/plans/ for plan files (default: false).

No output schema declared.

No examples provided.

doc_search ~149

Search the doc registry for documents by type, tags, keyword, or pending actions. Returns summaries, not full content. Use for context gathering in plan, strategy review, and idea dedup.

NameTypeReqDescription
has_pending_actionsbooleanOnly docs with unresolved action items.
keywordstringSearch title and summary text.
limitnumberMax results (default: 10).
since_cyclenumberDocs updated since this cycle.
statusstringFilter by status. Defaults to "active".
tagsarrayFilter by tags (OR match).
typestringFilter by doc type (e.g. "research", "architecture").

No output schema declared.

No examples provided.

get_sibling_ads ~106

Read Active Decisions from sibling PAPI projects that share the same Supabase instance. Requires PAPI_SIBLING_PROJECT_IDS env var (comma-separated project UUIDs). Returns ADs labelled by source project — useful for cross-project architectural alignment. pg adapter only — returns an error if using md or proxy adapter.

NameTypeReqDescription
project_idsarrayOptional explicit list of sibling project UUIDs to query. If omitted, falls back to PAPI_SIBLING_PROJECT_IDS env var.

No output schema declared.

No examples provided.

handoff_generate ~327

Generate BUILD HANDOFFs for cycle tasks that don't have one yet. Run after `plan` (with skip_handoffs=true) or to regenerate stale handoffs. Uses the prepare/apply pattern — first call returns a prompt, second call persists results.

NameTypeReqDescription
cycle_numbernumberThe cycle number returned from prepare phase (mode "apply" only).
forcebooleanRegenerate handoffs for tasks that ALREADY have one, overwriting the stored handoff (default false = only fill in missing handoffs). Use to propagate a changed Active Decision or dependency into an i…
llm_responsestringYour raw output from executing the handoff prompt (mode "apply" only). Must include both Part 1 (markdown) and Part 2 (structured JSON after <!-- PAPI_STRUCTURED_OUTPUT -->). Mutually exclusive with…
llm_response_filestringAbsolute path to a file containing the handoff output (mode "apply" only). Use instead of llm_response when the output exceeds tool parameter size limits. Mutually exclusive with llm_response.
modestring"prepare" returns the handoff prompt for you to execute. "apply" accepts your generated output and persists handoffs. Defaults to "prepare" when omitted.
task_idsarraySpecific task IDs to generate handoffs for. If omitted, generates for all cycle tasks missing handoffs.

No output schema declared.

No examples provided.

hierarchy_update ~161

Update the status of a phase, stage, or horizon in the project hierarchy (AD-14). Accepts a level (phase, stage, or horizon), a name or ID, and a new status. For stages, optionally set exit_criteria — a checklist defining when the stage is considered done. Does not call the Anthropic API.

NameTypeReqDescription
exit_criteriaarrayChecklist defining when this stage is done (stages only). Each item is a completion condition, e.g. "All P0 tasks shipped". Replaces existing criteria.
levelstringyesWhich hierarchy level to update.
namestringyesThe label or ID of the stage/horizon to update.
statusstringThe new status to set.

No output schema declared.

No examples provided.

idea ~692

Capture an idea as a Backlog task. The next plan run will triage and scope it. Use anytime to log bugs, feature requests, or improvements without interrupting the current cycle. IMPORTANT: If this idea originates from a research or planning session, you MUST include a Reference: line in notes pointing to the source doc. Without it, the planner has no context and will misinterpret the intent. Does not call the Anthropic API.

NameTypeReqDescription
complexitystringEstimated complexity. XS = config/one-liner. Small = one file. Medium = 2-5 files. Large = cross-module. XL = architectural. Default: "Small".
discoverybooleanWhen true, classify the idea and route to Discovery Canvas instead of backlog. Default: false (always creates a backlog task).
doc_refstringPath to a reference document (e.g. "docs/research/foo.md"). Stored as a structured field — replaces the fragile "Reference:" line in notes.
epicstringEpic this relates to (default: "Platform").
forcebooleanForce creation even if a high-overlap duplicate or already-done task is detected. Default: false.
modulestringModule this relates to (default: "Core").
notesstringAdditional context, constraints, or reasoning. MANDATORY: If this idea comes from a research or planning session, include a "Reference: <path>" line pointing to the source doc. Tasks submitted withou…
opportunitystringWhat user problem does this solve? Auto-fill from problem context in notes when submitting ideas that describe a user pain point. The planner uses this to cluster backlog tasks by opportunity.
phasestringTarget phase (default: "Unscoped").
prioritystringPriority level. P0 = broken/blocking. P1 = strategically aligned with current goals. P2 = valuable but not urgent. P3 = nice-to-have/speculative. Default: "P2 Medium". Assess based on strategic align…
projectstringProject id (UUID) or slug to write this idea to, overriding the session project for THIS call only. Must be a project on your account — fails closed otherwise. Use project_switch to change the sessio…
textstringyesThe idea — becomes the task title.
typestringTask type. Defaults to "task". Use "bug" for defects, "research" for investigation tasks, "spike" for time-boxed experiments, "discovery" for issues found during a build that need their own task. The…

No output schema declared.

No examples provided.

init ~184

Write the MCP config file that connects this project to PAPI. Generates .mcp.json (Claude Code default) or the equivalent for Cursor, VS Code, Windsurf, OpenCode, Amazon Q, Kilo Code, Gemini CLI, Codex CLI, or Hermes Agent. Config-only — does not create any project data. Run this first, then run `setup` to create your PAPI project.

NameTypeReqDescription
agentstringMCP client to write config for. Default: claude-code. Options: claude-code, cursor, vscode, windsurf, opencode, amazonq, kilo, gemini, codex, hermes.
forcebooleanOverwrite existing .mcp.json if it already exists. Default: false.
project_namestringHuman-readable project name (used in the config comment). Defaults to the directory name.

No output schema declared.

No examples provided.

inventory_sync ~110

Sync this project's harness inventory — skills, sub-agents, hooks, and MCP tools — to the database so the dashboard can surface it. Gated by a cheap change-fingerprint: a no-op when the harness hasn't changed since the last sync. Set force=true to re-scan and write regardless. Runs automatically at setup and release; use this for an explicit refresh after editing your harness.

NameTypeReqDescription
forcebooleanRe-scan and write even if the change-fingerprint is unchanged. Default false.

No output schema declared.

No examples provided.

learning_action ~215

Mark a cycle learning as actioned (linking it to a task or idea) or list unactioned learnings. Use "mark" to close out a learning after you've submitted an idea or created a task for it. Use "list" to see which learnings from recent cycles still need follow-up.

NameTypeReqDescription
action_refstringReference to the action artifact — e.g. task-1234 or idea title (mode "mark" only). Optional.
action_takenstringWhat action was taken on this learning (mode "mark" only).
categorystringFilter by category (mode "list" only).
cycle_numbernumberFilter learnings by cycle number (mode "list" only). Omit to show all recent cycles.
learning_idstringThe learning ID to mark (mode "mark" only).
modestringyes"mark" to record action taken on a learning. "list" to show unactioned learnings.

No output schema declared.

No examples provided.

orient ~394

Session orientation — run this FIRST at session start before any other tool. Single call that replaces build_list + health. Returns: cycle number, task counts by status, in-progress/in-review tasks, strategy review cadence, velocity snapshot, recommended next action, and a release reminder when all cycle tasks are Done but release has not run. Read-only, does not modify any files. PAPI detects build capability from the connecting harness (clientInfo); pass `environment` only to override that detection for git-dependent recommendations (build_execute, release, review_submit).

NameTypeReqDescription
deep_housekeepingbooleanRun expensive cross-referencing checks: board-vs-branch reconciliation, unrecorded commit detection, unregistered doc scan. Default false — orient stays fast and noise-light at session start. Pass tr…
environmentstringCaller environment OVERRIDE. By default PAPI branches git-dependent recommendations on the connecting harness's detected capability — a build-capable harness (local CLI like Codex/opencode, or a sand…
fullbooleanRun the heavy enrichment blocks that the lean default path skips: Research Signals (doc search) and npm version-drift. Default false — the lean path keeps the per-session query count down so orient s…

No output schema declared.

No examples provided.

papi ~360

Say "papi" to check in with Papi — an alias for `orient`. Run this FIRST at session start: it returns your cycle number, task counts, in-progress/in-review work, strategy-review cadence, a velocity snapshot, and the recommended next action. Identical to `orient` (same inputs, same output); use whichever name you prefer. Read-only.

NameTypeReqDescription
deep_housekeepingbooleanRun expensive cross-referencing checks: board-vs-branch reconciliation, unrecorded commit detection, unregistered doc scan. Default false — orient stays fast and noise-light at session start. Pass tr…
environmentstringCaller environment OVERRIDE. By default PAPI branches git-dependent recommendations on the connecting harness's detected capability — a build-capable harness (local CLI like Codex/opencode, or a sand…
fullbooleanRun the heavy enrichment blocks that the lean default path skips: Research Signals (doc search) and npm version-drift. Default false — the lean path keeps the per-session query count down so orient s…

No output schema declared.

No examples provided.

plan ~790

Run once per cycle to select tasks and generate BUILD HANDOFFs. Call after setup (first time) or after completing all builds AND running release for the previous cycle. Returns prioritised task recommendations with detailed implementation specs. NEVER call when unbuilt cycle tasks exist — build and release first. First call returns a planning prompt for you to execute (prepare phase). Then call again with mode "apply" and your output to write results. Use skip_handoffs=true for large backlogs — handoffs are then generated separately via `handoff_generate`.

NameTypeReqDescription
confirm_cancellationsbooleanApply-mode confirmation guard for planner-initiated cancellations (task-1727). When false (default), any boardCorrection with status="Cancelled" is SKIPPED and listed in the response so the user can…
cycle_numbernumberThe cycle number returned from prepare phase (mode "apply" only).
dispatchstring"inline" (default) returns the planning prompt for the calling LLM to execute directly. "subagent" returns a Task() invocation prompt the caller can dispatch to a fresh sub-agent — keeps the heavywei…
epicstringFilter board tasks to only this epic (e.g. "Platform"). Other context is unaffected.
focusstringUser direction for this cycle — what to focus on, which phase/tasks to prioritise, or constraints to respect. Overrides the autonomous priority tier system. Example: "Focus on Schema Model phase 9 ta…
forcebooleanBypass planning guards (unreleased cycle block, strategy review hard-block). Only use when explicitly requested by the user.
handoffs_onlybooleanSkip backlog analysis and task selection. Only generate BUILD HANDOFFs for tasks already assigned to the target cycle. Requires pre-assigned tasks (set cycle number on tasks first). ~30% of normal pl…
llm_responsestringYour raw output from executing the plan prompt (mode "apply" only). Must include both Part 1 (markdown) and Part 2 (structured JSON after <!-- PAPI_STRUCTURED_OUTPUT -->).
llm_response_filestringAbsolute path to a file containing the plan output (mode "apply" only). Use this when the response is too large to pass as a string parameter (some hosts cap inputs around 50KB). The file must be abs…
modestring"prepare" returns the planning prompt for you to execute. "apply" accepts your generated output and persists the results. Defaults to "prepare" when omitted.
modulestringFilter board tasks to only this module (e.g. "Core"). Other context is unaffected.
phasestringFilter board tasks to only this phase (e.g. "Phase 8"). Other context (build reports, ADs) is unaffected.
plan_modestringThe plan mode returned from prepare phase (mode "apply" only).
prioritystringFilter board tasks to only this priority (e.g. "P1 High"). Other context is unaffected.
skip_handoffsbooleanRun full planning (triage, task selection, board management) but skip BUILD HANDOFF generation. Selected tasks are assigned to the cycle without handoffs. Run `handoff_generate` after to create hando…
strategy_review_warningstringThe strategy review warning returned from prepare phase (mode "apply" only). Pass empty string if none.

No output schema declared.

No examples provided.

project_create ~129

Create an EMPTY PAPI project for the current workspace (no plan, no seeded backlog) and return its id. Idempotent: re-running in the same folder (or with the same name) returns the EXISTING project instead of creating a duplicate. Use when "set up papi here" / "create a project" and none matches this folder. No Anthropic API.

NameTypeReqDescription
namestringProject name. Optional on local stdio (defaults to the current folder name); required on the remote transport.
repo_urlstringOptional git remote URL to associate with the project.

No output schema declared.

No examples provided.

project_list ~89

List the PAPI projects on your account (id, name, slug, mapped folder). Use to see which project you are about to write to, or to find the id/slug to pass to project_switch or the per-call `project` arg. No Anthropic API.

NameTypeReqDescription
verbosebooleanWhen true, include the mapped folder (papi_dir) for each project. Default true.

No output schema declared.

No examples provided.

project_switch ~109

Select a project you own by id or slug and map the current folder to it (sets papi_dir on local stdio). Use when "switch to golf" / "point papi at <project>". Fails closed if the project is not on your account. No Anthropic API.

NameTypeReqDescription
projectstringyesThe project id (UUID) or slug to switch to.
remapbooleanWhen true (default) and running locally, stamp the current folder as the project's papi_dir.

No output schema declared.

No examples provided.

release ~350

Cut a versioned release — creates a git tag, generates CHANGELOG.md, and pushes to remote. Pass skipVersion=true to update CHANGELOG and close the cycle without creating a tag or bumping version numbers.

NameTypeReqDescription
branchstringyesThe branch to tag (e.g. "main", "develop").
forcebooleanOverride the release-readiness check and release even if cycle tasks are not Done/Cancelled. Emits a telemetry warning. Use only when you have intentionally moved pending tasks to the next cycle.
gate_resultstringtask-2482 (release quality gate): the result of running the configured gate command (papi.gate / PAPI_GATE). Set this on the SECOND release call AFTER you have run the gate command yourself — "pass"…
observationsarrayOptional dogfood observations from this cycle to persist to the DB. Each entry records friction, methodology signals, or commercial insights.
skipVersionbooleanUpdate CHANGELOG.md and mark the cycle complete, but skip creating a git tag and pushing it. Use when you want cycle closure and changelog tracking without burning a version number. The version param…
versionstringyesThe version tag to create (e.g. "v0.1.0-alpha"). Must start with "v".

No output schema declared.

No examples provided.

review_claim ~92

Claim a Pending Review from the shared cross-user review queue so you are the one reviewing it. Atomic first-claim-wins — two reviewers cannot grab the same build. After claiming, run review_submit to record your verdict. Owner-or-active-member only. Does not call the Anthropic API.

NameTypeReqDescription
task_idstringyesThe In Review task to claim for review, e.g. "task-2072".

No output schema declared.

No examples provided.

review_list ~68

List tasks ready for your sign-off — shows completed builds waiting for approval or feedback. Does not call the Anthropic API.

NameTypeReqDescription
limitintegerOptional maximum number of pending reviews to return. Omit to return all. Reserved for future pagination — current behaviour returns all pending regardless of value.

No output schema declared.

No examples provided.

review_submit ~526

Record a review verdict on a completed build (build-acceptance) or task plan (handoff-review). ALWAYS ask the human for their verdict before calling — never auto-submit without human input. Accept moves the task to Done, request-changes sends it back for rework, reject discards the build. Updates task status based on the verdict. On handoff-review with suggested changes, returns a prompt to revise the BUILD HANDOFF. DO NOT use this tool as a substitute for review_list. If you need to see what is pending review, call review_list first. If review_list is unavailable in your tool set, STOP and tell the human their MCP integration is incomplete rather than guessing at the next pending task. (SUP-2026-010.)

NameTypeReqDescription
auto_reviewobjectOptional automated code review results to attach to this review. Run PR analysis first, then pass findings here.
commentsstringyesYour feedback — what did you think? Every review needs a reason.
dispatchstringtask-1864: set "subagent" (build-acceptance only) to offload code review to a fresh sub-agent. Returns a Task() invocation prompt that feeds the build report + branch diff to the sub-agent, which ret…
handoff_regen_responsestringYour locally-generated BUILD HANDOFF regen output. Pass this to save a handoff that was regenerated in local mode (no API key).
reviewerstringReviewer name (default: "human").
reviewer_confirmedbooleanSet to true to confirm you have reviewed the build (read the build report or the pending list via review_list) before submitting an accept verdict. Required to accept a build-acceptance review unless…
stagestringyesWhich stage is being reviewed.
task_idstringyesThe task ID to review (e.g. "task-200").
verdictstringyesapprove/reject for handoff-review, accept/request-changes/reject for build-acceptance. "accept" = happy with it, "request-changes" = needs tweaks, "reject" = start over.

No output schema declared.

No examples provided.

scope_brief ~105

Decompose a brief-class task (Large/XL, too large to build directly) into a structured scope document. Runs an LLM pass to produce sub-tasks, writes docs/scopes/<task-id>.md, registers it in the doc registry, and marks the source task as decomposed. Use before planning a cycle that includes brief-class tasks.

NameTypeReqDescription
task_idstringyesID of the brief-class task to decompose (e.g. "task-042").

No output schema declared.

No examples provided.

setup ~705

Create a new PAPI-tracked project — generates your Product Brief, Active Decisions, and CLAUDE.md workflow instructions. Run after configuring your MCP credentials (via `init` or manually from getpapi.ai). Only project_name is required — description and target_users are derived from README, package.json, and commit history when omitted. Set existing_project: true to adopt an existing codebase. ADOPTING AN EXISTING PROJECT OVER A REMOTE/HOSTED CONNECTOR (no local stdio install): PAPI cannot read your filesystem, so YOU (the client) must gather a `codebase_scan` and pass it in — list top-level dirs/files, the package manifest, the README (first ~3000 chars), and recent commit subjects. Without it, adoption falls back to asking for description/target_users. On a local stdio install PAPI scans the tree itself, so `codebase_scan` is optional there. First call returns prompts (prepare phase), then call again with mode "apply" and your outputs. After setup, run `plan` to start your first cycle.

NameTypeReqDescription
ad_seed_responsestringYour generated AD seed JSON array (mode "apply" only). Optional.
brief_responsestringYour generated Product Brief markdown (mode "apply" only).
codebase_scanobjectClient-gathered scan of the user's codebase for existing_project adoption. REQUIRED for adoption over a remote/hosted connector (PAPI cannot read your filesystem there); optional on a local stdio ins…
constraintsstringTechnical or business constraints (e.g. "must use PostgreSQL", "HIPAA compliant").
conventions_responsestringYour generated conventions markdown to append to CLAUDE.md (mode "apply" only). Optional.
deployment_targetstringDeployment environment. Optional — defaults to "cloud".
descriptionstringWhat the project does — one or two sentences. Optional: PAPI will derive this from README, package.json, and recent commit history when omitted.
existing_projectbooleanSet to true when adopting an existing codebase. PAPI will scan the project structure and generate context-aware setup artifacts.
forcebooleanSet to true to overwrite an existing Product Brief. Defaults to false.
initial_tasks_responsestringYour generated initial tasks JSON array (mode "apply" only, existing_project only).
modestring"prepare" returns prompts for brief/AD/convention generation. "apply" accepts your outputs. Defaults to "prepare" when omitted.
problemsstringKey problems it solves. Optional — PAPI will infer from description if omitted.
project_namestringyesName of the project.
project_typestringProject archetype. Optional — defaults to "other", PAPI recommends based on description.
sourcesstringComma-separated local file paths to reference docs (briefs, specs, READMEs) that provide additional project context. Only used with existing_project: true.
target_usersstringWho is this for? Role and context. Optional: PAPI will derive this from README and project context when omitted.
team_sizestringTeam size. Optional — defaults to "solo".

No output schema declared.

No examples provided.

strategy_agenda ~192

Queue topics for the next strategy review. Topics surface as input in the next `strategy_review` prepare phase and are automatically marked as addressed after the review completes. Two modes: "add" to queue a topic, "list" to see pending topics. Use this when you spot a strategic question during a build — capture the topic now instead of losing it.

NameTypeReqDescription
modestring"add" to queue a topic (requires `topic`). "list" returns all pending topics. Defaults to "list" when omitted.
sourcestringOptional origin label — e.g. "manual", "carry-forward", "idea". Defaults to "manual".
source_cyclenumberOptional cycle number this topic originated from (mode "add" only).
topicstringThe topic to queue (mode "add" only). One sentence describing what the next strategy review should consider.

No output schema declared.

No examples provided.

strategy_change ~385

Apply a strategic shift to the project. Three modes: "capture" for lightweight mid-conversation decision capture (no LLM round-trip), "prepare" to get a change prompt for full analysis, "apply" to persist analysis output. Use "capture" when you detect a strategic decision in conversation and want to persist it quickly without disrupting the build flow. In "capture" mode, pass north_star to directly set/update the project North Star (no decision text needed).

NameTypeReqDescription
ad_bodystringFull AD body in markdown format including ### heading (mode "capture" only). If omitted, a body is auto-generated from the text field.
ad_idstringExisting AD ID to update (mode "capture" only). Omit to create a new AD.
confidencestringConfidence level for the AD (mode "capture" only). Defaults to MEDIUM.
confidence_onlybooleanWhen true (mode "capture" + ad_id required), only update the confidence level — leave the AD body unchanged. Use when evidence strength changes but the decision itself hasn't shifted.
cycle_numbernumberThe cycle number from prepare phase (mode "apply" only).
llm_responsestringYour raw output from executing the change prompt (mode "apply" only).
modestring"capture" for lightweight direct persistence (no LLM needed). "prepare" returns the change prompt. "apply" accepts your output. Defaults to "prepare" when omitted.
north_starstringmode "capture" only — set/update the project North Star statement directly. orient and the project foundation read it. No decision text required when this is provided.
textstringDescription of the strategic shift to apply (e.g. "Pivot from B2C to enterprise B2B").

No output schema declared.

No examples provided.

strategy_review ~393

Run a Strategy Review — assesses project direction, velocity, and Active Decisions. Produces recommendations and potential AD updates that feed into the next plan. Offered every 5 cycles; hard-blocked at 7+ overdue cycles. Run it in your current conversation — only start a fresh one if you are genuinely under context pressure (your host just compacted, you are near the context limit, or the session is heavy with build context), not just because a review is next. First call returns a review prompt for you to execute (prepare phase). Then call again with mode "apply" and your output. Pass `force: true` to run before the cadence gate.

NameTypeReqDescription
cycle_numbernumberThe cycle number from prepare phase (mode "apply" only).
dispatchstring"inline" (default) returns the review prompt for the calling LLM to execute directly. "subagent" returns a Task() invocation prompt to dispatch the heavyweight reasoning to a fresh sub-agent. The app…
forcebooleanBypass the 5-cycle cadence gate and run an early review. Use when you need a strategy review before the regular cadence — e.g. after a major pivot, unexpected blockers, or when recent builds have sig…
llm_responsestringYour raw output from executing the review prompt (mode "apply" only).
llm_response_filestringAbsolute path to a file containing the review output (mode "apply" only). Use this when the response is too large to pass as a string parameter (some hosts cap inputs around 50KB). The file must be a…
modestring"prepare" returns the review prompt. "apply" accepts your output. Defaults to "prepare" when omitted.

No output schema declared.

No examples provided.

task_claim ~113

Claim a task from the shared org Pool into your personal backlog (assignee = you). Atomic first-claim-wins — a concurrent double-claim is impossible. Cascades the DEPENDS ON chain: claiming a task also claims its not-Done prerequisites; if any prerequisite is already claimed by another member the whole claim is refused (a build unit is never split across owners). Does not call the Anthropic API.

NameTypeReqDescription
task_idstringyesThe task to claim, e.g. "task-2071".

No output schema declared.

No examples provided.

task_move ~186

Move a task from the current project to another project you own. Reassigns the task a fresh id in the target (collision-free) and carries its build reports, comments, and history with it; the cycle assignment is cleared so it lands in the target project's backlog. You must own (or have write access to) BOTH projects. Destructive-ish and cross-project, so it requires confirm=true — without it you get a preview only. Does not call the Anthropic API.

NameTypeReqDescription
confirmbooleanSet true to perform the move. Omit (or false) to get a preview of what would happen.
target_projectstringyesThe destination project — its slug (e.g. "papi-ui") or UUID. Must be a project you own.
task_idstringyesThe task to move, e.g. "task-2292".

No output schema declared.

No examples provided.

task_unclaim ~84

Release a task you claimed back to the shared Pool (clears assignee). Claimer-only and pre-review — you cannot unclaim another member's task or one that has reached In Review/Done. Does not cascade. Does not call the Anthropic API.

NameTypeReqDescription
task_idstringyesThe task to unclaim, e.g. "task-2071".

No output schema declared.

No examples provided.

zoom_out ~237

Run a Zoom-Out Retrospective — a higher-level meta-retrospective that sits above strategy reviews. Analyses the full project arc: every cycle, decision, and pivot. Use when you want to step back and see the big picture after many cycles. First call returns a prompt (prepare phase). Then call again with mode "apply" and your output.

NameTypeReqDescription
cycle_numbernumberThe cycle number from prepare phase (mode "apply" only).
dispatchstring"inline" (default) returns the retrospective prompt for the calling LLM to execute directly. "subagent" returns a Task() invocation prompt to dispatch the heavyweight reasoning to a fresh sub-agent.…
llm_responsestringYour raw output from executing the retrospective prompt (mode "apply" only).
modestring"prepare" returns the retrospective prompt. "apply" accepts your output. Defaults to "prepare" when omitted.

No output schema declared.

No examples provided.