MCP + HTTPno signupno API keyfree

Clean, readable web pages — for people and AI agents

Skim turns any URL into tidy content — headings, links, lists and code kept; nav, ads and scripts stripped. Read it in your browser, get it as Markdown/JSON over HTTP, or plug it into an agent as one MCP tool. Nothing to install, no key, no account.

Open clean reader ↗
// paste a URL and hit Read to see the Markdown an agent would get

Point your agent at it

Add Skim as a remote MCP server — the whole integration is one URL:

https://skim.perch-app.workers.dev/mcp

Then the agent has a read tool: read({ url }) → clean Markdown. No auth headers, no signup.

Or just call the HTTP API

curl "https://skim.perch-app.workers.dev/api/read?url=https://example.com/"

Returns JSON { title, content, word_count, rendered, ... }. Also: POST https://skim.perch-app.workers.dev/api/read with {"url":"..."}. Add &format=text for a plain-text body, &format=data to extract embedded structured data (JSON-LD / OpenGraph / meta) as JSON, &links=0 to drop link markup, or &render=js to force a full browser render.

Reads JavaScript-rendered pages too

Most URL→text tools only see the raw server HTML, so React/Vue/Svelte single-page apps come back empty. Skim detects those shells and re-renders them in a real headless browser before extracting — so client-side-rendered content comes out clean. It's automatic; add render=js to force it, or render=off to skip it. The rendered field tells you whether a browser was used.

A fetch + extract layer for aggregators & agents

Building a job aggregator, a feed reader or a research agent? Point it at Skim instead of shipping your own scraper. JSON APIs (Greenhouse, Ashby, Lever and friends) come back verbatim up to 5 MB so you parse them directly; HTML pages come back as clean Markdown; SPA boards work with render=js. Or add &format=data to get the page's embedded structured data — schema.org JSON-LD (Product, Offer, JobPosting, Review, Article…), OpenGraph and meta — as clean JSON, no HTML parsing on your side. Upstream status codes pass straight through. See the aggregator guide →

Why Skim

Agents burn tokens and context on raw HTML. Skim gives them just the readable content, as Markdown, in one call — hosted at the edge, so there's nothing to run locally and no rate-limited key to manage. It reads HTML, plain text, JSON and XML, and can render JavaScript-heavy pages.

Try it: /api/read?url=https://example.com/