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

Progressor

NPM · PROGRESSOR-MCP

Keeps an AI coding agent on its plan across context compression, with a live local dashboard.

Available components

+4 this week 86 Trust /100

Last scanned (3 hours ago)

Scores higher than 90% of npm servers

Category Memory and Knowledge

Trust breakdown (7 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 → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to racstan/progressor-mcp). View diagnostics → Pass
  • Clear OSI-approved license (GPL-3.0-or-later).Pass
  • Actively maintained (last published 2 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability77
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7135 tokens (~203/item across 35 items; 35 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 Management46
  • Stability check failed: the tool surface changed between 0.4.1 and 1.2.1: 2 tool removals, 0 breaking changes, 18 additions. See how to fix → Fail
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 96% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "drop_goal" implies "drop" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 36 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
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.

  • 5 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 43 to 46.

  • 3 Nov 26 +26
    • Malware scan: unverified → pass ▲ security
    • Known CVEs: unverified → pass ▲ security
    • Dependency health: unverified → 0.85 ▲ functional
  • 2 Nov 26 −14
    • Malware scan: pass → unverified ▼ security
    • Known CVEs: unverified → pass ▲ security
    • Dependency health: unverified → 0.85 ▲ functional
    • Package version: 1.2.0 → 1.2.1 functional
  • 1 Nov 26 +5
    • Known CVEs: pass → unverified ▼ security
    • Stability: fail → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Malware scan: unverified → pass ▲ security
    • Dependency health: 0.85 → unverified ▼ functional
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Package version: 1.1.0 → 1.2.0 functional
    • Package version: 1.1.0 → 1.1.1 functional
  • 31 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
    • Package version: 1.0.0 → 1.1.0 functional
  • 30 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 26.

  • 28 Oct 26 +1
    • Stability: fail → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Schema quality: 5311 → 7003 ▼ functional
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Package version: 0.9.0 → 1.0.0 functional
  • 27 Oct 26 +26
    • Malware scan: unverified → pass ▲ security
    • Known CVEs: unverified → pass ▲ security
    • Dependency health: unverified → 0.85 ▲ functional
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 5 Nov 2026 · Analysed npm/progressor-mcp@1.2.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo racstan/progressor-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/racstan/progressor-mcp/.github/workflows/release.yml@refs/tags/v1.2.1
Rekor log index 3637390484
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:e72e62f067485b1fe22328634fffea5318c97bbf790b0db6caba3adea5f714581dc6eb7d1b9d9139eceef43bc1d31eb615d181247d7a9429972f69ee3

Background: How many MCP packages publish verified provenance →

Dependencies 92 packages
Packages resolved 92
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 35 exposed · ~6,328 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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_decision ~151

Record a choice made for a claimed Goal along the way, such as 'old models get thinking on/off only', so it survives context compression; get_status shows it. Not for lasting project rules (add_standing_instruction) or project-wide background (update_context).

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.
textstringyesThe decision, in one line.

No output schema declared.

No examples provided.

add_goal ~379

Add a Goal to the end of the Roadmap, with an optional Task list and Outcome; with claim: true, also claim it to start work. A title another Goal already has is refused unless allow_duplicate is set. To record work already finished, set done on the Goal and on every Task. Plan each Goal with an Outcome (one sentence on what done looks like) and Tasks that each have a short title, the files they touch, a one-line summary and an estimate. Tell the Developer the plan in a few plain lines first. With claim: true the answer is the whole status.

NameTypeReqDescription
allow_duplicateboolean–Add the Goal even though another Goal has the same title.
claimboolean–Claim the new Goal straight away, to start working on it.
doneboolean–Record a Goal that is already finished. Every Task must then have done: true.
estimatestring–How long the whole Goal should take, such as '6h', when its Tasks are not estimated one by one yet. Without it, the Goal's estimate is the sum of its Tasks'.
idstring–A short ID for the Goal's refs, such as 'web-ui': lowercase letters, digits and dashes. Made from the title when left out.
outcomestring–What done looks like, in one sentence, such as 'Users can sign in with Google and stay signed in for 30 days'.
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.
tasksarray––
titlestringyesA few words naming the Goal, such as 'Ship OAuth login'.

No output schema declared.

No examples provided.

add_hand_test ~203

Add something only the Developer can try by hand to a claimed Goal, such as 'OpenCode may ask permission to read an attached file: allow it and check the reply'. Put it here instead of in your chat summary: the Developer sees the Goal's hand-test list on the dashboard and marks each one there as works, doesn't work (with a note) or won't test. A failure adds a Task to the Goal by itself; get_status shows what is still open and the new marks. complete_goal with tests unmarked leaves the Goal waiting on them, and it finishes when the last is marked.

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
taskstring–The ID of the Task it is about, such as 't3'.
textstringyesWhat to try and what to look for, in one or two short plain sentences.

No output schema declared.

No examples provided.

add_note ~144

Note something you spotted that belongs to a Goal, such as a bug found during cleanup that belongs to the Voice Goal, instead of dealing with it now. Any Goal on the Roadmap that is not dropped, claimed or not. get_status shows the open notes of the Goals this Session holds.

NameTypeReqDescription
goalstringyesThe ID of the Goal the note belongs to.
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.
textstringyesWhat you spotted, in one line.

No output schema declared.

No examples provided.

add_standing_instruction ~182

Save a lasting rule from the Developer about how you should work in this project, such as 'ask me before changing the plan'. get_status lists it from then on. Use it only for rules meant to last; a one-off request is just done.

NameTypeReqDescription
hardboolean–true for a rule that must never be broken (not just a preference); get_status, the session start and get_rules list those first as HARD RULE.
helpers_at_onceinteger–Makes this rule the project's helper limit: the most Tasks that may be 'with a helper' at once, such as 2 when the Developer says 'at most 2 helpers in parallel'. One rule holds the limit; setting it…
textstringyesThe rule, in the Developer's words where possible.

No output schema declared.

No examples provided.

add_tasks ~159

Append Tasks to the claimed Goal's plan, each with an estimate of how long it takes. For work that is not part of the plan, declare a Detour instead. Set done on a Task that is already finished: a small change you have made is recorded in this one call, with hand_test for what the Developer should try.

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.
tasksarrayyes–

No output schema declared.

No examples provided.

ask_developer ~254

Ask the Developer a question on the dashboard, with 2 to 4 short choices they can click (they can also answer in their own words), instead of stopping in the chat. Use it for product and UX choices only they can make; carry on with other work meanwhile. Their answer reaches you at your next Progressor call, under 'New from the Developer', and is kept as a decision on the Goal. While a question is open the dashboard shows the Goal as waiting on them. To take back a question that no longer needs an answer, pass withdraw with its ID instead.

NameTypeReqDescription
choicesarray–2 to 4 short answers to pick from, such as ['On by default', 'Follow the computer'].
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
questionstring–The question, in one plain sentence a non-programmer understands.
taskstring–The ID of the Task it is about, such as 't3'.
withdrawstring–The ID of an open question to withdraw (such as 'q2'), instead of asking a new one.

No output schema declared.

No examples provided.

attach_picture ~263

Show the Developer a screenshot or a short screen recording on the dashboard instead of naming a file in chat. It is copied (not moved) next to the plan, stays on this computer and out of git, and appears on the Goal, on the step or on the hand test you name; the Developer clicks it to enlarge. Allowed: .png .jpg .jpeg .webp .gif and .webm .mp4, up to 10 MB, with a short caption. To take one back, pass remove with its ID (such as 'p2') instead.

NameTypeReqDescription
captionstring–What it shows, in a few plain words (up to 200 characters).
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
hand_teststring–The ID of the hand test it is about, such as 'h2'.
pathstring–The file's path, absolute or from the project's folder.
removestring–The ID of a picture to remove (such as 'p2'), instead of attaching one.
taskstring–The ID of the Task it is about, such as 't3'.

No output schema declared.

No examples provided.

claim_goal ~122

Claim a Goal for this Session, so only this Session works on it. The Session keeps any other Goals it holds; while it holds several, pass goal to the tools that change one. Fails if another running Session holds it. Claiming a done Goal reopens it: its finished Tasks stay done, and add_tasks adds the new work to the same list.

NameTypeReqDescription
goalstringyesThe Goal ID, such as 'ship-oauth-login'.
takeoverboolean–Take the Goal from another running Session. Only when the Developer asks for it.

No output schema declared.

No examples provided.

claim_resource ~319

Claim a named shared resource that only one session or helper can use at a time (a dev window that allows a single instance, plasmashell, a port), before you or a helper start something that needs it. Refused, saying who holds it, since when and why, when someone else has it: then do not start it; do other work and try again later (nothing waits for you). Claiming your own resource again refreshes its time. It frees itself after `minutes` (30 unless given, at most 240) from the last claim, when its Session ends, or when you release it. A helper usually cannot call Progressor: claim on its behalf before you start it, with label such as 'helper: media run', and call release_resource when it hands back.

NameTypeReqDescription
labelstring–Who it is held for when that is not this Session itself, such as 'helper: media run'. Claim and release a helper's lock with the same label.
minutesnumber–How long to keep it before it frees itself, from now. 30 if omitted; claim again to extend.
reasonstringyesWhy you need it, in a few words, such as 'running the UI test'. Shown to whoever is refused.
resourcestringyesThe shared thing's name, such as 'dev-window' or 'plasmashell'. Case and spaces do not matter.
taskstring–The Task ID it is for, such as 't3'.

No output schema declared.

No examples provided.

complete_goal ~236

Mark the claimed Goal done and release it, once its Outcome is true and its Tasks are done, released or dropped (not with a helper, waiting on the Developer or only checked). While the Developer still has hand tests (add_hand_test) to mark, the Goal is released as built and waiting on their tests instead: it finishes by itself when they mark the last one, and a failure reopens it with a new Task. unmarked_hand_tests_ok finishes it now, only when the Developer says to finish anyway. If more work turns up later, claim_goal reopens it.

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.
unmarked_hand_tests_okboolean–Finish now even though some hand tests are still not marked by the Developer. Only when the Developer says to finish anyway.

No output schema declared.

No examples provided.

complete_task ~267

Mark a Task of the claimed Goal done, recording the files it touched. When what you built differs from the summary (a part left out, done another way, put somewhere else), pass the new summary so the plan matches the work. Works whether or not the Task was started; to finish several, use update_tasks. Answers briefly, with the time it took and where the work stands. For a Task that turned out unnecessary, use drop_task instead; to change a Task without finishing it, use update_task.

NameTypeReqDescription
codearray–Files the Task touched, optionally with :line; added to the ones it has.
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.
summarystring–One or two sentences on the fix or change the Task makes, such as 'Callback re-sets the session cookie on every hit; only set it after token exchange.'
taskstringyesThe Task ID, such as 't3'.

No output schema declared.

No examples provided.

drop_goal ~95

Drop a Goal that will not be done, with the reason; its Plan File stays as a record. Releases this Session's Claim on it. A Goal another running Session holds, or one already done, cannot be dropped. To drop a single Task, use drop_task.

NameTypeReqDescription
goalstringyesThe Goal ID, such as 'ship-oauth-login'.
reasonstringyesWhy the Goal will not be done.

No output schema declared.

No examples provided.

drop_task ~123

Drop one Task of the claimed Goal that is no longer needed, with the reason; it stays in the Plan File, struck through. To replace the whole remaining plan, end a Detour with 'recalibrate' instead; to drop the whole Goal, use drop_goal.

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
reasonstringyesWhy the Task is no longer needed.
taskstringyesThe Task ID, such as 't3'.

No output schema declared.

No examples provided.

end_detour ~129

End the open Detour. 'merge back': it was small and is done; the plan is unchanged. 'return': go back to the plan, appending `tasks` for the Detour's intended work if any. 'recalibrate': drop every remaining Task and replace them with `tasks`.

NameTypeReqDescription
endingstringyes–
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
tasksarray–Tasks to append (return) or the new Task list (recalibrate).

No output schema declared.

No examples provided.

get_item ~104

Look up one Goal, Task, Detour, decision, note or Standing Instruction by its ref (progressor://<goal>/<item>, or progressor://roadmap/<instruction>), with its file and line. Use it when the Developer pastes a ref or you need one item's details; for where the work stands overall, use get_status.

NameTypeReqDescription
refstringyesA ref such as progressor://login/t2 or progressor://roadmap/i1.

No output schema declared.

No examples provided.

get_rules ~47

The project's Standing Instructions as a block to paste into the brief of a helper agent you start, hard rules first. Helpers don't see the Standing Instructions, so include this block whenever you brief one.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_status ~125

Compact summary of every Goal this Session holds (current Task, open Detour, Tasks with a helper or waiting on the Developer, next Task, decisions and open notes) and the Developer's Standing Instructions. Call it at the start of every conversation and after context compression. With project, another project's Goals and Tasks instead, to change them from here.

NameTypeReqDescription
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.

No output schema declared.

No examples provided.

list_resources ~44

Who holds which shared resource now, for how long, and why. get_status shows the same. Resources whose time is up or whose Session has ended are free and not listed.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

move_goal ~175

Move a Goal right before or after another Goal, so the Roadmap lists the work in the order it should happen. Give exactly one of before and after. The dashboard lists the Goals that need the Developer (things to try, steps to check, questions) in this order too, so put the one they should check first in front.

NameTypeReqDescription
afterstring–The ID of the Goal to move it behind.
beforestring–The ID of the Goal to move it in front of.
goalstringyesThe Goal ID, such as 'ship-oauth-login'.
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.

No output schema declared.

No examples provided.

move_task ~221

Move a Task of a claimed Goal to another Goal when it belongs there. It keeps its title, summary, files and state, gets a new ID at the end of the other Goal's list (or right before or after the Task given in before or after) and a 'moved from' line. In the old Goal it stays as a dropped Task whose reason is where it went, so refs and history still work. The other Goal must not be dropped, done or held by another running Session; a Task in progress can move only if the other Goal has none in progress.

NameTypeReqDescription
afterstring–A Task ID in the other Goal to put it behind.
beforestring–A Task ID in the other Goal to put it in front of.
goalstring–The claimed Goal the Task is in. Needed only when this Session holds several Goals.
taskstringyesThe Task ID, such as 't3'.
to_goalstringyesThe ID of the Goal to move the Task to.

No output schema declared.

No examples provided.

release_goal ~54

Release this Session's Claim on a Goal, leaving it paused for a later Session.

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.

No output schema declared.

No examples provided.

release_resource ~166

Release a shared resource you claimed with claim_resource, as soon as the work that needed it ends (including a helper's: release it when the helper hands back). Pass the same label you claimed it with. Another holder's resource is refused, unless force is given, which is only for when the Developer says the holder is gone.

NameTypeReqDescription
forceboolean–Release it even though someone else holds it. Only when the Developer asks.
labelstring–Who it is held for when that is not this Session itself, such as 'helper: media run'. Claim and release a helper's lock with the same label.
resourcestringyesThe shared thing's name, such as 'dev-window' or 'plasmashell'. Case and spaces do not matter.

No output schema declared.

No examples provided.

reply_to_developer ~186

Answer a message the Developer sent you on the dashboard (shown under 'New from the Developer' with its ID, such as m2): say in a sentence or two, in plain words, what you did or will do about it. The reply shows under their message on the dashboard. Reply to every message, even if only to say you will do it later. A message to the whole project is answered with whole_project: true and needs no Goal.

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
messagestringyesThe message ID, such as 'm2'.
replystringyesYour answer, in plain words for someone who doesn't code.
whole_projectboolean–True for a message to the whole project rather than to a Goal.

No output schema declared.

No examples provided.

set_task_state ~531

Set a Task's state. 'with a helper': handed to a helper agent that is working on it (several Tasks can be). 'waiting on you': you are waiting on the Developer, such as for them to test something by hand; the dashboard shows the Goal as waiting on them, so tell them what you need. 'checked': you checked a helper's work (tests, review) but it is not merged or released yet; give evidence, one short line on what you checked ("715 passed, live send OK"), which the Developer sees on the step. With 'with a helper', give helper_branch, helper_folder (the worktree path) and helper_label: they are recorded with the Task and shown in get_status and on the dashboard, and get_status warns when a finished Task's helper branch still has unmerged work. 'released': merged and out (shipped, installed or published); counts as done. 'pending', 'in progress' and 'done' work too (in progress follows start_task's one-at-a-time rule). Set a state as soon as it changes, such as 'checked' right after you check a helper's work, so the Developer's dashboard keeps moving. If the project has a helper limit (get_status shows it), keep at most that many Tasks with a helper: one more is still set, with a warning. To drop a Task, use drop_task.

NameTypeReqDescription
evidencestring–With state 'checked': one short line on what you checked, such as '715 passed, live send OK'. Give it: the Developer sees it on the dashboard step.
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
helper_branchstring–With state 'with a helper': the git branch the helper works on, such as 'feat/export'. Recorded so a branch left behind can be found later.
helper_folderstring–With state 'with a helper': the helper's worktree folder (its path).
helper_labelstring–With state 'with a helper': a label for the helper, such as the model it runs on ('Sonnet').
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.
statestringyes–
taskstringyesThe Task ID, such as 't3'.

No output schema declared.

No examples provided.

start_detour ~107

Declare that the work is splitting off from the planned Tasks, before doing it. Branches from the current Task. Only one Detour can be open.

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
reasonstringyesWhy the work has to split off from the plan now.
titlestringyesWhat the Detour does, such as 'Fix flaky token refresh'.

No output schema declared.

No examples provided.

start_task ~110

Mark a Task in progress: you are working on it yourself; call it before you change code for the Task. Answers briefly, with where the work stands. Only one Task of a Goal can be in progress at a time; for Tasks in other hands, use set_task_state.

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
taskstringyesThe Task ID, such as 't3'.

No output schema declared.

No examples provided.

update_context ~112

Replace the project's Important context: lasting background you and the Developer need in every conversation, such as what the project is, key facts, where things live and choices that hold for the whole project. Not for rules (add_standing_instruction) or for one Goal's details. get_status shows the current text: send the whole new text, or an empty text to clear it. At most 4000 characters.

NameTypeReqDescription
textstringyesThe whole Important context, in plain words; short paragraphs or a list.

No output schema declared.

No examples provided.

update_decision ~101

Reword a decision of a claimed Goal, or remove it with an empty text. The IDs (c1, c2...) are in get_status.

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
idstringyesThe decision ID, such as 'c2'.
textstringyesThe new wording; empty to remove the decision.

No output schema declared.

No examples provided.

update_goal ~198

Rename a Goal, set its Outcome or its estimate. Its ID, refs and Plan File stay the same, and it needs no Claim. To change a Goal's Tasks, claim it and use add_tasks, update_task or drop_task.

NameTypeReqDescription
estimatestring–How long the whole Goal should take, such as '6h'; it covers the open Tasks that have no estimate of their own. An empty string removes it, so the Goal's estimate is the sum of its Tasks'.
goalstringyesThe Goal ID, such as 'ship-oauth-login'.
outcomestring–The new Outcome; an empty string removes it.
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.
titlestring–The new title.

No output schema declared.

No examples provided.

update_hand_test ~142

Reword a hand test of the claimed Goal, change which Task it is about, or remove it with an empty text (for one that turned out not to need testing). Its mark from the Developer stays; only the Developer marks tests.

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
idstringyesThe hand test ID, such as 'h2'.
taskstring–The ID of the Task it is about; an empty string removes the link.
textstring–The new wording; empty to remove the hand test.

No output schema declared.

No examples provided.

update_note ~152

Resolve a note once it is dealt with (resolved: true), reopen it (false), reword it, or remove it with an empty text.

NameTypeReqDescription
goalstringyesThe ID of the Goal the note belongs to.
idstringyesThe note ID, such as 'n2'.
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.
resolvedboolean–true once the note is dealt with; false to reopen it.
textstring–The new wording; empty to remove the note.

No output schema declared.

No examples provided.

update_standing_instruction ~242

Reword a Standing Instruction when the Developer changes a rule, make it a hard rule (hard: true) or an ordinary one again (hard: false), set or change the helper limit it holds (helpers_at_once), or remove it with an empty text when they drop it. Give any of text, hard and helpers_at_once; what you leave out stays. The IDs (s1, s2...) are in get_status.

NameTypeReqDescription
hardboolean–true for a rule that must never be broken (not just a preference); get_status, the session start and get_rules list those first as HARD RULE.
helpers_at_onceinteger–Makes this rule the project's helper limit: the most Tasks that may be 'with a helper' at once, such as 2 when the Developer says 'at most 2 helpers in parallel'. One rule holds the limit; setting it…
idstringyesThe Standing Instruction ID, such as 's2'.
textstring–The new wording; empty to remove the rule. Left out, the wording stays.

No output schema declared.

No examples provided.

update_task ~251

Change a Task's title, summary, files or estimate, for instance when the fix turns out different from the plan or you learn it takes longer. Leaves its status alone.

NameTypeReqDescription
codearray–The Task's files, optionally with :line; replaces the ones it has.
estimatestring–The Task's new estimate, such as '45m' or '2h'; an empty string removes it.
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.
summarystring–One or two sentences on the fix or change the Task makes, such as 'Callback re-sets the session cookie on every hit; only set it after token exchange.'
taskstringyesThe Task ID, such as 't3'.
titlestring–A short title for the Task, a few words, such as 'Fix callback redirect loop'.

No output schema declared.

No examples provided.

update_tasks ~234

Change several Tasks in one call, such as completing two and starting the next, or setting the estimates of several, instead of one call each. The operations are applied in order, so a start can follow the complete of the Task that was in progress; if any one fails, none is applied. A 'state' operation takes the same helper_branch, helper_folder, helper_label (with 'with a helper') and evidence (with 'checked') as set_task_state. Each operation can name its own claimed Goal with goal, else the call's goal (or the only Goal held) is used. The recommended way to change more than one Task. Answers with one line per call, not the whole status.

NameTypeReqDescription
goalstring–The claimed Goal's ID, such as 'ship-oauth-login'. Needed only when this Session holds several Goals.
operationsarrayyes–
projectstring–Another project's plan to use instead of this one's: its name or ID on the dashboard, or its folder's full path. Changes there are marked as made from this project. Leave out for this project.

No output schema declared.

No examples provided.

Install

How do I install the Progressor MCP server?

Progressor runs locally as an npm package, launched with npx -y progressor-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · progressor-mcp

# add to Claude Code
claude mcp add racstan-progressor-mcp -- npx -y progressor-mcp
Common questions

What is the Progressor MCP server?

Progressor is an MCP server listed in the public MCP registry as io.github.racstan/progressor-mcp. Keeps an AI coding agent on its plan across context compression, with a live local dashboard. This page covers its npm package (progressor-mcp).

Is the Progressor MCP server safe to use?

Progressor scores 86 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Progressor MCP server expose?

Progressor exposes 35 tools: get_status, get_item, get_rules, add_goal, update_goal, and 30 more. Their descriptions and schemas cost roughly 6,328 tokens of context every time the server is loaded.

Is the Progressor MCP server still maintained?

Progressor is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Progressor MCP server under?

Progressor declares the GPL-3.0-or-later licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.