Authenticate with a Google service account or OAuth 2.0 credentials with the Content API scope; obtain an access token and include it as a Bearer token on all requests
Insert or update a product via POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products with a product resource containing offerId, title, description, link, imageLink, price, availability, condition, and gtin
For bulk uploads, use the custombatch endpoint POST /products/batch with an array of entries each specifying batchId, merchantId, method (insert/get/delete), and product data
Create and manage a supplemental feed by POSTing to /datafeeds with a FetchSchedule specifying the feed URL, fetch frequency, and file format (TSV or XML) for automated scheduled fetches
Retrieve product status including disapproval reasons via GET /{merchantId}/productstatuses/{productId} to surface issues like missing required attributes or policy violations
Delete a product via DELETE /{merchantId}/products/{productId} where productId is formatted as channel:contentLanguage:targetCountry:offerId (e.g. online:en:US:SKU123)
Known gotchas
Product IDs in the Content API use a composite format combining channel, language, target country, and offerId; constructing this incorrectly causes 404 errors on get/delete calls
Free listings and Shopping Ads share the same product data but require different program enrollments; disapprovals in one program do not always affect the other
Price and availability attributes must match the landing page exactly; mismatches trigger automatic disapprovals that can take up to 24 hours to resolve after correction
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