API reference
Public control, receipt, and schema contracts.
Scope and proof boundaries
These identifiers and routes are legitimate public integration material. A customer run controls one bounded practice lifecycle; it does not grant Shopify production access or verify a receipt result.Identity and credentials
storeIdidentifies the practice store.attemptIdidentifies the run returned by start and is used by later lifecycle calls.- Direct external HTTP control calls use a workspace API key. Hosted MCP control tools accept an authorized principal through OAuth or a workspace API key. The agent receives only the separate Admin URL and per-store token.
Run 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. For example: { "days": 1, "advanceCursor": { "expectedDay": 12, "expectedCallSeq": 4 } }.