---
title: "MCP Server: Honest Eyes for Your AI Agent"
description: "One MCP server reads any file (46 types) and any URL into clean Markdown, JSON, or a screenshot, and scores every read so your agent never acts on a page that lied to it. Works in Claude, Cursor, and every MCP client. Free while in beta."
canonical: "https://www.enconvert.com/mcp"
locale: "en"
---

Official MCP server · Open source

# Your agent reads the web through one MCP server, and knows when it got blocked.

Convert 46 file types and turn any URL into clean Markdown, JSON, or a screenshot. Every read comes back with a `render_quality` score, 0.0 to 1.0; a blocked page comes back flagged, with a low score and a warning, so your agent never silently acts on a Cloudflare page. Works in Claude Code, Cursor, Windsurf, Zed, JetBrains, and Continue.

npx @enconvert/mcp setup

Copy

[Get a free API key](/auth?mode=signup)[

View source

](https://github.com/enconvert/mcp)[Read the docs](/docs/introduction.md)

-   MCP server + SDK open source, MIT
-   Node 18 or later
-   Free while in beta

POST /v2/perceive

Live · no key needed

URL to perceive

Perceive

A docs page

A news feed

A plain page

Outputs

Markdown

Structured

Screenshot

HTML

PDF

Links

Images

▸

Render options

Works with

-   [![Claude Code](/logos/agents/claude.svg)

    Claude Code

    ](https://docs.anthropic.com/claude/docs/model-context-protocol)
-   [![Cursor](/logos/agents/cursor.svg)

    Cursor

    ](https://docs.cursor.com/context/model-context-protocol)
-   [![Windsurf](/logos/agents/windsurf.svg)

    Windsurf

    ](https://docs.windsurf.com/windsurf/cascade/mcp)
-   [![Zed](/logos/agents/zed.svg)

    Zed

    ](https://zed.dev/docs/assistant/model-context-protocol)
-   [![JetBrains](/logos/agents/jetbrains.svg)

    JetBrains

    ](https://plugins.jetbrains.com/plugin/26071-mcp-server)
-   [![Continue](/logos/agents/continue.svg)

    Continue

    ](https://docs.continue.dev/customize/deep-dives/mcp)

and every MCP client

The problem

## An LLM is brilliant and blind. And the blindness is silent.

A normal scraper hands your agent a Cloudflare challenge page as if it were the article. The agent believes it, summarizes it, and acts on it. It doesn't throw an error. Nobody notices until a customer does.

a normal scraper

requests.get(url) → 200 OK

<h1>Checking your browser…</h1>

→ the agent trusts it. acts. wrong.

enconvert

perceive(url)

render\_quality: 0.12 → flagged

warnings: \["challenge\_page"\]

→ the agent knows. routes around it.

The honesty layer

## Every read comes with a receipt.

render\_quality scores how faithfully a page rendered before we read it. Challenge pages, empty SPA shells, partial lazy-loads and interstitials pull it down. It is the line between "my agent might be acting on garbage" and "my agent knows."

Scored on every read

⌄

Not a health check you wire up. Every perceive and convert response carries a render\_quality field, 0.0 to 1.0.

Flagged below 0.40

⌄

Nobody else does this

⌄

the render\_quality gate

honest read → returned

0.00

0.40 threshold

1.00

"render\_quality": **0.93**,

"warnings": \[\],

"content": returned in full

Benchmark

## We measured the silent failure.

The same set of hostile pages, read two ways. A naive fetch hands back a block page as if it were content, and never says so. EnConvert renders the real page where the naive fetch failed, and flags the few it can’t. The harness and the URL list are public, so you can run it yourself.

50

Real URLs tested: bot-gated, paywalled, JS-heavy

52%

A naive fetch silently returned a block page as "content"

65%

Of those, EnConvert rendered the real page instead (recovered)

100%

Of pages it still couldn’t render, EnConvert flagged them, silently passing none

[Run the benchmark yourself →](https://github.com/enconvert/perceive-benchmark)

Proof, not promises

## Watch it catch a page that lies.

An unedited screen recording: the founder runs the MCP inside a real agent, on a clean page and on a page that fights back. About 40 seconds.

1.  0:00

    Your agent's scraper can't tell when it got blocked. Watch mine, live.

2.  0:08

    One command: claude mcp add enconvert, paste a key. Done.

3.  0:18

    Point it at a clean page: render\_quality 0.96, clean Markdown comes back.

4.  0:30

    Now a Cloudflare-walled page: render\_quality 0.12, block flagged right in the response.

5.  0:40

    Real product, a real page fighting back, a real honest score. Nothing staged.

VIDEO: FOUNDER DEMO (~40s)

MP4 + WebM. Drop the recording here for no layout change.

Available now

## The eyes are real today.

Everything that lets your agent read the outside world, files and the web, is live. Seven tools, one API key, one honest score on every read.

▸

convert

perceive

discover

lookup

distill

ingest

watch

pilot · conduct · sandbox

In development

Real browser control is in active development for 2026, not yet callable. Founding users get hands first. We tell you exactly what is shipped and what is not, the same honesty we give every read.

`convert`

7 tools · all live

Open 46 file types in one request.

tool: convert

PDF · DOCX · HEIC · CSV · URL

Why trust us

## You're about to depend on us. Here's why that's safe.

No logos to show yet. Instead, the things logos are a proxy for: an auditable, forkable integration layer, a real security posture, and a founder you can email.

Open source, can't be orphaned

⌄

The MCP server and the Node SDK it wraps are MIT-licensed and public. Read them, fork them, self-host them. The conversion engine behind them is proprietary and stays ours, but your agent's I/O layer is auditable and can never be taken away.

Screened before we touch it

⌄

Verifiable install

⌄

We ship in the open

⌄

[MCP server ↗](https://github.com/enconvert/mcp)[Node SDK ↗](https://github.com/enconvert/node-sdk)[npm ↗](https://www.npmjs.com/package/@enconvert/mcp)[in the MCP Registry ↗](https://registry.modelcontextprotocol.io/?q=com.enconvert/mcp)[status.enconvert.com ↗](https://status.enconvert.com)[changelog →](/changelog.md)[trust page →](/trust.md)

signed provenance on the way

I got tired of gluing five vendors together every time an agent needed to read a file or a web page, then babysitting the scripts that held it up. The agent could reason. It just could not see. Worse, it could not tell when what it saw was a Cloudflare page instead of the real one. So I built one server that gives it honest eyes: it reads anything, and it scores every read. I answer email personally.

Het

Founder

[het@enconvert.com](mailto:het@enconvert.com)

Ship log

npm published: pending · last commit: pending

Recent releases will appear here.

Why switch

## Replaces the stack you're duct-taping.

Giving an agent eyes today means stitching four or five vendors together and babysitting the seams. Now it is one dependency, with a score none of them give you.

Today

-   Firecrawl

    to scrape pages into markdown

-   CloudConvert

    to convert the files

-   Browserbase

    to a headless-browser fleet

-   an LLM-extract step

    to pull out structured data

-   cron + glue scripts

    to keep it all alive

With EnConvert

-   01

    One MCP server

-   02

    One API key

-   03

    One bill

One bill, no second AI-extraction subscription, and a render\_quality score on every read.

Browser control (the Browserbase piece) is on the 2026 roadmap, not counted in "today".

Why MCP

## Skip the glue code.

Same conversion engine as the REST API. None of the integration work.

### Wrapping the REST API yourself

Your code owns all of this, forever:

-   HTTP plumbing and multipart uploads
-   Schema validation on every input
-   Polling long-running jobs
-   Retry and backoff logic
-   Parsing presigned URLs out of responses
-   Your own "did this page actually render?" check

### Registering the MCP server

One entry in your client config:

claude mcp add

Copy

```
npx @enconvert/mcp setup
```

The agent runtime owns polling, retries, auth, and output handling. Cursor, Windsurf, Zed, and JetBrains use the same JSON shape; the README has each one.

A raw fetch hands your agent bytes and a 200. EnConvert hands it clean Markdown, JSON, and a render\_quality score, so the agent can reason about whether to trust what it just read. That honesty gate is the exact thing you would otherwise build and maintain yourself.

## MCP server questions

Is it safe to run the npx install?

Yes, and you can verify it rather than trust it. The MCP server (@enconvert/mcp) and the Node SDK it wraps are open source under the MIT license, so you can read exactly what runs. Every release ships with signed npm provenance and is listed in the official MCP Registry, so you can prove the package on npm was built from the public repo by CI. Setup touches nothing beyond the client configs you select (backed up first) and ~/.enconvert/config.json, where your key is stored once with 600 permissions instead of being copied into every client config. At runtime it talks to the EnConvert API and any URL you explicitly ask it to read, and sends redacted usage analytics to PostHog — never your key, URLs, or file paths; set DO\_NOT\_TRACK=1 to turn them off.

What happens when a page blocks it?

You get the truth alongside the output, not garbage in disguise. Every read returns a render\_quality score from 0.0 to 1.0. A blocked or login-walled page still comes back in full, but with a low score and a warnings array naming what we detected (a challenge page, a login wall). So your agent can see the read is bad and route around it, instead of silently acting on a Cloudflare page and calling it content. Wire one check on scores below 0.40 and silent failure is off your list.

Is the code open source?

The MCP server and the Node SDK it wraps are MIT-licensed and public on GitHub, so you can audit, fork, or self-host the integration layer. The core conversion and rendering engine is proprietary and stays closed. So your agent's I/O layer is auditable and can't be orphaned, even though the engine behind it is ours.

Which AI clients does it work with?

Anything that speaks MCP. Tested with Claude Code, Claude Desktop, Cursor, Windsurf, Zed, JetBrains AI Assistant, and Continue. New MCP clients work on day one without server changes.

How do I install it?

One command: npx @enconvert/mcp setup. The wizard detects your AI tools (Claude Code, Cursor, Windsurf, Claude Desktop, VS Code, Zed, and more), asks for your API key once with hidden input, validates it live, and writes every config for you, including the Windows-specific wrapper. Manage it the same way: status, rotate-key, and remove subcommands. Needs Node.js 18+, no Docker, no daemon.

Do I need an EnConvert account?

Yes. The server needs an API key so the agent runs against your quota. A free account includes a monthly allowance while in beta, no credit card.

Can the agent control a real browser yet?

Not yet. The hands tools (pilot, conduct, sandbox) are in active development for 2026, not yet callable. Everything the eyes do, reading files and reading the web across all seven tools, is live today. We never present an unshipped tool as available.

How is this different from calling the REST API directly?

Same engine, none of the glue. The REST API leaves HTTP plumbing, schema validation, job polling, presigned-URL parsing, and your own "did this page really render?" check to your code. The MCP server moves all of that into the agent runtime, and hands the model a render\_quality score REST would make you compute yourself.

Is this production-ready, and will it still be here in a year?

The endpoints are live and hardened: every URL is SSRF-screened, browser contexts are sandboxed, and every operation is timeout-bounded. There is a public status page, and the MIT-licensed server means you can self-host if you ever need to. We ship in the open and report honestly when things break, the same honesty we give every read.

What does it cost?

The server is free and open source; usage consumes your EnConvert plan. Free while in beta, then $29 / $99 / $299 a month. One bill, no second AI-extraction subscription.

## Your agent is one install from seeing everything.

npx @enconvert/mcp setup

Copy

[Get a free API key](/auth?mode=signup)[

Star on GitHub

](https://github.com/enconvert/mcp)

Free for a limited time. $29/mo when you scale. One bill, no surprises.
