Back to MCP Servers

Plsreadme

Share markdown files and text as clean, readable web links via `plsreadme_share_file` and `plsreadme_share_text`; zero setup (`npx -y plsreadme-mcp` or `https://plsreadme.com/mcp`).

file-systems
By FacundoLucci
41Updated 3 months agoTypeScriptMIT

Installation

npx -y plsreadme-mcp

Configuration

{
  "mcpServers": {
    "plsreadme": {
      "command": "npx",
      "args": ["-y", "plsreadme"]
    }
  }
}

How to use

  1. Run the installation command above (if needed)
  2. Open your Claude Code settings file (~/.claude/settings.json)
  3. Add the configuration to the mcpServers section
  4. Restart Claude Code to apply changes
<p align="center"> <img src="https://plsreadme.com/icon.png" alt="plsreadme" width="80" /> </p> <h1 align="center">plsreadme</h1> <p align="center"> <strong>Paste markdown. Get a beautiful, shareable link. Done.</strong> </p> <p align="center"> <a href="https://plsreadme.com">Website</a> · <a href="https://www.npmjs.com/package/plsreadme-mcp">MCP Package</a> · <a href="https://github.com/FacundoLucci/plsreadme/issues/new?labels=feature-request">Request a Feature</a> </p> <p align="center"> <img src="https://img.shields.io/npm/v/plsreadme-mcp?style=flat-square&color=111827" alt="npm version" /> <img src="https://img.shields.io/badge/Cloudflare_Workers-deployed-F38020?style=flat-square&logo=cloudflare&logoColor=white" alt="Cloudflare Workers" /> <img src="https://img.shields.io/badge/MCP-compatible-10b981?style=flat-square" alt="MCP compatible" /> <img src="https://img.shields.io/github/license/FacundoLucci/plsreadme?style=flat-square" alt="License" /> </p>

The Problem

You wrote a README, a PRD, meeting notes, or an API doc in markdown. Now you need to share it with someone who doesn't have a markdown renderer, doesn't use GitHub, or just needs a clean link they can open in a browser.

plsreadme turns any markdown into a permanent, beautifully rendered web page in one step. No accounts. No sign-ups. No friction.

✨ Features

  • Instant sharing — Paste markdown or upload a file, get a plsrd.me link
  • Beautiful rendering — Clean typography, dark mode, mobile-responsive
  • Inline comments — Readers can click any paragraph and leave feedback
  • Review mode (current vs timeline) — Multi-version docs default to Current draft feedback with one-click access to full Timeline history
  • AI auto-formatting — Throw raw text at it; it comes out as clean markdown
  • MCP server — Share docs directly from Claude, Cursor, VS Code, or any MCP client
  • OpenClaw skill — Available on ClawHub for AI agent workflows
  • Short links — Every doc gets a compact plsrd.me/v/xxx URL
  • Raw access — Download the original .md file from any shared link
  • Version timeline + safe restore/v/:id/versions + /v/:id/history + archive-first restore API for fast rollback
  • Clerk auth foundation — GitHub/Google sign-in wiring + Clerk-hosted email fallback + backend auth verification utilities
  • Ownership model (Phase 2) — docs can be linked to a Clerk user (owner_user_id) while preserving anonymous flows
  • My Links dashboard (Phase 3) — authenticated /my-links page with search/sort/pagination and quick copy/open actions
  • Legacy link claiming (Phase 4) — signed-in users can claim older anonymous links by proving the original admin_token
  • Zero config website demo — No account or API key needed to try it in the browser

🚀 Quick Start

Web

Go to plsreadme.com, paste your markdown, click share.

Auth Paths And Rollout State

Recommendation order:

  1. Try in browser first — fastest demo path, no MCP setup required.
  2. Use hosted remote MCP with browser login when client support is verified.
  3. Use API key / local MCP fallback when interactive login is unavailable.

Current rollout state:

JourneyStatus todayOwnership ruleSource tag
Anonymous website demoAvailable now via browser-verified demo flowowner_user_id = NULL until user later saves/claims the docweb_demo
Signed-in website createAvailable nowdoc is created with the signed-in Clerk user as ownerweb_signed_in
Hosted remote MCP with browser loginAvailable now in supported clientscreates owned docs for the signed-in user after browser loginmcp_remote_login
Hosted remote MCP with API keyAvailable now as the compatibility fallbackcreates owned docs for the API key ownermcp_remote_api_key
Local npm MCP with API keyAvailable now and recommended for local stdio setupscreates owned docs for the API key ownermcp_local_api_key
Local npm MCP anonymous fallbackStill available only with explicit opt-inremains anonymous unless later claimed/savedmcp_local_anonymous

Hosted remote MCP rollout notes:

  • https://plsreadme.com/mcp
  • https://plsreadme.com/sse

Those hosted remote MCP routes are live behind OAuth-protected browser login in code, including /authorize, /oauth/token, and /oauth/register.

Operational notes:

  • D1 doc_create_events is the canonical create-attribution table across web, hosted MCP, and local MCP flows.

  • docs.raw_view_count tracks every render hit, while docs.view_count is reserved for likely-human reads.

  • See docs/runbooks/auth-surface-monitoring.md for the production query set and response steps.

  • access tokens last about 1 hour

  • refresh tokens last about 30 days

  • reconnecting the same client replaces the older grant

  • signing out of the website does not revoke an existing editor grant by itself

  • this repo is now wired to a dedicated Cloudflare Workers KV binding named OAUTH_KV

When browser login is not available in your client, create a personal API key from /my-links and use either the hosted remote header fallback or the local npx -y plsreadme-mcp package.

Website demo trust model today:

  • anonymous website creates on /api/create-link require a short-lived browser verification grant
  • signed-in website creates skip that grant and stay friction-light
  • post-create UI now branches into Save to my account, Connect your editor, and Copy link

API

curl -X POST https://plsreadme.com/api/render \
  -H "Content-Type: application/json" \
  -d '{"markdown": "# Hello World\n\nThis is my doc."}'
{
  "id": "abc123def456",
  "url": "https://plsreadme.com/v/abc123def456",
  "raw_url": "https://plsreadme.com/v/abc123def456/raw",
  "admin_token": "sk_..."
}

Save the admin_token — you'll need it to edit or delete:

# Update
curl -X PUT https://plsreadme.com/v/abc123def456 \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{"markdown": "# Updated content"}'

# Delete
curl -X DELETE https://plsreadme.com/v/abc123def456 \
  -H "Authorization: Bearer sk_..."

Version timeline + safe restore

Use the timeline endpoint to review revision context during AI iteration cycles:

curl https://plsreadme.com/v/abc123def456/versions
{
  "id": "abc123def456",
  "current_version": 5,
  "total_versions": 5,
  "versions": [
    { "version": 5, "is_current": true, "raw_url": "https://plsreadme.com/v/abc123def456/raw" },
    { "version": 4, "is_current": false, "raw_url": "https://plsreadme.com/v/abc123def456/raw?version=4" }
  ]
}

If an AI edit regresses the doc, restore a prior snapshot (archive-first, non-destructive):

curl -X POST https://plsreadme.com/v/abc123def456/restore \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{"version": 4}'

Restore is rate-limited similarly to updates (currently 60/hour per actor key) to reduce abuse.

For docs owned by an authenticated Clerk user, update/delete/restore also require that owner session (to prevent cross-user mutation), while anonymous docs continue to work with admin_token only.

Review mode usage notes (Current draft first, Timeline on demand)

The document viewer now exposes comment review controls:

  • Current draft — shows only comments tied to the latest doc version (default when a doc has multiple versions).
  • Timeline — shows the full cross-version comment history.

You can fetch the same modes directly from the API:

# Latest-version comments only
curl "https://plsreadme.com/api/comments/abc123def456?view=current"

# Full timeline comments (default API behavior)
curl "https://plsreadme.com/api/comments/abc123def456?view=all"

Viewer links persist the mode in the URL for shareable review context:

  • https://plsreadme.com/v/abc123def456?view=current
  • https://plsreadme.com/v/abc123def456?view=timeline

To claim a legacy anonymous link into your signed-in account:

curl -X POST https://plsreadme.com/api/auth/claim-link \
  -H "Authorization: Bearer <clerk-session-jwt>" \
  -H "Content-Type: application/json" \
  -d '{"id":"abc123def456","adminToken":"sk_..."}'

MCP (AI Editors)

Current recommendation today:

  • use hosted remote MCP with browser login when your client supports it cleanly
  • use personal API key fallback when remote auth is unavailable or awkward in that client
  • use the local plsreadme-mcp package with PLSREADME_API_KEY for the safest stdio path

Connect your editor to plsreadme and share docs with natural language:

"Share this README as a plsreadme link" "Turn my PRD into a shareable page" "Make these meeting notes into a readable link"

MCP/agent auto-review loop with /versions

For iterative AI writing flows (draft → critique → revise), agents can consume /v/:id/versions as the source of truth:

  1. Keep the canonical readable URL (/v/:id) for humans.
  2. Poll /v/:id/versions between iterations.
  3. Compare current_version to the last reviewed version.
  4. If changed, fetch raw_url for the newest version and run review checks.
  5. If quality regresses, optionally trigger /v/:id/restore with admin token + owner session.

This gives automation deterministic revision tracking without scraping HTML.

See docs/ai-iteration-versioning.md for a full playbook.

🔌 MCP Setup

Client compatibility matrix

Current as of April 5, 2026:

ClientRecommended pathBrowser login supportAPI key fallbackNotes
Claude Codehosted remote MCP firstverified liveyesbest supported remote flow; local stdio with PLSREADME_API_KEY also works well
Cursorhosted remote MCP firstdocumented, but build-dependent in practiceyesuse headers if your build does not surface the OAuth prompt
VS Codehosted remote MCP when availableconfiguration exists, rollout varies by buildyestype: "http" plus header fallback works when login UX is absent
Windsurfhosted remote MCP when availabledocumented remote supportyesuse serverUrl + headers when browser auth is not exposed yet
Claude Desktoplocal npm MCPno verified remote browser flow hereyesprefer stdio + PLSREADME_API_KEY
Raw HTTP / scriptshosted remote header modenoyessend Authorization: Bearer $PLSREADME_API_KEY directly

Hosted Remote Login (supported clients)

Claude Code:

claude mcp add --transport http plsreadme https://plsreadme.com/mcp

Cursor:

{
  "mcpServers": {
    "plsreadme": {
      "url": "https://plsreadme.com/mcp"
    }
  }
}

VS Code:

{
  "servers": {
    "plsreadme": {
      "type": "http",
      "url": "https://plsreadme.com/mcp"
    }
  }
}

Windsurf:

{
  "mcpServers": {
    "plsreadme": {
      "serverUrl": "https://plsreadme.com/mcp"
    }
  }
}

Lifecycle notes:

  • access token TTL is about 1 hour
  • refresh token TTL is about 30 days
  • reconnecting the same client replaces the older grant
  • sign out ends the website session but does not automatically revoke an existing editor grant
  • use GET /api/auth/mcp-grants and DELETE /api/auth/mcp-grants/:grantId to audit or revoke hosted editor grants

If your client supports browser login, prefer this path. It is the cleanest setup and keeps owned docs tied to your website account automatically.

Hosted Remote API Key fallback

Create a personal API key from https://plsreadme.com/my-links first, then use one of these:

Claude Code:

claude mcp add --transport http \
  --header "Authorization: Bearer $PLSREADME_API_KE

…
View source on GitHub