RSS/Atom feed parser
POST /api/feed-parseFetch an RSS 2.0, Atom, or RSS 1.0 feed URL and parse it into normalized JSON: feed title/description/link plus items (title, link, id, published, author, plain-text summary, categories). Send POST /api/feed-parse with the required field url and pay $0.004 per call over x402 or MPP (there is no free tier). It returns a JSON object with url, format, title, description, link and 4 more.
Deterministic pure-XML parse with a lenient recovery pass for common malformations (reported in a warnings array). Item count is bounded (default 20, max 50). SSRF-guarded.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
url | string | yes | Feed URL (RSS 2.0, Atom, or RSS 1.0/RDF) Also accepted as link, uri, href, page. |
limit | number | no | Max items to return, 1-50 (default 20) |
Example request
curl -i -X POST https://agent402.tools/api/feed-parse \
-H "Content-Type: application/json" \
-d '{"url":"https://agent402.tools/changelog.xml","limit":5}'
Without payment this returns HTTP 402 Payment Required with the exact price for feed-parse; any x402 v2 or MPP client pays it and retries.
Example response
{
"url": "https://agent402.tools/changelog.xml",
"format": "rss2",
"title": "Agent402 Changelog",
"description": "Recent additions to Agent402: new tools, skill packs, framework adapters, and platform features.",
"link": "https://agent402.tools/changelog",
"updated": null,
"itemCount": 36,
"items": [
{
"title": "Live payments view",
"link": "https://agent402.tools/changelog",
"id": "agent402-changelog-2026-09-30",
"published": "Wed, 30 Sep 2026 12:00:00 GMT",
"author": null,
"summary": "Item summary…",
"categories": []
}
],
"warnings": []
}
| Field | Type | Always present | In the example |
|---|---|---|---|
url | string | yes | https://agent402.tools/changelog.xml |
format | string | yes | rss2 |
title | string | yes | Agent402 Changelog |
description | string | yes | Recent additions to Agent402: new tools, skill packs, framework adapters, and... |
link | string | yes | https://agent402.tools/changelog |
updated | null | no | null |
itemCount | number | yes | 36 |
items | array of objects | yes | 1 item in the example |
warnings | array | yes | 0 items in the example |
From an MCP client
catalog.call {
"slug": "feed-parse",
"params": {
"url": "https://agent402.tools/changelog.xml",
"limit": 5
}
}
The hosted connector at https://agent402.tools/mcp needs a payment for feed-parse; the stdio package pays it from a wallet or from AGENT402_CREDITS_KEY. Local install: npx -y agent402-mcp.
Errors and behavior
urlis required. An input the tool rejects returns an HTTP 4xx whose body carrieserror,tool,expected,requiredandexample, so the caller can correct it.- A paid call that ends in any status of 400 or above is not charged over x402, MPP or a prepaid credits key: settlement is cancelled when the tool fails. The exception is a Tempo push credential, a transfer the buyer sent before the call: it settles before the tool runs, so if the tool then fails the payment is recorded as a refund owed to the paying wallet.
- Wallet-only: this tool reaches the network or stored state, so it has no proof-of-work tier. A prepaid card-credits key issued earlier (
Authorization: Bearer a402_...) also pays it. - A
GETorHEADto /api/feed-parse returns the same 402 quote, so the price can be read without a body. - An
Idempotency-Keyheader makes a retried paid call replay the first 200 instead of charging again (an answer larger than 1 MB is not replayed).
Paid call (JavaScript agent)
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
client.setSpendControls?.(false); // keep your own spending ceiling in code
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/api/feed-parse", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"url": "https://agent402.tools/changelog.xml",
"limit": 5
}),
});
Part of these workflows
RSS/Atom feed parser is one step in this skill pack, each sold as a single call:
- Feed watch - Monitor an RSS/Atom feed in one call: parse the feed, read the top story in full, extract the keywords driving the cycle, and diff the item list against your last run to isolate what's new.
Related tools
Wayback Machine snapshot
POST /api/archive-snapshotLook up a URL in the Internet Archive's Wayback Machine: returns the archived snapshot closest to an optional timestamp …
Exa grounded answer
POST /api/exa-answerAsk a question and get a written answer with the sources it was drawn from. Exa searches its index, reads the pages and …
Exa page contents
POST /api/exa-contentsRetrieve the readable text of up to 10 web pages by URL, with optional query-focused highlights. Exa serves from its cra…
Exa neural web search
POST /api/exa-searchNeural (embedding-based) web search over Exa's curated index, which finds pages by meaning rather than keyword overlap. …
Site favicon grabber
POST /api/favicon-grabFetch a site's favicon/logo: reads the page's declared <link rel=icon…> tags (all variants with their sizes and types), …
Farcaster channel feed
POST /api/fc-channel-feedLatest casts in one or more Farcaster channels (e.g. base, farcaster, ethereum), newest first, with optional replies. Co…