{
  "data": {
    "a": {
      "slug": "firecrawl-mcp",
      "name": "Firecrawl MCP",
      "vendor": "Firecrawl (Mendable)",
      "vendorUrl": "https://www.firecrawl.dev",
      "kind": "mcp",
      "category": "web-scrapers",
      "summary": "Official Firecrawl server for scraping pages to markdown/JSON, mapping and crawling sites, web search, browser interaction, monitoring and an autonomous research agent.",
      "url": "https://www.anchorterminal.com/tools/firecrawl-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/firecrawl-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/firecrawl-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/firecrawl-mcp.json",
      "repo": "https://github.com/firecrawl/firecrawl-mcp-server",
      "license": "MIT",
      "transports": [
        "stdio",
        "streamable-http",
        "sse"
      ],
      "remoteUrl": "https://mcp.firecrawl.dev/v2/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "firecrawl-mcp"
        }
      ],
      "auth": "mixed",
      "authNotes": "Hosted endpoints take OAuth (`https://mcp.firecrawl.dev/v2/mcp-oauth`) or `Authorization: Bearer \u003cFIRECRAWL_API_KEY\u003e` on `https://mcp.firecrawl.dev/v2/mcp`. The same URL with no credential is the keyless tier (scrape, search, parse, rate-limited per IP). The search-only endpoint `/v2/mcp-search` has its own OAuth identity. Locally, FIRECRAWL_API_KEY or FIRECRAWL_OAUTH_TOKEN, or FIRECRAWL_API_URL for self-hosted. The README says never to put a key in the server URL. Endpoint- and format-locked keys are Enterprise only.",
      "pricing": "freemium",
      "pricingNotes": "Free 1,000 credits a month, no card. Hobby $19 a month or $16 billed yearly (5,000 credits), Standard $99 or $83 (100,000), Growth $399 or $333 (500,000), Scale $749 or $599 (1 million). Scrape, crawl and map cost 1 credit a page, search 2 per 10 results, interact 2 per browser-minute, monitor 1 per page per check (7 with deterministic extraction), and JSON, question or highlight formats add 4 a page. The Research Index paper endpoints are free. Agent has 5 free runs a day, then dynamic pricing. $5 top-ups on paid plans only, worth 1,000 credits on Hobby, 2,000 on Standard, 2,500 on Growth and 5,000 on Scale. Unused credits roll over for one month on Scale only. A scrape with no result isn't charged, but a page returning 403 or 404 costs 1 credit (https://www.firecrawl.dev/pricing).",
      "priceSummary": "$19 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402 support in README, docs or pricing (checked 2026-09-25).",
        "endpoints": []
      },
      "toolCount": 27,
      "popularity": {
        "githubStars": 7500,
        "npmWeekly": 28853,
        "pypiWeekly": null,
        "asOf": "2026-09-26"
      },
      "docsUrl": "https://github.com/firecrawl/firecrawl-mcp-server#readme",
      "llmsTxt": "https://docs.firecrawl.dev/llms.txt",
      "openapi": "https://docs.firecrawl.dev/api-reference/v2-openapi.json",
      "registryName": "io.github.firecrawl/firecrawl-mcp-server",
      "capabilities": [
        "web.search",
        "web.fetch",
        "web.crawl",
        "web.extract"
      ],
      "tags": [
        "official",
        "hosted",
        "local",
        "open-source",
        "freemium",
        "llms-txt"
      ],
      "lastRelease": "2026-10-17",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 78,
        "grade": "A",
        "agentReady": true,
        "rank": 22,
        "ranked": true,
        "rankOf": 1226,
        "categoryRank": 3,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 92,
          "maintenance": 87,
          "payments": 50,
          "reliability": 78,
          "schema": 91,
          "security": 70,
          "transparency": 75
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "high",
          "date": "2026-10-17"
        },
        "negative": 0,
        "verdict": "Keyless hosted endpoint with scrape, search and parse, plus OAuth and a search-only endpoint. No x402 or other machine payment.",
        "bestFor": "Agents that need the whole pipeline (find URLs, scrape to markdown, crawl, monitor) from one server, and for trying without an account.",
        "strengths": [
          "Keyless hosted endpoint with scrape, search and parse, plus OAuth and a search-only endpoint",
          "Five partial incidents in the 90 days to 17 October 2026, the longest 56 minutes, none after 15 September",
          "Errors reference gives cause, remedy and retry advice per code, with Retry-After on 429",
          "Public v2 OpenAPI, llms.txt and readOnly or destructive hints on every tool",
          "firecrawl-mcp 3.30.3 on 17 October 2026, after 31 releases in 90 days"
        ],
        "weaknesses": [
          "No x402 or other machine payment",
          "The API's prompt-injection check isn't exposed through the MCP tools",
          "403 and 404 responses cost a credit",
          "Open issues report 132 undescribed parameters and a schema mismatch",
          "Privacy policy last revised December 2024, with no retention period for scraped content"
        ],
        "agentNotes": [
          "Use `firecrawl_map` to list URLs, then scrape the few you need instead of crawling a whole site",
          "On the keyless endpoint only scrape, search and parse work. A 429 carries a `signup_url` for the human",
          "Ask for markdown only. JSON, question and highlight formats add 4 credits a page",
          "Poll `firecrawl_check_crawl_status` rather than waiting on a long crawl inside one call",
          "Check the URL before scraping. Dead pages still cost a credit",
          "On a 429 wait for `Retry-After` when present, and check the Errors table's retryable column before retrying"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "high",
            "grade": "A",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 78
          }
        ],
        "editorialScores": {
          "ergonomics": 92,
          "maintenance": 87,
          "payments": 50,
          "reliability": 78,
          "schema": 91,
          "security": 70,
          "transparency": 60
        },
        "provenanceScore": 90,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-17",
            "maintenance": "2026-10-17",
            "payments": "2026-10-17",
            "reliability": "2026-10-17",
            "schema": "2026-10-17",
            "security": "2026-10-17",
            "transparency": "2026-10-17"
          },
          "last": "2026-10-17",
          "lastMoved": "2026-10-27",
          "oldest": "2026-10-17",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "claudeCode": "claude mcp add --transport http firecrawl https://mcp.firecrawl.dev/v2/mcp",
        "config": {
          "mcpServers": {
            "firecrawl": {
              "args": [
                "-y",
                "firecrawl-mcp"
              ],
              "command": "npx",
              "env": {
                "FIRECRAWL_API_KEY": "${FIRECRAWL_API_KEY}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/web.search",
        "tool": "https://letme.dev/firecrawl-mcp"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Hobby plan",
          "unit": "month",
          "usd": 19,
          "note": "5,000 credits. $16 a month billed yearly"
        },
        {
          "item": "Standard plan",
          "unit": "month",
          "usd": 99,
          "note": "100,000 credits. $83 a month billed yearly"
        },
        {
          "item": "Extra credits on Hobby",
          "unit": "1k-pages",
          "usd": 5,
          "note": "one credit scrapes one page"
        }
      ],
      "provenance": {
        "legalEntity": "SideGuide Technologies, Inc. (d/b/a Firecrawl)",
        "domain": "firecrawl.dev",
        "domainRegistered": "2024-04-08",
        "endpointOnVendorDomain": true,
        "terms": "https://firecrawl.dev/terms-of-service",
        "privacy": "https://firecrawl.dev/privacy-policy",
        "statusPage": "https://status.firecrawl.dev",
        "changelog": "https://firecrawl.dev/changelog",
        "securityTxt": "valid",
        "checked": "2026-10-17",
        "score": 90
      },
      "requirements": {
        "agentAlone": true,
        "card": "no",
        "freeTier": true,
        "minutes": 2,
        "credential": "mixed",
        "euResidency": "unknown",
        "trainsOnData": "unknown",
        "zeroRetention": "enterprise",
        "certifications": [
          "SOC 2 Type II"
        ],
        "dpa": true,
        "selfHost": "yes"
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/firecrawl-mcp.json",
      "live": {
        "slug": "firecrawl-mcp",
        "probe": {
          "target": "https://mcp.firecrawl.dev/v2/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-10-30T13:20:19.260918114Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 251,
          "lastNote": "initialize answered",
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.99,
          "p50ms24h": 264,
          "p95ms24h": 344,
          "samples24h": 249,
          "samples30d": 8126,
          "days": [
            {
              "date": "2026-09-29",
              "probes": 286,
              "ok": 286
            },
            {
              "date": "2026-09-30",
              "probes": 286,
              "ok": 286
            },
            {
              "date": "2026-10-01",
              "probes": 276,
              "ok": 276
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 139,
              "ok": 139
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.firecrawl.dev",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-30T12:50:33.099298462Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "firecrawl/firecrawl-mcp-server",
            "version": "v3.2.1",
            "released": "2025-09-26",
            "seenAt": "2026-10-29T13:08:05.900026639Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.firecrawl/firecrawl-mcp-server",
            "version": "3.36.0",
            "seenAt": "2026-10-29T14:35:14.028051545Z"
          },
          {
            "registry": "npm",
            "name": "firecrawl-mcp",
            "version": "3.36.0",
            "seenAt": "2026-10-29T13:08:05.417421668Z"
          }
        ],
        "githubStars": 7716,
        "npmWeekly": 151287,
        "securityTxt": {
          "url": "https://firecrawl.dev/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-06-10T00:00:00.000Z",
          "checkedAt": "2026-10-29T15:35:37.638055965Z"
        },
        "llmsTxt": {
          "url": "https://docs.firecrawl.dev/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-29T15:04:10.179332644Z"
        },
        "domain": {
          "domain": "firecrawl.dev",
          "registered": "2024-04-08",
          "source": "https://pubapi.registry.google/rdap/domain/firecrawl.dev",
          "checkedAt": "2026-10-25T14:04:09.777757431Z"
        },
        "pages": [
          {
            "url": "https://firecrawl.dev/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-30T05:40:11.184005513Z",
            "changedAt": "2026-10-30T05:40:11.184005513Z",
            "fingerprint": "cba33dca572f"
          },
          {
            "url": "https://raw.githubusercontent.com/firecrawl/firecrawl-mcp-server/main/CHANGELOG.md",
            "kind": "deprecations",
            "status": 304,
            "checkedAt": "2026-10-30T05:48:43.44206428Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e04375963694"
          },
          {
            "url": "https://www.firecrawl.dev/pricing",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-10-30T05:55:21.936916158Z",
            "changedAt": "2026-10-30T05:55:21.936916158Z",
            "fingerprint": "35ce2be4fc0b"
          },
          {
            "url": "https://firecrawl.dev/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-30T05:40:13.945010626Z",
            "changedAt": "2026-10-30T05:40:13.945010626Z",
            "fingerprint": "3d948e240f4a"
          },
          {
            "url": "https://firecrawl.dev/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-30T05:40:15.865076635Z",
            "changedAt": "2026-10-30T05:40:15.865076635Z",
            "fingerprint": "455a1f38c08c"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.firecrawl.dev/v2/mcp",
          "checkedAt": "2026-10-30T00:48:58.330141767Z",
          "status": "ok",
          "protocol": "2026-07-28",
          "tools": [
            {
              "name": "firecrawl_scrape",
              "title": "Firecrawl scrape",
              "description": "\nScrape one URL and return its content: markdown by default, or HTML, links, screenshots, branding data, a targeted answer, or JSON matching a supplied schema. Use it when the request identifies a page and needs its content or defined fields: the user gives a URL or names a page or PDF and wants it read or summarized, or wants prices, specs, contact details or a table from it. Use `firecrawl_search` when additional web sources are needed; on an authenticated session, `firecrawl_map` lists a site's URLs and `firecrawl_crawl` collects a set of pages.\n\nFirecrawl may serve recently indexed content; set `maxAge: 0` for a live fetch or a smaller `maxAge` to bound staleness. A successful response does not by itself confirm the page is still current. A named browser profile loads saved session data without saving changes to it. Authenticated responses can include a `metadata.scrapeId` for optional scrape feedback.\n\nOn an authenticated session, `firecrawl_search` and `firecrawl_find_tools` can discover providers for the same fields across several pages; a matching provider returns typed records in one call.\n\nWith `alexandria` in place of `url`, the tool runs catalogued provider capabilities instead of fetching a page. Some providers require accepted terms; when a response reports a terms requirement, direct the user to the Firecrawl dashboard URL in that response.\n",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "additionalProperties": false,
                "properties": {
                  "alexandria": {
                    "anyOf": [
                      {
                        "properties": {
                          "capability": {
                            "description": "Capability address as returned by search or discover, e.g. \"series/observations\".",
                            "minLength": 1,
                            "type": "string"
                          },
                          "options": {
                            "additionalProperties": {},
                            "description": "Capability options as declared by its contract.",
                            "propertyNames": {
                              "type": "string"
                            },
                            "type": "object"
                          },
                          "provider": {
                            "description": "Provider slug, e.g. \"fred\".",
                            "minLength": 1,
                            "type": "string"
                          },
                          "version": {
                            "description": "Optional published workflow version. Omit to use the latest version.",
                            "maxLength": 128,
                            "minLength": 1,
                            "type": "string"
                          }
                        },
                        "required": [
                          "provider",
                          "capability"
                        ],
                        "type": "object"
                      },
                      {
                        "items": {
                          "properties": {
                            "capability": {
                              "description": "Capability address as returned by search or discover, e.g. \"series/observations\".",
                              "minLength": 1,
                              "type": "string"
                            },
                            "options": {
                              "additionalProperties": {},
                              "description": "Capability options as declared by its contract.",
                              "propertyNames": {
                                "type": "string"
                              },
                              "type": "object"
                            },
                            "provider": {
                              "description": "Provider slug, e.g. \"fred\".",
                              "minLength": 1,
                              "type": "string"
                            },
                            "version": {
                              "description": "Optional published workflow version. Omit to use the latest version.",
                              "maxLength": 128,
                              "minLength": 1,
                              "type": "string"
                            }
                          },
                          "required": [
                            "provider",
                            "capability"
                          ],
                          "type": "object"
                        },
                        "maxItems": 10,
                        "minItems": 1,
                        "type": "array"
                      }
                    ],
                    "description": "Catalogued Alexandria capability invocation, mutually exclusive with url. One {provider, capability, options} object or an array of 1-10, with contracts available through firecrawl_search or firecrawl_find_tools. Each call may include version to pin a published workflow; omitting it uses latest. Only requestId and timeout are supported alongside alexandria. The selected contract marks required inputs and any requiresOneOf groups (at least one member per group); it may include example.request/example.response and a key field under response (which may differ from records). Where pagination is declared, its fields govern paging with the same filters; catalogue next is separate from provider pagination. Returns per-capability results in data.alexandria with data, records, or an error with a code; individual capabilities can fail even when the outer response succeeds. Some providers require accepted terms; when a response reports a terms requirement, direct the user to the Firecrawl dashboard URL in that response."
                  },
                  "domainTools": {
                    "description": "URL mode only: include domain-matched Alexandria tools for the page in tools on the returned document. Ignored with alexandria.",
                    "type": "boolean"
                  },
                  "excludeTags": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "formats": {
                    "items": {
                      "enum": [
                        "markdown",
                        "html",
                        "rawHtml",
                        "screenshot",
                        "links",
                        "images",
                        "summary",
                        "changeTracking",
                        "branding",
                        "json",
                        "query",
                        "audio"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "includeTags": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "jsonOptions": {
                    "additionalProperties": false,
                    "properties": {
                      "prompt": {
                        "type": "string"
                      },
                      "schema": {
                        "additionalProperties": {},
                        "propertyNames": {
                          "type": "string"
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "location": {
                    "additionalProperties": false,
                    "properties": {
                      "country": {
                        "type": "string"
                      },
                      "languages": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "lockdown": {
                    "type": "boolean"
                  },
                  "maxAge": {
                    "type": "number"
                  },
                  "mobile": {
                    "type": "boolean"
                  },
                  "objective": {
                    "description": "The user's underlying goal for this call, in one sentence: what they are ultimately trying to accomplish, not a restatement of the URL or query. Reuse it across related calls. Avoid sensitive information.",
                    "maxLength": 1000,
                    "minLength": 1,
                    "type": "string"
                  },
                  "onlyMainContent": {
                    "type": "boolean"
                  },
                  "parsers": {
                    "items": {
                      "enum": [
                        "pdf"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "pdfOptions": {
                    "additionalProperties": false,
                    "properties": {
                      "maxPages": {
                        "maximum": 10000,
                        "minimum": 1,
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "profile": {
                    "additionalProperties": false,
                    "description": "Loads a saved browser profile without saving changes to it.",
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object"
                  },
                  "proxy": {
                    "enum": [
                      "basic",
                      "stealth",
                      "enhanced",
                      "auto"
                    ],
                    "type": "string"
                  },
                  "queryOptions": {
                    "additionalProperties": false,
                    "properties": {
                      "mode": {
                        "default": "freeform",
                        "enum": [
                          "directQuote",
                          "freeform"
                        ],
                        "type": "string"
                      },
                      "prompt": {
                        "maxLength": 10000,
                        "type": "string"
                      }
                    },
                    "required": [
                      "prompt"
                    ],
                    "type": "object"
                  },
                  "redactPII": {
                    "type": "boolean"
                  },
                  "removeBase64Images": {
                    "type": "boolean"
                  },
                  "requestId": {
                    "description": "Idempotency key bound to one Alexandria execution payload. Generated when omitted and returned with the result.",
                    "pattern": "^[A-Za-z0-9._:-]{1,128}$",
                    "type": "string"
                  },
                  "screenshotOptions": {
                    "additionalProperties": false,
                    "properties": {
                      "fullPage": {
                        "type": "boolean"
                      },
                      "quality": {
                        "type": "number"
                      },
                      "viewport": {
                        "additionalProperties": false,
                        "properties": {
                          "height": {
                            "type": "number"
                          },
                          "width": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "skipTlsVerification": {
                    "type": "boolean"
                  },
                  "storeInCache": {
                    "type": "boolean"
                  },
                  "timeout": {
                    "description": "Execution timeout in milliseconds.",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991,
                    "type": "integer"
                  },
                  "toolDetail": {
                    "description": "URL mode only: domain discovery detail, summary by default; compact returns provider/capability/description, full includes contracts. Ignored with alexandria.",
                    "enum": [
                      "compact",
                      "summary",
                      "full"
                    ],
                    "type": "string"
                  },
                  "url": {
                    "format": "uri",
                    "type": "string"
                  },
                  "waitFor": {
                    "type": "number"
                  },
                  "zeroDataRetention": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "objective"
                ],
                "type": "object"
              },
              "outputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "additionalProperties": false,
                "properties": {
                  "actions": {
                    "description": "Results of the browser actions that ran during the scrape."
                  },
                  "agent_hints": {
                    "description": "Optional response guidance from the Firecrawl API.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "answer": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Targeted answer to the question that was asked of the page."
                  },
                  "attributes": {
                    "description": "Values collected by the requested attribute selectors."
                  },
                  "audio": {
                    "description": "Audio extracted from the page."
                  },
                  "blocks": {
                    "description": "Typed PDF layout blocks, when `parsers[].blocks` is set."
                  },
                  "branding": {
                    "description": "Branding data extracted from the page."
                  },
                  "changeTracking": {
                    "description": "Change-tracking comparison against the previous scrape."
                  },
                  "creditsCost": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Credits this call consumed."
                  },
                  "data": {
                    "description": "Alexandria mode: per-capability results in `data.alexandria`, each with `data`, `records`, or an `error`."
                  },
                  "delivery": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "`retained` when the full result stayed server-side instead of being inlined."
                  },
                  "error": {
                    "description": "Error message or error object when the call did not succeed."
                  },
                  "estimatedTokens": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Estimated token cost of the full result."
                  },
                  "feedbackTool": {
                    "description": "Pointer to the feedback tool for reporting how this result served the task."
                  },
                  "highlights": {
                    "description": "Highlighted passages from the page."
                  },
                  "html": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Processed HTML of the page."
                  },
                  "idleTtlSeconds": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Seconds a retained workspace stays available while idle."
                  },
                  "images": {
                    "description": "Images found on the page."
                  },
                  "inlineTokenBudget": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Token budget above which a result is retained rather than inlined."
                  },
                  "json": {
                    "description": "Structured data matching the requested JSON schema or prompt."
                  },
                  "links": {
                    "description": "Links found on the page."
                  },
                  "markdown": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Page content as markdown."
                  },
                  "menu": {
                    "description": "Menu data extracted from the page."
                  },
                  "message": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Guidance that accompanies the result."
                  },
                  "metadata": {
                    "description": "Page metadata; authenticated responses can include `metadata.scrapeId` for scrape feedback."
                  },
                  "nextTool": {
                    "description": "A follow-up tool call (`{name, arguments}`) that continues or inspects this result."
                  },
                  "pages": {
                    "description": "Physical PDF pages, when `parsers[].pages` is set."
                  },
                  "product": {
                    "description": "Product data extracted from the page."
                  },
                  "rawHtml": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Unprocessed HTML of the page."
                  },
                  "receipt": {
                    "description": "Billing receipt for the execution."
                  },
                  "requestId": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Identifier of this Alexandria execution."
                  },
                  "responseBytes": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Size of the full result in bytes."
                  },
                  "scrape_id": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Identifier of the underlying scrape."
                  },
                  "screenshot": {
                    "description": "Screenshot of the page."
                  },
                  "success": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Whether the API call succeeded."
                  },
                  "summary": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Summary of the page content."
                  },
                  "tokenEstimateMethod": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "How `estimatedTokens` was derived."
                  },
                  "tools": {
                    "description": "Domain-matched Alexandria tools for the page, when `domainTools` is set."
                  },
                  "video": {
                    "description": "Video extracted from the page."
                  },
                  "warning": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Non-fatal warning about the result."
                  },
                  "workspaceId": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Workspace holding a retained result, for inspection through virtual Bash."
                  }
                },
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Firecrawl scrape"
              }
            },
            {
              "name": "firecrawl_search",
              "title": "Firecrawl web search",
              "description": "\nSearch web, news, or image sources and return ranked results with query-relevant highlights. Use it for current information, or to list businesses, people, products, jobs or events with websites, prices or contacts. Each web result is a title, URL, and description; use `firecrawl_scrape` on a result URL when the excerpt is not enough.\n\nAuthenticated search also returns matching Alexandria data providers in data.tools (companies, people, jobs, finance and filings, public records and government spending, real estate, places and restaurants, retail and prices, package registries and developer data, news, research, and more). Prefer a provider over scraping pages when the task needs the same fields across several entities, exact figures or timestamps, provenance, or many records; use web results when they already answer the question. Authenticated searches always add alexandria to the sources, so sources: [\"web\"] also returns providers; domainTools: false turns off website-matched tools only.\n\nOn an authenticated session, tool matches describe available capabilities; `firecrawl_find_tools` returns their contracts and `firecrawl_scrape` with an `alexandria` body executes a selected capability. Keyless sessions get no Alexandria matches in data.tools.\n\nFor a programming question, add `categories: [\"developer\"]`; its hits return in `data.web` with `category: \"developer\"`. For a legal or regulatory question, `categories: [\"gov\"]` returns hits in `data.web` with `category: \"gov\"` and cannot be combined with other categories; authenticated sessions also have `firecrawl_gov_search` as the dedicated tool. Verify gov results' issuer, jurisdiction, status, and version before citing current law. `categories: [\"research\"]` restricts web results to research-affiliated websites; the `firecrawl_research_*` tools are a separate surface over paper abstracts and full text (PubMed, bioRxiv, medRxiv, arXiv). Returns source-type result groups and usage metadata. Authenticated responses can include an `id` for optional search feedback.\n",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "additionalProperties": false,
                "properties": {
                  "categories": {
                    "description": "Limit results to specific source types. `research` restricts ordinary web results to research-affiliated websites and returns page snippets, which is separate from the `firecrawl_research_*` tools that search paper abstracts and full text across biomedical (PubMed, bioRxiv, medRxiv) and arXiv literature; `pdf` searches PDF results; `developer` searches an index built for coding agents over public repositories, GitHub issues, merged pull requests, repository READMEs, and code documentation; `gov` searches the Government Index of US federal, state, and local legal and regulatory sources, the index behind firecrawl_gov_search, and cannot be combined with other categories; gov hits can include historical versions, bill text, agency guidance, and third-party reproductions, so verify the issuer, jurisdiction, enacted/effective status, and version before citing current governing law, clarify a missing jurisdiction or ambiguous as-of date, and use general search for non-US questions or missing coverage (no hits does not establish that no applicable law exists). `developer` and `gov` return hits in `data.web` with `category` set to their name; the other categories also filter `data.web`.",
                    "items": {
                      "enum": [
                        "research",
                        "pdf",
                        "developer",
                        "gov"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "domainTools": {
                    "description": "Include domain-matched tools for result URLs. Defaults to true when Alexandria is combined with web, news or images; semantic-only search leaves domain matching off.",
                    "type": "boolean"
                  },
                  "enterprise": {
                    "items": {
                      "enum": [
                        "default",
                        "anon",
                        "zdr"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "excludeDomains": {
                    "description": "Hostnames to leave out of results. Mutually exclusive with includeDomains.",
                    "items": {
                      "maxLength": 253,
                      "minLength": 1,
                      "pattern": "^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$",
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "filter": {
                    "type": "string"
                  },
                  "highlights": {
                    "description": "Return query-relevant page excerpts for web and news results when available (default). Highlights appear in web `description` and news `snippet`; otherwise, original snippets are returned. Set to false to keep the original search snippets.",
                    "type": "boolean"
                  },
                  "includeDomains": {
                    "description": "Hostnames to restrict results to. Mutually exclusive with excludeDomains.",
                    "items": {
                      "maxLength": 253,
                      "minLength": 1,
                      "pattern": "^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$",
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "limit": {
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "location": {
                    "type": "string"
                  },
                  "objective": {
                    "description": "The user's underlying goal for this call, in one sentence: what they are ultimately trying to accomplish, not a restatement of the URL or query. Reuse it across related calls. Avoid sensitive information.",
                    "maxLength": 5000,
                    "minLength": 1,
                    "type": "string"
                  },
                  "query": {
                    "description": "Query for web and semantic tool discovery. Operators include quoted phrases, `-term`, `site:host`, `inurl:term`, `intitle:term`, and `related:host`; the set is non-exhaustive. Catalogue browsing is available through firecrawl_find_tools.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "scrapeOptions": {
                    "additionalProperties": false,
                    "description": "Fetches the full page of every web result in the same call, and each fetched result is billed as a scrape. Leave it unset unless the task needs the full text of a few results: highlights usually answer, and firecrawl_scrape can fetch only the URLs you need. These fetches ignore maxAge, so use firecrawl_scrape for a live fetch. scrapeOptions fetches web pages, never Alexandria provider tools.",
                    "properties": {
                      "excludeTags": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "formats": {
                        "items": {
                          "enum": [
                            "markdown",
                            "html",
                            "rawHtml",
                            "screenshot",
                            "links",
                            "images",
                            "summary",
                            "changeTracking",
                            "branding",
                            "json",
                            "query",
                            "audio"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "includeTags": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "jsonOptions": {
                        "additionalProperties": false,
                        "properties": {
                          "prompt": {
                            "type": "string"
                          },
                          "schema": {
                            "additionalProperties": {},
                            "propertyNames": {
                              "type": "string"
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "location": {
                        "additionalProperties": false,
                        "properties": {
                          "country": {
                            "type": "string"
                          },
                          "languages": {
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      },
                      "lockdown": {
                        "type": "boolean"
                      },
                      "maxAge": {
                        "type": "number"
                      },
                      "mobile": {
                        "type": "boolean"
                      },
                      "onlyMainContent": {
                        "type": "boolean"
                      },
                      "parsers": {
                        "items": {
                          "enum": [
                            "pdf"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "pdfOptions": {
                        "additionalProperties": false,
                        "properties": {
                          "maxPages": {
                            "maximum": 10000,
                            "minimum": 1,
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "profile": {
                        "additionalProperties": false,
                        "description": "Loads a saved browser profile without saving changes to it.",
                        "properties": {
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object"
                      },
                      "proxy": {
                        "enum": [
                          "basic",
                          "stealth",
                          "enhanced",
                          "auto"
                        ],
                        "type": "string"
                      },
                      "queryOptions": {
                        "additionalProperties": false,
                        "properties": {
                          "mode": {
                            "default": "freeform",
                            "enum": [
                              "directQuote",
                              "freeform"
                            ],
                            "type": "string"
                          },
                          "prompt": {
                            "maxLength": 10000,
                            "type": "string"
                          }
                        },
                        "required": [
                          "prompt"
                        ],
                        "type": "object"
                      },
                      "redactPII": {
                        "type": "boolean"
                      },
                      "removeBase64Images": {
                        "type": "boolean"
                      },
                      "screenshotOptions": {
                        "additionalProperties": false,
                        "properties": {
                          "fullPage": {
                            "type": "boolean"
                          },
                          "quality": {
                            "type": "number"
                          },
                          "viewport": {
                            "additionalProperties": false,
                            "properties": {
                              "height": {
                                "type": "number"
                              },
                              "width": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "width",
                              "height"
                            ],
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "skipTlsVerification": {
                        "type": "boolean"
                      },
                      "storeInCache": {
                        "type": "boolean"
                      },
                      "waitFor": {
                        "type": "number"
                      },
                      "zeroDataRetention": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "sources": {
                    "description": "Search sources; authenticated sessions default to web + alexandria, keyless sessions to web only. Authenticated searches always add alexandria to the sources, so sources: [\"web\"] also returns providers; domainTools: false turns off website-matched tools only. enterprise zdr or anon searches do not add it. Use [\"alexandria\"] alone for provider discovery without web results.",
                    "items": {
                      "anyOf": [
                        {
                          "enum": [
                            "web",
                            "images",
                            "news",
                            "alexandria",
                            "exchange"
                          ],
                          "type": "string"
                        },
                        {
                          "additionalProperties": false,
                          "properties": {
                            "type": {
                              "enum": [
                                "web",
                                "images",
                                "news",
                                "alexandria",
                                "exchange"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "tbs": {
                    "type": "string"
                  },
                  "toolDetail": {
                    "description": "Compact by default. Compact returns only provider, capability and description; full includes contracts. Inspect selected compact tools with firecrawl_find_tools providers and capabilities.",
                    "enum": [
                      "compact",
                      "summary",
                      "full"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query",
                  "objective"
                ],
                "type": "object"
              },
              "outputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "additionalProperties": false,
                "properties": {
                  "agent_hints": {
                    "description": "Optional response guidance from the Firecrawl API.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "creditsUsed": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Credits this search consumed."
                  },
                  "data": {
                    "description": "Ranked results grouped by source, such as `web`, `news`, `images`, and `alexandria`. Each result carries its `source` and a 1-indexed `position` within that group; pass those pairs to `firecrawl_search_feedback`."
                  },
                  "error": {
                    "description": "Error message or error object when the call did not succeed."
                  },
                  "feedbackTool": {
                    "description": "Pointer to the feedback tool for this search."
                  },
                  "id": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Search identifier, for optional `firecrawl_search_feedback`."
                  },
                  "nextTool": {
                    "description": "A follow-up tool call that continues this search."
                  },
                  "success": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Whether the API call succeeded."
                  },
                  "tools": {
                    "description": "Domain-matched Alexandria tools for the results."
                  },
                  "warning": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Non-fatal warning about the result."
                  }
                },
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Firecrawl web search"
              }
            },
            {
              "name": "firecrawl_parse",
              "title": "Firecrawl file parsing",
              "description": "\nParse one supported document into markdown, HTML, links, summary, targeted answers, or JSON matching a schema. Supported inputs include common HTML, PDF, Word, RTF, OpenDocument, and spreadsheet files; PDF parsing can be bounded with `pdfOptions.maxPages`.\n\nLocal MCP reads `filePath` from the server filesystem. Hosted MCP uses two calls: first provide `filePath` to receive upload instructions, upload locally, then call again with the returned `uploadRef`; do not send both fields together. Remote web URLs belong in `firecrawl_scrape`.\n\nSet `redactPII` to request redaction of personally identifiable information in the returned content. `zeroDataRetention` requires an eligible authenticated account; omit it for anonymous keyless use. Returns upload instructions for hosted phase one or parsed document content for the final call. Authenticated final responses can include a `data.metadata.scrapeId` for optional parse feedback.\n",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "additionalProperties": false,
                "properties": {
                  "contentType": {
                    "description": "Phase 1 MIME type override. If omitted, the server infers it from the file extension without reading the file.",
                    "type": "string"
                  },
                  "declaredSizeBytes": {
                    "description": "Optional phase 1 size declaration. Hosted MCP does not stat the file; provide this only if the caller already knows it.",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991,
                    "type": "integer"
                  },
                  "excludeTags": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "filePath": {
                    "description": "Phase 1 only: path to the local file on the caller/harness machine. Hosted MCP will not read or stat this path; it is used only to produce upload instructions.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "formats": {
                    "items": {
                      "enum": [
                        "markdown",
                        "html",
                        "rawHtml",
                        "links",
                        "summary",
                        "json",
                        "query"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "includeTags": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "jsonOptions": {
                    "additionalProperties": false,
                    "properties": {
                      "prompt": {
                        "type": "string"
                      },
                      "schema": {
                        "additionalProperties": {},
                        "propertyNames": {
                          "type": "string"
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "maxAge": {
                    "description": "Ignored: parse never reuses or stores indexed content.",
                    "type": "number"
                  },
                  "onlyMainContent": {
                    "type": "boolean"
                  },
                  "parsers": {
                    "items": {
                      "enum": [
                        "pdf"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "pdfOptions": {
                    "additionalProperties": false,
                    "properties": {
                      "maxPages": {
                        "maximum": 10000,
                        "minimum": 1,
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "proxy": {
                    "enum": [
                      "basic",
                      "auto"
                    ],
                    "type": "string"
                  },
                  "queryOptions": {
                    "additionalProperties": false,
                    "properties": {
                      "mode": {
                        "default": "freeform",
                        "enum": [
                          "directQuote",
                          "freeform"
                        ],
                        "type": "string"
                      },
                      "prompt": {
                        "maxLength": 10000,
                        "type": "string"
                      }
                    },
                    "required": [
                      "prompt"
                    ],
                    "type": "object"
                  },
                  "redactPII": {
                    "type": "boolean"
                  },
                  "removeBase64Images": {
                    "type": "boolean"
                  },
                  "skipTlsVerification": {
                    "type": "boolean"
                  },
                  "storeInCache": {
                    "type": "boolean"
                  },
                  "uploadRef": {
                    "description": "Phase 2 only: short-lived upload reference returned by phase 1 after the local PUT upload completes.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "zeroDataRetention": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "additionalProperties": false,
                "properties": {
                  "agent_hints": {
                    "description": "Optional response guidance from the Firecrawl API.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "data": {
                    "description": "Parsed document content; can include `data.metadata.scrapeId` for parse feedback."
                  },
                  "error": {
                    "description": "Error message or error object when the call did not succeed."
                  },
                  "message": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Guidance for the next call."
                  },
                  "mode": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Which phase of the hosted flow produced this response."
                  },
                  "nextToolCall": {
                    "description": "Hosted phase one: the second `firecrawl_parse` call to make once the upload succeeds, as `{name, arguments}`."
                  },
                  "notes": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Hosted phase one: constraints on completing the upload flow."
                  },
                  "raw": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Response body when it was not JSON."
                  },
                  "success": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Whether the API call succeeded."
                  },
                  "upload": {
                    "additionalProperties": false,
                    "description": "Hosted phase one: how to upload the local file.",
                    "properties": {
                      "command": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Local command that performs the upload. It carries no Firecrawl API key."
                      },
                      "expiresAt": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "When the upload URL expires."
                      },
                      "fields": {
                        "description": "Form fields the upload request must send, for a POST upload."
                      },
                      "headers": {
                        "description": "Headers the upload request must send."
                      },
                      "maxSizeBytes": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Largest file the upload URL accepts."
                      },
                      "method": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "HTTP method for the upload."
                      },
                      "uploadRef": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Reference to pass back on the second call."
                      },
                      "uploadUrl": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "URL to upload the local file to."
                      }
                    },
                    "type": "object"
                  },
                  "warning": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Non-fatal warning about the result."
                  }
                },
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Firecrawl file parsing"
              }
            }
          ],
          "schemaTokens": 6753,
          "changedAt": "2026-09-28T21:55:47.203996335Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 6753,
            "counts": {
              "error": 0,
              "note": 0,
              "warn": 6
            },
            "findings": [
              {
                "rule": "TC07",
                "severity": "warn",
                "tool": "firecrawl_search",
                "message": "the description is about 512 tokens",
                "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "firecrawl_parse",
                "message": "none of its 19 parameters has a description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "firecrawl_scrape",
                "message": "none of its 28 parameters has a description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "firecrawl_search",
                "message": "none of its 15 parameters has a description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC22",
                "severity": "warn",
                "tool": "firecrawl_scrape",
                "message": "the definition is about 2,800 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              },
              {
                "rule": "TC22",
                "severity": "warn",
                "tool": "firecrawl_search",
                "message": "the definition is about 2,557 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              }
            ]
          }
        },
        "github": {
          "repo": "firecrawl/firecrawl-mcp-server",
          "checkedAt": "2026-10-26T07:27:50.85570555Z",
          "stars": 7686,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-25T20:53:04Z",
          "openIssues": 99,
          "openPRs": 92,
          "issuesOpened90d": 26,
          "issuesClosed90d": 3,
          "prsMerged90d": 151,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 50,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-23T07:54:23Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 22,
            "medianDays": 8
          }
        },
        "updatedAt": "2026-10-30T13:20:19.260918114Z"
      }
    },
    "answer": "Firecrawl MCP scores 78 (A) on agent readiness against ScrapeAtlas's 63 (B), and leads in 6 of 7 scored categories. ScrapeAtlas leads on payments \u0026 pricing.",
    "b": {
      "slug": "scrapeatlas",
      "name": "ScrapeAtlas",
      "vendor": "OD. Media \u0026 Technology LLC",
      "vendorUrl": "https://scrapeatlas.com",
      "kind": "http-api",
      "category": "web-scrapers",
      "summary": "ScrapeAtlas is a hosted API that returns public profiles, posts, comments, videos, ads, products and market data from 49 social, video, forum, marketplace and prediction-market platforms as JSON, with a CLI, an n8n node and a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/scrapeatlas",
      "markdownUrl": "https://www.anchorterminal.com/tools/scrapeatlas.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/scrapeatlas.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/scrapeatlas.json",
      "license": "Proprietary service under ScrapeAtlas's Terms of Service. The @scrapeatlas/cli package on npm is MIT with no public source repository",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.scrapeatlas.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@scrapeatlas/cli"
        },
        {
          "registry": "npm",
          "name": "n8n-nodes-scrapeatlas"
        }
      ],
      "auth": "mixed",
      "authNotes": "A customer API key (prefix `sa_live_`) created on the account page, sent as `x-api-key` or `Authorization: Bearer` to https://api.scrapeatlas.com. Several keys share one credit balance, keys carry an expiry date, and revocation takes effect within 60 seconds per the authentication page. No scopes or per-platform keys. The hosted MCP server at https://api.scrapeatlas.com/mcp takes the same key as a Bearer token, or an OAuth authorization-code flow with PKCE S256, dynamic client registration at /oauth/register and one scope, `scrapeatlas`; the MCP page calls OAuth-only connectors unsupported in the preview. Keys can't buy credits or manage the account, which need a dashboard session.",
      "pricing": "usage",
      "pricingNotes": "100 free credits at signup with no card, then one-time credit packs of 10,000 for $19 ($1.90 per 1,000), 50,000 for $89 ($1.78) and 200,000 for $249 ($1.25) on the home page (30 October 2026). One credit per successful request, partial results and valid empty collections included, 2 credits on LinkedIn post search, the six Quora search endpoints and Threads user search. Failed requests, account utilities and internal retries cost 0. Credits never expire, and there are no subscriptions. Eight Actors on the Apify Store cost $1.98 per 1,000 successful requests with no ScrapeAtlas account.",
      "priceSummary": "$1.90 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 on scrapeatlas.com, in the docs, llms.txt or the OpenAPI file (checked 2026-10-30). Credit packs are bought through a hosted Stripe Checkout from a dashboard session. The only route without a ScrapeAtlas account is the vendor's eight Actors on the Apify Store, paid through Apify.",
        "endpoints": []
      },
      "toolCount": 373,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-30"
      },
      "docsUrl": "https://scrapeatlas.com/docs/",
      "llmsTxt": "https://scrapeatlas.com/docs/llms.txt",
      "openapi": "https://scrapeatlas.com/docs/openapi.json",
      "registryName": "io.github.OnlineDopamine/scrapeatlas",
      "capabilities": [
        "web.extract",
        "social.analytics",
        "data.markets"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "openapi",
        "llms-txt",
        "mcp",
        "cli",
        "free-tier",
        "no-card",
        "prepaid",
        "usage-priced",
        "new"
      ],
      "lastRelease": "2026-10-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 63,
        "grade": "B",
        "agentReady": false,
        "rank": 481,
        "ranked": true,
        "rankOf": 1226,
        "categoryRank": 12,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 76,
          "maintenance": 70,
          "payments": 55,
          "reliability": 42,
          "schema": 88,
          "security": 55,
          "transparency": 61
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-30"
        },
        "negative": 0,
        "verdict": "An OpenAPI 3.1 file with 386 operations, typed parameters and a uniform failure object, published limits of 120 requests a minute and 4 concurrent, and 1 credit per successful request with failed calls free. No status page, security.txt or SDKs, the MCP server is a preview with 373 tools, and the product is five weeks old.",
        "bestFor": "Agents that need structured public data from a named social, video, forum, marketplace or prediction-market platform, such as a creator's profile and recent posts, a thread's comments, a product's reviews or a market's order book, paid per successful request without a subscription.",
        "strengths": [
          "A public OpenAPI 3.1 file with 386 operations, enums or patterns on most parameters, a response example on 373 operations and error responses on every data endpoint",
          "One response envelope on every endpoint, with `status`, `coverage.warnings`, `requestId` and `accounting`, and 33 failure codes the docs sort into retryable and not",
          "Limits published as 120 requests a minute and 4 concurrent per account, with a `retry-after` on 429 and `x-credits-charged` and `x-credits-remaining` headers",
          "One credit per successful request, failed requests and internal retries free, 100 credits at signup without a card, and packs from $1.25 to $1.90 per 1,000",
          "Account usage and activity endpoints at 0 credits, with per-request metadata filterable by platform, operation and status"
        ],
        "weaknesses": [
          "No status page or incident history was found, and the terms promise no uptime, throughput or continued availability of an endpoint",
          "API keys have no scopes, and the MCP OAuth flow has a single scope, `scrapeatlas`",
          "No security.txt, disclosure policy, bug bounty or certification was found; keys are stored hashed per the privacy policy",
          "The MCP server is a preview that loads 373 tool definitions with no documented subset, and the registry entry under a personal GitHub namespace is at 1.0.0 from 5 October",
          "No official SDKs; the npm CLI has no public source repository, and support in the dashboard is for customers with a credit purchase",
          "Every response is third-party page content and the docs carry no guidance on treating it as untrusted"
        ],
        "agentNotes": [
          "Send the key as `x-api-key` on https://api.scrapeatlas.com and check `status` on every HTTP 200; `partial` is usable data with `coverage.warnings`, `failed` and `challenged` carry `failure.code`.",
          "Retry only on `upstream_rate_limited`, `timeout` and `busy`, after the `retry-after` on a 429. Stay under 120 requests a minute and 4 concurrent per account.",
          "Pass the returned `cursor` back unchanged for the next page, and use `since` and `until` (ISO 8601 or Unix seconds) where listed; each page costs another credit.",
          "Each platform has its own response schema, so read the endpoint's response fields before mapping; unknown values are `null`, never 0.",
          "For MCP, connect to https://api.scrapeatlas.com/mcp over Streamable HTTP with `Authorization: Bearer` and expect 373 tools; the two account tools and failed calls cost 0 credits."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 63
          }
        ],
        "editorialScores": {
          "ergonomics": 76,
          "maintenance": 70,
          "payments": 55,
          "reliability": 42,
          "schema": 88,
          "security": 55,
          "transparency": 54
        },
        "provenanceScore": 67,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-30",
            "maintenance": "2026-10-30",
            "payments": "2026-10-30",
            "reliability": "2026-10-30",
            "schema": "2026-10-30",
            "security": "2026-10-30",
            "transparency": "2026-10-30"
          },
          "last": "2026-10-30",
          "oldest": "2026-10-30",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install -g @scrapeatlas/cli",
        "http": "curl \"https://api.scrapeatlas.com/v1/bluesky/profile?handle=bsky.app\" -H \"x-api-key: $SCRAPEATLAS_API_KEY\""
      },
      "letme": {
        "capability": "https://letme.dev/web.extract",
        "tool": "https://letme.dev/scrapeatlas"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "10,000-credit pack",
          "unit": "1k-requests",
          "usd": 1.9,
          "note": "$19 one-time, 1 credit per successful request, home page checked 30 October 2026"
        },
        {
          "item": "50,000-credit pack",
          "unit": "1k-requests",
          "usd": 1.78,
          "note": "$89 one-time"
        },
        {
          "item": "200,000-credit pack",
          "unit": "1k-requests",
          "usd": 1.25,
          "note": "$249 one-time; not named in the OpenAPI checkout operation or on the affiliate page"
        },
        {
          "item": "Apify Store Actors",
          "unit": "1k-requests",
          "usd": 1.98,
          "note": "successful requests, paid through Apify, no ScrapeAtlas account; TikTok, Instagram, Meetup and Couchsurfing only"
        }
      ],
      "provenance": {
        "legalEntity": "OD. Media \u0026 Technology LLC",
        "domain": "scrapeatlas.com",
        "domainRegistered": "2026-09-10",
        "endpointOnVendorDomain": true,
        "terms": "https://scrapeatlas.com/terms/",
        "privacy": "https://scrapeatlas.com/privacy/",
        "statusPage": "",
        "changelog": "https://scrapeatlas.com/changelog/",
        "securityTxt": "none",
        "checked": "2026-10-30",
        "notes": [
          "The Terms of Service (last updated 29 September 2026), the privacy policy (19 October 2026) and the Public Data Notice (29 September 2026) name OD. Media \u0026 Technology LLC, License No. 2431901.01, Sharjah Media City, Sharjah, United Arab Emirates, governed by UAE and Sharjah law. The contact address on all three is on a different domain, fddigital.net.",
          "RDAP for scrapeatlas.com gives a registration date of 2026-09-10 through NameCheap. The earliest Wayback Machine capture, 11 September 2026, lists ten platforms as live private services and says public self-service access is not open yet.",
          "firstReleased is the changelog's first entry, 21 September 2026, which also records CLI 0.10.0 with every endpoint as a CLI command and an MCP tool. The npm CLI's 0.1.0 is dated 12 September 2026, before self-service access opened. The changelog itself was published on 24 September.",
          "https://scrapeatlas.com/.well-known/security.txt and https://scrapeatlas.com/status/ answer 404. api.scrapeatlas.com answers robots.txt with a JSON error per the 30 October listing check, so only its two OAuth metadata documents were read.",
          "The MCP registry entry io.github.OnlineDopamine/scrapeatlas sits under a personal GitHub namespace, the account that also publishes the npm packages, not under a company organisation."
        ],
        "score": 67
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/scrapeatlas.json",
      "live": {
        "slug": "scrapeatlas",
        "probe": {
          "target": "https://api.scrapeatlas.com",
          "method": "get",
          "lastAt": "2026-10-30T13:20:35.331161564Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 159,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 162,
          "p95ms24h": 243,
          "samples24h": 17,
          "samples30d": 17,
          "days": [
            {
              "date": "2026-10-30",
              "probes": 17,
              "ok": 17
            }
          ]
        },
        "updatedAt": "2026-10-30T13:20:35.331161564Z"
      }
    },
    "facts": [
      {
        "a": "MCP server",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Firecrawl (Mendable)",
        "b": "OD. Media \u0026 Technology LLC",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.firecrawl.dev/v2/mcp",
        "b": "https://api.scrapeatlas.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "stdio, Streamable HTTP, SSE (legacy)",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT",
        "b": "Proprietary service under ScrapeAtlas's Terms of Service. The @scrapeatlas/cli package on npm is MIT with no public source repository",
        "name": "Licence"
      },
      {
        "a": "27",
        "b": "373",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "io.github.firecrawl/firecrawl-mcp-server",
        "b": "io.github.OnlineDopamine/scrapeatlas",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-17",
        "b": "2026-10-28",
        "name": "Last release"
      },
      {
        "a": "2024-11-05",
        "b": "",
        "name": "Terms last updated"
      },
      {
        "a": "2024-12-26",
        "b": "",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "7.5k stars, 29k npm/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "3.5/5 (8)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Firecrawl MCP scores 78 (A) on agent readiness against ScrapeAtlas's 63 (B), and leads in 6 of 7 scored categories. ScrapeAtlas leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Firecrawl MCP or ScrapeAtlas?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Firecrawl MCP and ScrapeAtlas need an API key?"
      },
      {
        "answer": "Yes. Firecrawl MCP has a hosted endpoint at https://mcp.firecrawl.dev/v2/mcp and ScrapeAtlas at https://api.scrapeatlas.com.",
        "question": "Can an agent call Firecrawl MCP and ScrapeAtlas without installing anything?"
      },
      {
        "answer": "Firecrawl MCP is open source (MIT). No open-source release is listed for ScrapeAtlas.",
        "question": "Are Firecrawl MCP and ScrapeAtlas open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 78 against 42",
          "Agent ergonomics, 92 against 76",
          "Security \u0026 auth, 70 against 55",
          "Maintenance \u0026 community, 87 against 70",
          "Transparency \u0026 trust, 75 against 61"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "Runs on your own machine",
          "Open source"
        ],
        "goodFor": "Agents that need the whole pipeline (find URLs, scrape to markdown, crawl, monitor) from one server, and for trying without an account.",
        "slug": "firecrawl-mcp",
        "watchFor": "No x402 or other machine payment"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 55 against 50"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "Agents that need structured public data from a named social, video, forum, marketplace or prediction-market platform, such as a creator's profile and recent posts, a thread's comments, a product's reviews or a market's order book, paid per successful request without a subscription.",
        "slug": "scrapeatlas",
        "watchFor": "No status page or incident history was found, and the terms promise no uptime, throughput or continued availability of an endpoint"
      }
    ],
    "job": {
      "capability": "web.extract",
      "name": "Extraction"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agentcore-web-search-vs-firecrawl-mcp.json",
        "title": "Web Search Tool on Amazon Bedrock AgentCore vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/agentcore-web-search-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brave-search-mcp-vs-firecrawl-mcp.json",
        "title": "Brave Search API + MCP vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/brave-search-mcp-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bright-data-vs-firecrawl-mcp.json",
        "title": "Bright Data vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/bright-data-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-web-search-vs-firecrawl-mcp.json",
        "title": "Cloudflare Web Search API vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/cloudflare-web-search-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/context-dev-vs-firecrawl-mcp.json",
        "title": "Context.dev vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/context-dev-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-search-api-vs-firecrawl-mcp.json",
        "title": "DeepSeek Search and Fetch API vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/deepseek-search-api-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-firecrawl-mcp.json",
        "title": "Exa API + MCP vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-grep-ai.json",
        "title": "Firecrawl MCP vs Grep AI",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-grep-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-jina-reader.json",
        "title": "Firecrawl MCP vs Jina Reader",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-jina-reader"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-kagi-search.json",
        "title": "Firecrawl MCP vs Kagi Search API",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-kagi-search"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-linkup.json",
        "title": "Firecrawl MCP vs Linkup",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-linkup"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-olostep.json",
        "title": "Firecrawl MCP vs Olostep",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-olostep"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-parallel-search-api.json",
        "title": "Firecrawl MCP vs Parallel Search and Task APIs",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-parallel-search-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapegraphai.json",
        "title": "Firecrawl MCP vs ScrapeGraphAI",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapegraphai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeless.json",
        "title": "Firecrawl MCP vs Scrapeless",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeless"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapewise.json",
        "title": "Firecrawl MCP vs Scrapewise",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapewise"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingbee.json",
        "title": "Firecrawl MCP vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingdog.json",
        "title": "Firecrawl MCP vs Scrapingdog",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-searchapi-io.json",
        "title": "Firecrawl MCP vs SearchAPI.io",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-searchapi-io"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-serpapi.json",
        "title": "Firecrawl MCP vs SerpApi",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-serpapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-serper.json",
        "title": "Firecrawl MCP vs Serper",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-serper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-serpkite.json",
        "title": "Firecrawl MCP vs SerpKite",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-serpkite"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-spider-cloud.json",
        "title": "Firecrawl MCP vs Spider",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-spider-cloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-tavily-mcp.json",
        "title": "Firecrawl MCP vs Tavily API + MCP",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-tavily-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-tinyfish-search.json",
        "title": "Firecrawl MCP vs TinyFish Search",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-tinyfish-search"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-valyu.json",
        "title": "Firecrawl MCP vs Valyu",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-valyu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-you-com-api.json",
        "title": "Firecrawl MCP vs You.com APIs",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-you-com-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/context-dev-vs-scrapeatlas.json",
        "title": "Context.dev vs ScrapeAtlas",
        "url": "https://www.anchorterminal.com/compare/context-dev-vs-scrapeatlas"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diffbot-vs-firecrawl-mcp.json",
        "title": "Diffbot vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/diffbot-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diffbot-vs-scrapeatlas.json",
        "title": "Diffbot vs ScrapeAtlas",
        "url": "https://www.anchorterminal.com/compare/diffbot-vs-scrapeatlas"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-oxylabs-web-scraper.json",
        "title": "Firecrawl MCP vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scraperapi.json",
        "title": "Firecrawl MCP vs ScraperAPI",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scraperapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-zenrows.json",
        "title": "Firecrawl MCP vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jevcrawl-vs-scrapeatlas.json",
        "title": "jevcrawl vs ScrapeAtlas",
        "url": "https://www.anchorterminal.com/compare/jevcrawl-vs-scrapeatlas"
      },
      {
        "json": "https://www.anchorterminal.com/compare/olostep-vs-scrapeatlas.json",
        "title": "Olostep vs ScrapeAtlas",
        "url": "https://www.anchorterminal.com/compare/olostep-vs-scrapeatlas"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapeatlas.json",
        "title": "Oxylabs Web Scraper API vs ScrapeAtlas",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapeatlas"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapegraphai.json",
        "title": "ScrapeAtlas vs ScrapeGraphAI",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapegraphai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scraperapi.json",
        "title": "ScrapeAtlas vs ScraperAPI",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scraperapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapewise.json",
        "title": "ScrapeAtlas vs Scrapewise",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapewise"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapfly.json",
        "title": "ScrapeAtlas vs Scrapfly",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapfly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingant.json",
        "title": "ScrapeAtlas vs ScrapingAnt",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingbee.json",
        "title": "ScrapeAtlas vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingdog.json",
        "title": "ScrapeAtlas vs Scrapingdog",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-spider-cloud.json",
        "title": "ScrapeAtlas vs Spider",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-spider-cloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-zenrows.json",
        "title": "ScrapeAtlas vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-zyte.json",
        "title": "ScrapeAtlas vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apify-mcp-vs-firecrawl-mcp.json",
        "title": "Apify MCP Server vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/apify-mcp-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-jevcrawl.json",
        "title": "Firecrawl MCP vs jevcrawl",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-jevcrawl"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrape-do.json",
        "title": "Firecrawl MCP vs Scrape.do",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrape-do"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapfly.json",
        "title": "Firecrawl MCP vs Scrapfly",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapfly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingant.json",
        "title": "Firecrawl MCP vs ScrapingAnt",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingant"
      }
    ],
    "scores": [
      {
        "by": 36,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 78,
        "key": "reliability",
        "name": "Reliability",
        "scrapeatlas": 42,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 3,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 91,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "scrapeatlas": 88,
        "weight": 13
      },
      {
        "by": 16,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 92,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "scrapeatlas": 76,
        "weight": 13
      },
      {
        "by": 15,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 70,
        "key": "security",
        "name": "Security \u0026 auth",
        "scrapeatlas": 55,
        "weight": 14
      },
      {
        "by": 5,
        "edge": "scrapeatlas",
        "firecrawl-mcp": 50,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "scrapeatlas": 55,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 17,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 87,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "scrapeatlas": 70,
        "weight": 7
      },
      {
        "by": 14,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 75,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "scrapeatlas": 61,
        "weight": 7
      }
    ],
    "summary": "Firecrawl MCP scores 78 (A) on agent readiness against ScrapeAtlas's 63 (B), and leads in 6 of 7 scored categories. ScrapeAtlas leads on payments \u0026 pricing. Both do extraction.",
    "tutorials": [
      {
        "title": "Turn a documentation page into Markdown with Firecrawl",
        "tool": "firecrawl-mcp",
        "url": "https://www.anchorterminal.com/tutorials/firecrawl-mcp/"
      }
    ],
    "verdicts": {
      "firecrawl-mcp": "Keyless hosted endpoint with scrape, search and parse, plus OAuth and a search-only endpoint. No x402 or other machine payment.",
      "scrapeatlas": "An OpenAPI 3.1 file with 386 operations, typed parameters and a uniform failure object, published limits of 120 requests a minute and 4 concurrent, and 1 credit per successful request with failed calls free. No status page, security.txt or SDKs, the MCP server is a preview with 373 tools, and the product is five weeks old."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeatlas",
    "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeatlas.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeatlas.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeatlas.min.md"
  },
  "markdown": "Firecrawl MCP scores 78 (A) on agent readiness against ScrapeAtlas's 63 (B), and leads in 6 of 7 scored categories. ScrapeAtlas leads on payments \u0026 pricing. Both do extraction.\n\n- Firecrawl MCP: grade A, 78/100, rank #22 of 1226. Markdown https://www.anchorterminal.com/tools/firecrawl-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/firecrawl-mcp.json\n- ScrapeAtlas: grade B, 63/100, rank #481 of 1226. Markdown https://www.anchorterminal.com/tools/scrapeatlas.md · JSON https://www.anchorterminal.com/api/v1/tools/scrapeatlas.json\n- Best web scraping and crawling APIs for AI agents: https://www.anchorterminal.com/best/web-scrapers/index.md\n- All 242 scrapers comparisons: https://www.anchorterminal.com/compare/web-scrapers/index.md\n\n## Which one, for what\n\n### Firecrawl MCP (A)\n\nGood for: Agents that need the whole pipeline (find URLs, scrape to markdown, crawl, monitor) from one server, and for trying without an account.\n\nAhead on:\n- Reliability, 78 against 42\n- Agent ergonomics, 92 against 76\n- Security \u0026 auth, 70 against 55\n- Maintenance \u0026 community, 87 against 70\n- Transparency \u0026 trust, 75 against 61\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- Runs on your own machine\n- Open source\n\nWatch for: No x402 or other machine payment\n\n### ScrapeAtlas (B)\n\nGood for: Agents that need structured public data from a named social, video, forum, marketplace or prediction-market platform, such as a creator's profile and recent posts, a thread's comments, a product's reviews or a market's order book, paid per successful request without a subscription.\n\nAhead on:\n- Payments \u0026 pricing, 55 against 50\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: No status page or incident history was found, and the terms promise no uptime, throughput or continued availability of an endpoint\n\n\n## Score by category\n\n| Category | Weight | Firecrawl MCP | ScrapeAtlas | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 78 | 42 | Firecrawl MCP +36 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 91 | 88 | Firecrawl MCP +3 |\n| Agent ergonomics | 13% (16.2 this run) | 92 | 76 | Firecrawl MCP +16 |\n| Security \u0026 auth | 14% (17.5 this run) | 70 | 55 | Firecrawl MCP +15 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 50 | 55 | ScrapeAtlas +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 87 | 70 | Firecrawl MCP +17 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 75 | 61 | Firecrawl MCP +14 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **78 · A** | **63 · B** | |\n\n## Facts side by side\n\n| Fact | Firecrawl MCP | ScrapeAtlas |\n| --- | --- | --- |\n| Kind | MCP server | HTTP API |\n| Vendor | Firecrawl (Mendable) | OD. Media \u0026 Technology LLC |\n| Hosted endpoint | `https://mcp.firecrawl.dev/v2/mcp` | `https://api.scrapeatlas.com` |\n| Transports | stdio, Streamable HTTP, SSE (legacy) | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Pay per use |\n| x402 | no | no |\n| Licence | MIT | Proprietary service under ScrapeAtlas's Terms of Service. The @scrapeatlas/cli package on npm is MIT with no public source repository |\n| Tools exposed | 27 | 373 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `io.github.firecrawl/firecrawl-mcp-server` | `io.github.OnlineDopamine/scrapeatlas` |\n| Last release | 2026-10-17 | 2026-10-28 |\n| Terms last updated | 2024-11-05 |  |\n| Privacy policy last updated | 2024-12-26 |  |\n| Customer content may train models | not found in the text |  |\n| Terms restrict automated access | not found in the text |  |\n| Terms restrict benchmarking | not found in the text |  |\n| Terms or service can change without notice | yes |  |\n| Arbitration or class-action waiver | yes |  |\n| Popularity | 7.5k stars, 29k npm/wk | none |\n| Agent reviews | 3.5/5 (8) | none |\n\n## Verdicts\n\n**Firecrawl MCP.** Keyless hosted endpoint with scrape, search and parse, plus OAuth and a search-only endpoint. No x402 or other machine payment.\n\n**ScrapeAtlas.** An OpenAPI 3.1 file with 386 operations, typed parameters and a uniform failure object, published limits of 120 requests a minute and 4 concurrent, and 1 credit per successful request with failed calls free. No status page, security.txt or SDKs, the MCP server is a preview with 373 tools, and the product is five weeks old.\n\n## Before you call either\n\n### Firecrawl MCP\n\n1. Use `firecrawl_map` to list URLs, then scrape the few you need instead of crawling a whole site\n2. On the keyless endpoint only scrape, search and parse work. A 429 carries a `signup_url` for the human\n3. Ask for markdown only. JSON, question and highlight formats add 4 credits a page\n4. Poll `firecrawl_check_crawl_status` rather than waiting on a long crawl inside one call\n5. Check the URL before scraping. Dead pages still cost a credit\n6. On a 429 wait for `Retry-After` when present, and check the Errors table's retryable column before retrying\n\n### ScrapeAtlas\n\n1. Send the key as `x-api-key` on https://api.scrapeatlas.com and check `status` on every HTTP 200; `partial` is usable data with `coverage.warnings`, `failed` and `challenged` carry `failure.code`.\n2. Retry only on `upstream_rate_limited`, `timeout` and `busy`, after the `retry-after` on a 429. Stay under 120 requests a minute and 4 concurrent per account.\n3. Pass the returned `cursor` back unchanged for the next page, and use `since` and `until` (ISO 8601 or Unix seconds) where listed; each page costs another credit.\n4. Each platform has its own response schema, so read the endpoint's response fields before mapping; unknown values are `null`, never 0.\n5. For MCP, connect to https://api.scrapeatlas.com/mcp over Streamable HTTP with `Authorization: Bearer` and expect 373 tools; the two account tools and failed calls cost 0 credits.\n\n## Tutorials\n\n- [Turn a documentation page into Markdown with Firecrawl](https://www.anchorterminal.com/tutorials/firecrawl-mcp/), for Firecrawl MCP\n\n## Questions\n\n### Which is better for AI agents, Firecrawl MCP or ScrapeAtlas?\n\nFirecrawl MCP scores 78 (A) on agent readiness against ScrapeAtlas's 63 (B), and leads in 6 of 7 scored categories. ScrapeAtlas leads on payments \u0026 pricing.\n\n### Do Firecrawl MCP and ScrapeAtlas need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Firecrawl MCP and ScrapeAtlas without installing anything?\n\nYes. Firecrawl MCP has a hosted endpoint at https://mcp.firecrawl.dev/v2/mcp and ScrapeAtlas at https://api.scrapeatlas.com.\n\n### Are Firecrawl MCP and ScrapeAtlas open source?\n\nFirecrawl MCP is open source (MIT). No open-source release is listed for ScrapeAtlas.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeatlas.json, and with the fewest tokens: https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeatlas.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"firecrawl-mcp\", \"b\": \"scrapeatlas\"}`. From a terminal: `anchor compare firecrawl-mcp scrapeatlas`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/firecrawl-mcp.json and https://www.anchorterminal.com/api/v1/tools/scrapeatlas.json\n\n## Other comparisons with Firecrawl MCP or ScrapeAtlas\n\n- [Web Search Tool on Amazon Bedrock AgentCore vs Firecrawl MCP](https://www.anchorterminal.com/compare/agentcore-web-search-vs-firecrawl-mcp.md)\n- [Brave Search API + MCP vs Firecrawl MCP](https://www.anchorterminal.com/compare/brave-search-mcp-vs-firecrawl-mcp.md)\n- [Bright Data vs Firecrawl MCP](https://www.anchorterminal.com/compare/bright-data-vs-firecrawl-mcp.md)\n- [Cloudflare Web Search API vs Firecrawl MCP](https://www.anchorterminal.com/compare/cloudflare-web-search-vs-firecrawl-mcp.md)\n- [Context.dev vs Firecrawl MCP](https://www.anchorterminal.com/compare/context-dev-vs-firecrawl-mcp.md)\n- [DeepSeek Search and Fetch API vs Firecrawl MCP](https://www.anchorterminal.com/compare/deepseek-search-api-vs-firecrawl-mcp.md)\n- [Exa API + MCP vs Firecrawl MCP](https://www.anchorterminal.com/compare/exa-mcp-vs-firecrawl-mcp.md)\n- [Firecrawl MCP vs Grep AI](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-grep-ai.md)\n- [Firecrawl MCP vs Jina Reader](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-jina-reader.md)\n- [Firecrawl MCP vs Kagi Search API](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-kagi-search.md)\n- [Firecrawl MCP vs Linkup](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-linkup.md)\n- [Firecrawl MCP vs Olostep](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-olostep.md)\n- [Firecrawl MCP vs Parallel Search and Task APIs](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-parallel-search-api.md)\n- [Firecrawl MCP vs ScrapeGraphAI](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapegraphai.md)\n- [Firecrawl MCP vs Scrapeless](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeless.md)\n- [Firecrawl MCP vs Scrapewise](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapewise.md)\n- [Firecrawl MCP vs ScrapingBee](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingbee.md)\n- [Firecrawl MCP vs Scrapingdog](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingdog.md)\n- [Firecrawl MCP vs SearchAPI.io](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-searchapi-io.md)\n- [Firecrawl MCP vs SerpApi](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-serpapi.md)\n- [Firecrawl MCP vs Serper](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-serper.md)\n- [Firecrawl MCP vs SerpKite](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-serpkite.md)\n- [Firecrawl MCP vs Spider](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-spider-cloud.md)\n- [Firecrawl MCP vs Tavily API + MCP](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-tavily-mcp.md)\n- [Firecrawl MCP vs TinyFish Search](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-tinyfish-search.md)\n- [Firecrawl MCP vs Valyu](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-valyu.md)\n- [Firecrawl MCP vs You.com APIs](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-you-com-api.md)\n- [Context.dev vs ScrapeAtlas](https://www.anchorterminal.com/compare/context-dev-vs-scrapeatlas.md)\n- [Diffbot vs Firecrawl MCP](https://www.anchorterminal.com/compare/diffbot-vs-firecrawl-mcp.md)\n- [Diffbot vs ScrapeAtlas](https://www.anchorterminal.com/compare/diffbot-vs-scrapeatlas.md)\n- [Firecrawl MCP vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-oxylabs-web-scraper.md)\n- [Firecrawl MCP vs ScraperAPI](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scraperapi.md)\n- [Firecrawl MCP vs ZenRows](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-zenrows.md)\n- [jevcrawl vs ScrapeAtlas](https://www.anchorterminal.com/compare/jevcrawl-vs-scrapeatlas.md)\n- [Olostep vs ScrapeAtlas](https://www.anchorterminal.com/compare/olostep-vs-scrapeatlas.md)\n- [Oxylabs Web Scraper API vs ScrapeAtlas](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapeatlas.md)\n- [ScrapeAtlas vs ScrapeGraphAI](https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapegraphai.md)\n- [ScrapeAtlas vs ScraperAPI](https://www.anchorterminal.com/compare/scrapeatlas-vs-scraperapi.md)\n- [ScrapeAtlas vs Scrapewise](https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapewise.md)\n- [ScrapeAtlas vs Scrapfly](https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapfly.md)\n- [ScrapeAtlas vs ScrapingAnt](https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingant.md)\n- [ScrapeAtlas vs ScrapingBee](https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingbee.md)\n- [ScrapeAtlas vs Scrapingdog](https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingdog.md)\n- [ScrapeAtlas vs Spider](https://www.anchorterminal.com/compare/scrapeatlas-vs-spider-cloud.md)\n- [ScrapeAtlas vs ZenRows](https://www.anchorterminal.com/compare/scrapeatlas-vs-zenrows.md)\n- [ScrapeAtlas vs Zyte API](https://www.anchorterminal.com/compare/scrapeatlas-vs-zyte.md)\n- [Apify MCP Server vs Firecrawl MCP](https://www.anchorterminal.com/compare/apify-mcp-vs-firecrawl-mcp.md)\n- [Firecrawl MCP vs jevcrawl](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-jevcrawl.md)\n- [Firecrawl MCP vs Scrape.do](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrape-do.md)\n- [Firecrawl MCP vs Scrapfly](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapfly.md)\n- [Firecrawl MCP vs ScrapingAnt](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingant.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-30",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Firecrawl MCP vs ScrapeAtlas",
        "url": ""
      }
    ],
    "description": "Firecrawl MCP scores 78 (A) to ScrapeAtlas's 63 (B) for extraction. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Firecrawl MCP A 78",
      "ScrapeAtlas B 63",
      "scores"
    ],
    "h1": "Firecrawl MCP vs ScrapeAtlas",
    "image": "https://www.anchorterminal.com/assets/og/compare-firecrawl-mcp-vs-scrapeatlas.png",
    "path": "/compare/firecrawl-mcp-vs-scrapeatlas",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Firecrawl MCP vs ScrapeAtlas for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-30",
    "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeatlas"
  },
  "tokens": {
    "markdown": 3350,
    "slim": 780
  },
  "version": 1
}
