Skip to main content

Ideation & refinement

Pulse exposes 23 of its 216 MCP tools for the first two pipeline stages — turning a raw request into a derived spec:
  • 12 ideation tools (server.py:3318–4538, plus delete_spec_from_ideation derivation alias) — the intake stage. Captures the request, runs scope evaluation, and either advances directly to a spec or branches into refinement.
  • 11 refinement tools (server.py:4539–5460, plus snapshots at server.py:10975–11067) — the deep-investigation stage. Source files, KG queries, runtime logs, and stakeholder answers become citable evidence before a spec contract is written.
Cross-cutting concerns — Q&A, knowledge entries, attachments, architecture, mockups — live on their own reference pages. This page focuses on the lifecycle, scope evaluation, and spec-derivation tools. Source-of-truth citations: okto-pulse-feature-inventory.md:290–314 (ideation tools), :315–332 (refinement tools), :446–456 (refinement snapshots), :967–981 (status enums), :982–1021 (governance gates).

When to use what

A simple feature can skip refinement entirely — call okto_pulse_derive_spec_from_ideation once the ideation reaches refined. Use refinement when the request needs investigation that will outlive the ideation: which storage backend, which library, what the existing code already does.

Status flow and gates

Source: okto-pulse-core/src/okto_pulse/core/models/db.py (status enums) and permissions.py (transition gates).
The transitions are enforced server-side. A client cannot move an ideation to refined without first submitting okto_pulse_evaluate_ideation, and cannot move a refinement to review without populating findings, evidence, and constraints. See okto-pulse-feature-inventory.md:982–1021 for the full gate list.

Tool index

Ideation lifecycle (7)

create_ideation, get_ideation, get_ideation_context, list_ideations, update_ideation, move_ideation, delete_ideation.

Refinement lifecycle (7)

create_refinement, get_refinement, get_refinement_context, list_refinements, update_refinement, move_refinement, delete_refinement.

Scope evaluation (1)

evaluate_ideation — three-axis score (domains, ambiguity, dependencies) with written justification per axis.

Spec derivation (2)

derive_spec_from_ideation, derive_spec_from_refinement — pre-populate a spec from upstream artifacts.

Snapshots & history (6)

Per-stage list_*_snapshots, get_*_snapshot, get_*_history for ideation and refinement.
For Q&A on either stage, see Comments & questions. For attaching reference docs, see Knowledge & attachments. For architecture diagrams and mockups, see Architecture & mockups.

Ideation lifecycle

okto_pulse_create_ideation

Source: server.py:3319. Create an ideation with a title, description, and initial context.

okto_pulse_get_ideation

Source: server.py:3388. Returns the ideation with its Q&A, knowledge, and submitted scope assessment (if any).

okto_pulse_get_ideation_context

Source: server.py:3468. Use this — not get_ideation — before advancing the ideation or deriving a spec. It returns the rich bundle: ideation core fields plus linked refinements plus a Knowledge Graph context block (similar prior decisions, related entities). This is what saves an agent from re-discovering decisions another agent already recorded.

okto_pulse_list_ideations

Source: server.py:3573. List ideations on a board, optionally filtered by status (draft / evaluating / refined / done).

okto_pulse_update_ideation

Source: server.py:3634. Update title, description, context, or scope_assessment. Calling this from refined status snapshots the previous version so history is preserved.

okto_pulse_move_ideation

Source: server.py:3716. Advance ideation status. The state machine enforces draft → evaluating → refined → done; backward transitions (refined_to_draft) require the dedicated permission flag.

okto_pulse_delete_ideation

Source: server.py:3782. Permanently delete an ideation. Linked refinements and derived specs become orphaned; prefer archive_tree (see Architecture & mockups) when you need a soft-delete with restore.

Scope evaluation

okto_pulse_evaluate_ideation

Source: server.py:3813. Submit a three-axis scope evaluation. Each axis takes a numeric score (1–5) and a written justification — Pulse rejects score-only submissions.
An ambiguity score of 4 or 5 blocks the evaluating → refined transition. Use okto_pulse_ask_ideation_choice_question (see Comments & questions) to drive structured answers that pin scope down before re-submitting an evaluation.

Refinement lifecycle

okto_pulse_create_refinement

Source: server.py:4540. Create a refinement linked to an ideation that has reached refined status.

okto_pulse_get_refinement

Source: server.py:4645. Return the refinement with its Q&A and knowledge entries.

okto_pulse_get_refinement_context

Source: server.py:4717. Rich bundle: refinement + parent ideation + KG context + prior decisions ranked by similarity. Call this before recording any new finding — the KG section often surfaces a decision already on the graph for the same problem.

okto_pulse_list_refinements

Source: server.py:4825. List refinements on an ideation.

okto_pulse_update_refinement

Source: server.py:4890. Update findings, evidence, and constraints. These three fields are the gate evidence — the in_progress → review transition checks that they are non-empty.
Pulse explicitly rejects “copying stale repo docs without source verification” as a refinement anti-pattern. Evidence must be checkable against the current codebase — path:line references, KG query outputs, runtime artifacts. An agent that records vague findings has not completed refinement.

okto_pulse_move_refinement

Source: server.py:4979. Advance refinement status. Each gate is enforced server-side and cannot be bypassed.

okto_pulse_delete_refinement

Source: server.py:5044. Permanently delete a refinement.

Spec derivation

Both derivation tools create a new spec pre-populated with content captured upstream. Knowledge entries propagate; architecture designs cascade; the parent’s Q&A history is referenced via foreign key. The parent transitions to done once derivation succeeds.

okto_pulse_derive_spec_from_ideation

Source: server.py:3905. Create a spec from a refined-status ideation. Use this when the ideation is straightforward and refinement is unnecessary.

okto_pulse_derive_spec_from_refinement

Source: server.py:5075. Create a spec from an approved-status refinement. Findings, evidence, and constraints become draft spec content. Use this when the refinement uncovered work that the spec must encode (decisions to record, constraints to honour).
After either call, switch to the Spec tools reference to add acceptance criteria, business rules, test scenarios, decisions, and API contracts.

Snapshots and history

Versioning is automatic — each meaningful update creates a snapshot you can list or replay. History is the per-field edit log.

Permissions

A blocked call returns FORBIDDEN. Adjust the agent’s preset in Board → Agents → Edit.

Errors


Next steps

Specs

Acceptance criteria, business rules, test scenarios, decisions, API contracts, evaluation gate, validation gate.

Comments & questions

The ambiguity-killer Q&A protocol and free-form comments across stages.

Knowledge & attachments

Reference docs and binary files attached to ideations and refinements.

ADLC pipeline

Where ideation and refinement fit in the end-to-end flow.
Last modified on May 17, 2026