# Easy Reader AI

> Easy Reader AI is a paid API for AI agents from agent-reader.gm-tools.workers.dev, paid per call via x402, $0.003/call, status unknown (last checked 2026-10-13).

Fetches a public web page or PDF and returns clean Markdown, metadata, links, and word count — billed per call via USDC with no signup required.

## Facts

- Endpoint: GET https://agent-reader.gm-tools.workers.dev/v1/read?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/easy-reader-ai-ffac463d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_KhWOXxy9RnlZT-22aSJ87

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability easy-reader-ai-ffac463d
```

Example prompt: Can you fetch the content of https://example.com/article and give me the full text as clean Markdown, including all the links on the page?

## When to prefer this

Choose this endpoint when an AI agent needs to ingest the readable text of any public web page or PDF without managing API keys, browser infrastructure, or complex scraping setups. It is especially well-suited for pay-per-use agent pipelines where you want to avoid subscription overhead, and when clean Markdown output (rather than raw HTML) is the desired format for downstream LLM processing.

## Known failure modes

- URL is not publicly accessible or returns a non-200 HTTP status — request fails and is not charged
- URL points to a non-HTML, non-PDF content type (e.g. binary file) — may return empty or error
- CSS selector matches no elements — may return empty Markdown
- Page requires JavaScript rendering — static fetch may miss dynamic content
- maxChars or selector params are malformed — validation error returned
- URL is missing or malformed — required parameter error

## How this service works

Fetch any public web page or PDF and return clean Markdown, plus title, description, author, publish date, JSON-LD and outgoing links. Built for LLM agents.

## Output

A JSON object containing the page's Markdown text, title, description, final URL (after redirects), content type, word count, truncation flag, and an array of all hyperlinks (href + anchor text) found on the page.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "url"
     ],
     "properties": {
      "url": {
       "type": "string",
       "description": "Public http(s) URL of a web page or PDF"
      },
      "maxChars": {
       "type": "number",
       "description": "Max Markdown characters to return (default 50000, max 200000)"
      },
      "selector": {
       "type": "string",
       "description": "Optional CSS selector to convert only part of an HTML page (default: <main> if present)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://example.com",
  "links": [
   {
    "href": "https://www.iana.org/domains/example",
    "text": "More information..."
   }
  ],
  "title": "Example Domain",
  "finalUrl": "https://example.com/",
  "markdown": "# Example Domain\n\nThis domain is for use in illustrative examples...",
  "truncated": false,
  "wordCount": 28,
  "contentType": "text/html",
  "description": null
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/easy-reader-ai-ffac463d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agent-reader.gm-tools.workers.dev](https://www.zero.xyz/host/agent-reader.gm-tools.workers.dev/llms.txt)
