delete_research_run
Delete a research run by its ID; soft delete by default, or use hard=true to permanently remove.
Instructions
Delete a research_run by ID. Soft delete by default (sets status to 'deleted'). Set hard=true to permanently remove. IDs start with rr_.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| hard | No | Permanently remove instead of soft delete. | |
| research_run_id | Yes | research_run ID (rr_...) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The research query or topic | |
| title | No | Short human label for the run (3–8 words). Distinct from `query`, which holds the full research brief. Auto-generated server-side via the FAST_LLM shortly after the entity is created when not supplied by the caller. Renders in list rows and as the detail-view heading; the UI falls back to a truncated `query` while title is null. | |
| report | No | The final markdown report. Populated when status becomes 'completed'. | |
| sources | No | Sources consulted during the research run. Populated incrementally during the 'Gathering sources' phase. | |
| progress | No | Completion percent (0–100) | |
| run_status | No | Execution status, mirrors the MCP task status for the underlying run. Distinct from the base entity `status` field which tracks lifecycle (active/archived/deleted). | working |
| started_at | No | ISO 8601 timestamp when the run started | |
| completed_at | No | ISO 8601 timestamp when the run reached a terminal state | |
| error_message | No | Error details when status is 'failed' | |
| phase_history | No | Timeline of phase transitions for this run. Append-only; each entry records when a phase started and when it ended (null for the currently-running phase). Preserved after completion so the time distribution is auditable forever. | |
| status_message | No | Short human-readable description of the current phase | |
| last_heartbeat_at | No | Last time the worker emitted any signal, including liveness heartbeats. Updated continuously while the run is working — independent of progress, which only advances on real phase transitions. Used by the UI to surface staleness when no signal has arrived in 10s+ (separates 'still alive but slow' from 'actually hung'). | |
| current_phase_started_at | No | ISO 8601 timestamp recording when the currently-active phase began. The UI derives the elapsed-time suffix in the status line from this — `now - current_phase_started_at`, recomputed every second client-side. This decouples display cadence from worker write cadence: the worker only updates this value on phase transitions (a stable input), the UI animates the display (the smooth output). Cleared on terminal transitions. |