Droplinked publishes every merchant’s public catalog as a Stripe Agentic Commerce Protocol
(ACP) product feed. This is the surface that agentic shopping experiences ingest — so a
merchant’s existing inventory is discoverable and purchasable by agents without the merchant
building anything new.
Which artifact do I point at?
All three delimited artifacts carry the same rows, rebuilt together. As of 2026-09-01 the feed
holds 35,655 rows, of which 947 are checkout-eligible.
The delimited feed
latest.tsv.gz is a gzipped, tab-separated file with a header row and 23 columns. Column
positions are 1-indexed — useful when you are slicing it with awk or cut:
Coverage, as measured 2026-09-01
Several columns are present in the header but thin or synthetic in the data. Check before you rank, join, or dedupe on them:latest.jsonl carries the same fields as one JSON object per line, omitting keys that are empty
for that row — convenient for streaming consumers that do not want to hold the file in memory.
Read it
latest.tsv.gz is served with a Content-Encoding: gzip header. curl without
--compressed receives the raw gzip bytes, so piping through gunzip -c is correct. HTTP
libraries that negotiate encoding by default (Python requests, most browsers) have
already decompressed the body — decompressing again fails. When in doubt, use the
uncompressed latest.tsv.Search eligibility vs checkout eligibility
Two separate gates, and they are not the same number. Every row in the feed is search-eligible; a row becomes checkout-eligible only once the requirements in columns 14 and 15 are met. When column 13 isfalse, column 17 tells you exactly why:
The JSON API
https://apiv3.droplinked.com/feed/acp.json serves the catalogue as JSON. It is the right tool
for a direct query — a jq lookup, a fetch inside an agent tool — and the wrong tool to hand an
ACP ingester.
It is cursor-paginated: one request returns one page plus a next_cursor, not the whole
catalogue. Filtering a single response and finding nothing does not mean the item is absent.
Follow next_cursor until it is absent, or use the delimited artifact, which is complete in one
file and covers supply sources this endpoint does not.
limit caps the page size, which is what you want for a quick look — the unbounded response is
tens of megabytes. Use it for inspection only: with a small limit the endpoint can return an
empty page while still handing back a next_cursor, so a cursor walk should stop on an empty
page as well as on a missing cursor.
price is an object ({ "value": 30, "currency": "USD" }) in the JSON API and a single
string ("30.00 USD") in the delimited artifacts. Normalise accordingly.Quick agent integration
How it’s used
- Agents & shopping surfaces ingest the delimited artifact to make Droplinked inventory searchable and buyable in-context.
- The MCP servers let an agent query the same catalog directly —
search_products/find_inventoryonmcp.droplinked.com— rather than ingesting a feed at all. - Purchases route through the Stripe ACP / x402 layer with the 70/20/10 revenue split.
Related
MCP Server
Direct programmatic API access for agents (search, fetch, checkout).
OpenAPI Spec
Full machine-readable API surface (cart, checkout, orders) for fresher-than-feed data.
Connect your store
Make your existing inventory agent-shoppable.
x402 premium feed
The paid, ranked slice of the same catalogue.
Cache + refresh
- The feed regenerates on product create/edit/delete plus a short refresh cycle for inventory
and price.
generated_aton the JSON response and the S3Last-Modifiedheader on the delimited artifacts both tell you the snapshot time. - For agents requiring up-to-the-second data, hit the cart/checkout endpoints in the OpenAPI Spec directly.