skim
URL to Markdown or structured JSON (schema.org/OG); renders SPA; batch reads. No signup/key.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"skim": {
"url": "https://skim.perch-app.workers.dev/mcp"
}
}
}Remote endpoints
https://skim.perch-app.workers.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (1)
🟢read(url, links, format, max_chars, render)
Fetch a web page and return its main content as clean Markdown (headings, links, lists, code preserved; nav/ads/scripts stripped). Also handles plain text, JSON and XML, extracts structured data (format=data), and normalizes any ATS/job-board feed into a unified jobs[] array (format=jobs). Use this whenever you need to read the actual content of a URL. No signup, no API key.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute http(s) URL to read, e.g. https://example.com/post"
},
"links": {
"type": "boolean",
"description": "Keep hyperlinks as [text](url). Default true. Set false for plainer prose."
},
"format": {
"type": "string",
"enum": [
"markdown",
"text",
"data",
"jobs"
],
"description": "Output format. 'markdown' (default) = clean readable content; 'text' = plain prose, no link markup; 'data' = extract the page's embedded structured data (schema.org JSON-LD, OpenGraph, Twitter card, meta) as JSON; 'jobs' = normalize any ATS/job-board feed (Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee) or a careers page with JSON-LD JobPosting into a unified jobs[] array (title, url, location, department, employment_type, updated_at, remote) — ideal for job aggregation with no per-provider parsing."
},
"max_chars": {
"type": "number",
"description": "Optional cap on returned characters (content is truncated if longer)."
},
"render": {
"type": "string",
"enum": [
"auto",
"js",
"off"
],
"description": "JS rendering for client-side/SPA pages. 'auto' (default) renders with a headless browser only when the server HTML looks empty; 'js' forces a full browser render; 'off' never renders. The response 'rendered' field says whether a browser was used."
}
},
"required": [
"url"
]
}Community
Evidence