01Install
One line per host. The endpoint speaks MCP over streamable HTTP and needs no key: the first call opens a sign-in page, you type your email and click the link we send. No password, no card.
claude mcp add --transport http prodready https://mcp.prodready.si/mcp --scope user
Drop --scope user to add it to the current project only. Check it with /mcp inside Claude Code.
codex mcp add prodready --url https://mcp.prodready.si/mcp
Or, in ~/.codex/config.toml: [mcp_servers.prodready] then url = "https://mcp.prodready.si/mcp"
{"mcpServers":{"prodready":{"url":"https://mcp.prodready.si/mcp"}}}
Project-local instead: .cursor/mcp.json in the repository root, same shape.
{"mcpServers":{"prodready":{"serverUrl":"https://mcp.prodready.si/mcp"}}}
Windsurf names the key serverUrl for remote servers, not url. Open it from Cascade → MCP servers → Manage → View raw config.
{"mcpServers":{"prodready":{"type":"streamableHttp","url":"https://mcp.prodready.si/mcp"}}}
Set type explicitly — Cline will otherwise guess the transport.
Settings → Connectors → Add custom connector, name it prodready, paste https://mcp.prodready.si/mcp, Add. In a chat, open the tools menu (the +) and switch prodready on. The first call opens the sign-in page.
Settings → Connectors → Add custom connector, name it prodready, paste https://mcp.prodready.si/mcp, Add; then enable it in the chat's tools menu. Available on Pro, Max, Team and Enterprise plans.
A claude.ai chat cannot run commands in your repository, so the scan itself needs a coding agent (Claude Code, Codex, Cursor). From claude.ai you can ask for help, the licence, the status of an SDLC project and its report.
An Owner or Admin adds it once for everyone: Admin settings → Connectors → Add custom connector, paste https://mcp.prodready.si/mcp. Each member then switches it on under their own Settings → Connectors and signs in with their work email — that email is the licence holder for the SDLC.
{"mcpServers":{"prodready":{"type":"http","url":"https://mcp.prodready.si/mcp"}}}
Put it in .mcp.json at the root of the repository and every teammate's Claude Code picks it up (approve once when asked). The one-line claude mcp add above works in the app's terminal too; /mcp shows the connection and lets you sign in again.
{"type":"mcp","server_label":"prodready","server_url":"https://mcp.prodready.si/mcp","require_approval":"never"}
Add it to the tools array of a Responses call. Leave require_approval off if you want to see each tool call before it runs.
npx -y mcp-remote https://mcp.prodready.si/mcp
Older hosts without remote transport — and Cursor, Windsurf or Cline builds that do not take a URL — bridge through this as a normal stdio command.
Once it is installed you do not call the tools by name. Ask in plain language — is my app production-ready? — and your host picks them up on its own. The tool names on this page are what your agent calls, not what you type.
02Sign in
The first tool call opens a browser tab. That tab is the whole account: an email address, and nothing to remember.
Installing does not sign you in. In Claude Code the prodready tools stay hidden until you do: start claude, type /mcp, pick prodready and choose Authenticate. In Codex, run codex mcp login prodready. In Cursor, Windsurf and Cline the first start opens the sign-in; click Needs login if it shows. For a connector, click Connect.
- Type your email on the sign-in page. The page is good for ten minutes.
- Open the email. It carries a one-time link and a 6-digit code. Both are good for fifteen minutes.
- Click the link in the same browser where the sign-in started. The link is bound to that browser, so a link someone else asked for cannot connect their app to your account. Reading the mail on another device? Type the 6-digit code into the sign-in page instead. Five wrong codes close the sign-in; start again from your host.
- Approve the connection. The consent page shows the name the app gave itself, marked not verified, and — large — where access goes. Approve only if that is the app you just started from. Otherwise press Cancel.
- Back in your host. It receives an access token (24 hours) and a refresh token (90 days, replaced on every use). No password, no card.
The contact record
Connecting creates a contact record at Innovate d.o.o.: your email, the time and the host name. Nothing else. The same email is the account the SDLC licence and your projects are bound to.
Revoking access
Remove the server from your host (claude mcp remove prodready in Claude Code, or the host's own settings). The host drops its tokens, and hosts that support it revoke them at /oauth/revoke. An access token already issued stops working within 24 hours; an unused refresh token is dead after 90 days. To connect again, add the server again and sign in.
Limits: five sign-in links per email per hour, thirty per network address. Past that the page says “Too many links requested. Try again in an hour.”
03The free scan
Say it in plain words:
In Claude Code you can also type /prodready:scan. Then, in order:
- Your agent calls
prodready_probeand gets back the read-only commands for your stack. - It runs them in your repository, on your machine.
- It hands the counts and paths to
prodready_assess. - You get a 0–100 score with a grade, the findings with their consequences, what could not be evaluated, and a link to the report page.
The server is remote and cannot see your disk, so it does not guess and it does not ask for your code. Nothing leaves your machine but counts, file paths and identifier names.
Then the due diligence — 18 dimensions, free
The scan is the first half of the end-to-end due diligence. The second half is the technical review our own team runs: eighteen dimensions — architecture, code quality, security posture, data architecture, infrastructure, API design, frontend, dependencies, scalability, load performance, technical debt, observability, documentation, accessibility, release management, compliance signals and cost — each scored 1 to 5 against its checklist, every finding with a file and line.
Say it in plain words:
In Claude Code: /prodready:dd. Then, in order:
- If the scan has not run in this session, your agent runs it first.
- It calls
prodready_dd_briefper dimension and gets the rubric, the checklist with item ids and the files to read. - It reads the code on your machine and answers every item — a finding is an item id, a path and line, a severity and a short note. No file contents, no secrets.
- It hands the answers to
prodready_dd_assess: the server validates them (a dimension with under 60% of its checklist answered is capped at 3; load performance is scored only from load-test results you supply, otherwise it stays “not evaluated”), computes the weighted score, the risk heatmap, the compound risks and the top ten risks, and writes the report page. - You get the link and its access code. The page: cover with the 1–5 gauge, executive summary, critical risks, strengths, dimension scores with the weighting, top 10 risks by probability × impact, compound risks, the detail per dimension with every finding, what could not be evaluated, the method, the comparison with a prior run, and the next step. It prints to a clean PDF.
What it does not contain: remedies. The report names each gap, where it is and what it costs. Fixing it is the SDLC.
prodready_probe — the plan
Takes an optional stack (e.g. ["next","supabase","multi-tenant"]) and an optional depth:
| depth | What comes back |
|---|---|
stack | Only the commands that work out what the app is built on. |
core | The shorter pass: every scoring probe plus the critical and high-severity checks — the ones that decide whether it is safe to put real users on. |
full (default) | The whole catalogue — the end-to-end due diligence — medium and low checks included. A much longer plan. |
The plan is text. It opens with the contract — the read-only command vocabulary (grep, rg, find, ls, wc, head, cat, git and their usual companions), what never to run and what never to send. Without a stack it starts with the detection commands. Then a legend, once:
| Mark | Meaning |
|---|---|
$ | A read-only shell command. |
SQL> | A read-only query against the database's own catalogue. Runs only on a connection you hand your agent; no check depends on one. |
do: | Work to do by reading files — not a command. |
[structural] | Read the files and work out the answer. |
[corroborate] | The detector has a documented exception: confirm before reporting it fired. |
only if: | The check's gate — report whether it matched under gates. |
Then every check: its id, severity, the rule it belongs to, the condition under which it counts as fired, and its commands. Nothing writes, nothing installs, nothing calls the network. The credential detectors never print the line a match came from.
prodready_assess — the grade
Needs evidence.results: an object keyed by check id, exactly as the plan printed it. Per check: ran, fired, count, total, files (repo-relative paths, never contents), a short evidence quote of twelve words at most, corroborated where the plan asked for it, exempt where the documented exception applies. Optional: evidence.stack, evidence.repo counts (source files, routes, endpoints, locales, very large files) and evidence.gates. report picks the delivery: link (default), html or none.
It returns:
- findings mapped to the numbered rule each one breaks, with the evidence that proves it;
- a 0–100 score built from five dimensions of 20 — data, safety, tests, review, release — with a letter grade and a Green/Amber/Red standing;
- the checks that could not be evaluated, named rather than passed over;
- the report page;
- the next step: what closing the gaps would take, and what the SDLC covers that a read-only scan cannot see.
The report page
With report: "link" the full report is stored as an unlisted page at https://mcp.prodready.si/r/<id>, in the prodready design, marked noindex, and kept for seven days. Your agent should open it for you; it is the deliverable. html returns the same page inline to save locally; none returns text and stores nothing. One account writes at most thirty report pages an hour.
Honesty rules
The rules the scan keeps
Attested, not observed. The results are what your agent reports it ran. The server scores what it is told and says so.
Not evaluated is not a pass. A check your agent did not run is left out, and the report lists it as not evaluated. It is never scored as a pass. When too much is missing, the score is stated as a ceiling.
No remedies. Each finding names the gap and the consequence of leaving it in. It never names the fix. Do not ask the tool for a patch, a policy, a migration or a config — it has none to give, and it will not invent one.
No secrets, no people. An evidence value that carries a credential, a token, a row of data, a person's details or a suggested fix is rejected, and the finding it belonged to is dropped, not softened. Email addresses and query-string URLs are stripped on the way out.
04SDLC on
The SDLC is our delivery process — the one our developers use to build large applications — handed to your coding agent one step at a time. It runs as a team of specialised agents behind gates: your agent discovers, plans and builds; the three reviewers and the sprint auditor each run as a separate agent that did not take part in building. The server hands out each step, checks the gate in front of it and keeps the ledger. It needs the licence (§08).
You never have to name a tool. Say what you want in your own words, in any language; your agent maps it to the step, and every result names the next allowed step. When you are unsure, say next — your agent does exactly that one step and stops.
Story states, in order:
The command map, step by step
The whole process in the order it runs. Under each step, the slash command that does the same in Claude Code; then what you say and what your agent calls.
| Step | You say | Your agent calls | Gate |
|---|---|---|---|
Switch it on/prodready:sdlc | SDLC on · run the SDLC · fix it properly | sdlc_licence_status, sdlc_project_init (or the project from sdlc_project_list) | — |
Discover/prodready:discover | discovery · gather requirements · interview me · here are my docs | sdlc_playbook discovery, then sdlc_discovery start → round … → finish. It reads what exists first and asks you only the business questions it cannot answer. | GD at 80 of 100 |
Scope/prodready:sow | record the scope · statement of work · SoW · proposal | sdlc_scope_set, then sdlc_sow_create — a versioned page with an access code, effort in points | — |
Vision/prodready:vision | product vision · feature map · what are we building | sdlc_vision_set | — |
Journeys/prodready:journeys | user journeys · user flows | sdlc_journeys_set | — |
Wireframes/prodready:wireframes | wireframes · mock-ups · clickable prototype | drawn in your repository under .prodready/wireframes/, recorded by path with sdlc_wireframes_set | — |
Architecture (SDD)/prodready:sdd | architecture document · SDD · architecture decisions · ADR | sdlc_design_set — improvements can become stories | — |
Docs/prodready:docs | generate the docs · API docs | generators in your repository, recorded with sdlc_docs_record | — |
| Backlog | create the backlog · import my backlog · turn the requirements into stories · UI contract | sdlc_contract_set, then sdlc_backlog_import as a dry run you see first, then for real. One story at a time: sdlc_backlog_add. | — |
Refine/prodready:refine-all | refine the backlog · refine S-004 — or refine everything on autopilot | sdlc_refine per story, or sdlc_refine_all for the whole queue (autonomous refinement) | G0 |
Plan/prodready:next | plan the sprint · plan sprint 2 | sdlc_sprint_plan — a new sprint, or an outlined one from the import | — |
Sprint/prodready:next | start the sprint | sdlc_sprint_start — held by an unowned critical risk, a grade-F prediction or a missing retro | — |
Build · verify · review/prodready:next | next story · verify it · review it | sdlc_story_start → build → sdlc_verify → sdlc_review_request → three fresh-context reviews → sdlc_review_submit ×3 → sdlc_story_done | G2 G3 G4 G6 |
Audit/prodready:next | audit the sprint | sdlc_audit_request → sdlc_audit_submit, then sdlc_sprint_complete (complete the sprint · close the sprint) | G5 G7 |
Retro/prodready:retro | retro · retrospective · what did we deliver | sdlc_sprint_retro with actuals; sdlc_sprint_analytics feeds it | — |
Readiness/prodready:dd/prodready:perf/prodready:monitoring | record the due diligence · are we at 4 out of 5 · load test · monitoring | the free due diligence, then sdlc_dd_record; sdlc_perf_record; sdlc_monitoring_record | G8 at sprint completion |
Release · deploy/prodready:release | release · ship version 1.2 · deploy to staging · changelog · roll back | sdlc_release plan → staging → ready → released (your approval) · rollback | — |
Then it iterates, sprint after sprint, until the app scores at least 4 out of 5 on the readiness scale. At any point: status (sdlc_status), report (sdlc_report), dashboard (§05).
Side lanes
These run beside the main line whenever they are needed. The server fits them into the order: a hotfix runs beside the active sprint, a hardening sprint takes over until the suite is green again.
| Lane | You say | What happens |
|---|---|---|
Bugs/prodready:bugs | report a bug · there's a bug · find bugs · what's broken? · bug sweep | One bug becomes a bug story (sdlc_bug_report), refined by the bug template when it carries its evidence. A sweep runs typecheck, lint, build and tests here and triages every failure (sdlc_bug_detect). |
Hardening/prodready:bugs | harden it · make the build green · fix the queued bugs | A failing sweep opens a hardening sprint (sdlc_sprint_harden): no new features, up to three cycles, then what is left waits for a person. |
Hotfix/prodready:hotfix | hotfix · production is down · urgent fix · P0 · SEV1 | A hotfix sprint beside the delivery sprint with one bug story (sdlc_hotfix_start). Preflight, verify, the three reviews and push stay mandatory — there is no shortcut. |
Change requests/prodready:change | change request · the client wants … · scope change · drop that feature | The change with its impact in points, stories, sprints and the statement of work (sdlc_change_request). Decided only on your yes, no or not now, recorded with your role. |
| Risks | risks · risk register · what could go wrong · will this succeed | The risk register scored into bands (sdlc_risk_set) — a critical risk without owner and mitigation holds the sprint — and a computed success prediction A–F (sdlc_success_predict). |
Analytics/prodready:analytics | velocity · how fast are we · burndown · how did the sprint go · bottlenecks | Numbers computed from the project, read-only (sdlc_sprint_analytics); your agent writes three to five recommendations from them into the retro. |
| Cost | cost so far · effort so far · hours spent · tokens used | Effort only — points, recorded hours, wall-clock time and the model tokens your host reported, per sprint and story. No money is stored or printed. It is on the dashboard's Cost page (§05). |
Gates
| Gate | Name | Recorded by | Purpose |
|---|---|---|---|
GD | Discovery complete | sdlc_discovery finish | Enough is known about the product to write the backlog. |
G0 | Refined | sdlc_refine, sdlc_refine_all, the bug template | A story is ready to be planned. |
G2 | Preflight | sdlc_story_start | A story has enough detail to start building. |
G3 | Verify | sdlc_verify; sdlc_bug_detect for a whole sprint | The project's own checks pass. |
G4 | Review | sdlc_review_submit ×3 | Three independent reviewers clear the story. |
G5 | Sprint audit | sdlc_audit_submit | The finished sprint is audited as a whole. |
G6 | Pushed | sdlc_story_done; the merge in sdlc_sprint_complete | The work is on the remote. |
G7 | Integration flows | sdlc_sprint_complete | The sprint's critical journeys work end to end. |
G8 | Readiness | sdlc_sprint_complete | The sprint's own due diligence and load test: 3 of 5 passes, 4 meets the target. |
G1 (design references) belongs to our process and is not recorded by a tool yet. What each gate requires is sent to your agent by the server, in the briefs, at the step where it applies. A step that skips a gate is refused with the reason and the next allowed step: “…Next allowed step: …”. Every gate result is attested: your agent reports it, and the ledger records who said so (provenance: "self-attested", or server-scored where the server computed it). The server cannot see your disk, so it does not claim your tests really ran. It checks the order.
Refinement (G0)
Twelve refinement questions, R1–R12. The server sends them to your agent with sdlc_playbook (topic refinement); your agent answers them per story in sdlc_refine's answers, keyed by id, with optional updates to the story's fields, a reason and a source per answer, and the business questions it found filed as decisions. sdlc_refine is also how a Blocked story is released once a person has decided what changes.
Preflight (G2) and the builder brief
sdlc_story_start runs on a Ready story in the active sprint. Preflight fails → the story stays Ready and the problems come back; close them with sdlc_refine updates and start again. Preflight passes → In Development, and the builder brief. Lost it? Call sdlc_story_start again; nothing changes, the brief comes back.
Verify (G3) — three attempts
sdlc_verify records the project's own typecheck, lint, build and tests, exactly as they came out: pass and a one-line summary each, plus counts for tests. All four pass → In QA. Otherwise one attempt is used and the story stays In Development; the third failed attempt → Blocked.
Reviews (G4) — three reviewers, three nonces
sdlc_review_request on a story In QA returns three reviewer briefs. Each reviewer runs as a separate agent in a fresh context and submits once with sdlc_review_submit.
| Reviewer | What it gets |
|---|---|
Architecture architecture | Its own criteria and a one-time nonce from sdlc_review_request. |
Security security | Its own criteria and a one-time nonce from sdlc_review_request. |
Functional functional | Its own criteria and a one-time nonce from sdlc_review_request. |
- Nonces: one per reviewer per round, used once. A used, unknown, replaced or mismatched nonce is refused. Scores that do not match the reviewer's criteria are refused without using the nonce.
- The verdict: the server applies the reject rules from the brief to the scores and findings. A reviewer's own approve can be overruled, and the ledger says so.
- All three approve → cleared for
sdlc_story_done, which records the pushed branch, tag or commit (G6). Done without G3 and G4 on record is refused. - Any reject → the findings come back as tasks on the story, verify has to pass again, and the story returns to
In Development. Rework cycles: three. The third rejected round →Blocked.
Decisions, questions and assumptions
The decision register holds three kinds of row (D-1, D-2, …): a business decision nobody has made yet — who has to make it, and how the behaviour ships meanwhile (switched off, or a conservative default); an open question with its urgency and your agent's best assumption; and an assumption your agent made, with its reasoning. Technical choices go into the architecture document instead.
You answer whenever you like, in one line: answer D-7: yes, 30 days. Your agent records it with sdlc_decision_resolve in your words. Business decisions and blocking questions are only ever closed by you; your agent may only assume a non-blocking question. Changing an answer later is allowed — it adds a new row, and the stories built on the old answer are re-opened or get a task.
Sprint audit (G5)
When no started story in the sprint is still in flight, sdlc_audit_request returns the audit brief and sdlc_audit_submit records a 0–5 score on each of five dimensions, with findings:
An audit can block the sprint; the server tells your agent the rule. A blocked sprint is fixed and audited again.
Sprint complete (G7, G8) and the retro
sdlc_sprint_complete takes the critical journeys walked — name and pass, optionally step counts and notes — and, when you send them, the merge and the readiness. All pass → the sprint is completed, and stories that did not reach Done go back to the backlog. A failing journey → the sprint stays active and the audit reopens. Once the project has a readiness history (or inside an autonomous run), completion also needs the sprint's own due-diligence run and load test (G8): 3 of 5 passes, 4 meets the target. Then the retrospective: the next delivery sprint does not start until the previous one has its retro.
Status and report
sdlc_status gives the board by state, the gate ledger summary, the open decisions and questions, discovery, risks and documents, the autonomous run when one is going, and the next allowed step; call it whenever you are unsure what comes next. sdlc_report gives the project and sprint report as text and as an unlisted page on mcp.prodready.si with an access code, kept seven days.
Autonomous mode
You can hand the whole loop to your agent and walk away. It takes every step through the same gates — refine, plan, build, verify, three reviews, audit — within the limits you give it, and stops when something needs you.
- You give the go-ahead in your own words. Your agent asks you to confirm and passes your reply verbatim — it never writes the words itself. Run it unattended for one sprint or run it autonomously, at most 8 hours starts it; vague words like keep going or just build it do not — the server hands back the question to ask you instead.
- Limits. Stories, sprints and minutes. Unless you say otherwise: one sprint and 240 minutes, and the readiness target 4 out of 5. The defaults are recorded, so you can see what the run assumed. Modes:
fullstarts from discovery,backlogworks through the backlog,sprintfinishes one sprint and stops. - The loop rule. Your agent calls
sdlc_autonomousstatus, does exactly the one step it names, and calls status again. Nothing is skipped; if the same step comes back five times without the project changing, the run pauses itself. - Questions, every cycle. Business questions become decisions that ship switched off; the run keeps going. Every cycle your agent shows you what is pending and when each will be assumed. Answer any of them whenever you like: answer D-7: ….
- It stops when a blocking question or a
Blockedstory needs a person (needs_human— your agent asks you the one question), at a limit, or when you say SDLC off, stop or pause. Nothing is lost; resume the run or next picks it up. Stopping and pausing work even after a licence has ended.
What always stays yours: business decisions, closing a blocking question, releasing a Blocked story, and a production release. In an unattended run the server refuses those steps from your agent and waits for you. At the end your agent writes the report and gives you the link and the access code.
Autonomous refinement
Refines every Draft story without asking you, after the same go-ahead in your own words (refine the backlog on autopilot). Your agent answers each story's checklist from the sources — your repository first, then discovery, the scope, the documents, the UI contract and the decision register — every answer with its own reason; the same reason pasted everywhere is refused. A real business question never comes to you mid-run: it becomes a decision on the story, and the behaviour ships switched off. When nothing reasonable can be assumed, the story is paused with its question. Up to five stories per call; at the end you get the report — refined, paused, open — and the decisions to answer with answer D-n: …. Inside an autonomous run this happens on its own.
Things to say mid-run
| You say | Your agent calls |
|---|---|
| status · where are we · what's next | sdlc_status |
| next · continue · go on · keep going | sdlc_status, then exactly the next allowed step (a paused run resumes) |
| next story | sdlc_story_start on the next Ready story in the sprint |
| verify it · run the checks | sdlc_verify |
| review it | sdlc_review_request, three fresh-context reviews, sdlc_review_submit ×3 |
| answer D-7: … | sdlc_decision_resolve in your words |
| audit the sprint · complete the sprint | sdlc_audit_request → sdlc_audit_submit → sdlc_sprint_complete |
| status of the run · resume the run | sdlc_autonomous status · resume |
| SDLC off · stop · pause | sdlc_autonomous stop or pause; otherwise your agent stops calling the SDLC |
| report · show me the page | sdlc_report |
| dashboard · show me the board | the dashboard (§05) |
| what does the playbook say about refinement / reviews / audits | sdlc_playbook with the topic |
05Your dashboard, on your own computer
The whole project — board, backlog, sprints, gates, reviews, decisions — as a web app that runs on your machine. One line in your repository:
npx https://prodready.si/dl/prodready-dashboard.tgz- Sign-in. The first time it sends you to
mcp.prodready.sito sign in with your email — a one-time link, no password — the same email you use in your coding agent. After that it remembers you (~/.prodready/dashboard.json, readable only by you). - Which project. Keep the id in your repository as
.prodready/project.json({ "project_id": "…" }) and it opens that one; otherwise it picks the project whose repository matches, or shows the list. - What it shows. Overview (score, active sprint, next allowed step, open decisions), Board, Backlog, every Story with its refinement, gates and review rounds, Sprints with audits and journeys, the live run view, Decisions, Due diligence, Reports, Timeline, the gate Log, Analytics, Releases, Change requests, Cost and Docs. An empty page tells you what to say to your agent to fill it.
- Read-only. It changes nothing. Stories, sprints, reviews and decisions change only through your coding agent — say status or next there. Gate results are shown as self-attested; report access codes are never shown.
- Refresh. Live: while the tab is visible it reads the project again every ten seconds and updates when something changed.
- Local. It listens on
127.0.0.1only, behind a one-time link per run. It reads your project throughsdlc_project_export; after a licence ends it still opens your own project data.
Prefer a single file? Say dashboard (/prodready:dashboard): your agent calls sdlc_dashboard, saves one self-contained HTML page as .prodready/dashboard.html and opens it. It is a snapshot — say dashboard again after each step. Nothing about either view is kept on our server.
06Tool reference
55 tools — 10 free, 45 licensed — generated from the server's own definitions. tools/list always lists every one, licensed or not, so your host can show what exists. Licensed tool descriptions start with [SDLC licence] (left off below). Every tool rejects unknown arguments (additionalProperties: false), and every refusal carries the reason and the next allowed step. Results over 40 KB keep their head and their tail — the next step — and say the middle was left out.
Common refusals — every licensed tool
No licence. The licence notice: what the licence contains and the link to unlock it; the free tools keep working. Prices: prodready.si/pricing.
Arguments. A missing required field, a wrong type, a value outside its bounds or an unknown field: “<tool> was not run: …”, nothing stored.
What the server will not take. File contents, credentials, email addresses where a role is asked for, and absolute paths (send them relative to the repository): “… Nothing was stored.”
Unknown project. “There is no project … on this account.”
Two calls at once. Calls on one project run one at a time; a write that lost a race says “…this change was not stored” — call again. “The project could not be reached just now; nothing was changed.” — the same.
A person's step. While an unattended session runs, the steps that belong to a person are refused: “A person decides this; an unattended session … is running.”
| Tool | Tier | What it does |
|---|---|---|
| Free: help, scan, due diligence, account | ||
prodready_help | free | What can prodready do here? |
prodready_probe | free | Plan a production-readiness scan |
prodready_assess | free | Grade the scan and price the gap |
prodready_dd_brief | free | Due diligence: the brief |
prodready_dd_assess | free | Due diligence: score and report |
sdlc_licence_status | free | SDLC licence status |
sdlc_request_access | free | Request the SDLC licence |
sdlc_project_list | free | List SDLC projects |
sdlc_project_export | free | Project export (for the local dashboard) |
sdlc_project_delete | free | Delete an SDLC project |
| Project, discovery and scope | ||
sdlc_project_init | licensed | Start an SDLC project |
sdlc_team | licensed | Share a project with your team |
sdlc_playbook | licensed | Read a process brief |
sdlc_discovery | licensed | Discovery (start, round, finish) |
sdlc_scope_set | licensed | Record the scope |
sdlc_sow_create | licensed | Statement of work |
| Product documents | ||
sdlc_vision_set | licensed | Product vision |
sdlc_journeys_set | licensed | User journeys |
sdlc_wireframes_set | licensed | Wireframe inventory |
sdlc_design_set | licensed | Architecture document (SDD) |
sdlc_docs_record | licensed | Record generated documentation |
sdlc_contract_set | licensed | UI consistency contract |
| Backlog and refinement | ||
sdlc_backlog_import | licensed | Import the whole backlog |
sdlc_backlog_add | licensed | Add stories to the backlog |
sdlc_refine | licensed | Refine a story (G0) |
sdlc_refine_all | licensed | Refine everything (autopilot) |
| Sprints and the story cycle | ||
sdlc_sprint_plan | licensed | Plan a sprint |
sdlc_sprint_start | licensed | Start a sprint |
sdlc_story_start | licensed | Start a story (G2) |
sdlc_verify | licensed | Record verify results (G3) |
sdlc_review_request | licensed | Request the three reviews (G4) |
sdlc_review_submit | licensed | Submit one review (G4) |
sdlc_story_done | licensed | Mark a story Done (G6) |
sdlc_audit_request | licensed | Request the sprint audit (G5) |
sdlc_audit_submit | licensed | Submit the sprint audit (G5) |
sdlc_sprint_complete | licensed | Complete the sprint (G7) |
sdlc_sprint_retro | licensed | Sprint retrospective |
| Decisions, risks and prediction | ||
sdlc_decision_add | licensed | Record a decision, a question or an assumption |
sdlc_decision_resolve | licensed | Answer, assume or change a decision |
sdlc_risk_set | licensed | Risk register (add or update) |
sdlc_success_predict | licensed | Development success prediction |
| Bugs, hardening, readiness and operations | ||
sdlc_bug_report | licensed | Report a bug |
sdlc_bug_detect | licensed | Whole-suite bug sweep (G3, sprint) |
sdlc_sprint_harden | licensed | Open a hardening sprint |
sdlc_hotfix_start | licensed | Start a hotfix (fast track) |
sdlc_dd_record | licensed | Record a due-diligence run (readiness trend) |
sdlc_perf_record | licensed | Record a load test |
sdlc_monitoring_record | licensed | Record monitoring and incidents |
| Releases, change requests and analytics | ||
sdlc_release | licensed | Releases and deployments |
sdlc_change_request | licensed | Change request (scope change) |
sdlc_sprint_analytics | licensed | Sprint analytics (velocity and bottlenecks) |
| Status, report, dashboard and autonomous work | ||
sdlc_status | licensed | Project status and next step |
sdlc_report | licensed | Project report page |
sdlc_dashboard | licensed | Project dashboard (local file) |
sdlc_autonomous | licensed | Run it autonomously |
Free: help, scan, due diligence, account
prodready_help What can prodready do here?
Free. Call it when the user asks what prodready can do, what to say, or says something you cannot map to a tool. Pass what they said in said (optional). Returns the flows this server offers, the plain phrases that start each, which tools they use, and — if said matched — the one flow to run now. No data leaves the machine.
| Tier | free Free — signed in · read-only, idempotent |
|---|---|
| Arguments |
|
| Returns | The flows this server offers (scan, due diligence, SDLC, discovery, documents, backlog, bugs, hotfix, performance, monitoring, releases, change requests, analytics, autonomous work, dashboard, status, report, licence, delete, off), the plain phrases that start each and the tools each uses, the slash prompts, and — when said matched — the one flow to run now. |
| Refusals | An argument other than said, or said over 500 characters. |
prodready_probe Plan a production-readiness scan
Step one of a production-readiness and security review of the user's own codebase. Reach for this whenever someone asks whether the app they built is ready for real users, safe to launch, secure, safe to put customer data in, multi-tenant safe, or whether it will hold up when it gets traffic — and whenever they want a second opinion on something a coding tool generated for them.
This server is remote and cannot see the user's disk, so it does not guess and it does not ask for the code. It returns the exact read-only shell commands and file globs to run locally: one per detector in the prodready hardening catalogue — 25 numbered platform rules across wiring, configuration, multi-tenant isolation and row-level security, UI and internationalisation, operations, and compliance and lifecycle, plus the critical-rules set covering data integrity, API surface, state machines, auth and sessions, secrets, logging and tests.
Every command is read-only — grep and rg, find, ls, wc, head, cat, git, and their usual companions awk, sort and xargs. Nothing writes, nothing installs, and nothing a command does calls the network. Four checks carry a read-only query against the database's own catalogue; the plan marks those SQL> instead of $, they run only against a connection the user hands you, and no check depends on one. The credential detectors never print the line a match came from, so no secret value is read or sent.
By default the plan is every scoring probe plus the critical and high-severity detectors — the ones that decide whether the app is safe to put real users on. Pass depth:"full" for the whole catalogue, or depth:"stack" for just the commands that work out what the app is built on.
Run the steps, then hand what came back to prodready_assess for the graded report.
| Tier | free Free — signed in · read-only, idempotent |
|---|---|
| Arguments |
|
| Returns | The scan plan as text: the read-only contract (the command vocabulary, what never to run, what never to send), the stack-detection commands when no stack was given, a legend for the line marks ($ shell, SQL> catalogue query, do: read the files, [structural], [corroborate], only if:), then every check with its id, severity, rule reference, fires when condition and commands. |
| Refusals | An argument that is not stack or depth, or a depth outside the three values. |
prodready_assess Grade the scan and price the gap
Step two: turn what prodready_probe's commands returned into a graded readiness report.
Gives back: findings mapped to the numbered rule each one breaks, with the evidence that proves it; a 0-100 score built from five dimensions of 20 — data, safety, tests, review, release — with a letter grade and a Green/Amber/Red standing; the checks that could not be evaluated, named rather than passed over; a link to the full report page in the prodready design (open it for the user — it is the deliverable, unlisted, kept seven days); and the next step: what closing the gaps would take, and what our SDLC covers that a scan cannot see. The scan is free.
Each finding names the gap and the consequence of leaving it in. It does not name the remedy: the diagnosis is free, the fix is the product. Do not ask this tool for a patch, a policy, a migration or a config — it has none to give, and it will not invent one.
Evidence is used for this one call and is never stored and never logged. Send counts, file paths and identifier names. Never send the contents of a .env, a key file, or any matched secret value.
| Tier | free Free — signed in · read-only, idempotent |
|---|---|
| Arguments |
|
| Returns | Findings mapped to the rule each one breaks, with the evidence that proves it; a 0–100 score from five dimensions of 20 (data, safety, tests, review, release), a letter grade and a Green/Amber/Red standing; the checks that were not evaluated, by name; the report page link and its access code (link), the page itself (html) or nothing (none); the next step. |
| Refusals | {}, a missing results or an unknown field — refused, no page written. Over 30 report pages in an hour on one account — refused, nothing stored; report: "none" still works. An evidence string carrying a credential, personal data or a suggested fix drops that finding. |
prodready_dd_brief Due diligence: the brief
Free. Step one of the 18-dimension technical due diligence of the user's own codebase — the deep review behind 'due diligence', 'deep review', 'audit the architecture'. Run prodready_probe and prodready_assess first if they have not run in this session (the end-to-end due diligence is both). Returns which dimensions apply to this stack and, for one dimension (or every applicable one when dimension is omitted — large), its 1-5 rubric, its checklist with item ids, the files and areas to read, and the exact JSON shape to hand back to prodready_dd_assess. Read-only; nothing is stored.
You read the code on this machine. Never send file contents, environment values or secrets: a finding is a checklist item id, a repository path (and line), a severity and a paraphrase of at most 200 characters naming the gap and its consequence — not a fix.
| Tier | free Free — signed in · read-only, idempotent |
|---|---|
| Arguments |
|
| Returns | The applicable dimensions with their weights; per dimension the rubric (what 1, 3 and 5 mean), the checklist items with ids, what to read, and the JSON shape for prodready_dd_assess. Nothing is stored. |
| Refusals | An unknown dimension id; an argument outside stack and dimension. |
prodready_dd_assess Due diligence: score and report
Free. Step two of the 18-dimension due diligence: hand back what you established per dimension with prodready_dd_brief. Validates it (unknown ids, scores outside 1-5, findings without a path are refused; a dimension with under 60% of its checklist answered is capped at 3 and marked partial; performance-load is scored only from load-test results you supply, otherwise it is 'not evaluated', never 1), then computes the weighted 1-5 score and grade, per-dimension risk (probability x impact), the 5x5 risk heatmap, compound risks across dimensions, the top findings and what could not be evaluated, and leaves a report page (link + six-character access code, seven days). Open the page for the user and give them the code.
The report names each gap, where it is and what it costs. It does not name the remedy and refuses fields that would carry one.
| Tier | free Free — signed in · read-only |
|---|---|
| Arguments |
|
| Returns | The overall 1–5 score and grade word, the per-dimension table, the risk heatmap, the top risks, the compound risks, what could not be evaluated, and report_url + report_access_code. |
| Refusals | Unknown dimension or item ids; a score outside 1–5; a finding without a path, or with an absolute path; any remedy-shaped field (recommendation, remediation, target state and the like); more than 30 report pages an hour on one account. |
sdlc_licence_status SDLC licence status
Whether the signed-in account holds the prodready SDLC licence, until when, where to unlock it, and what it contains. Free, and works before the licence is paid. Call it when an sdlc_* tool refuses, or when the user asks what the SDLC is.
| Tier | free Free — signed in, no licence needed · read-only, idempotent |
|---|---|
| Arguments | none — call it with {} |
| Returns | Signed in or not, the email, licence active or not, the date it runs until, the unlock link and what the licence contains. |
| Refusals | Any argument (“sdlc_licence_status takes no arguments”). |
sdlc_request_access Request the SDLC licence
Asks for the prodready SDLC licence for the signed-in account (monthly, cancel any time; the price is on prodready.si/pricing). The payment link is emailed to that address automatically; the sdlc_* tools unlock on this account the moment it is paid. Free. Call it when the user wants the SDLC after sdlc_licence_status or a refusal, never on their behalf without asking them first.
| Tier | free Free — signed in, no licence needed · writes |
|---|---|
| Arguments |
|
| Returns | “Request recorded”. The payment link goes to your sign-in email; the tools unlock on this account automatically once it is paid. Asking twice within a day is recorded once and mails nobody twice. |
| Refusals | Fields other than note, company, projects. Already licensed: “Nothing to request.” |
sdlc_project_list List SDLC projects
The projects on this account, with their ids. Works without an active licence, so a lapsed account can still find what to delete.
| Tier | free Free — signed in, no licence needed · read-only, idempotent |
|---|---|
| Arguments | none — call it with {} |
| Returns | Every project on this account: id, name, created, updated. |
| Refusals | Any argument. Works without a licence. |
sdlc_project_export Project export (for the local dashboard)
The project document as JSON for the local dashboard (npx https://prodready.si/dl/prodready-dashboard.tgz), which reads it and renders every page on the user's own computer. Read-only; nothing is stored. No nonce, write token or email address is included. With a licence it also carries the spec labels and the derived views (next step, counts); without one it still returns your own project data. Pass if_version (the version you already hold) to get { unchanged: true } instead of the document when nothing changed.
| Tier | free Free — signed in, no licence needed · read-only, idempotent |
|---|---|
| Arguments |
|
| Returns | One text line and the project as JSON (prodready://export/<id>.json): { export_version, licensed, project }, plus spec_labels and derived with the licence. No nonce, write token, access code or email address. With a matching if_version: { unchanged: true, version }. |
| Refusals | Unknown project. Works without a licence for your own data. |
sdlc_project_delete Delete an SDLC project
Deletes the project document, its index entry and its report pages. Cannot be undone. Works without an active licence: your data stays deletable after the licence ends.
| Tier | free Free — signed in, no licence needed · writes, destructive, idempotent |
|---|---|
| Arguments |
|
| Returns | Confirmation that the project document, its index entry and its report pages are gone. Cannot be undone. |
| Refusals | confirm missing or not true; unknown project id. Works without a licence. |
Project, discovery and scope
sdlc_project_init Start an SDLC project
Creates a project on the user's account and returns its id with the discovery brief: what to establish about the product before any story is written. Start here for a new app, a rebuild, or when the user wants their project run through our delivery process. Pass brownfield: true for an app that already exists.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The new project id (8 characters) and the discovery brief: what to establish about the product before a story is written. Keep the id in .prodready/project.json; your agent remembers it for the session. |
| Refusals | The account's project index at its storage bound — a storage limit, not a project limit; delete finished projects. + the common refusals |
sdlc_team Share a project with your team
Invite people to work on one of your projects with you: they see and work on the same backlog, sprints, documents, decisions, reports and ledger, each with their own agent and their own licence. invite (owner: project_id + email; sends them a join link), accept (code from the invite), list (project_id), remove (owner: project_id + email), leave (member: project_id). Two people never build the same story: a story someone started stays theirs.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | invite: the join link and code, and whether the invite mail went out. accept: the joined project. list: owner, members and pending invites. remove / leave: confirmation. |
| Refusals | invite, remove: not the project's owner, own address, already a member. accept: an unknown or expired code, or signed in with another email than the invited one. Each person needs their own licence. + the common refusals |
sdlc_playbook Read a process brief
The structured brief for one part of our delivery process: how stories are written, refined, estimated, built, reviewed and audited, the gates between them, and how open business decisions ship. Read the relevant brief before doing that step.
| Tier | licensed Licensed — the description starts with [SDLC licence] · read-only, idempotent |
|---|---|
| Arguments |
|
| Returns | The brief for one topic, as short structured rules. Topics: the delivery basics (story_writing, refinement, execution, coding_standards, definition_of_done, review, audit, gates, decisions, estimation, sprint), discovery and planning (discovery, risks, success_prediction, sow, backlog, ui_contract) and the documents (vision, journeys, wireframes, design, generate_docs). |
| Refusals | A topic outside the list. + the common refusals |
sdlc_discovery Discovery (start, round, finish)
Discovery: what the product is, for whom, and what the first release holds, scored per knowledge area (0-100 in all). start: send the kinds and labels of the documents that exist here (never their contents), brownfield, and the scan or due-diligence score when there is one; returns the discovery plan (mode, round budget, areas, round 1's business questions, the rules). round: after reading and asking, send each area's score (0-20) and a short summary (counts and names only), the assumptions made, the questions still open (a non-blocking one carries its assumption), answers the owner gave, risks and contradictions; returns the knowledge score, the gaps and the next round. finish: at 80 or more, the first-release line, the features with priority and whether each has rough acceptance criteria; records gate GD (pass or fail). Read sdlc_playbook discovery first. The user says: 'discovery', 'gather requirements', 'interview me', 'here are my docs', 'next round', 'what's missing', 'finish discovery'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | start: the discovery plan — mode, round budget, the five knowledge areas, round one's business questions. round: the knowledge score (0–100), the gaps and the next round; thresholds 40 / 60 / 80 announced. finish: gate GD pass or fail with the reasons; on a pass the scope filled where empty and the requirement headings. |
| Refusals | start twice; round before start or after completion (reopening needs a reason); a round without any area's score; a scan lowering a stored score; a non-blocking question without its assumption; answering a closed row; finish without first_release and features; confirmed_by_owner while an unattended session runs; fields that belong to another action. + the common refusals |
sdlc_scope_set Record the scope
The scope baseline: the objective, what is in and out of scope, assumptions, integrations and the architecture in a line each. A field sent replaces that list; a field left out is kept. Returns the scope and what is still missing before a statement of work can be issued. The user says: 'record the scope', 'this is in scope / out of scope', 'what did we agree is not included'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes, idempotent |
|---|---|
| Arguments |
|
| Returns | The scope and what is still missing before a statement of work can be issued; assumptions that read like unanswered business rules are flagged. |
| Refusals | Nothing to record (no field sent). + the common refusals |
sdlc_sow_create Statement of work
Issues a new version of the statement of work from the recorded scope, backlog, sprints, risks and architecture: summary, scope, solution, sprint plan, deliverables, effort in points (no hours, no money), risks, acceptance (gates by name), timeline. format page (default) writes a report page and returns REPORT PAGE and ACCESS CODE — give the user both; format text returns the text only. The version is draft while a story is unsized or Draft, or the first-release line is only assumed. Needs the scope (sdlc_scope_set) and at least one story. The user says: 'statement of work', 'SoW', 'proposal', 'give me something to sign off', 're-issue the SoW'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The statement of work as text in nine sections — effort in points, never hours or money — and, with format: "page" (default), a report page with REPORT PAGE: and ACCESS CODE:. Status draft while a story is unsized or Draft, or the first-release line is only assumed. Up to ten versions are kept. |
| Refusals | The scope missing or incomplete; no stories; an unknown sprint in sprint_ids; the hourly report-page limit. + the common refusals |
Product documents
sdlc_vision_set Product vision
The product vision in business language: 2-5 user journeys (steps that point at modules), 4-8 modules each with 2-5 features (features point at the stories that build them), and the connections between modules. Status is never sent: each feature is built / in progress / planned from its stories on every read. The server checks every reference, refuses paths and code in names, and returns the diff against the stored version and the gaps (features without stories, modules no journey uses). Read sdlc_playbook vision first. The user says: 'product vision', 'what are we building', 'feature map', 'refresh the vision'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The vision with each feature's status (built / in progress / planned) derived from its stories, the diff against the stored version and the gaps: features without stories, modules no journey uses. |
| Refusals | References to modules, journeys, features or stories that do not exist; duplicate feature ids; paths or code in names; a sprint note on a sprint that is not completed. + the common refusals |
sdlc_journeys_set User journeys
The user journeys as screens and links: personas, screens (persona, route, the features it serves, its wireframe page), links between screens, and the critical journeys that are walked before a sprint completes. The server binds stories to screens and returns coverage per screen and the gaps (screens without stories, interface stories without a screen, links to unknown screens). Read sdlc_playbook journeys first. The user says: 'user journeys', 'user flows', 'storyflow', 'map the journeys'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | Coverage per screen and the gaps: screens without stories, interface stories without a screen, links to unknown screens. |
| Refusals | A persona listed twice; unknown personas; duplicate screen ids; links to screens that do not exist. + the common refusals |
sdlc_wireframes_set Wireframe inventory
Records the wireframes drawn in this repository (paths only, never images): the design tokens by name, the navigation per persona, every page with its persona, file under .prodready/wireframes/, features and states, and the clickable prototype. Returns what is missing (vision features without a page, pages without all four states) and, unless assign is false, gives interface stories without a design reference the page that shows them. Read sdlc_playbook wireframes and follow it first. The user says: 'wireframes', 'mock-ups', 'clickable prototype', 'design the screens'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | What is missing (vision features without a page, pages without all four states) and, unless assign: false, the interface stories that received a page as their design reference. |
| Refusals | Absolute paths, URLs or files outside .prodready/wireframes/; navigation to unknown pages; during a full autonomous run, a discovery score below 60. + the common refusals |
sdlc_design_set Architecture document (SDD)
The architecture document: a summary, up to eight standard sections (system architecture, data flow, entities, state machines, interface structure, security, deployment, integrations), each with an optional diagram as mermaid, plantuml or dot text, the decision records (context, decision, alternatives, consequences) and architectural improvements. A section sent replaces that section; records and improvements patch by id; an improvement with to_backlog becomes a Draft story. Code is refused anywhere but a diagram's source. Returns the sections present and missing, the records, the gaps and the diff. Read sdlc_playbook design first. The user says: 'architecture document', 'SDD', 'system design', 'architecture decisions', 'ADR'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The sections present and missing, the decision records (ADR-nnn) and improvements (DI-nnn), the gaps and the diff against the stored version; improvements sent to the backlog become Draft stories. |
| Refusals | Code anywhere but a diagram's source; a section sent twice; an unknown record or improvement id; a record citing a story that does not exist or superseding one that does not exist; more than 15 records or 10 improvements. + the common refusals |
sdlc_docs_record Record generated documentation
Records documentation produced by a generator in this repository (interface reference, schema, components, architecture, setup): the output path, the generator's path, when it ran and how many items it covered. Documentation here is produced by software that can run again, never written by hand: an entry without a generator is refused, and a generator that is not idempotent or not timestamped is listed as an open item. One entry per type; a new one replaces it. Read sdlc_playbook generate_docs first. The user says: 'generate the docs', 'documentation', 'API docs', 'regenerate the docs'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The documentation on record per type with its path, generator and date; a generator that is not idempotent or not timestamped listed as an open item. |
| Refusals | An entry without a generator (“never written by hand”); a type listed twice; a bad path; generated_at that is not a date and time. + the common refusals |
sdlc_contract_set UI consistency contract
The UI contract: route registry (path, screen, layout, nav group), navigation, layouts, shared components and token rules. Versioned; merged into the stored contract unless replace is true. Refuses duplicate or near-duplicate paths and nav entries to unknown routes; reports violations by stored stories (routes outside the registry, near-duplicates, orphan routes). Stories are then checked against it. The user says: 'UI contract', 'route registry', 'lock the routes', 'shared components', 'UI ugovor'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The contract version and the violations by stored stories: routes outside the registry, near-duplicates, orphan routes. |
| Refusals | Duplicate or near-duplicate paths; nav entries to unknown routes — the contract is not stored. + the common refusals |
Backlog and refinement
sdlc_backlog_import Import the whole backlog
The whole backlog in one validated, atomic write: sprints (outlined, with goal, theme, outcomes and their stories) plus unassigned stories, and optionally the UI contract. depends_on may name a story of the same call as "#<n>" (1-based across the call). ≤ 60 stories. Checks route uniqueness and the contract, and the structure (foundation first, 3–8 stories per sprint, ≤ 5 points, a build-and-deploy check story per sprint). dry_run: true returns the same and stores nothing — show it to the user first. Any refusal stores nothing. Read sdlc_playbook backlog first. The user says: 'create the backlog', 'write the backlog', 'turn the requirements into stories', 'import my backlog', 'napravi backlog'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The overview (sprints, stories, points), the structure and UI checks as warnings, and — without dry_run — the stored outlined sprints and Draft stories with their ids. |
| Refusals | More than 60 stories; an empty sprint; route collisions or routes outside the contract; a contract that does not validate; during a full autonomous run, a discovery score below the backlog threshold. Any refusal stores nothing. + the common refusals |
sdlc_backlog_add Add stories to the backlog
Stores user stories on a project. Each is checked against the story template and stored as Draft; what it still lacks is listed. Routes that collide with another story's, or that are missing from the UI contract, are refused. Read sdlc_playbook story_writing first; for a whole backlog use sdlc_backlog_import.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The stored stories with their ids (S-001…), each Draft, each with what it still lacks against the template. |
| Refusals | depends_on naming a story that does not exist; a route that collides with another story's or is missing from the UI contract — nothing is stored. Over 50 stories in one call, or a project document over its size bound. + the common refusals |
sdlc_refine Refine a story (G0)
Records the answers to the refinement checklist for one story, with optional field updates. When every item is answered and the story fits the template, it becomes Ready (gate G0); otherwise the open items come back. Also how a Blocked story is released after a person has re-scoped it. v2: reasoning and sources per checklist id, selections (the question set of the round: options, default, pick, why), decisions (business questions filed with the story; it may still become Ready and ships the behaviour switched off), paused (a question nobody can answer from the sources: the story stays Draft and a blocking question is filed). Inside an autonomous session every answer needs its own reasoning (20+ characters), selections are required, blanket reasons are refused, and a third failed round pauses the story.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | Every checklist item answered and the story fits the template: refined: true, status Ready, G0 recorded. Otherwise the open items. Decisions filed with the story come back with their ids; a paused story stays Draft with its blocking question filed. |
| Refusals | No such story; a story already In Development or later (“a story is refined before it is built”); an unknown checklist id; a dependency on itself or on a story that does not exist. Inside an autonomous session: an answer without its own reasoning, a repeated (blanket) reason, missing selections, releasing a Blocked story (a person's decision), a story that failed three rounds. + the common refusals |
sdlc_refine_all Refine everything (autopilot)
Autonomous refinement: start opens a refinement session over the Draft stories of the backlog (or one sprint) and returns the brief for the first story — the checklist, the sources to read and the rule: answer from the sources; a real business question becomes a decision, never a question to the user. submit applies sdlc_refine v2 per story (≤ 5 per call; reasoning per answer, selections, decisions, paused) and returns the next brief; status lists the queue, the results and the open decisions ("answer D-n: <your answer>"); finish closes the session with the report { refined, paused, decisions_raised }. start needs the person's own go-ahead in authorised_words (for example 'refine the backlog on autopilot') unless an autonomous session is active.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | start: the session id and the brief for the first story (the checklist, the sources to read, the queue). submit: per story refined, open, paused or refused, then the next brief. status: the queue, the results and the open decisions with their answer phrase. finish: the report — refined, paused, open, decisions raised. |
| Refusals | start without the person's own go-ahead (a confirmation_question comes back to ask); start with answers; a session already running or paused; scope: "sprint" without a sprint; submit without stories or with more than five. A refused story is rolled back without touching the others. + the common refusals |
Sprints and the story cycle
sdlc_sprint_plan Plan a sprint
Creates a sprint with one business goal and the refined stories that deliver it, or — with sprint_id — promotes an outlined sprint from the imported backlog once its stories are refined. Stories that have not passed refinement are refused.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The sprint (SP-1…) as planned, its stories and total points, plus notes: outside three to eight stories, open decisions to review. With sprint_id, the outlined sprint from the imported backlog promoted to planned. |
| Refusals | Any story that does not exist, is not refined (G0) or already sits in an unfinished sprint — the sprint is not planned. + the common refusals |
sdlc_sprint_start Start a sprint
Makes a planned sprint the active one and returns the sprint brief: the goal, the stories in build order and the cycle to follow.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The sprint made active and the sprint brief: goal, stories in build order, the cycle. A note when no statement of work is on record. |
| Refusals | Sprint not planned; another sprint still active (“sprints run one after another”); the previous delivery sprint has no retrospective; a story lost refinement since planning; a critical risk without owner and mitigation; the latest success prediction is grade F. + the common refusals |
sdlc_story_start Start a story (G2)
Runs the preflight check (G2) on a story in the active sprint and, when it passes, moves it to In Development and returns the builder brief: execution rules, coding standards, the definition of done and the story itself.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | G2 passes: status In Development and the builder brief — execution rules, coding standards, definition of done, the story. G2 fails: the story stays Ready with the problems listed. Called again on a story In Development: the brief again, nothing changes. |
| Refusals | Story not in the active sprint; story not Ready; the story waits on an open blocking question (only a person closes it). + the common refusals |
sdlc_verify Record verify results (G3)
Records the results of the project's own typecheck, lint, build and tests for a story in development, exactly as they came out. All four pass: the story moves to In QA (gate G3). A failure counts as one attempt; the third failed attempt blocks the story.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | All four pass: In QA, G3 recorded. Otherwise “attempt n of 3” with the failing steps; the third failed attempt sets Blocked. |
| Refusals | Story not In Development. Counted as a failed step, not a refusal: tests reported passing with failures, skipped or focused tests, zero tests run. + the common refusals |
sdlc_review_request Request the three reviews (G4)
For a verified story: returns three reviewer briefs — architecture, security, functional — each with its own one-time nonce. Run each review in a fresh context (a separate sub-agent with no memory of the build), then submit each with sdlc_review_submit.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The story printed once, then three reviewer sections — architecture, security, functional — each with its brief and a one-time nonce, and the exact sdlc_review_submit call to make. |
| Refusals | Story not In QA; no passing G3 on record; a round in which a review was already submitted (“a round cannot be re-issued”). + the common refusals |
sdlc_review_submit Submit one review (G4)
Records one reviewer's scores, findings and verdict, using the nonce issued to that reviewer for that story. When all three are in, the story is either cleared for Done (G4) or sent back to development with every finding as a task.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The reviewer's outcome and who is still pending. With the third review in: all three approve (G4) and the story is cleared for Done, or the round is rejected — every finding becomes a task, the story goes back to In Development, and the third rejected round sets Blocked. |
| Refusals | A nonce never issued, already used, issued for another story or another reviewer; a story not waiting on that round; scores that do not match the reviewer's criteria exactly (the nonce stays unused — submit again). + the common refusals |
sdlc_story_done Mark a story Done (G6)
Marks a story Done once verify (G3) and the three-reviewer approval (G4) are on record, and records the pushed branch or commit (G6).
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | Status Done, G6 recorded with the pushed ref. An approved change request whose stories are all Done is marked implemented. |
| Refusals | Already Done; no passing G3 on record; no three-reviewer approval (G4) on record; an open blocking question on the story. + the common refusals |
sdlc_audit_request Request the sprint audit (G5)
When no story in the active sprint is still in flight: returns the audit brief — five dimensions, what to check in each, and when the audit blocks.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The audit brief: five dimensions, what to check in each, the scale, and when the audit blocks. |
| Refusals | Sprint not active; a started story still in flight; no story Done; the audit already passed. + the common refusals |
sdlc_audit_submit Submit the sprint audit (G5)
Records the audit's five scores (0-5) and findings. Any dimension at 1 or below, or any critical finding, blocks the sprint until the findings are fixed and the audit is run again.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | Pass: G5 recorded, next step sdlc_sprint_complete. Block: the blockers and the blocking findings, next step fix and sdlc_audit_request again. |
| Refusals | Sprint not active; no audit of that sprint waiting for results. + the common refusals |
sdlc_sprint_complete Complete the sprint (G7)
Completes an audited delivery sprint and records the critical user journeys walked end to end (G7), the merge (G6, scope sprint) and readiness after the sprint (G8: the sprint's recorded due-diligence and load-test runs; score 3 or more passes, 4 meets the target). Stories that did not reach Done return to the backlog; the retrospective follows (sdlc_sprint_retro). A hardening or hotfix sprint completes when every story is Done or escalated and a clean sdlc_bug_detect on it is newer than its last Done. The user says: 'complete the sprint', 'close the sprint', 'finish sprint 2', 'merge the sprint', 'zaključi sprint'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The sprint completed with G7 (journeys), G6 on the sprint (the merge, when sent) and G8 (readiness, when it applies) recorded; delivered stories and points; stories not Done back to the backlog; next step the retrospective. A failing journey or a G8 fail: the sprint stays active with the reason. |
| Refusals | Sprint not active; a delivery sprint without integration_flows; no passing G5 on record; a story started after the audit; G8 due and the sprint's due-diligence or load-test run missing. A hardening or hotfix sprint: a story neither Done nor escalated, or no clean sweep newer than its last Done story. + the common refusals |
sdlc_sprint_retro Sprint retrospective
The retrospective of a completed sprint: what went well, what to improve, what was blocked and why, and actual hours or points per story. The server tabulates estimates against actuals, stores the recalibration factor and says when sizes run outside the estimation bounds. The next delivery sprint does not start until the previous one has its retro. The user says: 'retro', 'retrospective', 'what did we deliver', 'what went wrong this sprint', 'retrospektiva'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | Estimates against actuals per story, the recalibration factor stored for the next estimates, and a note when sizes run outside the estimation bounds. |
| Refusals | An unknown sprint; a sprint not completed; a retrospective already on record; actuals for more than 50 stories or for stories outside the sprint. + the common refusals |
Decisions, risks and prediction
sdlc_decision_add Record a decision, a question or an assumption
Adds a row to the decision register. kind business (default): a business question nobody has answered yet, who must answer it, and how the behaviour ships until then (switched off, or a conservative default). kind question: an open question with its urgency and the agent's best assumption. kind assumption: something the agent assumed, with its reasoning and confidence. Technical choices belong in the architecture document (sdlc_design_set), not here. Returns the register.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The register with the new row (D-001…), status open, and how the behaviour ships until it is answered. |
| Refusals | A story_ids entry that does not exist; a non-blocking question without its assumption; a technical choice (it belongs in sdlc_design_set). + the common refusals |
sdlc_decision_resolve Answer, assume or change a decision
Records the answer to an open row with its date and returns the register. by owner (default) is the owner's own answer — pass their words in owner_words; by agent may only assume a non-blocking question. override: true changes a decided row by appending a new row. Stories built on a changed answer are re-opened or get a task, and the result lists them.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The register with the answer, who gave it and its date; the stories built on a changed answer, re-opened or given a task. |
| Refusals | No such decision; a decision already decided (unless override: true); the agent deciding a business decision or closing a blocking question (only the owner does, by: "owner"); a person-only decision while an unattended session runs. + the common refusals |
sdlc_risk_set Risk register (add or update)
Adds or updates risks (with id: update). Scores probability × impact into bands (20–25 critical, 12–19 high, 6–11 medium, 1–5 low), flags duplicates by title, returns the sprint risk profile and buffer (10/20/30%) and which critical risks hold sdlc_sprint_start. A vague mitigation ('monitor', 'tbd', under 10 characters) is refused; accepting a risk needs a rationale and files a decision; spike: true drafts a spike story. The user says: 'risks', 'risk register', 'what could go wrong', 'add a risk', 'we accept that risk', 'rizici'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The register with each risk's band, duplicates flagged, the sprint risk profile and buffer, and the critical risks that hold sdlc_sprint_start; accepted risks file a decision, spikes draft a story. |
| Refusals | A vague mitigation (monitor, tbd, under 10 characters); accepting a risk without a rationale; an unknown id; more than 60 risks. Nothing is stored when any row is refused. + the common refusals |
sdlc_success_predict Development success prediction
A computed prediction (no model call): five dimensions × 20 — requirements clarity, technical feasibility, scope control, risk profile, delivery confidence — from your evidence plus what the project already records (stories, open questions, risks, the latest due diligence, verify and rework history). Grade A–F with RAG, hard caps and the delta against the last prediction. A grade F holds sdlc_sprint_start. The user says: 'will this succeed', 'success prediction', 'what are our chances', 're-score', 'hoće li uspjeti'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | Five dimensions of 20, the caps that applied, the grade A–F with its RAG colour and the delta against the last prediction. Computed on the server, no model call. |
| Refusals | Only the common refusals. + the common refusals |
Bugs, hardening, readiness and operations
sdlc_bug_report Report a bug
Files one bug as a bug story ("Fix: …") with its severity, repro steps, expected and actual behaviour. With its evidence (error_summary, location path:line and category) and outside an active delivery sprint it is refined by the bug template (G0) and lands Ready; otherwise it lands Draft and is refined like any story. A report matching an open bug's check and location is attached to it. next fix_now (critical/high) leads to sdlc_hotfix_start. The user says: 'report a bug', 'there's a bug', 'this is broken', 'prijavi bug'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The bug story (Fix: …, 1 point, priority from severity), Ready when it carries its evidence and is refined by the bug template, otherwise Draft; attached to an open bug when it matches one. next: fix_now leads to the hotfix, detect to the sweep. |
| Refusals | An unknown sprint; a completed sprint; a sprint that is not an active delivery or hardening sprint. + the common refusals |
sdlc_bug_detect Whole-suite bug sweep (G3, sprint)
Records a whole-suite sweep — typecheck, lint, build, tests and e2e as your agent ran them — and triages every failure into a proposed bug (build critical; typecheck and tests high; lint medium), grouped by area, deduplicated, with the hardening cycle (n of 3). Recorded as gate G3 with scope sprint (never a story's verify failure). Clean → the next step; failures → sdlc_sprint_harden; at cycle 3 the remaining bug stories are Blocked for a person. The user says: 'find bugs', 'what's broken?', 'is everything green?', 'bug sweep', 're-test'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The sweep (DT-nnn) with every failure triaged into a proposed bug, grouped by area and deduplicated, and the hardening cycle (n of 3); G3 recorded with scope sprint. Clean: the next step. Failures: sdlc_sprint_harden. At cycle three the remaining bug stories are Blocked for a person. |
| Refusals | A story still in flight in the sprint. + the common refusals |
sdlc_sprint_harden Open a hardening sprint
Opens a hardening sprint — restore a green suite, no new features — from a failing sdlc_bug_detect (detection_id, with the bug stories to fix, or the detection's own failures when stories is omitted) or from queued bugs (bug_ids). Bug stories from a detection are refined by the bug template (G0). Returns the hardening brief and the first story by severity. Cycle budget 3. The user says: 'harden it', 'hardening sprint', 'fix what's broken', 'make the build green', 'fix the queued bugs'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The hardening sprint (parent sprint, cycle, budget), its bug stories refined by the bug template, the hardening brief and the first story by severity. |
| Refusals | Both or neither of detection_id and bug_ids; an unknown or clean detection, or not the newest one; no delivery sprint; a cycle over the budget; a hardening sprint already running for that parent; a story in flight. + the common refusals |
sdlc_hotfix_start Start a hotfix (fast track)
The fast track for a critical or high bug: a hotfix sprint beside any active delivery sprint, holding one bug story marked hotfix. Preflight (G2), verify (G3, three attempts), the three reviews (G4, no shortcut) and push (G6) stay mandatory; then sdlc_bug_detect on the hotfix sprint and sdlc_sprint_complete. Pass story_id (an existing refined bug story) or bug (the sdlc_bug_report fields, with its evidence). The user says: 'hotfix', 'production is down', 'urgent fix', 'P0', 'SEV1', 'hitno popravi'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The hotfix sprint beside the delivery sprint, its one bug story marked hotfix, and the fast-track brief: preflight, verify, the three reviews, push, then a sweep and completion. |
| Refusals | Both or neither of story_id and bug; a hotfix already running; not a bug story; a medium or low bug (it goes to hardening); a Draft story or a bug without its evidence; a story that is not Ready; a bug matching one already in progress. + the common refusals |
sdlc_dd_record Record a due-diligence run (readiness trend)
Records a due-diligence run on this project — the fields from prodready_dd_assess (and optionally prodready_assess) — as DD-n: overall, grade, dimension scores, findings by severity and the top risks, never remedies. With the report_id of this account's due-diligence page from the last seven days the figures are taken from the server's own summary (server-scored); otherwise the run is self-attested. Updates the readiness and its trend toward the target of 4 out of 5. The user says: 'record the due diligence on the project', 'due-diligence trend', 'are we at 4 out of 5'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The run (DD-n) — server-scored when its report page belongs to this account and is under seven days old, otherwise self-attested — its diff against the previous run, the readiness and the distance to 4 out of 5. |
| Refusals | Unknown dimension ids; an unknown sprint. + the common refusals |
sdlc_perf_record Record a load test
Records k6-style load-test results (aggregate, per route, capacity): scored 1–5 with the due diligence's load-test bands, pass or fail against the thresholds (p95 800 ms, 5% errors by default), and a verdict against the previous run of the same profile. A run with sprint_id is that sprint's readiness load test (G8). Credentials only from environment variables; target_label is an environment name or bare host. Inside an unattended session only smoke runs, unless limits.perf names the profile and target. The user says: 'load test', 'performance test', 'how fast is it', 'capacity', 'run k6'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The run with its 1–5 score, pass or fail against the thresholds, the verdict against the previous run of the same profile and, when asked, draft stories. With sprint_id it counts as that sprint's readiness load test (G8). |
| Refusals | A target_label with a path, query or credentials; an unknown sprint; inside an unattended session, any profile but smoke unless the session's limits name it. + the common refusals |
sdlc_monitoring_record Record monitoring and incidents
Records the monitoring checklist (M-01…M-10: yes, no or n/a), the monitored targets and production incidents. Scores the monitoring, flags "armed but blind" when no target was seen in 24 hours, turns a SEV1 with its evidence into a critical bug story (next sdlc_hotfix_start) and reminds you of missing postmortems. The same incident twice within 15 minutes is refused. The user says: 'monitoring', 'alerts', 'is it monitored', 'incident', 'postmortem', 'uptime', 'on-call', 'nadzor'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The monitoring score, targets armed but blind (none seen in 24 hours), incidents recorded, missing postmortems; a SEV1 with evidence becomes a critical bug story and the next step is the hotfix. |
| Refusals | Unknown checklist ids; the same incident triaged twice within 15 minutes; an unknown incident id. + the common refusals |
Releases, change requests and analytics
sdlc_release Releases and deployments
plan: a release (REL-n) of completed sprints with a derived changelog — Done stories by type, fixed bugs, decisions that ship switched off as known limitations, implemented change requests. Refused for a sprint that is not completed, already in a live release, or holding an open blocking question. advance: planned → staging (deployed to a non-production environment with a passing smoke check) → ready (rollback plan and a readiness score of 3 or more on record) → released (approved_by a role, merge_commit and a production deployment with a passing smoke check). rollback: released → rolled_back with a reason. Releasing and rolling back are a person's steps. Environment labels are names only — no URL, host or credentials. The user says: 'release', 'cut a release', 'ship version 1.2', 'ship it', 'deploy to staging', 'changelog', 'release notes', 'roll back', 'izdanje'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The release (REL-n) with its changelog, status and deployments; each advance the new status; rollback the rolled-back release. release_next names the following step. |
| Refusals | plan without version and sprints, a reused version, a sprint not completed or already in a live release, an open blocking question on its stories, 50 releases. advance out of order; staging without a passing non-production smoke check; ready without a rollback plan or with readiness below 3; released without approved_by (a role — an email is refused), merge_commit and a passing production smoke check. Releasing and rolling back while an unattended session runs (a person's step). + the common refusals |
sdlc_change_request Change request (scope change)
submit: a change to the agreed scope (CR-nnn) — stories to add, modify or remove — with its impact computed: points added / removed / changed, stories and sprints affected, whether the active sprint is touched, the delta against the statement of work. At most 5 open at a time. decide (a person's step, reviewed_by a role): approved adds the new stories as Draft (origin change_request), applies the changes (the story is refined again), removes stories that have not started, and marks the SoW stale; rejected or deferred changes nothing. A story in flight or Done is not modified or removed (a Done story changes through a new story). The user says: 'change request', 'the client wants …', 'scope change', 'add this to the scope', 'drop that feature', 'zahtjev za promjenu'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | submit: the request (CR-nnn) with its impact — points added, removed and changed, stories and sprints affected, the active sprint touched or not, the delta against the statement of work. decide: the decision and what was applied. |
| Refusals | submit without a title or without any change; a sixth open request; 100 requests; an email in requested_by. decide without a decision or reviewed_by (a role); a closed request; changing or removing a story in flight or Done. + the common refusals |
sdlc_sprint_analytics Sprint analytics (velocity and bottlenecks)
Read-only metrics computed from the project: per sprint the stories total / Done / Blocked / carried over, completion, points planned and done (velocity), verify failures (story G3 rows only), rework cycles, the review rejection rate, audit rounds, cycle time (median, p90), estimate accuracy from the retro, gate pass/fail counts, bottlenecks (top 5), retry root causes, per owner, tokens where the host reported them, the readiness trend and — with compare — the trend between sprints with neutral signals. Nothing is stored; the recommendations are yours, written into sdlc_sprint_retro improve. The user says: 'sprint analytics', 'velocity', 'how fast are we', 'burndown', 'how did the sprint go', 'bottlenecks', 'compare sprints', 'analitika'.
| Tier | licensed Licensed — the description starts with [SDLC licence] · read-only, idempotent |
|---|---|
| Arguments |
|
| Returns | Per sprint: stories, completion, velocity, verify failures, rework, review rejection rate, audit rounds, cycle time (median, p90), estimate accuracy, gate pass/fail; across sprints the bottlenecks, retry causes, per-owner figures, the readiness trend and, with compare, the trend table. Nothing is stored. |
| Refusals | An unknown sprint. + the common refusals |
Status, report, dashboard and autonomous work
sdlc_status Project status and next step
The board by state, the gate ledger summary, open decisions and questions, discovery, risks and documents, and the next allowed step. Call it whenever you are unsure what comes next. With story_id it prints that one story in full — how a builder, reviewer or auditor fetches a story a brief listed by id. With a reviewer's one-time nonce it prints that reviewer's brief and the story, so the host hands a reviewer only its nonce.
| Tier | licensed Licensed — the description starts with [SDLC licence] · read-only, idempotent |
|---|---|
| Arguments |
|
| Returns | The board by state, the gate ledger summary, open decisions and questions, discovery, risks and documents, the autonomous session when one runs, and the next allowed step. With story_id, that one story in full. |
| Refusals | Only the common refusals. + the common refusals |
sdlc_report Project report page
The project and sprint report as text, plus an unlisted page on mcp.prodready.si in the prodready design, kept for seven days. Open it for the user and give them the link.
| Tier | licensed Licensed — the description starts with [SDLC licence] · writes |
|---|---|
| Arguments |
|
| Returns | The project and sprint report as text, and an unlisted page on mcp.prodready.si/r/… with REPORT PAGE: and ACCESS CODE:, kept seven days. |
| Refusals | Over 30 report pages in an hour on one account. + the common refusals |
sdlc_dashboard Project dashboard (local file)
The whole project as one self-contained HTML file for the user's own computer: board, backlog, sprints, gate ledger, reviews, decisions, audits, timeline, cost and report pages. Save the attached file as .prodready/dashboard.html in the repository and open it in the browser; call this again after each step to refresh it. Nothing is stored on the server. format "summary" returns the counts as text only.
| Tier | licensed Licensed — the description starts with [SDLC licence] · read-only, idempotent |
|---|---|
| Arguments |
|
| Returns | One self-contained HTML file as an embedded resource (prodready://dashboard/<id>.html) to save as .prodready/dashboard.html: board, backlog, sprints, gate ledger, reviews, decisions, audits, timeline, cost and report ids (never their access codes). format: "summary": the counts and the next step as text. |
| Refusals | Only the common refusals. + the common refusals |
sdlc_autonomous Run it autonomously
Autonomous work. start opens a session (limits: stories, sprints, minutes; defaults 1 sprint and 240 minutes) — it needs the person's go-ahead in their own words (authorised_words, e.g. 'run it unattended for one sprint'). status returns the ONE next step of the loop: do exactly that step, then call status again; it pauses with needs_human when a blocking question or a Blocked story needs a person, stops at a limit, and lists the questions (blocking, pending with when each is assumed, assumed) — show them to the user every cycle and keep working. pause, resume, stop ('SDLC off') and compact manage the session; pause and stop work without a licence.
| Tier | licensed Licensed — the description starts with [SDLC licence]; pause and stop work without one · writes |
|---|---|
| Arguments |
|
| Returns | start: the session (AS-1…), its limits and which were defaulted, the autonomous brief and the first step. status: exactly one next step, the phase and status line, the work streams, the questions (blocking, pending with when each is assumed, assumed recently), the limits left — or needs_human, a stop at a limit, or completion. pause / resume / stop: the session's new state; nothing is lost. compact: the step history trimmed. |
| Refusals | start without the person's own go-ahead, or with vague words (keep going, just build it) — a confirmation_question comes back; start while another session is active or paused; mode full on a project that already has stories; resume on a stopped or completed session; no session running. pause and stop work without a licence. + the common refusals |
07Prompts and slash commands
The server publishes 26 MCP prompts. Hosts that surface prompts show them as commands; in Claude Code each is /prodready:<name>. Every SDLC prompt starts with the licence check and, without a licence, tells you what the SDLC includes before asking whether to request it.
| Command | What it does |
|---|---|
/prodready:scanIs my app production-ready? | Run the free readiness scan on this repository: probe, run the 118 read-only checks, assess, open the report. |
/prodready:ddDue diligence | Run the free 18-dimension technical due diligence on this repository: the scan first if it has not run, then every dimension's checklist with file:line evidence, scored and reported with a risk heatmap. |
/prodready:sdlcSDLC on | Run the prodready SDLC on this project: licence check, project init, backlog, refinement, sprint, verify, three reviews, audit — every gate in order. |
/prodready:statusWhere are we? | Show the state of the SDLC project in this repository: board, gate ledger, open decisions and the next allowed step. |
/prodready:nextNext step | Do the next allowed SDLC step for this project — whatever the server says comes next — and stop after it. |
/prodready:dashboardDashboard | Open the SDLC dashboard for this project on your own computer: the board, backlog, sprints, gate ledger, reviews, decisions, audits and timeline in one local HTML file. |
/prodready:reportReport | Write the project report page and hand over the link and its access code. |
/prodready:licenceLicence | Say whether this account has the SDLC licence, and request it if the user wants it. |
/prodready:helpWhat can prodready do? | Explain, in the user's words, what to say to get a scan, a due diligence, the SDLC, a status, a report or the licence. |
/prodready:refine-allRefine everything (autopilot) | Refine every Draft story without asking you: answers from the sources with their reasons, business questions filed as decisions that ship switched off, then the report. |
/prodready:autonomousRun it autonomously | Run the SDLC unattended within your limits: loop on sdlc_autonomous status, take every step through the gates, show the pending questions every cycle, stop when a decision needs you. |
/prodready:discoverDiscovery | Discovery on this project: read what exists here, ask only the business questions the rounds list, reach 80 of 100 and pass gate GD. |
/prodready:visionProduct vision | Record the product vision: journeys, modules and features, with what is built, in progress, planned or missing. |
/prodready:sowStatement of work | Record the scope if it is missing and issue the statement of work as a report page with its access code. |
/prodready:journeysUser journeys | Map the user journeys as screens and links, bound to the stories, and show the gaps. |
/prodready:wireframesWireframes | Draw the wireframes in this repository following the brief, record them by path and open the prototype. |
/prodready:sddArchitecture document | Write the architecture document (SDD): sections, decision records and improvements that become stories. |
/prodready:docsGenerate the docs | Generate the documentation with generators in this repository and record them by path. |
/prodready:bugsBugs | Report a bug as a bug story, or sweep the whole suite and triage what fails; a failing sweep opens a hardening sprint. |
/prodready:hotfixHotfix | The fast track for a critical bug: a hotfix sprint with the gates and the three reviews still mandatory. |
/prodready:perfLoad test | Run a load test on this project and record the result: score, verdict against the last run, pass or fail. |
/prodready:monitoringMonitoring | Record the monitoring checklist, the watched targets and production incidents; a SEV1 goes to the hotfix fast track. |
/prodready:retroRetrospective | The retrospective of the last completed sprint: delivered, blocked, estimates against actuals. |
/prodready:analyticsSprint analytics | Velocity, completion, verify failures, rework, cycle time, bottlenecks and the trend between sprints; 3–5 recommendations into the open retro. |
/prodready:releaseRelease | Plan a release of the completed sprints, show the changelog and what ships switched off, deploy to staging, record the rollback plan; production only on your approval. |
/prodready:changeChange request | Submit a scope change with its impact; it is decided only on your yes, with your role, then the new or changed stories are refined. |
Plain-language triggers
You never need the commands. Your agent matches what you say — in any language, by meaning — to one of these flows; prodready_help does the same when your agent is unsure. Straight from the server's router:
| You say (any language) | What happens | Tools |
|---|---|---|
| SDLC off · stop · pause · stop the autopilot | stops the flow; an autonomous session is stopped (or paused) with sdlc_autonomous — free even without a licence; sdlc_status resumes later, nothing is lost | sdlc_autonomous |
| refine everything · refine the whole backlog on autopilot · autonomous refinement | autonomous refinement: every Draft story answered from the discovery brief, the documents and the codebase, each answer with its own reason; business questions become decisions that ship switched off — never questions to you. Needs your go-ahead in your own words | sdlc_project_list sdlc_refine_all |
| SDLC autonomous · run it autonomously · autopilot · status of the run · resume the run | autonomous work: the whole SDLC loop unattended within your limits (stories, sprints, minutes) — refine, plan, build, verify, three reviews, audit — stopping when a decision needs you; pending questions are shown every cycle. Needs your go-ahead in your own words | sdlc_project_list sdlc_autonomous |
| velocity · how fast are we · burndown · how did the sprint go · bottlenecks | sprint analytics computed from the project: velocity, completion, verify failures, rework, review rejections, cycle time, estimate accuracy, bottlenecks and the trend between sprints — read-only; the recommendations go into the retro | sdlc_sprint_analytics |
| release · deploy · ship it · changelog · roll back | a release of completed sprints with its changelog, deployed to staging with a smoke check, ready with a rollback plan, released to production only on a person's approval; roll back when it breaks | sdlc_release |
| change request · scope change · the client wants … | a scope change with its impact in points, stories and the statement of work; a person approves it, then the new stories arrive as Draft | sdlc_change_request |
| cost · effort so far · hours spent · tokens used | effort only — points, recorded hours, wall-clock time and the model tokens the host reported, per sprint and story (the dashboard's Cost tab); no money is stored or printed | sdlc_project_export sdlc_dashboard |
| record the due diligence on the project · due-diligence trend · are we at 4 out of 5 | a due-diligence run recorded on the SDLC project (server-scored from its report page, or self-attested): the readiness trend toward 4 out of 5 | prodready_dd_assess sdlc_dd_record |
| hotfix · production is down · urgent fix · P0 | the fast track for a critical bug: a hotfix sprint beside the delivery sprint, one bug story, preflight, verify, the three reviews and push still mandatory | sdlc_bug_report sdlc_hotfix_start |
| report a bug · find bugs · what's broken · bug sweep | one bug becomes a bug story (refined by the bug template when it carries its evidence); a whole-suite sweep triages every failure; a hardening sprint restores a green suite | sdlc_bug_report sdlc_bug_detect sdlc_sprint_harden |
| load test · performance test · how fast is it · capacity | a k6-style load test your agent runs (credentials from the environment only), recorded with its score, verdict against the last run and pass or fail against the thresholds | sdlc_playbook sdlc_perf_record |
| monitoring · alerts · incident · postmortem · on-call · sentinel | the monitoring checklist, the watched targets (armed but blind when none was seen in a day) and production incidents; a SEV1 with evidence goes to the hotfix fast track | sdlc_monitoring_record sdlc_hotfix_start |
| retro · retrospective · what did we deliver | the sprint retrospective: delivered and blocked, estimates against actuals and the recalibration factor | sdlc_sprint_retro |
| risks · risk register · what could go wrong · will this succeed | the risk register scored into bands (critical risks without owner and mitigation hold the sprint), and a computed success prediction A–F | sdlc_risk_set sdlc_success_predict |
| create the backlog · import my backlog · turn the requirements into stories · UI contract | the whole backlog in one validated write — sprints, stories and the UI contract — dry run first, nothing stored on any refusal | sdlc_playbook sdlc_contract_set sdlc_backlog_import |
| due diligence · deep review · audit the architecture | the free 18-dimension technical due diligence: your agent reads the code against our rubrics and checklists (1-5 per dimension, file:line evidence), the server scores it, weights it, draws the risk heatmap and leaves a report page with an access code. End-to-end due diligence is both: the scan first (if it has not run in this session), then this | prodready_probe prodready_assess prodready_dd_brief prodready_dd_assess |
| discovery · gather requirements · interview me · here are my docs | discovery: your agent reads what exists here, asks you only the business questions it cannot answer, scores five knowledge areas to 80 of 100 and records gate GD — kinds, labels and scores only, never document contents | sdlc_licence_status sdlc_project_list sdlc_discovery |
| statement of work · SoW · proposal | records the scope (objective, in, out) and issues a versioned statement of work as a report page with an access code — points, never hours or money | sdlc_scope_set sdlc_sow_create |
| product vision · feature map · what are we building | the product vision in business language: journeys, modules and features, each feature built / in progress / planned from its stories | sdlc_vision_set |
| user journeys · user flows | the screens and links per persona, bound to the stories that build them, with coverage and gaps | sdlc_journeys_set |
| wireframes · mock-ups · prototype | wireframes drawn in this repository by your agent (paths recorded, never images), completeness checked and pages assigned to stories | sdlc_playbook sdlc_wireframes_set |
| architecture document · SDD · architecture decisions | the architecture document: eight standard sections with text diagrams, decision records and improvements that become stories | sdlc_playbook sdlc_design_set |
| generate the docs · API docs | documentation produced by generators in this repository that can run again, recorded by path | sdlc_playbook sdlc_docs_record |
| is it production-ready? · scan · check my app · audit | the free readiness scan: 118 read-only checks run by your agent on this machine, a 0-100 score and a graded report page with an access code. The 18-dimension review is the dd flow; end-to-end due diligence is both | prodready_probe prodready_assess |
| SDLC on · run the SDLC · fix it properly · sprint | our delivery process on this project: refined backlog, sprints, seven gates, three independent reviews per change, audits, a ledger (needs the licence) | sdlc_licence_status sdlc_project_init |
| dashboard · show me the board · open the dashboard | the whole project as one HTML file on your own computer: board, backlog, sprints, gate ledger, reviews, decisions, audits, timeline, reports. Your agent saves it as .prodready/dashboard.html and opens it; say it again after each step to refresh. Nothing is stored on the server | sdlc_project_list sdlc_dashboard sdlc_project_export |
| where are we? · status · what's next | the board, the gate ledger, open decisions and the next allowed step | sdlc_project_list sdlc_status |
| next · continue · go on · keep going | exactly the next allowed step, then stop; a paused autonomous session is resumed (sdlc_autonomous action resume). These words never start an unattended run | sdlc_status sdlc_autonomous |
| report · give me the link | the project report page (link + access code) — or the scan report if there is no SDLC project | sdlc_report |
| do I have the licence? · unlock · request the SDLC | licence state; the payment link by email; tools unlock automatically once paid. Prices: prodready.si/pricing | sdlc_licence_status sdlc_request_access |
| delete my project · remove my data | deletes the project documents and its report pages; nothing else is kept | sdlc_project_list sdlc_project_delete |
08Licence
- Sign-in is free. So is the readiness scan, and it stays free.
- The SDLC tools unlock with the licence. One licence per sign-in email; unlimited projects; the reviewer panel included; process updates for the year; the SDLC dashboard on your own computer.
- Request it by saying request the SDLC (your agent calls
sdlc_request_access, optionally with a note, a company and a rough project count) or with the form on the pricing page. Your agent should ask you before it calls the tool. - The payment link comes by email, to the address you signed in with. A person reads every request too and answers questions.
- Unlock is automatic. Once it is paid, the
sdlc_*tools unlock on your account, usually within a minute. Nothing to reinstall;sdlc_licence_statusshows the date it runs until. - When it ends, the licensed tools lock again.
sdlc_project_list,sdlc_project_exportandsdlc_project_deletekeep working — your data stays readable in the dashboard and deletable — and an autonomous run can still be paused or stopped.
The price: see pricing.
09Privacy & data
| What | Leaves your machine | Stored |
|---|---|---|
| Scan evidence | Counts, repo-relative file paths, identifier names, short quotes of command output. Never file contents, never secrets. | No. Scored in memory for one call, never stored, never logged. |
| Scan report page | — | Unlisted, noindex, deleted after seven days. report: "none" stores nothing. |
| SDLC project documents | Stories, sprints, gate results, the ledger, decisions — what your agent sends. Never code. | Under your account until you delete them. |
| SDLC report pages | — | Unlisted, seven days, behind an access code, and removed with the project. The statement of work is one of them. |
| Discovery and documents | Document kinds and labels, scores, short summaries, repository paths of wireframes and generated docs. Never document contents, never images. | In the project document, until you delete it. |
| Local dashboard | Nothing: it reads your project from our server into your own browser. | The sign-in on your computer (~/.prodready/dashboard.json); nothing new on the server. |
| Contact record | Your email, the time, the host name. | Yes — it is the account. |
| Licence request | Your email, the host name and what you type into the request. | Yes, to answer it. |
Deleting a project: ask your agent to delete it. It calls sdlc_project_list for the id, then sdlc_project_delete with confirm: true, which removes the document, its index entry and its report pages. It cannot be undone, and it works without a licence.
Usage is counted per day, per event and per host, without the account; analytics never receive your email or its hash. The full policy: prodready.si/privacy.
10Troubleshooting
| You see | It means | Do this |
|---|---|---|
| “tools fetch failed” right after sign-in | The host's first tool fetch after sign-in did not go through. | Reconnect once: /mcp in Claude Code → prodready → Reconnect. The token is fine. |
401 / “The access token is invalid or expired” / the host asks you to authenticate again | The access token lapsed and could not be refreshed, or was revoked. | Reconnect from the host; sign in by email again if asked. Your projects are bound to the email, not the token. |
| “Open the link in the browser where you started.” | The magic link was opened in another browser or device. | Open it in the starting browser, or type the 6-digit code into the sign-in page there. |
| “Sign-in expired” / “Link expired” | The sign-in page is older than ten minutes, the link older than fifteen, or it was already used. | Start the connection again from your host. |
| “Unknown client” | The host's registration with the server is gone. | Remove the server from your host and add it again; it registers anew. |
| “Too many links requested. Try again in an hour.” | Five links per email, thirty per address, per hour. | Use the last link you received, or wait the hour. |
| “The SDLC tools are part of the prodready SDLC licence…” | The licence is not active for the email you signed in with. | Request it (§08). Signed in with another address? Remove the server, add it again and sign in with the licensed one. |
| “…Next allowed step: …” | A step skipped a gate, or ran in the wrong state. | Do that step. The server will not skip a gate for anyone. sdlc_status shows where you are. |
| “…this change was not stored” / “not stored, call again” | Two calls changed one project at the same instant. | Call the same tool again with the same arguments. |
| “This report link has expired or never existed.” | Report pages live seven days. | Run the scan or sdlc_report again for a fresh page. |
| “Report pages are limited to 30 an hour per account…” | The hourly report-page limit. | Wait, or run prodready_assess with report: "none". |
| “prodready_assess needs the structured results of prodready_probe” | The agent called assess without results, or with fields the schema does not list. | Call prodready_probe, run the commands, send evidence.results keyed by check id. |
| “Not started: an unattended run needs the person's go-ahead in their own words.” | Autonomous mode or autonomous refinement was asked to start without your own words, or with vague ones. | Tell your agent in a sentence, e.g. run it unattended for one sprint; it passes your words as they are. |
An autonomous run paused with needs_human | A blocking question or a Blocked story needs a person, or the same step came back five times. | Answer the one question your agent shows (answer D-n: …), then resume the run. |
| The local dashboard asks you to sign in again | Its sign-in expired or was revoked. | Sign in with the same email you use in your coding agent. Delete ~/.prodready/dashboard.json to switch accounts. |
A story is Blocked | Three failed verify attempts, or three rejected review rounds. | A person decides what changes about the story; then sdlc_refine releases it. |
HTTP 413 | A request body over 2 MB. | Send fewer results per call. |
11Protocol notes for integrators
Transport and versions
MCP over streamable HTTP at https://mcp.prodready.si/mcp. The era is chosen by method and headers, never guessed.
| Protocol version | Behaviour |
|---|---|
2025-03-26 · 2025-06-18 · 2025-11-25 | initialize handshake, Mcp-Session-Id, GET with Accept: text/event-stream opens an SSE stream, DELETE ends a session. A request without MCP-Protocol-Version is read as 2025-03-26; an unknown version at initialize is answered with 2025-11-25. |
2026-07-28 | Stateless: no initialize, no session, per-request _meta, server/discover. Mcp-Method (and Mcp-Name) must match the body. GET and DELETE answer 405. |
The server offers tools and prompts. The session id is protocol furniture, not a key into anything: the readiness tools keep no state beyond the report page.
Authorization
OAuth 2.1: authorization code with PKCE (S256), dynamic client registration, rotating refresh tokens, scope readiness. A call without a bearer token gets 401 with WWW-Authenticate pointing at the resource metadata; CORS exposes WWW-Authenticate, Mcp-Session-Id and MCP-Protocol-Version.
| Endpoint | Purpose |
|---|---|
GET /.well-known/oauth-protected-resource (also …/mcp) | RFC 9728 resource metadata |
GET /.well-known/oauth-authorization-server (also /.well-known/openid-configuration) | RFC 8414 server metadata |
POST /oauth/register | RFC 7591 dynamic client registration |
GET /oauth/authorize · POST /oauth/authorize | The sign-in page; sends the magic link and the 6-digit code |
GET /oauth/verify · POST /oauth/code | The consent page, by link or by code |
POST /oauth/consent | Approve or cancel; redirects back with a code |
POST /oauth/token | authorization_code and refresh_token grants |
POST /oauth/revoke | RFC 7009 revocation |
Other URLs
| URL | What it is |
|---|---|
GET /health | Open, no token. Status, version, transport, supported protocol versions, the tool names and the check count. |
GET /r/<id> | A report page: unlisted, noindex, no-referrer, seven days. |
GET / | A landing page for people who open the server in a browser. |
# no token needed
curl -s https://mcp.prodready.si/health
# {"status":"ok","service":"prodready","transport":"mcp-streamable-http",
# "protocol_versions":["2026-07-28","2025-11-25","2025-06-18","2025-03-26"],
# "tools":[…],"stateful":false,"stores_evidence":false, …}
Bounds
- A JSON-RPC batch carries at most 20 messages; a body at most 2 MB (
413). - Report pages: 30 per account an hour (per address when signed out), across
prodready_assessandsdlc_report. - Tool results are cut at 40 KB, keeping the head and the next step.
- A project document is at most 4 MiB. Story fields: ≤ 8 acceptance criteria, ≤ 15 tasks, 500 characters each.
- Calls on one project run one at a time; a write that lost a race says so instead of confirming.
- Tool annotations mark
readOnlyHint,destructiveHintandidempotentHint; onlysdlc_project_deleteis destructive. - Stories per import: 60. Decisions, risks, releases and change requests are bounded per project; the tool says so when a bound is reached.
Install it. Run the free enterprise-grade due diligence tonight.
Sign-in is by email and free. The due diligence tells you what is wrong; the prodready SDLC is how your agent fixes it without skipping a step.