API and runner reference
Public control, runner, receipt, and schema contracts.
Scope and proof boundaries
These identifiers and routes are legitimate public integration material. A runner controls one bounded practice lifecycle; it does not grant Shopify production access or verify a receipt result.Identity and credentials
storeIdidentifies the practice store;worldIdremains an accepted compatibility alias.attemptIdidentifies the run returned by start and is used by later lifecycle calls.- Control calls use the workspace API key; the agent receives only the separate Admin URL and per-store token.
Runner lifecycle
| Action | HTTP route | MCP tool |
|---|---|---|
| Start | POST /practice/stores/{storeId}/playbacks | practice_run_start |
| Status | GET /practice/playbacks/{attemptId}/state | practice_run_status |
| Checkpoint | POST /practice/playbacks/{attemptId}/checkpoint | practice_run_checkpoint |
| Advance | POST /practice/playbacks/{attemptId}/advance | practice_run_advance |
| Finish | POST /practice/playbacks/{attemptId}/finish | practice_run_finish |
| Receipt | GET /practice/playbacks/{attemptId}/report | practice_run_report |
Advance accepts exactly one of days or until. Copy the current server-owned practiceRun.advanceCursor object unchanged; legacy flat expectedDay and expectedCallSeq request fields remain compatible.