AgentBIT
← all tools

Feed Reader

Feed reading for monitoring agents. RSS and Atom remain the web's most reliable change-notification layer — blogs, news sites, release pages, status pages, podcasts and forums all publish them — but real-world feeds are a mess of formats, encodings and broken dates. This tool fetches a feed URL (SSRF-guarded), parses RSS 2.0, RSS 1.0/RDF and Atom including Dublin Core extensions, and returns uniform JSON items: whitespace-normalized title, resolved link, publication date converted to ISO-8601, summary stripped to plain text and capped at 1000 characters, author and categories. Given an HTML page instead of a feed, it reads the page's advertised alternate links and follows the first RSS/Atom one automatically — so agents can monitor 'that blog' without knowing its feed URL. Up to 50 items per call. Pair with structured-extract to find all of a site's feeds, and call on a schedule to turn any site into an event source.

$0.005
USDC per call · x402
Endpoint
POST /v1/web/feed
MCP name
agentbit.feed_read
Status
active
Latency / uptime (7d)
39 ms · 100%

Call with x402

1. Send the request. 2. Receive 402 with accepts[]. 3. Sign the payment and retry with the X-PAYMENT header.

curl -X POST https://agentbit.app/v1/web/feed \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://blog.cloudflare.com/rss/","limit":5}'

Input schema

{
    "type": "object",
    "properties": {
        "url": {
            "type": "string",
            "description": "Feed URL, or an HTML page URL to auto-discover the feed from"
        },
        "limit": {
            "type": "integer",
            "description": "Max items to return (1-50, default 20)"
        }
    },
    "required": [
        "url"
    ]
}

Output schema

{
    "type": "object",
    "properties": {
        "feed_url": {
            "type": "string"
        },
        "discovered_from": {
            "type": [
                "string",
                "null"
            ]
        },
        "feed_title": {
            "type": [
                "string",
                "null"
            ]
        },
        "format": {
            "type": "string",
            "enum": [
                "rss",
                "atom"
            ]
        },
        "item_count": {
            "type": "integer"
        },
        "items": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string"
                    },
                    "link": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "published": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "summary": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "author": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "categories": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            }
        }
    }
}

Code examples

// JavaScript (x402-fetch)
import { wrapFetchWithPayment } from "x402-fetch";
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);
const r = await fetchWithPay("https://agentbit.app/v1/web/feed", {
  method: "POST",
  headers: {"Content-Type": "application/json"},
  body: JSON.stringify({"url":"https://blog.cloudflare.com/rss/","limit":5})
});
console.log(await r.json());
# Python (x402 client)
from x402.clients.requests import x402_requests
s = x402_requests(account)
r = s.post("https://agentbit.app/v1/web/feed",
  json={"url":"https://blog.cloudflare.com/rss/","limit":5})
print(r.json())
// PHP
$r = Http::withHeaders(['X-PAYMENT' => $signedPayment])
  ->post('https://agentbit.app/v1/web/feed',
    array (
  'url' => 'https://blog.cloudflare.com/rss/',
  'limit' => 5,
));
$data = $r->json();