
PageMap
io.github.Retio-aiPublished by GitHub account Retio-aiv0.7.3Updated Oct 24, 2026
Structured web intelligence for AI agents. 5x fewer tokens than Playwright/Firecrawl, 84.7% accuracy
Overview
PageMap is a local MCP server that turns web pages into compact, structured page maps so an AI assistant can read and interact with them.
- What you can do
- Navigate to a URL and get a compressed page map with numbered refs, extracted info and images, plus parallel batch fetching of several URLs and back navigation. Click, type, select, hover, fill multi-field forms, scroll and wait for dynamic content using refs from the last map. Check the current URL and title, take screenshots, and open, switch, list and close browser tabs. Detect page barriers such as login walls, bot blocks, cookie consent and popups, and report suggested next steps.
- When to use it
- Useful when an assistant needs to browse real websites with a small context footprint: reading product, article or search pages, filling forms, and stepping through multi-page flows. A fit for e-commerce research and comparison tasks across the supported sites.
- Requirements
- Runs as a local process over stdio; Python 3.11+ and Chromium, which is auto-installed on first use. Installable from PyPI or as a Docker image. No API keys or environment variables are declared. Private and local addresses are blocked unless the allow-local option or PAGEMAP_ALLOW_LOCAL is set.
Installation
In SourceWeft
- Open PageMap in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
PageMap
PageMap converts raw HTML (100K+ tokens) into structured, AI-readable page maps (2-5K tokens) — a 97% token reduction. It works as an MCP server, Python SDK, and CLI, supporting 16 page types and 30+ e-commerce sites. Agents can read, click, type, and navigate any web page.
"Give your agent eyes and hands on the web."
[CI] [PyPI] [Python] [License: AGPL-3.0] [Docker] [Awesome MCP Servers]
Why PageMap?
Playwright MCP dumps 50-540KB accessibility snapshots per page, overflowing context windows after 2-3 navigations. Firecrawl and Jina convert HTML to markdown — read-only, no interaction.
PageMap gives your agent a compressed, actionable view of any web page:
Benchmarked across 11 e-commerce sites, 94 static tasks, 7 conditions. 8,100+ tests passing.
Quick Start
Chromium is auto-installed on first use — no manual playwright install needed.
Install
MCP Client Config
Add to Claude Code, Cursor, Windsurf, or Claude Desktop:
Claude Desktop (macOS): Use the absolute path to
uvx— runwhich uvx(e.g./opt/homebrew/bin/uvx).
VS Code (Copilot): Use
"servers"instead of"mcpServers"in.vscode/mcp.json.
Docker
Features
13 MCP Tools — Read + Interact
Not just reading — your agent can click buttons, fill forms, select options, manage tabs, and navigate across pages. 13 tools cover the full browsing workflow:
get_page_map · execute_action · fill_form · scroll_page · wait_for · take_screenshot · get_page_state · navigate_back · batch_get_page_map · open_tab · switch_tab · list_tabs · close_tab
16 Page Types, Auto-Detected
PageMap automatically classifies pages and applies optimized extraction for each type:
product_detail · listing · search_results · article · news · video · login · form · checkout · dashboard · help_faq · settings · error · documentation · landing · blocked
E-Commerce Deep Coverage
Built-in support for 30+ major e-commerce sites across 4 tiers:
- Global mega-platforms — Amazon, eBay, AliExpress, SHEIN, Walmart, Rakuten
- Global fashion — Zara, H&M, Nike, Uniqlo, ASOS, Zalando, SSENSE, Farfetch, COS
- Korea — Coupang, Naver Shopping, Musinsa, 29CM, W Concept, SSG, 11st
- Japan/China — ZOZO, Tmall, JD.com, Taobao
Structured extraction of prices, options (size/color), ratings, availability — with automatic cookie consent handling and login barrier detection.
Smart Recovery
PageMap detects problems and tells your agent what to do:
- Barrier detection — Login required? Bot blocked? Out of stock? Age verification? Popup overlay? PageMap adds a
barrierfield with the diagnosis and suggested next steps - Cookie consent auto-dismiss — 7 CMP providers auto-detected (Cookiebot, OneTrust, TrustArc, Didomi, Quantcast, Usercentrics, generic fallback). 5-tier dismiss cascade: CMP JS API → Reject → Accept → Dismiss → Close symbol. GDPR reject-first default policy
- Popup overlay detection — AX tree
role="dialog"+ HTML regex 2-phase detection. Promotional popups (newsletter, exit-intent) auto-dismissed - Bot detection awareness — Detects Cloudflare, Turnstile, reCAPTCHA, hCaptcha, and Akamai. Reports the provider and suggests wait/retry strategies
- Stale ref recovery — When DOM changes invalidate refs, PageMap returns clear guidance to re-fetch
Content Intelligence
- 8 JSON-LD schemas — Product, NewsArticle, VideoObject, FAQPage, Event, LocalBusiness, BreadcrumbList, and ItemList
- Metadata extraction — Prices, ratings, reviews, descriptions, images from structured data and DOM fallbacks
- 2-layer caching — Cache hit (~10ms), content refresh (~500ms), full rebuild (~1.5s). Diff-based updates for unchanged sections
- Delta evidence packet output - Optional
to_delta_packet()serializer emits digest-bound evidence units, claim candidates, provenance, and authority flags for downstream memory/review systems without changing the default MCP output
10 Languages
Locale auto-detected from URL. Token budgets adjusted for CJK scripts.
Deployment
Local (STDIO)
Default mode. Runs as a local MCP server — no server setup needed.
Docker
Multi-architecture images (amd64/arm64) available on Docker Hub and GitHub Container Registry.
Python API
For offline processing (no browser):
Security
PageMap treats all web content as untrusted input:
- SSRF defense — Multi-layer protection against server-side request forgery
- Prompt injection defense — Content boundaries, role-prefix stripping, suspicious content flagging
- robots.txt compliance — RFC 9309 compliant.
--ignore-robotsopt-out flag - Resource guards — DOM node limit, HTML size limit, response size limit
- Session isolation — Each session has independent cookies and storage, automatically cleaned up
Local development: Private IPs are blocked by default. Use --allow-local or PAGEMAP_ALLOW_LOCAL=1.
Disclaimer
Users are responsible for complying with the terms of service of target websites and all applicable laws when using PageMap.
Troubleshooting
"spawn uvx ENOENT" (Claude Desktop on macOS) — Claude Desktop does not inherit your shell PATH. Run which uvx and use the absolute path in your config.
First page takes a long time — Chromium cold start takes ~10-30s on first navigation. Subsequent pages load in 1-3 seconds.
Localhost blocked — Use --allow-local flag or set PAGEMAP_ALLOW_LOCAL=1.
Chromium not found — Run pip install retio-pagemap && playwright install chromium to install manually.
Requirements
- Python 3.11+
- Chromium (auto-installed on first use)
Community
Have a question or idea? Join the conversation in GitHub Discussions.
Development
Pricing
Local (STDIO) — Free forever. Self-hosted, open source under AGPL-3.0.
Cloud API — Hosted multi-tenant server with auth, rate limiting, and credit-based billing. Contact [email protected] for access.
License
AGPL-3.0-only — see LICENSE for the full text.
For commercial licensing options, contact [email protected].
For Agents
This section is written for AI agents using PageMap as an MCP tool.
Tools
Output Format
## Actions— Every interactive element on the page with a stablerefnumber.## Info— Key page content extracted from HTML: prices, titles, ratings, descriptions.## Images— Product/content image URLs.## Meta— Token count, interactable count, generation time.
Barrier Detection
When PageMap encounters a page-level obstacle, it includes a barrier field in the response:
Possible barriers: cookie_consent, login_required, bot_blocked, out_of_stock, empty_results, error_page, age_verification, region_restricted, popup_overlay.
When you see a barrier: follow the barrier_hint guidance. For bot_blocked, wait and retry. For login_required, use fill_form with credentials.
Ref Lifecycle
Refs are assigned by get_page_map and remain valid until the page state changes.
Refs are invalidated when:
- The page navigates to a new URL
- A DOM mutation occurs (modal opens, SPA navigation, accordion toggles)
execute_actioncauses a page-level change
When you get a stale ref error: call get_page_map again to get fresh refs before retrying.
Token Budget Behavior
When a page exceeds the token budget, content is pruned in this order:
- Navigation menus, footers, sidebars removed first
- Secondary body content trimmed
## Actionsand## Infoare always preserved
If key content seems missing, try scroll_page to load lazy content, then get_page_map again.
Recommended Workflow
For pages with dynamic content (search results, filters):
Known Limitations
- Login-gated pages — PageMap does not manage sessions or cookies. Authentication must be handled externally.
- Heavy bot detection (Cloudflare, Akamai) — May block automated access. PageMap detects the provider and suggests strategies, but cannot bypass active bot mitigation.
- Private network access — Blocked by default. Requires
--allow-localflag. - iframes — Cross-origin iframes are not accessible due to browser security policies.
PageMap — Structured Web Intelligence for the Agent Era.
Source: README.md at commit 684ad79
Tools
0Version history
1- v0.7.3LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.