Reference for the 26 MCP tools that turn a validated spec into reviewable execution: sprint scope and evaluation, card lifecycle, dependencies, blockers, traceability, and board analytics.
The execution domain. Once a spec is validated, work splits into sprints (logical delivery slices) and cards (single execution units). Pulse exposes 26 of its 216 MCP tools for this stage:
Sprint lifecycle (8) — create / update / move / get / get_context / list, AI-assisted suggest_sprints, and assign_tasks_to_sprint.
Sprint evaluation (4) — submit / list / get / delete sprint evaluation (the review → closed gate).
This page covers sprint scoping, sprint quality evaluation, and the card lifecycle. The task validation gate (submit_task_validation) and the test theater anti-pattern (update_test_scenario_status) live on the Validation gates page. Card Q&A and comments live on Comments & questions; card knowledge and attachments on Knowledge & attachments; copy-from-spec mockups and architecture on Architecture & mockups.Source-of-truth citations: okto-pulse-feature-inventory.md:256–271 (card lifecycle), :457–475 (sprint tools), :395–410 (analytics + blockers + traceability), :967–981 (status enums), :982–1021 (governance gates).
A sprint is not a time-box. It is a scope contract: “these N cards go together; close the sprint when they are validated.” Sprints scope a release more than a calendar.
submit_sprint_evaluation recorded; passed test scenarios re-validated
Card
not_started → started
okto_pulse_move_card
none
Card
started → in_progress
okto_pulse_move_card
bug cards: at least one failing test scenario must exist (test-first gate)
Card
in_progress → validation
okto_pulse_move_card
none
Card
validation → done
okto_pulse_move_card
conclusion + completeness + drift recorded; if Task Validation Gate enabled, an independent reviewer must submit_task_validation — see Validation gates
Sprint close re-validates every test scenario marked passed on cards in the sprint. A scenario marked passed without the structured evidence recorded by update_test_scenario_status is treated as theater — sprint close fails and the scenario regresses to pending until evidence is supplied. See the Validation gates page for the evidence schema.
Source: server.py:12128. AI-assisted: slice a validated spec into one or more reviewable deliveries. Returns sprint candidates with title, objective, expected outcome, and recommended card list.
The sprint evaluation is the quality gate for review → closed. It captures a written retrospective with structured ratings (a sprint cannot close silently).
Tool
Line
Description
okto_pulse_submit_sprint_evaluation
server.py:11724
Submit an evaluation (rating + narrative)
okto_pulse_list_sprint_evaluations
server.py:11799
List evaluations recorded on a sprint
okto_pulse_get_sprint_evaluation
server.py:11831
Get one evaluation by ID
okto_pulse_delete_sprint_evaluation
server.py:11861
Delete an evaluation
sprint_id: "spr_a01b..."rating: "good"narrative: "All 3 cards closed; AC1-AC3 fully covered. One card slipped to Sprint 2 due to Redis cluster auth issue (linked decision dec_e7ca already updated). No drift on the validated cards."
Source: server.py:1880. The single most-called tool inside an implementation session. Returns card + spec + business rules + test scenarios + decisions + KG context — everything an implementer agent needs to start work without re-reading the spec from scratch.
Always call get_task_context before moving a card to in_progress. The KG context block surfaces decisions another agent recorded on a similar card; reading them often cuts implementation time substantially.
Source: server.py:2145. Update card fields, including conclusion, completeness, drift, and bug_severity. The conclusion fields are required before move_card can transition validation → done.
card_id: "card_771a..."conclusion: "Token-bucket implemented with INCRBYFLOAT + EXPIRE. Atomic via Lua script (RT_LIMITER_INCR.lua). Fail-open path tested via Redis-down chaos test (test_rate_limit_fail_open)."completeness: 95completeness_justification: "All AC1 paths covered; one perf test (sustained 5 req/s for 10 minutes) deferred — not blocking, tracked via card_88b3 follow-up."drift: 10drift_justification: "Spec called for INCRBY; switched to INCRBYFLOAT to handle fractional refill rate (decision dec_f201 added)."
A card whose depends_on set contains an unfinished card is reported in list_blockers. The card itself can still move forward if its dependencies are satisfied — this is hard data, not a hard gate.
These four tools span sprints, cards, and the spec contract — they answer board-level health questions and are commonly the first calls a planning agent makes.
Source: server.py:8199. List cards currently blocked — status=on_hold or with unresolved dependencies. Pulse classifies both shapes the same way; an agent reviewing blockers does not need to query both lists.
Source: server.py:10713. Full lineage: spec → BRs → TRs → scenarios → cards → validations. The single best call for “what evidence have we produced for this spec?” — runs entirely inside Pulse, no KG round-trip needed.
{ "error": "CONFLICT", "message": "Cannot move bug card to 'in_progress' — no failing test scenario linked. Add a failing scenario before starting bug work (test-first gate).", "detail": {"card_id": "card_bug12...", "card_type": "bug", "linked_scenarios_failing": 0}}
Code
Most common cause
VALIDATION_ERROR
Conclusion / completeness / drift fields empty when moving validation → done; sprint evaluation submitted without narrative.
NOT_FOUND
Card / sprint / dependency ID belongs to another board.
FORBIDDEN
Agent’s preset does not include the required permission flag.
CONFLICT
Bug card → in_progress without a failing test scenario; sprint → closed without an evaluation; card → done without conclusion fields or task validation.