{"name":"agentread","tools":[{"name":"read","price":0.02,"description":"Read a URL your own fetch failed on and get its actual text back. Use after a 403, 429, empty body or garbled page. Returns title and page text as plain markdown; if the page genuinely cannot be read, returns verdict (blocked | needs_javascript | paywalled | robots_disallowed) and the recommended route. Paid per call via x402. POST {urls:[...]} checks up to 40 URLs in one paid call.","args":{"url":"https://example.com/page","urls":["https://a.example","https://b.example"]}},{"name":"changes","price":0.01,"description":"What changed on this URL since the last check. First call stores a baseline and returns first_check; later calls return changed plus the added and removed lines. Use it for monitoring across sessions, which an agent cannot do itself. Paid per call via x402.","args":{"url":"https://example.com/page"}},{"name":"snapshot","price":0.01,"description":"Archive a page's text with a timestamp and hash, so you can prove later what it said. Returns a snapshot_id.","args":{"url":"https://example.com/page"}},{"name":"snapshot_get","price":0.01,"description":"Retrieve an archived snapshot by id: original text, title and capture time.","args":{"id":"a1b2c3d4e5f6a7b8"}},{"name":"wait_until","price":0.02,"description":"Block until a page contains a string and return, up to 25 seconds. Saves the caller from sleeping and re-fetching.","args":{"url":"https://example.com/page","contains":"in stock","max_seconds":20}},{"name":"compare","price":0.02,"description":"Diff the visible text of two URLs; returns added and removed lines.","args":{"url_a":"https://a.example","url_b":"https://b.example"}},{"name":"first_seen","price":0.01,"description":"When this exact text was first observed at this URL, from stored history. Distinguishes new content from old.","args":{"url":"https://example.com/page","text":"some exact sentence"}},{"name":"links","price":0.01,"description":"All links on a page, resolved to absolute URLs. Use for crawling, link audits or finding where something points.","args":{"url":"https://example.com/page"}},{"name":"outline","price":0.01,"description":"The heading structure of a page (h1-h6 with text). Use to understand a long document without reading it.","args":{"url":"https://example.com/page"}},{"name":"tables","price":0.01,"description":"HTML tables extracted as JSON arrays of rows. Use for prices, specs, stats and comparison tables.","args":{"url":"https://example.com/page"}},{"name":"jsonld","price":0.01,"description":"JSON-LD structured data blocks from a page (Product, Article, Event, Organization). Cleanest source of facts on modern sites.","args":{"url":"https://example.com/page"}},{"name":"robots","price":0.01,"description":"robots.txt rules and declared sitemaps for a site. Check before crawling whether an agent is allowed and where to start.","args":{"url":"https://example.com/page"}},{"name":"sitemap","price":0.01,"description":"URLs listed in a sitemap, with lastmod. Use to enumerate a site's pages instead of crawling.","args":{"url":"https://example.com/sitemap.xml"}},{"name":"feed","price":0.01,"description":"Latest items from an RSS or Atom feed: title, link, date. Cheapest way to see what is new on a site.","args":{"url":"https://example.com/feed.xml"}},{"name":"diff","price":0.01,"description":"Diff two texts you already hold. Returns added and removed lines. No fetch, no page needed.","args":{"a":"old text","b":"new text"}}]}