[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DBCQP92RCXP7MGMKCKD5WM":3,"skill-same:01M6DBCQP92RCXP7MGMKCKD5WM":76},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":29,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":14,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M6DBCQP92RCXP7MGMKCKD5WM","firecrawl",null,"Web scraping, crawling, structured extraction, site mapping, and change monitoring via the Firecrawl MCP. Use to turn URLs into clean markdown or schema-structured JSON, extract brand identity (colors, fonts, spacing), crawl or map sites, parse local PDFs\u002FOffice files, search the web with operators, or monitor pages for changes. Pairs with the Exa MCP (Exa finds by meaning, Firecrawl fetches).","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ffirecrawl\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[5,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"scraping","pages","operators","local","map","crawl","clean","files","schema","use","MCP","brand","web scraping","markdown","monitoring","search","monitor","identity","change","2026-11-10 10:12:30",false,"---\nname: firecrawl\ndescription: Web scraping, crawling, structured extraction, site mapping, and change monitoring via the Firecrawl MCP. Use to turn URLs into clean markdown or schema-structured JSON, extract brand identity (colors, fonts, spacing), crawl or map sites, parse local PDFs\u002FOffice files, search the web with operators, or monitor pages for changes. Pairs with the Exa MCP (Exa finds by meaning, Firecrawl fetches).\nmetadata:\n  origin: custom\n---\n\n# Firecrawl\n\nThe web-data layer: scrape, crawl, map, structured-extract, search, monitor, and autonomously browse the web via the Firecrawl MCP server (`mcp__firecrawl__firecrawl_*`). Where Exa *finds* pages by meaning, Firecrawl *fetches and structures* them — turning any URL (or a whole site) into clean markdown, schema-typed JSON, screenshots, or brand tokens.\n\n## When to Activate\n\n- Scrape a known page into clean markdown, or pull specific data points as JSON\n- Crawl or map a whole site (docs, blog, competitor) for comprehensive coverage\n- Harvest documentation\u002Fcookbooks (like building this skill) into readable text\n- Extract structured data (prices, specs, features, contacts) across many URLs\n- Capture screenshots or **brand identity** (colors, fonts, spacing, UI components) for design research\n- Search the web with operators\u002Fdomain filters and get full page content, not just snippets\n- Monitor a page or a search for meaningful changes over time\n- Find academic papers (arXiv) or GitHub issues\u002FPRs for research\n- Parse a local PDF \u002F Word \u002F Excel file into markdown or structured JSON\n- User says \"scrape\", \"crawl\", \"extract from\", \"map the site\", \"monitor\", or \"get the data from this page\"\n\n## Firecrawl vs Exa — when to use which\n\nThe user has **both**. They are complementary, not redundant:\n\n| Job | Reach for | Why |\n|-----|-----------|-----|\n| Discover pages by meaning, \"find sites like X\", semantic recall | **Exa** (`web_search_exa`) | Neural\u002Fembedding search; best when you don't know the URL |\n| Code examples \u002F API usage | **Exa** (`get_code_context_exa`) | Curated code-context index |\n| Keyword\u002Foperator\u002Fdomain-filtered web search **with full content** | **Firecrawl** (`firecrawl_search`) | Google-style operators + inline scrape; the MCP's default web search |\n| Turn a known\u002Fdiscovered URL into clean content | **Firecrawl** (`firecrawl_scrape`) | Reliable markdown\u002FHTML\u002Fscreenshot extraction |\n| Structured data with a schema, across many pages or a domain | **Firecrawl** (`firecrawl_extract`) | LLM extraction + crawl + wildcards |\n| Whole-site crawl \u002F site-map \u002F change monitoring \u002F browser actions | **Firecrawl** | Exa has no crawl\u002Fmap\u002Fmonitor\u002Finteract |\n| Deep multi-step research report | **either, or both** | Exa has a managed deep-research agent; Firecrawl has `firecrawl_agent` + a paper\u002FGitHub research index. The `deep-research` skill routes both. |\n\nRule of thumb: **Exa to FIND, Firecrawl to FETCH\u002FEXTRACT\u002FCRAWL\u002FMONITOR.** Discover with Exa's neural recall, then hand the URLs to Firecrawl for depth and structure. For a known site, go straight to Firecrawl.\n\n## MCP Requirement\n\nFirecrawl MCP is already connected in this workspace (`mcp__firecrawl__*`). To reproduce elsewhere, add to `~\u002F.claude.json`:\n\n```json\n\"firecrawl\": {\n  \"command\": \"npx\",\n  \"args\": [\"-y\", \"firecrawl-mcp\"],\n  \"env\": { \"FIRECRAWL_API_KEY\": \"fc-YOUR_KEY_HERE\" }\n}\n```\n\nGet a key at [firecrawl.dev](https:\u002F\u002Fwww.firecrawl.dev). A self-hosted instance is supported via `FIRECRAWL_API_URL`. Tool names below drop the `mcp__firecrawl__` prefix for brevity.\n\n## Tool Routing (decision table)\n\n| You need | Tool | Notes |\n|----------|------|-------|\n| One known URL → content | `firecrawl_scrape` | Fastest, most reliable; default for single pages |\n| **Specific data points** from a page | `firecrawl_scrape` + `json` format + schema | NOT markdown — schema gives clean fields |\n| Many related pages on one site | `firecrawl_crawl` | Bound `limit` + `maxDiscoveryDepth` or it overflows tokens |\n| Just **discover** URLs \u002F find the right page | `firecrawl_map` | Cheap (1 credit); use `search=` to locate a page |\n| Structured data across many URLs \u002F a domain | `firecrawl_extract` | Supports `urls: [\"site.com\u002F*\"]` wildcards |\n| Open-ended web question, unknown site | `firecrawl_search` | Operators + `sources` (web\u002Fnews\u002Fimages) + content |\n| URLs unknown, multi-source, JS-heavy SPA | `firecrawl_agent` (+ `_status`) | Async — poll patiently (2-5 min) |\n| Click \u002F fill \u002F login \u002F navigate a SPA | `firecrawl_interact` (+ `_stop`) | Live browser session |\n| Local PDF \u002F Word \u002F Excel → markdown\u002FJSON | `firecrawl_parse` | Local files only (not remote URLs) |\n| Watch a page or search for changes | `firecrawl_monitor_create` (+ list\u002Fget\u002Frun\u002Fcheck) | Recurring diff with a meaningful-change judge |\n| arXiv papers \u002F GitHub research | `firecrawl_research_*` | search_papers, read_paper, related_papers, search_github |\n\n**Order of escalation when a page is hard:** `scrape` → add `waitFor` for SPAs → `map` (search=) to find the real URL → `scrape` again → `agent` only as a last resort. Map+scrape is cheaper and faster than the agent.\n\n## Core Tools\n\n### firecrawl_scrape\nSingle-URL extraction — the workhorse. Default to this for any single page.\n\n```\nfirecrawl_scrape(url: \"https:\u002F\u002Fdocs.example.com\u002Fapi\", formats: [\"markdown\"], onlyMainContent: true)\n```\n\n| Param | Notes |\n|-------|-------|\n| `formats` | `markdown`, `html`, `rawHtml`, `links`, `summary`, `screenshot`, `json`, `branding`, `changeTracking`, `query` |\n| `onlyMainContent` | Strip nav\u002Ffooter\u002Fboilerplate (default-on behavior) |\n| `waitFor` | ms to wait for JS render (5000-10000 for SPAs) |\n| `actions` | Array of browser steps: `click`, `write`, `press`, `scroll`, `screenshot`, `executeJavascript`, `wait`, `generatePDF` |\n| `jsonOptions` | `{ prompt, schema }` for the `json` format (structured extraction) |\n| `queryOptions` | `{ prompt, mode: directQuote|freeform }` for the `query` format (ask the page a question) |\n| `proxy` | `basic` \u002F `stealth` \u002F `enhanced` \u002F `auto` — `stealth` for anti-bot sites |\n| `parsers` | `[\"pdf\"]` to parse remote PDFs; `pdfOptions.maxPages` to cap |\n| `maxAge` | Serve from cache if newer than this (ms) — cuts credits + latency |\n| `location` | `{ country, languages }` for geo-specific content |\n| `mobile`, `includeTags`, `excludeTags`, `removeBase64Images`, `redactPII`, `storeInCache` | Misc controls |\n\n### firecrawl_crawl\nMulti-page crawl; polls internally to a terminal state and returns the data + crawl id.\n\n```\nfirecrawl_crawl(url: \"https:\u002F\u002Fexample.com\u002Fblog\u002F*\", maxDiscoveryDepth: 2, limit: 25, sitemap: \"include\", deduplicateSimilarURLs: true)\n```\n\nKey params: `limit`, `maxDiscoveryDepth`, `includePaths` \u002F `excludePaths`, `sitemap` (`skip`\u002F`include`\u002F`only`), `allowExternalLinks`, `allowSubdomains`, `crawlEntireDomain`, `delay`, `maxConcurrency`, `prompt` (natural-language crawl target), `scrapeOptions` (full scrape-format set per page), `webhook`. Re-check a long job later with `firecrawl_check_crawl_status(id)`. **Warning:** crawl output can blow token limits — keep `limit`\u002F`maxDiscoveryDepth` modest, or prefer `map` + targeted `scrape`.\n\n### firecrawl_map\nDiscover every indexed URL on a site, fast and cheap (1 credit).\n\n```\nfirecrawl_map(url: \"https:\u002F\u002Fdocs.example.com\", search: \"webhook events\")\n```\n\n`search=` ranks URLs by topic — the fastest way to locate the right page before scraping. Use **before** crawl or agent.\n\n### firecrawl_extract\nLLM-powered structured extraction from one or many URLs (or a whole domain via `\u002F*`).\n\n```\nfirecrawl_extract(\n  urls: [\"https:\u002F\u002Fexample.com\u002Fpricing\"],\n  prompt: \"Extract each plan name, monthly price, and included credits\",\n  schema: { type: \"object\", properties: { plans: { type: \"array\", items: {\n    type: \"object\", properties: { name: {type:\"string\"}, price:{type:\"number\"}, credits:{type:\"number\"} } } } } }\n)\n```\n\n`enableWebSearch: true` enriches from linked\u002Frelated pages; `includeSubdomains`, `allowExternalLinks` widen scope. Backed by the FIRE-1 agent for navigation. Async-capable (job id + poll; results held ~24h). Metered by tokens (1 credit = 15 tokens), so scope it.\n\n### firecrawl_search\nWeb search **with full content** — the MCP's primary search tool.\n\n```\nfirecrawl_search(query: \"site:firecrawl.dev change tracking\", limit: 5, sources: [{type:\"web\"}])\n```\n\nOperators: `\"\"` exact, `-` exclude, `site:`, `inurl:`, `intitle:`, `related:`, `imagesize:`, `larger:`. `sources` = web \u002F news \u002F images. `includeDomains` \u002F `excludeDomains` (don't use both), `tbs` time filter, `location`, `scrapeOptions` to pull content inline. **Tip:** after using results, call `firecrawl_search_feedback(id)` — it improves quality and refunds 1 credit.\n\n### firecrawl_agent \u002F firecrawl_agent_status\nAutonomous async research agent (FIRE-1) that searches, follows links, and extracts — when you don't know the URLs or the data is scattered \u002F behind JS.\n\n```\nfirecrawl_agent(prompt: \"Find the founders and total funding of \u003Ccompany>\", schema: {...})  → returns job id\nfirecrawl_agent_status(id: \"...\")  → poll every 15-30s; be patient (2-5 min, sometimes 5+)\n```\n\nOnly stop polling on `completed` or `failed`. Prefer `map`+`scrape` first — the agent is the expensive last resort.\n\n### firecrawl_research_* (paper \u002F GitHub index)\nA research-grade index for scientific and engineering questions:\n- `firecrawl_research_search_papers` — semantic (HyDE) arXiv search by topic; filter by `authors`, `categories` (e.g. `cs.LG`), date `from`\u002F`to`. Run several framings for recall.\n- `firecrawl_research_read_paper` — pull full-text passages answering a specific question (verify a paper before deep-reading).\n- `firecrawl_research_related_papers` — expand from a seed: `similar` \u002F `citers` \u002F `references`.\n- `firecrawl_research_inspect_paper` — full metadata + source ids.\n- `firecrawl_research_search_github` — issues, PRs, discussions, repo docs for implementation\u002Fengineering detail.\n\nComplements `scholarly-access`, `paper-search`, and Exa for literature work.\n\n### firecrawl_parse\nParse a **local** file (`.pdf`, `.docx`, `.doc`, `.odt`, `.rtf`, `.xlsx`, `.xls`, `.html`) into markdown \u002F JSON \u002F summary. Same JSON-schema rule as scrape. (In hosted-cloud mode it's a two-call upload-then-parse flow.) For remote files, use `firecrawl_scrape` with `parsers: [\"pdf\"]`.\n\n### firecrawl_interact \u002F firecrawl_interact_stop\nDrive a live browser session for click \u002F fill \u002F login \u002F multi-step navigation that scrape's `actions` can't express. Billed per browser minute — stop the session when done.\n\n### firecrawl_monitor_* (change tracking on a schedule)\nRecurring scrape\u002Fcrawl\u002Fsearch that diffs each run against the last snapshot and judges whether the change is **meaningful**.\n\n```\nfirecrawl_monitor_create(\n  pages: [\"https:\u002F\u002Fcompetitor.com\u002Fpricing\"],\n  goal: \"Alert me when plan prices or included credits change\",\n  scheduleText: \"every 6 hours\", email: \"you@example.com\")\n```\n\n- Page mode: `page` \u002F `pages`. Search mode: `queries` (1-12) + `searchWindow` — alerts on new\u002Fchanged hits.\n- `goal` (plain English) drives the meaningful-change judge (`judgeEnabled` defaults on when `goal` is set); webhooks expose `isMeaningful` + `judgment`.\n- Manage with `firecrawl_monitor_list` \u002F `_get` \u002F `_update` \u002F `_delete` \u002F `_run` (fire now) \u002F `_check` \u002F `_checks`.\n\n## Powerful Formats (pass in `formats`)\n\n- **`json`** — structured extraction with a schema. **Use this, not markdown, whenever the user wants specific fields\u002Fvalues.** Pair with `jsonOptions: { prompt, schema }`.\n- **`branding`** — extract a site's brand identity: colors, fonts, typography, spacing, UI components. Ideal for **design research \u002F style replication \u002F design-system seeding**.\n- **`screenshot`** — full-page image (`screenshotOptions.fullPage`, viewport, quality) for visual reference or UI audits.\n- **`changeTracking`** — diff vs the last scrape; `modes: [\"git-diff\"]` (line diff, no extra cost) or `[\"json\"]` (schema'd field changes, +5 credits\u002Fpage). Returns `changeStatus` (new\u002Fsame\u002Fchanged\u002Fremoved), `previousScrapeAt`, `visibility`, and the diff\u002Fjson. Requires `markdown` also in `formats`. Use a `tag` to keep separate histories per URL.\n- **`summary`** — a condensed page summary (cheap way to triage long pages).\n- **`query`** — ask a natural-language question against the page (`directQuote` for verbatim, `freeform` otherwise).\n\n## Workflows\n\n### Doc \u002F cookbook harvest (build a skill, learn an API)\n`firecrawl_map(url, search=\"...\")` to find the right pages → `firecrawl_scrape(formats:[\"markdown\"], onlyMainContent:true)` each, or a bounded `firecrawl_crawl` for a whole section. This is exactly how this skill was built.\n\n### Structured data across a site\n`firecrawl_map` to enumerate → `firecrawl_extract(urls:[\"site.com\u002F*\"], schema)` for clean typed records (pricing, catalog, specs, contacts).\n\n### Competitive \u002F web audit\n`firecrawl_crawl` the competitor (bounded) → `firecrawl_extract` features\u002Fpricing with a schema → `firecrawl_monitor_create` with a `goal` to get alerted on changes.\n\n### Design research (fan-out)\nFor each competitor URL: `firecrawl_scrape(formats:[\"branding\",\"screenshot\"])` → collect color\u002Ffont\u002Fspacing tokens + screenshots to seed a design system or critique. Combine with the `design-system` \u002F `ui-audit` skills.\n\n### Research\n`firecrawl_search` (operators + domain filters) for the open web; `firecrawl_research_search_papers` + `_read_paper` for arXiv; `firecrawl_research_search_github` for engineering detail. For a full cited report, use the **`deep-research`** skill (it already routes Firecrawl as primary web + deep-read).\n\n## Credits & Rate Limits\n\n**Credit cost (1 credit ≈ 1 page for the basic ops):**\n\n| Op | Cost |\n|----|------|\n| Scrape | 1 \u002F page |\n| Crawl | 1 \u002F page |\n| Map | 1 \u002F call |\n| Search | 2 \u002F 10 results (then `search_feedback` refunds 1) |\n| Extract | metered — 1 credit = 15 tokens |\n| changeTracking `json` mode | +5 \u002F page (git-diff is free) |\n| Interact | 2 \u002F browser-minute |\n| Agent (FIRE-1) | 5 free runs\u002Fday, then dynamic |\n\n**Monthly credit pools:** Free 1,000 · Hobby 5,000 (~$16\u002Fmo) · Standard 100,000 (~$83) · Growth 500,000 (~$333) · Scale\u002FEnterprise 1M+.\n\n**Rate limits (requests\u002Fmin):**\n\n| Plan | scrape | map | crawl | search | agent | concurrent browsers |\n|------|--------|-----|-------|--------|-------|---------------------|\n| Free | 10 | 10 | 1 | 5 | 10 | 2 |\n| Hobby | 100 | 100 | 15 | 50 | 100 | 5 |\n| Standard | 500 | 500 | 50 | 250 | 500 | 50 |\n| Growth | 5,000 | 5,000 | 250 | 2,500 | 1,000 | 100 |\n\n## Gotchas\n\n- **Crawl token overflow** — crawl responses can be huge. Bound `limit` + `maxDiscoveryDepth`, or use `map` + targeted `scrape`. Don't use a bare `\u002F*` on a large site.\n- **JS \u002F SPA returns empty** — add `waitFor: 5000-10000`; if still empty, `map(search=)` to find the real content URL, then scrape; agent only as last resort.\n- **Specific data ≠ markdown** — if the user wants fields\u002Fvalues, use the `json` format with a schema. Markdown is for reading whole pages.\n- **Agent is async** — it returns a job id; you must poll `firecrawl_agent_status` and wait (2-5+ min). Don't give up after a couple polls.\n- **changeTracking needs `markdown`** in `formats` too, and `json` mode adds 5 credits\u002Fpage.\n- **Extract is LLM-metered** — large\u002Fmany pages get expensive; scope `urls` and the schema.\n- **Anti-bot sites** — escalate `proxy` to `stealth`\u002F`enhanced` (higher cost) rather than retrying `basic`.\n- **Search feedback** — call `firecrawl_search_feedback(id)` after `firecrawl_search` to refund 1 credit and improve quality.\n- **Map ≠ crawl** — map only lists URLs (no content); crawl fetches content. Map first to scope.\n- **Parse is local-only** — for a URL, use `scrape` with `parsers:[\"pdf\"]`, not `parse`.\n\n## Related Skills\n\n- `exa` MCP (`web_search_exa` \u002F `get_code_context_exa`) — neural\u002Fsemantic search + code-context (the FIND half; Firecrawl is the FETCH half)\n- `deep-research` — multi-source cited research harness that routes Firecrawl (web + deep-read) alongside Exa, Tavily, Perplexity, scholarly-access\n- `design-system` \u002F `ui-audit` — consume Firecrawl `branding` + `screenshot` output\n- `scholarly-access` \u002F `paper-search` — academic retrieval that complements `firecrawl_research_*`\n","# Firecrawl\n\nThe web-data layer: scrape, crawl, map, structured-extract, search, monitor, and autonomously browse the web via the Firecrawl MCP server (`mcp__firecrawl__firecrawl_*`). Where Exa *finds* pages by meaning, Firecrawl *fetches and structures* them — turning any URL (or a whole site) into clean markdown, schema-typed JSON, screenshots, or brand tokens.\n\n## When to Activate\n\n- Scrape a known page into clean markdown, or pull specific data points as JSON\n- Crawl or map a whole site (docs, blog, competitor) for comprehensive coverage\n- Harvest documentation\u002Fcookbooks (like building this skill) into readable text\n- Extract structured data (prices, specs, features, contacts) across many URLs\n- Capture screenshots or **brand identity** (colors, fonts, spacing, UI components) for design research\n- Search the web with operators\u002Fdomain filters and get full page content, not just snippets\n- Monitor a page or a search for meaningful changes over time\n- Find academic papers (arXiv) or GitHub issues\u002FPRs for research\n- Parse a local PDF \u002F Word \u002F Excel file into markdown or structured JSON\n- User says \"scrape\", \"crawl\", \"extract from\", \"map the site\", \"monitor\", or \"get the data from this page\"\n\n## Firecrawl vs Exa — when to use which\n\nThe user has **both**. They are complementary, not redundant:\n\n| Job | Reach for | Why |\n|-----|-----------|-----|\n| Discover pages by meaning, \"find sites like X\", semantic recall | **Exa** (`web_search_exa`) | Neural\u002Fembedding search; best when you don't know the URL |\n| Code examples \u002F API usage | **Exa** (`get_code_context_exa`) | Curated code-context index |\n| Keyword\u002Foperator\u002Fdomain-filtered web search **with full content** | **Firecrawl** (`firecrawl_search`) | Google-style operators + inline scrape; the MCP's default web search |\n| Turn a known\u002Fdiscovered URL into clean content | **Firecrawl** (`firecrawl_scrape`) | Reliable markdown\u002FHTML\u002Fscreenshot extraction |\n| Structured data with a schema, across many pages or a domain | **Firecrawl** (`firecrawl_extract`) | LLM extraction + crawl + wildcards |\n| Whole-site crawl \u002F site-map \u002F change monitoring \u002F browser actions | **Firecrawl** | Exa has no crawl\u002Fmap\u002Fmonitor\u002Finteract |\n| Deep multi-step research report | **either, or both** | Exa has a managed deep-research agent; Firecrawl has `firecrawl_agent` + a paper\u002FGitHub research index. The `deep-research` skill routes both. |\n\nRule of thumb: **Exa to FIND, Firecrawl to FETCH\u002FEXTRACT\u002FCRAWL\u002FMONITOR.** Discover with Exa's neural recall, then hand the URLs to Firecrawl for depth and structure. For a known site, go straight to Firecrawl.\n\n## MCP Requirement\n\nFirecrawl MCP is already connected in this workspace (`mcp__firecrawl__*`). To reproduce elsewhere, add to `~\u002F.claude.json`:\n\n```json\n\"firecrawl\": {\n  \"command\": \"npx\",\n  \"args\": [\"-y\", \"firecrawl-mcp\"],\n  \"env\": { \"FIRECRAWL_API_KEY\": \"fc-YOUR_KEY_HERE\" }\n}\n```\n\nGet a key at [firecrawl.dev](https:\u002F\u002Fwww.firecrawl.dev). A self-hosted instance is supported via `FIRECRAWL_API_URL`. Tool names below drop the `mcp__firecrawl__` prefix for brevity.\n\n## Tool Routing (decision table)\n\n| You need | Tool | Notes |\n|----------|------|-------|\n| One known URL → content | `firecrawl_scrape` | Fastest, most reliable; default for single pages |\n| **Specific data points** from a page | `firecrawl_scrape` + `json` format + schema | NOT markdown — schema gives clean fields |\n| Many related pages on one site | `firecrawl_crawl` | Bound `limit` + `maxDiscoveryDepth` or it overflows tokens |\n| Just **discover** URLs \u002F find the right page | `firecrawl_map` | Cheap (1 credit); use `search=` to locate a page |\n| Structured data across many URLs \u002F a domain | `firecrawl_extract` | Supports `urls: [\"site.com\u002F*\"]` wildcards |\n| Open-ended web question, unknown site | `firecrawl_search` | Operators + `sources` (web\u002Fnews\u002Fimages) + content |\n| URLs unknown, multi-source, JS-heavy SPA | `firecrawl_agent` (+ `_status`) | Async — poll patiently (2-5 min) |\n| Click \u002F fill \u002F login \u002F navigate a SPA | `firecrawl_interact` (+ `_stop`) | Live browser session |\n| Local PDF \u002F Word \u002F Excel → markdown\u002FJSON | `firecrawl_parse` | Local files only (not remote URLs) |\n| Watch a page or search for changes | `firecrawl_monitor_create` (+ list\u002Fget\u002Frun\u002Fcheck) | Recurring diff with a meaningful-change judge |\n| arXiv papers \u002F GitHub research | `firecrawl_research_*` | search_papers, read_paper, related_papers, search_github |\n\n**Order of escalation when a page is hard:** `scrape` → add `waitFor` for SPAs → `map` (search=) to find the real URL → `scrape` again → `agent` only as a last resort. Map+scrape is cheaper and faster than the agent.\n\n## Core Tools\n\n### firecrawl_scrape\nSingle-URL extraction — the workhorse. Default to this for any single page.\n\n```\nfirecrawl_scrape(url: \"https:\u002F\u002Fdocs.example.com\u002Fapi\", formats: [\"markdown\"], onlyMainContent: true)\n```\n\n| Param | Notes |\n|-------|-------|\n| `formats` | `markdown`, `html`, `rawHtml`, `links`, `summary`, `screenshot`, `json`, `branding`, `changeTracking`, `query` |\n| `onlyMainContent` | Strip nav\u002Ffooter\u002Fboilerplate (default-on behavior) |\n| `waitFor` | ms to wait for JS render (5000-10000 for SPAs) |\n| `actions` | Array of browser steps: `click`, `write`, `press`, `scroll`, `screenshot`, `executeJavascript`, `wait`, `generatePDF` |\n| `jsonOptions` | `{ prompt, schema }` for the `json` format (structured extraction) |\n| `queryOptions` | `{ prompt, mode: directQuote|freeform }` for the `query` format (ask the page a question) |\n| `proxy` | `basic` \u002F `stealth` \u002F `enhanced` \u002F `auto` — `stealth` for anti-bot sites |\n| `parsers` | `[\"pdf\"]` to parse remote PDFs; `pdfOptions.maxPages` to cap |\n| `maxAge` | Serve from cache if newer than this (ms) — cuts credits + latency |\n| `location` | `{ country, languages }` for geo-specific content |\n| `mobile`, `includeTags`, `excludeTags`, `removeBase64Images`, `redactPII`, `storeInCache` | Misc controls |\n\n### firecrawl_crawl\nMulti-page crawl; polls internally to a terminal state and returns the data + crawl id.\n\n```\nfirecrawl_crawl(url: \"https:\u002F\u002Fexample.com\u002Fblog\u002F*\", maxDiscoveryDepth: 2, limit: 25, sitemap: \"include\", deduplicateSimilarURLs: true)\n```\n\nKey params: `limit`, `maxDiscoveryDepth`, `includePaths` \u002F `excludePaths`, `sitemap` (`skip`\u002F`include`\u002F`only`), `allowExternalLinks`, `allowSubdomains`, `crawlEntireDomain`, `delay`, `maxConcurrency`, `prompt` (natural-language crawl target), `scrapeOptions` (full scrape-format set per page), `webhook`. Re-check a long job later with `firecrawl_check_crawl_status(id)`. **Warning:** crawl output can blow token limits — keep `limit`\u002F`maxDiscoveryDepth` modest, or prefer `map` + targeted `scrape`.\n\n### firecrawl_map\nDiscover every indexed URL on a site, fast and cheap (1 credit).\n\n```\nfirecrawl_map(url: \"https:\u002F\u002Fdocs.example.com\", search: \"webhook events\")\n```\n\n`search=` ranks URLs by topic — the fastest way to locate the right page before scraping. Use **before** crawl or agent.\n\n### firecrawl_extract\nLLM-powered structured extraction from one or many URLs (or a whole domain via `\u002F*`).\n\n```\nfirecrawl_extract(\n  urls: [\"https:\u002F\u002Fexample.com\u002Fpricing\"],\n  prompt: \"Extract each plan name, monthly price, and included credits\",\n  schema: { type: \"object\", properties: { plans: { type: \"array\", items: {\n    type: \"object\", properties: { name: {type:\"string\"}, price:{type:\"number\"}, credits:{type:\"number\"} } } } } }\n)\n```\n\n`enableWebSearch: true` enriches from linked\u002Frelated pages; `includeSubdomains`, `allowExternalLinks` widen scope. Backed by the FIRE-1 agent for navigation. Async-capable (job id + poll; results held ~24h). Metered by tokens (1 credit = 15 tokens), so scope it.\n\n### firecrawl_search\nWeb search **with full content** — the MCP's primary search tool.\n\n```\nfirecrawl_search(query: \"site:firecrawl.dev change tracking\", limit: 5, sources: [{type:\"web\"}])\n```\n\nOperators: `\"\"` exact, `-` exclude, `site:`, `inurl:`, `intitle:`, `related:`, `imagesize:`, `larger:`. `sources` = web \u002F news \u002F images. `includeDomains` \u002F `excludeDomains` (don't use both), `tbs` time filter, `location`, `scrapeOptions` to pull content inline. **Tip:** after using results, call `firecrawl_search_feedback(id)` — it improves quality and refunds 1 credit.\n\n### firecrawl_agent \u002F firecrawl_agent_status\nAutonomous async research agent (FIRE-1) that searches, follows links, and extracts — when you don't know the URLs or the data is scattered \u002F behind JS.\n\n```\nfirecrawl_agent(prompt: \"Find the founders and total funding of \u003Ccompany>\", schema: {...})  → returns job id\nfirecrawl_agent_status(id: \"...\")  → poll every 15-30s; be patient (2-5 min, sometimes 5+)\n```\n\nOnly stop polling on `completed` or `failed`. Prefer `map`+`scrape` first — the agent is the expensive last resort.\n\n### firecrawl_research_* (paper \u002F GitHub index)\nA research-grade index for scientific and engineering questions:\n- `firecrawl_research_search_papers` — semantic (HyDE) arXiv search by topic; filter by `authors`, `categories` (e.g. `cs.LG`), date `from`\u002F`to`. Run several framings for recall.\n- `firecrawl_research_read_paper` — pull full-text passages answering a specific question (verify a paper before deep-reading).\n- `firecrawl_research_related_papers` — expand from a seed: `similar` \u002F `citers` \u002F `references`.\n- `firecrawl_research_inspect_paper` — full metadata + source ids.\n- `firecrawl_research_search_github` — issues, PRs, discussions, repo docs for implementation\u002Fengineering detail.\n\nComplements `scholarly-access`, `paper-search`, and Exa for literature work.\n\n### firecrawl_parse\nParse a **local** file (`.pdf`, `.docx`, `.doc`, `.odt`, `.rtf`, `.xlsx`, `.xls`, `.html`) into markdown \u002F JSON \u002F summary. Same JSON-schema rule as scrape. (In hosted-cloud mode it's a two-call upload-then-parse flow.) For remote files, use `firecrawl_scrape` with `parsers: [\"pdf\"]`.\n\n### firecrawl_interact \u002F firecrawl_interact_stop\nDrive a live browser session for click \u002F fill \u002F login \u002F multi-step navigation that scrape's `actions` can't express. Billed per browser minute — stop the session when done.\n\n### firecrawl_monitor_* (change tracking on a schedule)\nRecurring scrape\u002Fcrawl\u002Fsearch that diffs each run against the last snapshot and judges whether the change is **meaningful**.\n\n```\nfirecrawl_monitor_create(\n  pages: [\"https:\u002F\u002Fcompetitor.com\u002Fpricing\"],\n  goal: \"Alert me when plan prices or included credits change\",\n  scheduleText: \"every 6 hours\", email: \"you@example.com\")\n```\n\n- Page mode: `page` \u002F `pages`. Search mode: `queries` (1-12) + `searchWindow` — alerts on new\u002Fchanged hits.\n- `goal` (plain English) drives the meaningful-change judge (`judgeEnabled` defaults on when `goal` is set); webhooks expose `isMeaningful` + `judgment`.\n- Manage with `firecrawl_monitor_list` \u002F `_get` \u002F `_update` \u002F `_delete` \u002F `_run` (fire now) \u002F `_check` \u002F `_checks`.\n\n## Powerful Formats (pass in `formats`)\n\n- **`json`** — structured extraction with a schema. **Use this, not markdown, whenever the user wants specific fields\u002Fvalues.** Pair with `jsonOptions: { prompt, schema }`.\n- **`branding`** — extract a site's brand identity: colors, fonts, typography, spacing, UI components. Ideal for **design research \u002F style replication \u002F design-system seeding**.\n- **`screenshot`** — full-page image (`screenshotOptions.fullPage`, viewport, quality) for visual reference or UI audits.\n- **`changeTracking`** — diff vs the last scrape; `modes: [\"git-diff\"]` (line diff, no extra cost) or `[\"json\"]` (schema'd field changes, +5 credits\u002Fpage). Returns `changeStatus` (new\u002Fsame\u002Fchanged\u002Fremoved), `previousScrapeAt`, `visibility`, and the diff\u002Fjson. Requires `markdown` also in `formats`. Use a `tag` to keep separate histories per URL.\n- **`summary`** — a condensed page summary (cheap way to triage long pages).\n- **`query`** — ask a natural-language question against the page (`directQuote` for verbatim, `freeform` otherwise).\n\n## Workflows\n\n### Doc \u002F cookbook harvest (build a skill, learn an API)\n`firecrawl_map(url, search=\"...\")` to find the right pages → `firecrawl_scrape(formats:[\"markdown\"], onlyMainContent:true)` each, or a bounded `firecrawl_crawl` for a whole section. This is exactly how this skill was built.\n\n### Structured data across a site\n`firecrawl_map` to enumerate → `firecrawl_extract(urls:[\"site.com\u002F*\"], schema)` for clean typed records (pricing, catalog, specs, contacts).\n\n### Competitive \u002F web audit\n`firecrawl_crawl` the competitor (bounded) → `firecrawl_extract` features\u002Fpricing with a schema → `firecrawl_monitor_create` with a `goal` to get alerted on changes.\n\n### Design research (fan-out)\nFor each competitor URL: `firecrawl_scrape(formats:[\"branding\",\"screenshot\"])` → collect color\u002Ffont\u002Fspacing tokens + screenshots to seed a design system or critique. Combine with the `design-system` \u002F `ui-audit` skills.\n\n### Research\n`firecrawl_search` (operators + domain filters) for the open web; `firecrawl_research_search_papers` + `_read_paper` for arXiv; `firecrawl_research_search_github` for engineering detail. For a full cited report, use the **`deep-research`** skill (it already routes Firecrawl as primary web + deep-read).\n\n## Credits & Rate Limits\n\n**Credit cost (1 credit ≈ 1 page for the basic ops):**\n\n| Op | Cost |\n|----|------|\n| Scrape | 1 \u002F page |\n| Crawl | 1 \u002F page |\n| Map | 1 \u002F call |\n| Search | 2 \u002F 10 results (then `search_feedback` refunds 1) |\n| Extract | metered — 1 credit = 15 tokens |\n| changeTracking `json` mode | +5 \u002F page (git-diff is free) |\n| Interact | 2 \u002F browser-minute |\n| Agent (FIRE-1) | 5 free runs\u002Fday, then dynamic |\n\n**Monthly credit pools:** Free 1,000 · Hobby 5,000 (~$16\u002Fmo) · Standard 100,000 (~$83) · Growth 500,000 (~$333) · Scale\u002FEnterprise 1M+.\n\n**Rate limits (requests\u002Fmin):**\n\n| Plan | scrape | map | crawl | search | agent | concurrent browsers |\n|------|--------|-----|-------|--------|-------|---------------------|\n| Free | 10 | 10 | 1 | 5 | 10 | 2 |\n| Hobby | 100 | 100 | 15 | 50 | 100 | 5 |\n| Standard | 500 | 500 | 50 | 250 | 500 | 50 |\n| Growth | 5,000 | 5,000 | 250 | 2,500 | 1,000 | 100 |\n\n## Gotchas\n\n- **Crawl token overflow** — crawl responses can be huge. Bound `limit` + `maxDiscoveryDepth`, or use `map` + targeted `scrape`. Don't use a bare `\u002F*` on a large site.\n- **JS \u002F SPA returns empty** — add `waitFor: 5000-10000`; if still empty, `map(search=)` to find the real content URL, then scrape; agent only as last resort.\n- **Specific data ≠ markdown** — if the user wants fields\u002Fvalues, use the `json` format with a schema. Markdown is for reading whole pages.\n- **Agent is async** — it returns a job id; you must poll `firecrawl_agent_status` and wait (2-5+ min). Don't give up after a couple polls.\n- **changeTracking needs `markdown`** in `formats` too, and `json` mode adds 5 credits\u002Fpage.\n- **Extract is LLM-metered** — large\u002Fmany pages get expensive; scope `urls` and the schema.\n- **Anti-bot sites** — escalate `proxy` to `stealth`\u002F`enhanced` (higher cost) rather than retrying `basic`.\n- **Search feedback** — call `firecrawl_search_feedback(id)` after `firecrawl_search` to refund 1 credit and improve quality.\n- **Map ≠ crawl** — map only lists URLs (no content); crawl fetches content. Map first to scope.\n- **Parse is local-only** — for a URL, use `scrape` with `parsers:[\"pdf\"]`, not `parse`.\n\n## Related Skills\n\n- `exa` MCP (`web_search_exa` \u002F `get_code_context_exa`) — neural\u002Fsemantic search + code-context (the FIND half; Firecrawl is the FETCH half)\n- `deep-research` — multi-source cited research harness that routes Firecrawl (web + deep-read) alongside Exa, Tavily, Perplexity, scholarly-access\n- `design-system` \u002F `ui-audit` — consume Firecrawl `branding` + `screenshot` output\n- `scholarly-access` \u002F `paper-search` — academic retrieval that complements `firecrawl_research_*`\n",{"name":5,"metadata":54,"description":7},{"origin":55},"custom","main","a298c929b6cbd662e1fce54302ce520d5ceea1a5",".agents\u002Fskills\u002Ffirecrawl","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill firecrawl",{"tool":68,"command":69},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill firecrawl",{"tool":71,"command":72},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill firecrawl","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ffirecrawl\u002FSKILL.md",true,[],[77,98,123,149,163,179],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":49},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[84,85,86,87,88,89,90,91,92,39,93,94,95,96,97],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution","file",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":105,"publishedAt":49},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[104],{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[106,107,108,109,110,111,112,113,114,115,116,117,118,119,39,120,121,33,122,40],"openmm md","how","decision","pick","linux","analyze","tool","stack","open","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","do",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":135,"publishedAt":49},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[129,132],{"categoryNo":130,"categoryName":131,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":133,"categoryName":134,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[136,137,138,31,139,140,141,142,143,144,107,145,146,147,148],"review","visual","visual review","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":49},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[151,156,157,158,159,160,161,162],"setup","report","project","installation","project setup","issues","state",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":170,"publishedAt":49},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[169],{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[165,171,89,172,173,174,39,175,176,177,178],"start issue","issue","ready","work on issue","user","work","work on","development",{"skillNo":180,"name":156,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":184,"publishedAt":49},"01M6DF6QMJ9AJKFKHHKRT005PQ","Interactive project setup — detects your project, configures metaswarm, writes project-local files","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[156,158,33,37,160,185],"interactive"]