AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified Apache-2.0 Self-run

Servo Fetch

skill-konippi-servo-fetch-servo-fetch · by konippi

Fetch and render web pages using the Servo browser engine — a single binary with JS execution, CSS layout, screenshots, and content extraction. Use when a URL returns empty or incomplete content with plain HTTP fetch, when you need a screenshot without GPU, or when you need to run JavaScript in a page context. No browser download required.

No reviews yet
0 installs
23 views
0.0% view→install

Install

$ agentstack add skill-konippi-servo-fetch-servo-fetch

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-konippi-servo-fetch-servo-fetch)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Servo Fetch? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

servo-fetch

When to use

  • A URL returns empty or incomplete content with simple HTTP fetch (SPA, React, Vue)
  • You need a screenshot of a web page in CI/Docker (no GPU available)
  • You need to evaluate JavaScript in a page context (DOM queries, data extraction)
  • You want clean Markdown from a documentation site, blog, or article
  • You need to crawl an entire documentation site or blog for RAG / knowledge ingestion
  • You need the accessibility tree with bounding boxes for a page

When NOT to use

  • The page is simple static HTML (use curl or built-in web fetch instead)
  • You need to interact with the page (click, fill forms) — servo-fetch is read-only
  • You need full Chromium compatibility for complex web apps

Tools (MCP)

Start the MCP server: servo-fetch mcp (stdio) or servo-fetch mcp --port 8080 (Streamable HTTP)

fetch

Extract readable content from a URL. JavaScript is executed, CSS layout is computed, and navigation noise (navbars, sidebars, footers, cookie banners) is stripped automatically.

Parameters:

  • url (required): URL to fetch (http/https only)
  • format: "markdown" (default), "json", "html", "text", or "accessibility_tree"
  • selector: CSS selector to extract a specific section instead of full-page extraction
  • maxLength: max characters to return (default 5000)
  • startIndex: character offset for pagination
  • visibility: "moderate" (default), "strict", or "off"
  • common: timeout (s, default 30), settleMs (ms, default 0), userAgent, cookiesFile, headers
fetch(url: "https://docs.rs/tokio", format: "markdown")
fetch(url: "https://example.com", format: "json", selector: "article")
fetch(url: "https://example.com", format: "accessibility_tree")

PDF URLs are auto-detected via Content-Type and extracted directly.

batch_fetch

Fetch multiple URLs in parallel. Results are returned as separate content entries in completion order. Failed URLs are reported inline without aborting the batch.

Parameters:

  • urls (required): array of URLs to fetch (http/https only, max 20)
  • format: "markdown" (default), "json", "html", "text", or "accessibility_tree"
  • selector: CSS selector to extract a specific section
  • maxLength: max characters per URL result (default 5000)
  • visibility: "moderate" (default), "strict", or "off"
  • common: timeout (s, default 30), settleMs (ms, default 0), userAgent, cookiesFile, headers
batch_fetch(urls: ["https://a.com", "https://b.com"], format: "markdown")
batch_fetch(urls: ["https://a.com", "https://b.com"], format: "json", selector: "article")

crawl

Crawl a website starting from a URL, following same-site links via BFS. JavaScript is executed, CSS layout is computed, and navigation noise is stripped. Respects robots.txt.

Parameters:

  • url (required): starting URL to crawl (http/https only)
  • limit: max pages to crawl (default 50, max 500)
  • maxDepth: max link depth from seed (default 3, max 10)
  • format: "markdown" (default) or "json"
  • include: URL path patterns to include (e.g. ["/docs/**"])
  • exclude: URL path patterns to exclude
  • maxLength: max characters per page result (default 5000)
  • selector: CSS selector to extract a specific section per page
  • common: timeout (s, default 30), settleMs (ms, default 0), userAgent, cookiesFile, headers
crawl(url: "https://docs.example.com", limit: 20, maxDepth: 3)
crawl(url: "https://docs.example.com", include: ["/guide/**"], limit: 50)

screenshot

Capture a PNG screenshot. Uses Servo's software renderer — works without GPU.

Parameters:

  • url (required): URL to capture
  • fullPage: capture the full scrollable page (default false)
  • common: timeout (s, default 30), settleMs (ms, default 0), userAgent, cookiesFile, headers
screenshot(url: "https://example.com")
screenshot(url: "https://example.com", fullPage: true)

execute_js

Evaluate a JavaScript expression after the page loads. Console messages (log, warn, error) are appended to the result.

Parameters:

  • url (required): URL to load
  • expression (required): JavaScript expression to evaluate
  • common: timeout (s, default 30), settleMs (ms, default 0), userAgent, cookiesFile, headers
execute_js(url: "https://example.com", expression: "document.title")
execute_js(url: "https://example.com", expression: "[...document.querySelectorAll('h2')].map(e => e.textContent)")

CLI

servo-fetch https://example.com                                  # Markdown (default)
servo-fetch https://example.com --format json                    # Structured JSON
servo-fetch URL1 URL2 URL3                                       # Parallel batch (Markdown with separators)
servo-fetch URL1 URL2 --format json                              # Parallel batch (NDJSON)
servo-fetch https://example.com --format png -o out.png          # Save PNG screenshot
servo-fetch https://example.com --js "document.title"            # Run JavaScript and print result
servo-fetch https://example.com --selector article               # Extract a section by CSS selector
servo-fetch https://example.com --schema schema.json             # Schema-driven JSON
servo-fetch https://example.com --cookies cookies.txt            # Send session cookies
servo-fetch https://example.com -H "Authorization: Bearer TOKEN" # Custom request header (repeatable)
servo-fetch https://example.com --format html                    # Raw HTML
servo-fetch https://example.com --format text                    # Plain text
servo-fetch https://example.com -t 60                            # Custom timeout
servo-fetch https://example.com --settle 500                     # Extra wait for SPAs
servo-fetch crawl https://docs.example.com --limit 20            # Crawl a site (BFS)
servo-fetch crawl https://docs.example.com --include "/docs/**"  # Crawl with path filter
servo-fetch URL --output page.md                                 # Save a single URL to a file
servo-fetch crawl URL --output-dir ./pages/                      # One file per page

Gotchas

  • Servo's web compatibility is improving but not at Chromium level — best for docs, blogs, and SSR sites
  • Private/reserved IP addresses are blocked (SSRF protection)
  • Default timeout is 30 seconds; increase with timeout parameter for slow pages
  • Cookie banners and newsletter popups are stripped via injected user stylesheets

For pagination patterns, format selection, and MCP configuration, see references/guide.md.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.