Initiate a bulk operation by sending a GraphQL mutation using bulkOperationRunQuery with a query that iterates over all products and their variants using the productConnection pattern
Poll the bulk operation status by querying currentBulkOperation for fields id, status, errorCode, and url until status reaches COMPLETED
Once completed, download the JSONL result file from the signed URL returned in the url field; each line is a separate JSON object representing one node
Parse the JSONL file, correlating child variant nodes back to their parent product using the __parentId field present on each child line
Handle the FAILED and CANCELED statuses by checking errorCode and retrying the mutation after backing off; bulk operations are rate-limit-friendly but only one can run per shop at a time
Cancel a running operation if needed using the bulkOperationCancel mutation before starting a new one
Known gotchas
Only one bulk operation can be active per shop at any time; attempting to start a second returns a MAX_COST_EXCEEDED or existing operation error
The signed download URL expires after a short window; fetch and store the file immediately after status reaches COMPLETED
Nested connections inside a bulk query (e.g., metafields inside variants) require each nested level to also use edges/node pattern and will appear as separate JSONL lines linked by __parentId
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp