Web pages your AI agent can trust, scored before it reads them.
Your agent finds out when a page is blocked, instead of reading a Cloudflare error as content.
Try a blocked site and see the score
Free while in beta. No card. 500 ops a month. See exactly why a page failed.

Agents don't crash. They believe.
requests.get(url)Silent lie
GET /pricingJust a moment…Verify you are human200 OKTheir pricing page says: “Verify you are human.”
enconvert /v2/perceiveHonest verdict
GET /pricingJust a moment…Verify you are humanrender_quality: 0.25is_blocked: trueThat page was blocked. Trying another source.
See the verdict before you sign up
Pick a page type and watch what your agent would receive.
HTTP 200 OK <title>Just a moment...</title> <h1>Verify you are human by completing the action below.</h1>
{
"render_quality": 0.25,
"is_blocked": true,
"deductions": {"anti_bot_challenge": 0.6, "empty_body": 0.15},
"billed": false
}Illustrative examples
Proof, not logos
- 15,000+
successful conversions
Try the playground - 0 of 50
public URLs came back as a block page presented as content
Benchmark run, 2026-07-07 - Not billed
Blocked reads
Billing rule in the docs
Claude
Cursor
Windsurf
n8n
Dify
ClawHub
status.enconvert.com/changelog
Retire the duct tape

| Job | The usual stack | EnConvert |
|---|---|---|
| Pages | Scraping API that never says when it's blocked | Every read scored, blocks flagged |
| Files | Conversion SaaS that never heard of MCP | Pages and files, one key |
| Rendering | Headless fleet at 2am | Handled for you |
| RAG | Chunking glue | RAG-ready chunks in one call |
| Total | 5 bills, 5 silent failure modes | 1 bill, a receipt for every read |
What is EnConvert?
EnConvert is a web reading API for AI agents that scores every page it returns: any URL to Markdown, JSON or a screenshot, with a 0 to 1 render_quality score and named deductions, so your agent knows when a page was blocked. It also reads PDF, Office, image and data files through 45 conversion routes.
URL
EnConvertrender_quality
MarkdownHTMLJSONPNGPDF
Seven endpoints, one key
| Endpoint | You send | You get back |
|---|---|---|
POST /v2/perceive | A URL | Markdown, JSON or a screenshot, scored 0 to 1 |
POST /v1/convert | A file | The file in another format |
POST /v2/discover | A website | Its URLs, ranked by what matters |
POST /v2/lookup | A company, product or person | Its source pages |
POST /v2/distill | A long document | A faithful summary that fits your context window |
POST /v2/ingest | A URL or a file | RAG-ready JSONL chunks |
POST /v2/watchPrivate beta | A page | A webhook or email on every change |
Your first honest read, in under a minute
Install
npx @enconvert/mcp setupPoint it at our fixture
https://fixtures.enconvert.com/hostile-spaRead the receipt
"render_quality": 1.0
Meets your stack where it is
Start free. Scale when your agent does.
Founding
$0
500 ops a month
- Convert, perceive, lookup, discover
- render_quality on every read
- No credit card
Indie
$29/mo
3,000 ops a month
- 20 watchers
- 45 conversion routes, one op per file
- $5 extraction credit a month, rolls over
- $0.02 per extra op, opt-in
- Email support
Studio
Most teams start here$99/mo
15,000 ops a month
- $15 AI credits a month, rolls over
- Dedicated rendering pool
- $0.02 per extra op, opt-in
- Priority support
Production
$299/mo
50,000 ops a month
- $40 AI credits a month, rolls over
- 30-day artifact retention
- $0.02 per extra op, opt-in
- Named support contact
Running past 50,000 ops a month, or need custom retention and terms? Talk to us.
Frequently asked questions
What exactly does render_quality measure?
A 0.0 to 1.0 score of how faithfully the page rendered before we read it. Challenge pages, empty SPA shells, partial lazy-loads and interstitials all pull it down. A low score comes back with a warnings array naming what we detected, and the full output is still returned so you decide what to trust, which means a bad read can never quietly enter your agent's context unnoticed.
What happens when a page blocks you?
You get the truth: a low score, a warnings array naming what we detected, and no garbage passed off as content. Sometimes the web wins. The product guarantee is that you will know when it does, in the same response, not from a customer three days later.
Is this production-ready?
The seven v2 verbs are live and production-hardened: SSRF screening on every URL, honest failure contracts, and a public status page and changelog you can watch before you commit. We publish what breaks and when we fix it.
How is this different from Firecrawl or CloudConvert?
They're good tools on one side of the boundary: scraping APIs stop at pages, conversion APIs stop at files. Agents need both, so teams end up wiring two or three vendors together. EnConvert is one MCP server for both, with one bill, and it's the only layer that scores every read and refuses to pass off blocked pages as content.
Do I need a backend?
No. Public keys are domain-restricted, so they're safe to ship in client code. Secret keys exist for server-side work when you want them.
What we don't do
We don't solve CAPTCHAs, run residential proxies, or get around paywalls. When the fast fetch looks blocked or the page needs JavaScript, the render ladder retries in a real Chromium browser. If the page is still blocked you get is_blocked: true, a low render_quality score and the reason instead of page content, and you are not billed for it. robots.txt is honoured when you set respect_robots.
The web lies to your agent. EnConvert doesn't.
npx @enconvert/mcp setup