Call `createFeedDocument` to obtain a `feedDocumentId` and a pre-signed S3 upload URL; upload your JSON feed file (with `Content-Type: text/plain`) to that URL.
Call `createFeed` with `feedType: JSON_LISTINGS_FEED`, the `feedDocumentId`, and a `marketplaceIds` array; record the returned `feedId`.
Poll `getFeed` with the `feedId` until `processingStatus` reaches `DONE`; back off using exponential retry since processing can take minutes to hours for large feeds.
When `DONE`, call `getFeedDocument` using the `resultFeedDocumentId` from the feed response to get the report download URL; fetch and decompress the report (it may be gzip-compressed).
Parse the processing report JSON: the `header` section lists feed-level metadata and the `messages` array contains per-ASIN results with `messageId`, `processingStatus`, and an `issues` array for failures.
For each message with a non-`ACCEPTED` status, extract the `issues` array (each issue has a `code`, `message`, and `severity`) and re-submit corrected records in a follow-up feed.
Known gotchas
The `resultFeedDocumentId` returns an upload result (confirming the file was parsed), not the final catalog processing result; full per-ASIN status may take additional time to reflect.
Feed documents expire: the pre-signed upload URL typically has a short TTL; upload your file immediately after calling `createFeedDocument` or the upload will fail with a 403.
Amazon silently truncates feeds that exceed size limits; split large catalogs into multiple feeds and track each `feedId` independently to ensure complete coverage.
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