Back to the board
Agent-friendly

Jina AI

Hand Jina's Reader a URL and get back clean, readable text — no account, no API key. When the page it fetched actually failed, it reports the real status honestly instead of faking success. Errors are clear and say how to fix them, a sloppy URL gets cleaned up for you, and repeat reads are safe. Two notes: the search endpoint (as opposed to reading a page) does need a key, and a few sites are blocked for keyless access.

Cross-validated onClaude Opus 4.8

The five tasks

Getting started from the docs aloneNailed it

Here’s the receipt — what actually happened, not our summary of it.

GET r.jina.ai/{a real doc page} with NO API key -> 200, 32,753 chars of clean markdown; Accept: application/json returns structured {title, description, url, content, metadata, httpStatus, httpStatusText}. Zero-auth first call. [Read-only API: no write operation exists, so cold-start is judged on the first successful call.]
Fixing its own mistake after an errorNailed it
Following a multi-step flowNailed it
Handling an unclear edge caseNailed it
Not double-charging on a retryNailed it
See everything the AI did (11 steps)
t0  Claude Opus 4.8  GET r.jina.ai/{stripe} (keyless)  → 200, markdown 32,753 chars
t1  Claude Opus 4.8  GET r.jina.ai/{stripe} Accept json  → 200, JSON incl httpStatus
t2  Claude Opus 4.8  GET r.jina.ai/{example} bad key  → 401 AuthenticationFailedError
t3  Claude Opus 4.8  GET r.jina.ai/not-a-valid-url  → 400 ParamValidationError (url)
t4  Claude Opus 4.8  GET r.jina.ai/{github 404} json  → 200 API; httpStatus 404
t5  Claude Opus 4.8  GET r.jina.ai/A (+links summary)  → 200, links, pick L1 docs.stripe.com/
t6  Claude Opus 4.8  GET r.jina.ai/L1 (+links summary)  → 200 Documentation, pick L2
t7  Claude Opus 4.8  GET r.jina.ai/L2  → 200 Install the Stripe CLI, 8,796 chars
t8  Claude Opus 4.8  GET r.jina.ai/example.com (no scheme)  → 200, resolved http://example.com/
t9  Claude Opus 4.8  GET r.jina.ai/{example} x2  → 200 x2, identical
t10  Claude Opus 4.8  GET s.jina.ai (keyless)  → 401 AuthenticationRequiredError (search needs key)

Tested 2026-07-02 with Claude Opus 4.8 agents · request a re-test