Skip to main content
Glama
quitegoodproject

tokenmarkdown-mcp

Official

⚡ TokenMarkdown (tokenmarkdown.com)

Sub-150ms Web-to-Markdown Engine & Model Context Protocol (MCP) Server
Engineered for LLM context window efficiency, RAG pipelines, and autonomous AI coding agents.

License: MIT MCP Part of Quite Good Project npm version


🧭 The Problem: Prompt Bloat & Token Degradation

When autonomous agents or RAG pipelines scrape the web using Puppeteer, Jina, or Firecrawl, they dump 25,000+ tokens of navigation trees, cookie popups, tracking scripts, and inline SVGs directly into the prompt.

  • High Cost: $0.08+ per page in Claude 3.5 Sonnet token fees.

  • Slow Latency: 4 to 8 seconds per scrape.

  • Context Poisoning: LLMs hallucinate on irrelevant footer links and cookie consent disclaimers.

TokenMarkdown compresses web pages by 95% into dense, clean Markdown in sub-150ms, preserving your context budget and boosting reasoning accuracy.


Related MCP server: urltomarkdown-mcp

⚡ Comparison Benchmark

Feature

Raw HTML / Scrapers

Firecrawl / Jina

TokenMarkdown.com

Average Latency

6,200ms

2,100ms

⚡ 148ms

Tokens Consumed

~28,500 tokens

~3,200 tokens

🎯 ~940 tokens (95% Savings)

Prompt Cost (Sonnet)

$0.0855 / call

$0.0096 / call

💰 $0.0028 / call

Zero-SDK URL Proxy

❌ No

❌ No

✅ Yes (curl tokenmarkdown.com/https://...)

Native MCP (Stdio + SSE)

❌ No

Partial

✅ Yes (npx -y tokenmarkdown-mcp)


🚀 Quickstart

1. Zero-SDK Terminal / cURL Prefix Proxy

You don't even need an API key for quick testing. Prepend https://tokenmarkdown.com/ to any URL:

curl -s "https://tokenmarkdown.com/https://stripe.com/docs/api"

2. Claude Desktop & Cursor IDE Setup (MCP)

Add to your Claude Desktop configuration (claude_desktop_config.json) or Cursor MCP settings:

{
  "mcpServers": {
    "tokenmarkdown": {
      "command": "npx",
      "args": ["-y", "tokenmarkdown-mcp"],
      "env": {
        "TOKENMARKDOWN_API_KEY": "<TOKENMARKDOWN_API_KEY>"
      }
    }
  }
}

3. REST API (POST /v1/extract)

curl -X POST "https://tokenmarkdown.com/v1/extract" \
  -H "Authorization: Bearer <TOKENMARKDOWN_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://linear.app/blog/rethinking-issue-tracking",
    "include_images": false
  }'

Response:

{
  "url": "https://linear.app/blog/rethinking-issue-tracking",
  "title": "Rethinking issue tracking — Linear Blog",
  "markdown": "# Rethinking issue tracking\n\nMost issue trackers are built as databases...",
  "tokens": 820,
  "savings_percent": 96.2,
  "execution_ms": 142
}

📦 1-Click Blueprints for Agencies & Automation


🏛️ developer suite & Governance

TokenMarkdown is an official developer primitive engineered by The Quite Good Project.


📄 License

MIT © 2026 The Quite Good Project.

Available Tools

2 tools
check_quotaA

Check remaining TokenMarkdown API credits and usage status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It conveys a read-only intent through 'check' and describes the resource as remaining credits and usage status, which implies no mutation. However, it does not disclose whether the check itself consumes credits, whether authentication is required, or what the response contains.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the action and the object. Every word contributes meaning and there is no redundant or vague filler.

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

Completeness4/5

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

For a zero-parameter, read-only status tool, the description supplies enough information to understand the call intent. The absence of an output schema means the agent does not know the exact response shape, but 'remaining credits and usage status' is a reasonable qualitative description for selecting and invoking the tool.

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?

The tool has zero parameters and the schema already reflects that completely, so there is nothing for the description to add. A zero-parameter tool receives a baseline of 4 because parameter documentation is not needed.

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?

The description states a clear verb and resource: 'Check remaining TokenMarkdown API credits and usage status.' This distinguishes it from the sibling tool extract_markdown, which is about extraction/processing, so an agent can select the right tool without extra context.

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

Usage Guidelines3/5

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

The description implies the tool is for monitoring quota before or after API usage, but it does not explicitly say when to call it, whether it should be called before extract_markdown, or what conditions make the check necessary. There is no exclusion guidance, but the intended context is reasonably inferable.

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

extract_markdownA

Sub-150ms clean web-to-markdown extraction. Strips 95% of HTML bloat, cookie banners, tracking scripts, and SVGs to preserve LLM context windows.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe fully qualified HTTP or HTTPS URL to extract into clean markdown.
include_imagesNoWhether to retain image links in the markdown output (default: false).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden and does so meaningfully: it discloses performance expectations, selective stripping of HTML bloat, cookie banners, tracking scripts, and SVGs. It could be more transparent about failure modes, authentication needs, or whether the extraction is read-only, but the stripping behavior is genuinely informative.

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

Conciseness5/5

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

The description is a single sentence that front-loads the key differentiator, states the core function, and gives concrete stripping behavior. Every clause adds value, and there is no redundant repetition of the tool name or schema.

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

Completeness4/5

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

For a simple two-parameter extraction tool with a complete schema, the description adequately covers purpose, input, behavior, and output format implied by 'web-to-markdown'. It lacks explicit error/edge-case guidance and does not mention quota implications, but the overall tool context is small enough that this is a minor gap.

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 parameters url and include_images are already fully documented in the input schema. The description adds no parameter-specific detail beyond the schema, which places it at the baseline score.

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?

The description states a concrete action — extraction of a web page into clean markdown — and clearly identifies the input and intended output. It also distinguishes itself from check_quota by focusing on content extraction rather than quota status.

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?

The description provides a clear use context: extracting clean markdown for LLM context windows. It implies the tool should be chosen when minimizing HTML noise for downstream processing is important, but it does not explicitly state when not to use it or contrast it with check_quota.

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. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observedcheck_quota
    • First observedextract_markdown

TDQS

A4.3/5.0
Disambiguation5/5

The two tools have completely distinct purposes: one performs the core extraction, the other monitors usage. There is no possible confusion between them.

Naming Consistency5/5

Both tool names follow the same verb_noun pattern (extract_markdown, check_quota), creating a predictable and clean naming convention.

Tool Count4/5

With only two tools, the count is slightly under the typical 3-15 range, but it fits the narrow scope of a single-purpose extraction API with quota checking. No unnecessary tools are present.

Completeness5/5

The tool surface fully covers the service's obvious domain: extracting web content to markdown and checking API quota. There are no missing operations for this focused utility.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Converts web pages and HTML strings into clean, LLM-optimized Markdown with metadata extraction and token estimation. It uses a lightweight, browserless approach to provide token-efficient output for more effective LLM processing.
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Converts web pages to Markdown for MCP clients like Claude, with support for single and batch reads, caching, fallback rendering, and SSRF protection.
    22
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Converts any webpage into clean, LLM-ready Markdown, removing noise and supporting JavaScript rendering.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/quitegoodproject/tokenmarkdown'

If you have feedback or need assistance with the MCP directory API, please join our Discord server