Submit

Plain Markdown

@Pero

Convert any URL to clean, LLM-ready Markdown or plain text. Remote MCP server, no local install needed.
Overview

Page to Markdown API

Web pages are full of noise. Send a URL, get Markdown stripped of noise (ads, nav, clutter).

Response

{
"status": "success",
"data": {
"content": "# Example Post\n\nClean markdown content..."
}
}
Deterministic

Same URL, same output.

Clean

No ads, navigation, or popups. Just the content.

Structured

One JSON schema. No surprises.

MCP Ready

Native MCP server. Use it from any editor or coding agent.

MCP Server

Use PlainMarkdown as an MCP tool directly from your editor or agent.

Pricing

No subscriptions. Credits never expire.

Free 500 pages / month $0 Included with every account Start free
Hobby 3,000 pages $5 $0.0017 per page Get Hobby
Standard 15,000 pages $20 $0.0013 per page Save 20% Get Standard
Best value Scale 60,000 pages $60 $0.0010 per page Save 40% Get Scale

Rate limits apply.

Early Access

We're still in beta and could use real-world testing. Sign up and get 3 months of unlimited API usage, free.

Get Free Access
))}for(const[a,i]of t)if(Array.isArray(i)){const o=s(i.join("/"));o.test(n)&&(n=n.replace(o,/[...${a}]))}return n}catch{return e}}function s(e){return new RegExp(/${h(e)}(?=[/?#]|$))}function h(e){return e.replace(/[.*+?^${}()|[]\]/g,"\$&")}function y(e){return e.scriptSrc?e.scriptSrc:c()?"https://va.vercel-scripts.com/v1/script.debug.js":e.basePath?${e.basePath}/insights/script.js:"/_vercel/insights/script.js"}function g(e={debug:!0}){var r;if(!d())return;v(e.mode),w(),e.beforeSend&&((r=window.va)==null||r.call(window,"beforeSend",e.beforeSend));const n=y(e);if(document.head.querySelector(script[src*="${n}"]))return;const t=document.createElement("script");t.src=n,t.defer=!0,t.dataset.sdkn=f+(e.framework?/${e.framework}:""),t.dataset.sdkv=l,e.disableAutoTrack&&(t.dataset.disableAutoTrack="1"),e.endpoint?t.dataset.endpoint=e.endpoint:e.basePath&&(t.dataset.endpoint=${e.basePath}/insights),e.dsn&&(t.dataset.dsn=e.dsn),t.onerror=()=>{const a=c()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log([Vercel Web Analytics] Failed to load script from ${n}. ${a})},c()&&e.debug===!1&&(t.dataset.debug="false"),document.head.appendChild(t)}function p({route:e,path:r}){var n;(n=window.va)==null||n.call(window,"pageview",{route:e,path:r})}function k(){try{return}catch{}}customElements.define("vercel-analytics",class extends HTMLElement{constructor(){super();try{const r=JSON.parse(this.dataset.props??"{}"),n=JSON.parse(this.dataset.params??"{}");g({...r,disableAutoTrack:!0,framework:"astro",basePath:k(),beforeSend:window.webAnalyticsBeforeSend});const t=this.dataset.pathname;p({route:b(t??"",n),path:t})}catch(r){throw new Error(Failed to parse WebAnalytics properties: ${r})}}});

Server Config

{
  "mcpServers": {
    "plainmarkdown": {
      "url": "https://api.plainmarkdown.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
© 2025 MCP.so. All rights reserved.

Build with ShipAny.