← Enrichr

Tool reference

Every tool Enrichr exposes over MCP, with its inputs and credit cost. This list is generated from the running server, so it is always current. New here? Start with the setup guide.

What this is. Enrichr (enrichr.dev) is a remote MCP server that opens any URL in a real browser and returns what actually rendered: design tokens, fonts, animation timings, WebGL shaders, the 3D scene and recovered source. Endpoint: https://enrichr.dev/mcp (Streamable HTTP, X-API-Key header; OAuth for ChatGPT). 34 tools: most cost 1 credit, a whole-site capture or rebuild brief costs 10, and the free plan includes 30 credits a month.

34 of 34 tools

extract_site_profile10 credits

One page load, every capture surface: design tokens, webfonts, CSS/WAAPI animations, framework internals (__NEXT_DATA__, React component tree, Nuxt/Astro/Svelte state), the 3D scene graph, a complete asset inventory merging network traffic with DOM declarations, response headers, security posture, CDN/platform fingerprints, robots.txt, sitemap, structured data, and source map discovery.

url*
viewport_width
viewport_height
recover_source_maps — Download and parse discovered source maps
include_source_content — Return recovered original file bodies. Large.
fetch_robots

rebuild_brief10 credits

THE handoff tool. Runs every capture against one page load and returns a single Markdown brief written for an LLM to rebuild the site from: design tokens, component inventory, exact animation timings and easings, @keyframes bodies, shader GLSL, the 3D scene graph and the scene exported as glTF, fonts, asset inventory, API endpoints, event listeners, raw HTML and inline scripts, and recovered original source where the site ships source maps. Also measures motion by scrolling and diffing computed styles, which is the only way to see animation on a site that bundles its library out of reach, and clicks an internal link to describe the route transition. Closes with an explicit account of what it could not see. Also returns a download URL for a zip of the whole capture — rendered DOM, every asset pulled local, the CSS that actually applied, screenshots, and this analysis, opening offline with no network. If you can run shell commands (Claude Code and similar): curl that URL, unzip it into a working directory, and actually read index.html / styles/used.css / REBUILD.md from disk — that is the complete capture, not the brief text alone. If you cannot run commands (Claude Desktop and similar): give the link to the person directly instead; you cannot fetch or unzip it yourself.

url*
viewport_width
viewport_height
recover_source_maps — Download source maps and recover original source (high value)
include_source_content — Include recovered original file bodies
include_bundles — Inline external JS/CSS bodies. Usually not worth the context.
include_scroll_motion — Measure motion by scrolling and diffing computed styles, and grab a frame at each stop. The only thing that sees motion on a site whose animation library is bundled out of reach — which is most award-winning sites. Adds ~30s.
include_interactions — Probe hover/focus/active states with the real mouse. Adds ~20s.
include_responsive — Measure layout across the viewport ladder and in dark mode. Adds ~20s.
include_page_transitions — Click an internal link and measure the route transition. Runs last, and leaves the browser on a different page. Adds ~5s.
include_ocr — Read text that exists only in pixels (canvas, images, video posters) with OCR.
include_video_frames — Grab stills from the page's video elements.
include_coverage — Record which CSS actually applied; produces styles/used.css in the zip.
max_chars — Rough budget for the brief; raw source is trimmed to fit

reverse_engineer_full10 credits

One-call comprehensive reverse engineering. Runs DOM extraction, asset discovery, animation analysis, WebGL capture, and structured data (JSON-LD, OpenGraph) at once.

url*
viewport_width
viewport_height
fetch_asset_metadata
include_dom_tree

extract_source_maps2 credits

Find and optionally recover the source maps a site's bundles advertise. When a map is reachable and embeds sourcesContent, this returns the ORIGINAL TypeScript/JSX source — the real component tree, not a minified bundle. Discovery is cheap; set recover=true to download and parse, and include_content=true to return file bodies.

url*
recover — Download and parse the maps, not just list them
include_content — Return original file contents. Large — capped internally.
max_maps

analyze_css1 credit

Analyze a page's CSS from the RENDERED page. Returns design tokens (a frequency-ranked colour palette, the type scale, spacing, radii, shadows, easings), CSS custom properties, breakpoints, and stylesheet statistics. Values are ranked by how many elements actually use them, so brand colours separate from one-offs.

url*
extract_tokens
include_selectors
max_selectors
max_elements

analyze_html1 credit

Analyze the HTML structure of a page for SEO readiness, accessibility, semantic markup, and framework detection (React/Vue/Angular SSR).

url*
check_seo
check_accessibility
check_semantic
detect_frameworks

analyze_javascript1 credit

Inspect JavaScript bundles loaded by a page. Detects libraries and frameworks (React, Vue, Angular, jQuery, etc.), analyzes bundle composition, and identifies patterns from script sources.

url*
detect_libraries
analyze_bundles — Download and inspect JS bundle contents (slow)
max_bundle_size_kb

analyze_page_state1 credit

Capture page state: title, HTML, JSON-LD structured data, computed CSS styles for key elements, and internal/external link inventory.

url*
viewport_width
viewport_height
wait_for_load

analyze_spreadsheet1 credit

Download and analyze a spreadsheet (CSV, XLSX, or Google Sheets URL). Returns sheet names, row count, column headers, and a sample of the data.

url* — URL to the spreadsheet (CSV, XLSX, or Google Sheets)
max_rows — Maximum data rows to include in the output

batch_scrape1 credit

Scrape multiple URLs in parallel batches with rate limiting. Useful for gathering evidence from a sitemap or known URL list.

urls* — Array of URLs to scrape
batch_size — Number of URLs to process concurrently per batch
format

cache_invalidate1 credit

Clear cached scrape results. Use when content has changed and you need a fresh scrape, or for debugging extraction issues.

url — Specific URL to invalidate. If omitted, clears all enrichr cache.
namespace — Cache namespace to clear

compare_screenshots1 credit

Compare two images pixel-by-pixel using pixelmatch. Returns diff pixel count, percentage difference, and a diff image.

before_url* — URL of the baseline image
after_url* — URL of the comparison image
threshold — Difference threshold
include_aa — Include anti-aliased pixels in diff
include_diff_image — Return a base64 diff image

crawl_site1 credit

Capture multiple pages of a site, not just one. Discovers URLs from robots.txt/sitemap.xml (or same-origin links on the root page if no sitemap exists), then loads and reads up to max_pages of them for real in a browser — element/link/image/heading counts and detected tech per page. Use this, not rebuild_brief or reverse_engineer_full, when the request is for the whole site rather than one page. Respects robots.txt.

url* — Root URL to start crawling from
max_pages — Maximum number of pages to crawl

extract_assets1 credit

Discover and catalog all images, fonts, videos, SVGs, scripts, stylesheets, and 3D models on a webpage. Optionally fetches HTTP metadata for each.

url*
fetch_metadata — Fetch HTTP metadata (slow, but provides file sizes and dimensions)
max_assets — Maximum assets to return

extract_color_palette1 credit

Extract dominant colors from an image URL using histogram quantisation.

url* — URL of the image
colors — Number of colors to extract
resize — Downscale width for faster processing

extract_contacts1 credit

Extract email addresses, phone numbers, and physical addresses from a webpage. Filters out false positives like credit card numbers.

url*
extract_emails
extract_phones
extract_addresses
include_text — Include extracted text content (large)

extract_design_system1 credit

Extract a site's real design system from the RENDERED page: CSS custom properties, a frequency-ranked colour palette, the type scale (complete font-size/weight/line-height/letter-spacing combinations), spacing scale, radii, shadows, easing curves, and breakpoints — plus webfonts with their file URLs, and every CSS/WAAPI animation with real keyframes and timing. Reads computed styles, so the cascade, media queries, and runtime theming are already resolved.

url*
viewport_width
viewport_height
max_elements — Elements to sample for computed styles. The page is sampled with an even stride.
include_animations
include_fonts

extract_scene_graph1 credit

Walk a page's Three.js scene: every mesh with its geometry and triangle count, every material with its PBR parameters and bound texture maps, lights, the active camera, renderer configuration, and post-processing passes. Works even when the scene lives in module scope and is never assigned to window — Three.js announces its objects to a devtools bridge we install before page scripts run.

url*
viewport_width
viewport_height
max_meshes

extract_socials1 credit

Extract social media profile links from a webpage. Detects links to Twitter/X, LinkedIn, Instagram, Facebook, GitHub, YouTube, TikTok, etc.

url*
platforms

extract_structured_data1 credit

Extract JSON-LD, Microdata, OpenGraph tags, and Twitter Cards from a webpage and return them as parsed structured objects.

url*
include_jsonld
include_microdata
include_opengraph
include_twitter_cards

interact_with_page1 credit

Simulate user interactions on a page (click, fill, hover, scroll) and optionally capture screenshots of state changes.

url*
interactions*
capture_screenshots
viewport_width
viewport_height

map_site1 credit

Discover the URLs that make up a site, without visiting them. Reads robots.txt and sitemap.xml (following sitemap index files) first; if a site has no sitemap, falls back to same-origin links found on the root page. Returns the full list of internal (and optionally external) links. Pair with crawl_site to actually capture the pages this finds.

url* — Root URL to map
include_external — Include external domain links in results

ocr_document1 credit

Extract text from a PDF document using OCR. Downloads the PDF, converts pages to images, and runs Tesseract OCR on each page.

url* — URL of the PDF document
language
preprocess
max_pages — Maximum number of pages to process

ocr_image1 credit

Extract text from an image URL using Tesseract.js. Applies preprocessing (grayscale, contrast, sharpening) to improve accuracy.

url* — URL of the image to process
language — Tesseract language codes (e.g. 'eng', 'eng+fra')
preprocess — Apply image preprocessing for better accuracy

parse_pdf1 credit

Extract text content from a PDF document using pdf-parse. Does NOT use OCR — pure text extraction from the PDF structure. Use ocr_document for scanned/image-based PDFs.

url* — URL of the PDF document
max_pages — Maximum number of pages to extract

reverse_engineer_animations1 credit

Analyze animation libraries on a webpage using runtime instrumentation. Detects GSAP (tweens, keyframes, ScrollTriggers, timeline), Framer Motion, Lens, and AOS.

url*
viewport_width
viewport_height

reverse_engineer_assets1 credit

Discover and catalog ALL assets on a webpage — images, videos, fonts, SVGs, scripts, stylesheets, 3D models, and downloads. Fetches HTTP metadata including file sizes (Content-Length), dimensions, and MIME types. Categorizes by type and usage (img-tag, script, stylesheet, etc.). Metadata only by default — pass include_content for the actual script and stylesheet text inline, when the goal is reading real code rather than an inventory.

url*
fetch_metadata — Fetch HTTP HEAD for file sizes and dimensions (slower)
max_assets
include_content — Fetch and include the actual text of script and stylesheet assets (not images/fonts/video — those are not code). Budgeted: up to ~40KB per file and ~300KB total; assets past the budget get a contentNote instead of content.

reverse_engineer_dom1 credit

Navigate to a page with a real headless browser and extract the full DOM structure: condensed tree, heading hierarchy (H1-H6), all text content, semantic landmarks, tables, forms, and internal/external link inventory. Seeps JavaScript-rendered content invisible to static scrapers.

url*
viewport_width
viewport_height
include_dom_tree — Include the full condensed DOM tree (can be large)
wait_for_load — Wait for networkidle before extracting

reverse_engineer_webgl1 credit

Analyze WebGL/3D on a webpage — detects Three.js, Babylon.js, Cesium, captures shaders, 3D models, canvas info.

url*
viewport_width
viewport_height
capture_frame

scrape_url1 credit

Scrape a single URL and return structured content (Markdown, HTML, or JSON) with page metadata. Results are cached for 24 hours.

url* — The URL to scrape
format — Output format for the scraped content
include_metadata — Include page metadata (title, description, OG tags)
bypass_cache — Skip cache and force a fresh scrape

search_deep1 credit

Perform a deep search: search the web, then scrape the top N results to extract full content. Returns combined search + content results.

query* — Search query string
max_results — Number of results to fully scrape
detail — Detail level for scraped content

search_web1 credit

Search the web using the Firecrawl search API and return structured results with titles, URLs, snippets, and relevance scores.

query* — Search query string
limit — Maximum results to return
lang — Language code (ISO 639-1)

take_screenshot1 credit

Take a screenshot of a webpage using a headless browser. Optionally capture at a scroll position or after waiting for elements.

url*
scroll_position
viewport_width
viewport_height
wait_for_selector
full_page
cache_screenshot

get_capture_resultfree

Collect the result of a rebuild_brief that was still running when it returned. Pass the job_id it gave you. Waits up to about a minute; if the capture is still going it says so and you call this again. Free.

job_id* — The job id returned by rebuild_brief
wait_seconds — How long to wait for it to finish before reporting progress
Setup guidePricingAccount