Skip to main content
Glama

Server Details

Read clean web pages and create PDF, Word and Markdown documents with a PrintFriendly API key.

Ownership verified
Status
Healthy
Uptime
99.7% over 26 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
printfriendly/printfriendly-mcp
GitHub Stars
0
Server Listing
PrintFriendly MCP Server
ChatGPT
–
Claude
–

TDQS

A4.4/5.0

Scored across 2 tools

Disambiguation5/5

create_document and read_page have distinct purposes: one produces a shareable/printable document artifact, the other extracts page content for reading/summarising. The create_document description explicitly redirects users to read_page for page reading, eliminating ambiguity even though both can handle web pages and markdown output.

Naming Consistency5/5

Both tools follow a clean verb_noun pattern in snake_case (create_document, read_page). There are no deviations or mixed conventions.

Tool Count3/5

Only two tools are provided. While they cover the core actions, the set feels thin for a document conversion/reading service; a few more operations (e.g., checking plan usage, retrieving document status) could round it out.

Completeness4/5

The surface covers the primary workflows: creating documents from web pages in multiple formats and reading page content. Minor gaps exist (e.g., no way to list or manage previously created documents, no usage/plan query), but these are likely out of scope and easily worked around.

Available Tools

2 tools
create_documentCreate a documentAInspect

Make a document from a web page, HTML or Markdown and return it. Use this when the user wants to save, share, print or download something: output pdf or docx (Word) returns a download link that works for 48 hours; markdown, html, json or text (plain text) returns the content itself. Give exactly one of url, html or markdown. To read a page for your own use, call read_page instead. Markdown, text and json output leave link addresses out unless include_links is true, and are never cut short, however long the page. Counts as one document on the API key's plan.

NameRequiredDescriptionDefault
urlNoA web page to turn into a document. Starts with https://.
htmlNoHTML to turn into a document, instead of a url. Up to 2 MB of markup.
titleNoThe document's title. Used for html and markdown input; a url supplies its own.
outputYespdf or docx (Word): a file with a download link. markdown or html: the clean content. text: the clean content as plain text, with no Markdown syntax. json: the content with its details (title, author, date, word count).
markdownNoMarkdown to turn into a document, instead of a url. Up to 1 MB.
page_sizeNoPaper size for pdf and docx (Word). letter for the US and Canada, a4 elsewhere.
include_linksNoKeep link addresses: as [text](url) in Markdown, or as text (url) in plain text. Affects markdown, text and json output only. Off by default.

Output Schema

NameRequiredDescription
outputYesThe format that was made.
contentNoThe document itself (markdown, html and text only).
documentYesThe page's details: title, url, site, author, date, excerpt, image and word_count. For json output it also holds content_html and content_markdown.
file_urlNoDownload link for the PDF or Word file, for pdf and docx (Word) output only. Valid for 48 hours.
expires_atNoWhen the download link stops working, as an ISO 8601 time. For pdf and docx (Word) output only.
size_bytesNoSize of the file in bytes. For pdf and docx (Word) output only.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: 48-hour download-link lifetime, per-format return behavior, link-stripping default, no truncation guarantee, and quota cost ('Counts as one document on the API key's plan'). These are the operational traits an agent must know before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then behavior, then the sibling pointer and quota note. Dense and mostly waste-free, though the format-behavior and link sentences could be tightened slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A rich output schema exists, so return values need no explanation, and the description still covers exclusivity, format behavior, TTL and quota. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds real value: the exactly-one-of url/html/markdown constraint (not expressed by the schema) and per-enum output semantics. It stops short of covering page_size or the full interaction of include_links beyond the default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Make a document from a web page, HTML or Markdown and return it') and immediately differentiates itself from the sibling read_page. An agent can tell what it produces and how it differs from the alternative without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the trigger ('when the user wants to save, share, print or download something') and the alternative with its condition ('To read a page for your own use, call read_page instead'). Also states the input exclusivity rule ('Give exactly one of url, html or markdown').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_pageRead a web pageA
Read-onlyIdempotent
Inspect

Get the main content of a web page as clean Markdown, without ads, navigation, pop-ups or comments, plus its title, author, date and word count. Use this whenever you need to read, quote or summarise a page. It is cheaper than fetching and cleaning the raw HTML yourself. Link addresses are left out to save tokens: set include_links to true when you need the URLs. A page longer than 60000 characters is cut at a paragraph and the result says so: set max_chars to read more. Reads public pages only. Counts as one document on the API key's plan.

NameRequiredDescriptionDefault
urlYesThe full address of the web page, starting with https://.
max_charsNoMost characters of Markdown to return (60000 is about 15,000 tokens). A longer page is cut at a paragraph or heading, and the result says so and gives the full length. Call again with a larger value, up to 400000, to read more; each call counts as a document.
include_linksNoKeep the page's link addresses in the Markdown, as [text](url). Off by default, because the addresses can be most of the output. Turn on when you need to cite or follow a link.

Output Schema

NameRequiredDescription
urlNoThe address the content came from.
dateNoThe publication date, when the page gives one.
siteNoThe site's name.
imageNoThe page's lead image, when it has one.
titleYesThe page's title.
authorNoThe author, when the page names one.
excerptNoA one or two sentence summary of the page.
markdownYesThe main content of the page as Markdown, cut at max_chars when it is longer.
truncatedYesTrue when the Markdown was cut short at max_chars.
word_countYesWords in the main content.
total_charsYesLength in characters of the page's whole Markdown, cut or not.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the bar is lower, yet the description goes well beyond: it discloses the 60000-character truncation and that the result says so, that link addresses are stripped by default, that only public pages are readable, and that each call counts as one document on the API key's plan.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then usage, then parameter caveats, then limits – a sensible order. It is somewhat long and repeats the max_chars truncation rule already spelled out in the schema, which is minor waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only fetch tool with a full output schema, the description covers everything an agent needs: what content comes back, token/cost implications, truncation and how to extend, link handling, and the public-pages-only constraint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents url, max_chars and include_links in detail. The description restates the max_chars truncation and include_links tradeoff but adds no syntax or format meaning the schema lacks; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the main content of a web page as clean Markdown') and enumerates what comes with it (title, author, date, word count). An agent can immediately tell this is a page-reader and not the sibling write tool create_document.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('whenever you need to read, quote or summarise a page') and gives a rationale ('cheaper than fetching and cleaning the raw HTML yourself'), plus one exclusion ('Reads public pages only'). It stops short of naming an alternative tool or covering non-public/JS-heavy pages.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedcreate_document5 fields changed
      • changedInput schema / properties / include_links / description
        Previous value: -"Keep link addresses in the Markdown, as [text](url). Affects markdown and json output only. Off by default."New value: +"Keep link addresses: as [text](url) in Markdown, or as text (url) in plain text. Affects markdown, text and json output only. Off by default."
      • changedInput schema / properties / output / description
        Previous value: -"pdf or docx (Word): a file with a download link. markdown or html: the clean content. json: the content with its details (title, author, date, word count)."New value: +"pdf or docx (Word): a file with a download link. markdown or html: the clean content. text: the clean content as plain text, with no Markdown syntax. json: the content with its details (title, author, date, word count)."
      • changedInput schema / properties / output / enum
        Previous value: -[
        -  "pdf",
        -  "docx",
        -  "markdown",
        -  "html",
        -  "json"
        -]New value: +[
        +  "pdf",
        +  "docx",
        +  "markdown",
        +  "html",
        +  "json",
        +  "text"
        +]
      • changedOutput schema / properties / content / description
        Previous value: -"The document itself (markdown and html only)."New value: +"The document itself (markdown, html and text only)."
      • changedOutput schema / properties / output / enum
        Previous value: -[
        -  "pdf",
        -  "docx",
        -  "markdown",
        -  "html",
        -  "json"
        -]New value: +[
        +  "pdf",
        +  "docx",
        +  "markdown",
        +  "html",
        +  "json",
        +  "text"
        +]
  2. 1 tool update
    • Changedcreate_document5 fields changed
      • changedInput schema / properties / output / description
        Previous value: -"pdf or docx: a file with a download link. markdown or html: the clean content. json: the content with its details (title, author, date, word count)."New value: +"pdf or docx (Word): a file with a download link. markdown or html: the clean content. json: the content with its details (title, author, date, word count)."
      • changedInput schema / properties / page_size / description
        Previous value: -"Paper size for pdf and docx. letter for the US and Canada, a4 elsewhere."New value: +"Paper size for pdf and docx (Word). letter for the US and Canada, a4 elsewhere."
      • changedOutput schema / properties / expires_at / description
        Previous value: -"When the download link stops working, as an ISO 8601 time (pdf and docx only)."New value: +"When the download link stops working, as an ISO 8601 time. For pdf and docx (Word) output only."
      • changedOutput schema / properties / file_url / description
        Previous value: -"Download link for the PDF or Word file (pdf and docx only). Valid for 48 hours."New value: +"Download link for the PDF or Word file, for pdf and docx (Word) output only. Valid for 48 hours."
      • changedOutput schema / properties / size_bytes / description
        Previous value: -"Size of the file in bytes (pdf and docx only)."New value: +"Size of the file in bytes. For pdf and docx (Word) output only."
  3. 2 tool updates
    • First observedcreate_document
    • First observedread_page

Publisher details

Operator
PrintFriendly · Publisher source
Vendor relationship
First-party
Trust center
Not applicable
Restrictions
Requires a PrintFriendly API key. Free plan: 100 documents a month, no card. Paid plans from $19 a month at https://www.printfriendly.com/api

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables clients to read web pages and PDFs as markdown, capture screenshots, search the web and academic sources, rerank/deduplicate content, and extract PDF elements. Supports API-key access, tool filtering, and response token limits.
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Fetch any web page as clean Markdown or plain text, split it into heading-aware, token-bounded RAG chunks, convert raw HTML, and read page metadata. Uses the Web2MD API on RapidAPI with your own key (free BASIC plan).
    4
    4
    47 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to turn live web pages or supplied HTML into clean, main-content Markdown with title, author, date and language metadata. It respects robots.txt and AI opt-outs, reporting refusal reasons, quota, and plain-language errors back to the agent.
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides functionality to fetch and transform web content in various formats (HTML, JSON, plain text, and Markdown) through simple API calls.
    127,538 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.