---
title: "MERCURY Cited Feed"
method: GET
path: "/buy/feed"
tags: ["cited-feed", "rss", "atom", "feed-parser", "news-feed", "rss-to-json", "feed-normalization", "verifiable-data-record", "attestation", "provenance", "keyless", "agent-native", "rag", "news-agents", "data-feed"]
---

# MERCURY Cited Feed

`GET /buy/feed`

## Request

- Base URL: `https://network.mercury-hq.com`
- URL: `https://network.mercury-hq.com/buy/feed`
- Auth: none declared
- TypeScript: <https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront/docs/buy/feed/get.ts> (a function with typed inputs; its response is checked against the schema)

RSS/Atom feed URL → a SIGNED, normalized item list [{title,link,published,summary}] unified across RSS 2.0/RDF + Atom 1.0: CDATA unwrapped, HTML stripped, entities decoded, dates → ISO-8601 (publishedRaw kept verbatim, never fabricated). Deterministic — same feed bytes ⇒ byte-identical items; no LLM. Core 4 fields only (not full-content/media/author). Receipt = EIP-191 over the canonical item list.

## Query parameters

- `url` string, required: the RSS/Atom feed to normalize (http/https)

## Response `200`

Delivered after the x402 payment settles on Base mainnet.

- object
  - `ok` boolean, required: true on success; false on an honest failure (still delivered)
  - `url` string, required: final feed URL after redirects
  - `status` integer: upstream HTTP status
  - `data` object: the normalized feed (the product the buyer consumes)
    - `feedTitle` string: channel/feed <title>
    - `kind` 'rss' | 'atom': which dialect was parsed
    - `count` integer: number of normalized items (capped at 100)
    - `items` object[]: uniform item records across both dialects
      - `title` string: item/entry title (CDATA-unwrapped, decoded)
      - `link` string: canonical article URL (Atom alternate / RSS link / permalink id)
      - `published` string: ISO-8601 UTC when parseable, else empty (see publishedRaw)
      - `publishedRaw` string: the feed's original date string, verbatim (honest)
      - `summary` string: item description/summary, HTML stripped, ≤1000 chars
  - `text` string: canonical JSON string the signed receipt covers (data, with object keys sorted)
  - `contentType` string
  - `fetchedAt` string: ISO8601 fetch time (in the signed payload)
  - `error` string: present only when ok:false

## Other responses

- `402`: Payment Required — retry with an x402-signed payment (e.g. x402-fetch). Terms are in the challenge body (x402 v1).

---

[API](https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront.md) - [All operations](https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront/llms.txt) - [OpenAPI document](https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront/revisions/211aa7db24ae?raw)
