---
title: "Workflow Progress Poll"
method: GET
path: "/v1/mcp/workflow-progress/{run_id}"
tags: ["mcp-iframe-polling"]
---

# Workflow Progress Poll

`GET /v1/mcp/workflow-progress/{run_id}`

## Request

- Base URL: `https://api.evidenso.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.evidenso.com/v1/mcp/workflow-progress/{run_id}`
- Auth: none declared

Return the current live-progress payload for an in-flight workflow run.

Called by the workflow-result iframe every ~3s. The signature is
HMAC-SHA256 over `run_id` with `MCP_WORKFLOW_PROGRESS_SIGNING_SECRET`
(or `INTERNAL_SERVICE_TOKEN` as the fallback). On signature mismatch we
return 403 — same shape as expired/leaked URLs.

Response body:
    {"workflow_progress": {...}}  — matches `_meta.workflow_progress`
    from the MCP tool results, so the iframe reads either source the
    same way. On terminal/paused runs the payload carries just
    {run_id, board_id, status} so the iframe stops polling.

## Path parameters

- `run_id` string, required

## Query parameters

- `sig` string, required: HMAC signature from the kickoff URL.

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/evidenso/apis/persona-rag-api.md) - [All operations](https://skmtc.dev/evidenso/apis/persona-rag-api/llms.txt) - [OpenAPI document](https://skmtc.dev/evidenso/apis/persona-rag-api/revisions/86408c178d4f?raw)
