Skip to main content
Glama
mauriblint

JsonLink MCP Server

Official

JsonLink MCP Server

Give your AI agent the web. The JsonLink MCP server lets Claude, Cursor, VS Code and any MCP client read web pages as Markdown, get link metadata, take screenshots and list the links and images on any URL.

  • Reads JavaScript-heavy pages — pages are loaded in a real browser when needed.

  • Gets past blocks — requests are retried through a proxy when a site blocks them.

  • Failed requests are free — timeouts and pages that can't load cost no credits.

Tools

Tool

What it does

Credits

url_to_markdown

Main content of a page as clean Markdown, for reading articles, docs and blog posts

1

extract_metadata

Title, description, preview images, favicon and site name of a URL

1

screenshot

Screenshot of a page (desktop, mobile, tablet, full page or one element), returned as an image. Ads, trackers, chat widgets and cookie banners hidden; optional dark mode

2

extract_links

Every link on a page with anchor text, follow/nofollow and internal/external

1

extract_images

Every image on a page with format, dimensions and file size

1

Related MCP server: Crawlberg MCP Server

Get an API key

Create a free account — the free plan includes 100 credits every month, no credit card. Copy your key from the dashboard.

Setup

Replace YOUR_API_KEY with your JsonLink key.

Claude Code

claude mcp add jsonlink -e JSONLINK_API_KEY=YOUR_API_KEY -- npx -y jsonlink-mcp

Claude Desktop

Add this to claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "jsonlink": {
      "command": "npx",
      "args": ["-y", "jsonlink-mcp"],
      "env": { "JSONLINK_API_KEY": "YOUR_API_KEY" }
    }
  }
}

Cursor

Add this to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "jsonlink": {
      "command": "npx",
      "args": ["-y", "jsonlink-mcp"],
      "env": { "JSONLINK_API_KEY": "YOUR_API_KEY" }
    }
  }
}

VS Code

Add this to .vscode/mcp.json:

{
  "servers": {
    "jsonlink": {
      "command": "npx",
      "args": ["-y", "jsonlink-mcp"],
      "env": { "JSONLINK_API_KEY": "YOUR_API_KEY" }
    }
  }
}

Windsurf and other clients

Any client that runs stdio MCP servers works the same way: command npx, arguments -y jsonlink-mcp, environment variable JSONLINK_API_KEY.

Example prompts

  • "Read https://example.com/blog/post and summarize it in five bullet points."

  • "Take a mobile screenshot of my landing page and tell me what looks broken."

  • "Screenshot just the pricing section of stripe.com in dark mode."

  • "Get the title and description of these 10 links and make a table."

  • "List the external links on this page that are nofollow."

Configuration

Variable

Description

JSONLINK_API_KEY

Your JsonLink API key (required).

JSONLINK_API_URL

API base URL. Defaults to https://jsonlink.io.

Pricing

Every tool call uses credits from your JsonLink plan: 1 credit per page, 2 per screenshot. Plans start at $15/month for 50,000 credits — see pricing. Credits and rate limits are the same as the REST API.

Development

npm install
npm run build
JSONLINK_API_KEY=YOUR_API_KEY node dist/index.js

Run it as a remote (Streamable HTTP) server with node dist/index.js --http --port 3100; clients send their key as Authorization: Bearer YOUR_API_KEY.

License

MIT

Available Tools

5 tools
extract_imagesList the images on a pageA
Read-onlyIdempotent

List the images on a web page (including lazy-loaded ones) with URL, format, dimensions and file size. Use it to find photos, logos or product images on a page. 1 credit.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the web page, including https://
limitNoMaximum images to return. Default 100.
min_widthNoSkip images narrower than this, in pixels (e.g. 200 to drop icons).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new context: lazy-loaded images are included, and the call costs '1 credit', which is a cost disclosure annotations cannot express.

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?

Two compact sentences front-load what is returned and follow with the use case, plus a terse cost note. Every element carries information, though the trailing '1 credit.' fragment is abrupt.

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?

With no output schema, the description carries the return-value burden and does so by naming the fields returned (URL, format, dimensions, file size). Combined with complete parameter docs and existing annotations, an agent has enough to call it correctly; pagination/ordering behavior is the only notable omission.

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 all three parameters (url, limit, min_width) are already documented with meaning and defaults. The description adds no syntax or constraint detail beyond the schema; 'including lazy-loaded ones' is behavioral, not parameter-level. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource ('List the images on a web page') and enumerates the returned fields (URL, format, dimensions, file size), which lets an agent distinguish it from extract_links, extract_metadata and screenshot by resource type. It never names a sibling explicitly, so it stops short of a 5.

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?

'Use it to find photos, logos or product images on a page' gives a concrete use context. There is no when-not guidance and no routing to alternatives such as extract_links when the agent actually wants hrefs rather than image assets.

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

extract_metadataGet link metadataA
Read-onlyIdempotent

Get a URL's title, description, preview images, favicon and site name (Open Graph, Twitter Card and HTML meta tags). Use it to summarize what a link is, build link previews or check SEO tags. Faster and cheaper than reading the whole page. 1 credit.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the web page, including https://

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds value beyond that with cost ('1 credit') and a performance characterization ('faster and cheaper'), though it says nothing about failure behavior for unreachable URLs or missing meta tags.

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?

Three sentences, front-loaded with what is returned, then purpose, then the cost/performance trade-off. Every sentence carries distinct information.

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?

No output schema exists, but the description enumerates the returned fields and their source (Open Graph, Twitter Card, HTML meta), effectively substituting for it. For a single-parameter read tool with rich annotations, nothing an agent needs is missing.

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% and the single 'url' parameter is fully documented with format and https:// guidance in the schema. The description adds no syntax or format detail beyond what the schema provides, so the 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 (extract/get) and resource (link metadata) and enumerates exactly what is returned: title, description, preview images, favicon, site name, plus the source formats. It also implicitly distinguishes itself from siblings like url_to_markdown by being 'faster and cheaper than reading the whole page.'

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?

Gives concrete use cases (summarize a link, build previews, check SEO tags) and a comparative heuristic against the heavier alternative of reading the full page. It stops short of naming the sibling tool (url_to_markdown) or stating when-not to use it.

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

screenshotTake a screenshotA
Read-onlyIdempotent

Capture a screenshot of a web page and return the image, so you can see how the page looks. Supports desktop, mobile and full-page captures. Cookie banners are hidden. 2 credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the web page, including https://
delayNoSeconds to wait after loading, for animations or late content.
deviceNodesktop (1280×800, default) or mobile (390×844 at 2×).
full_pageNoCapture the whole scrollable page instead of the first screen.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds genuinely non-derivable context: cookie banners are auto-hidden, the cost is '2 credits', and desktop/mobile/full-page modes are supported. That is real value beyond the structured fields.

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?

Three tight sentences, front-loaded with the core action and result, followed by capability and cost details. Every sentence earns its place with no redundancy or 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?

With no output schema, the description usefully clarifies that the tool returns an image, and it discloses cost and cookie handling. For a simple read tool, an agent has enough to invoke it correctly, though it could state whether large full-page captures have size limits.

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 all four parameters with dimensions and defaults. The description's mention of 'desktop, mobile and full-page captures' maps to device/full_page but adds no syntax or meaning beyond the schema, so the baseline of 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 ('Capture a screenshot of a web page and return the image') and makes the output type explicit ('so you can see how the page looks'). This cleanly distinguishes it from siblings like url_to_markdown, extract_metadata, and extract_images, which return text or asset URLs rather than a rendered image.

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 phrase 'so you can see how the page looks' implies the use case (visual inspection), but there is no explicit guidance on when to choose this over the sibling extraction tools, nor any when-not conditions. Usage is implied rather than stated.

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

url_to_markdownRead a web page as MarkdownA
Read-onlyIdempotent

Fetch a web page and return its main content as clean Markdown (no navigation, ads or footers). Use this to read articles, docs, blog posts or any page the user mentions. Handles JavaScript-rendered pages. 1 credit.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the web page, including https://
max_charsNoTruncate the Markdown to this many characters. Default 50,000.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, open-world, non-destructive), so the bar is lower. The description adds real value beyond them: it discloses content extraction behavior (stripping nav/ads/footers), JavaScript rendering support, and a cost of 1 credit – all useful for invocation decisions.

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?

Four short sentences, all front-loaded with the fetch/return behavior first, then usage, then capabilities, then cost. Every sentence earns its place with no redundancy.

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 one-shot read tool with no output schema, the description covers what it returns (clean Markdown main content), when to use it, and its behavioral traits. The only minor gap is it never mentions the max_chars truncation behavior, but the schema handles that parameter adequately.

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 both url and max_chars are fully documented in the schema, establishing the baseline of 3. The description adds nothing about max_chars truncation or URL formatting, so it does not exceed what the structured fields already provide.

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 ('Fetch a web page and return its main content as clean Markdown') with the cleaned scope spelled out (no navigation, ads or footers). The output format implicitly distinguishes it from the extract_* siblings, which return metadata, links, or images rather than readable content.

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?

'Use this to read articles, docs, blog posts or any page the user mentions' gives clear context for when to reach for it. It does not, however, name the siblings (extract_metadata, screenshot, extract_links) or state when those are preferred, so routing is left partly to inference.

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. 5 tool updatesv0.1.0
    • First observedextract_images
    • First observedextract_links
    • First observedextract_metadata
    • First observedscreenshot
    • First observedurl_to_markdown

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation5/5

Each tool returns a clearly distinct output from a URL (Markdown content, metadata, screenshot, links, images), so an agent can easily select the right one. There is minimal overlap; even metadata vs. markdown is explicitly differentiated by cost/purpose.

Naming Consistency4/5

Four tools follow a clean verb_noun or verb pattern (url_to_markdown, extract_metadata, extract_links, extract_images), but 'screenshot' is a bare noun, a minor deviation. The set is still highly predictable overall.

Tool Count5/5

Five tools is well-scoped for a URL extraction server, with each tool covering a distinct extraction need. No redundant or trivial tools are present.

Completeness4/5

The surface covers the main web-page extraction tasks: readable content, metadata, visual capture, links, and images. It lacks raw HTML or text extraction, but those are minor gaps agents can often work around via url_to_markdown.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to crawl and scrape websites, converting HTML to clean Markdown and structured metadata with support for JavaScript rendering, bot evasion, and SSRF protection.
    185
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to read, screenshot, or convert web pages to PDF using a real headless browser, turning any URL into clean Markdown, a visual image, or a print-ready document.
    82 npm
    MIT