PrintFriendly

PrintFriendly MCP Server for Developers

Give an AI agent two things it is bad at on its own: reading a web page without the ads, menus and pop-ups, and turning content into a PDF or Word file. The PrintFriendly MCP server works in Claude Code, Cursor, VS Code and any agent you build, and it runs on your API key.

Looking for the ChatGPT or Claude connector?

This page is for people building with agents. To print a page from a chat in Claude, ChatGPT or Microsoft 365 Copilot, with no API key, see PrintFriendly in AI Assistants.

The Server

It is a standard MCP server over Streamable HTTP, at this address:

Server URL
https://mcp.printfriendly.com

The first address the server shipped at, https://www.printfriendly.com/v2/mcp, is an alias for it and keeps working, so a config that already uses it needs no change.

Every request carries your API key, in one of two headers. There is no sign-in screen and no anonymous use.

Authentication
Authorization: Bearer YOUR_API_KEY
# or
X-API-Key: YOUR_API_KEY

Opening the address in a browser, or with curl, shows a short description of the server and these same install commands.

Directories that list MCP servers can read the server card, with the tool schemas and how the key is sent, at https://mcp.printfriendly.com/.well-known/mcp/server-card.json.

Get a Free API Key

Sign in and open your API key page. The free plan includes 100 documents a month, which is enough to try everything here. Paid plans raise the limit; they are on the API pricing page.

Replace YOUR_API_KEY in each command below with your key. Keep it out of version control: use your tool's secret or environment-variable support where it has one.

Add It to Your Tool

Claude Code

Terminal
claude mcp add --transport http printfriendly https://mcp.printfriendly.com --header "Authorization: Bearer YOUR_API_KEY"

Cursor

Add PrintFriendly to Cursor opens Cursor and adds the server. It arrives with YOUR_API_KEY as a placeholder, so open Cursor's MCP settings afterwards and paste in your key. Or add it by hand to .cursor/mcp.json:

.cursor/mcp.json
{
  "mcpServers": {
    "printfriendly": {
      "url": "https://mcp.printfriendly.com",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

VS Code

Terminal
code --add-mcp '{"name":"printfriendly","type":"http","url":"https://mcp.printfriendly.com","headers":{"Authorization":"Bearer YOUR_API_KEY"}}'

Any other client

Most MCP clients read a block like this from a settings file. The exact file name and the name of the outer key vary by client; the server entry itself is the same.

MCP config
{
  "mcpServers": {
    "printfriendly": {
      "type": "http",
      "url": "https://mcp.printfriendly.com",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

The Tools

read_page

Reads a web page and returns its main content as clean Markdown, with the ads, navigation, pop-ups and comments taken out. It also returns the title, site, author, date, a short excerpt, the lead image and a word count. Use it whenever the agent needs to read, quote or summarise a page. It takes less of your context window than raw HTML.

  • url (required): the full address of the page.
  • include_links (optional): link addresses are left out of the Markdown by default, because they can make up most of a long page. Set it to true when the agent needs the URLs.
  • max_chars (optional): the most Markdown to return, 60,000 characters by default and up to 400,000. A longer page is cut at a paragraph or heading and the result says so, with the full length; call again with a larger value to read more. Each call counts as a document.

create_document

Makes a document and hands it back. Use it when the user wants to save, share, print or download something. Give it a web page address, HTML or Markdown, and say which format you want.

  • url, html or markdown (exactly one): what to turn into a document.
  • output (required): pdf, docx (Word), markdown, html or json.
  • title (for HTML or Markdown input), page_size (letter or a4) and include_links (keep link addresses in Markdown and JSON output; off by default). All three are optional.

For pdf and docx (Word) you get a download link that works for 48 hours, with the file size and the time it expires. For markdown and html you get the content itself, and json returns the content together with its title, author, date and word count. Unlike read_page, they are never cut short, however long the page.

Common Questions

What counts toward my limit?#

Each successful call to either tool counts as one document on your key's plan, the same as a document made through the REST API. A call that fails does not count, and neither do the connection steps your tool makes before it calls anything.

What happens when I reach the free limit?#

The tool answers with an error that says the free plan is used up and links to the upgrade page, so your agent can tell you why it stopped. The count starts again on the first of the month.

What am I allowed to use it for?#

Use of the API and the MCP server is governed by the Acceptable Use Policy, and keys used in breach of it are revoked.

How fast can I call it?#

Free keys can make 10 tool calls a minute and paid keys 120, the same limits as the REST API. Past that the tool answers with an error that says how many seconds to wait.

My tool says 401 or API key required#

The key was missing or not recognised. Check that the header reads Authorization: Bearer followed by a space and the key, with nothing extra, and that you copied the whole key from your API key page. The key is not accepted in the web address, in a query string, or in the body.

Can it read pages behind a login?#

No. PrintFriendly fetches the public version of a page, so a page behind a login or a paywall, or on a site that blocks automated visitors, can come back empty or partial. Pass the page's HTML to create_document yourself if you already have it.

Can I do the same thing without MCP?#

Yes. The REST API uses the same key and the same plan limits.

Something else? Contact support and include the tool you are using and what the error said.