{
  "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",
      "dns": "firecrawl-mcp.grade.anchorterminal.com",
      "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-27",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 75,
        "grade": "BB",
        "agentReady": true,
        "rank": 74,
        "ranked": true,
        "rankOf": 1520,
        "categoryRank": 4,
        "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-11-01"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-10-27. firecrawl-mcp 3.36.0, a minor release, makes local HTTP mode (`HTTP_STREAMABLE_SERVER=true` or `SSE_LOCAL=true`) answer 403 to any `Host` or `Origin` other than localhost, the address in `HOST` and the hosts in the new `FIRECRAWL_MCP_ALLOWED_HOSTS`, so a server reached under a LAN address or a reverse-proxy name stops answering until that variable is set. The CHANGELOG lists it under Changed on the day, not marked breaking, and no earlier notice was found. It closes a DNS-rebinding path and `FIRECRAWL_MCP_ALLOWED_HOSTS=*` restores the old behaviour, so 3 points, the floor, as zenrows was read on 1 November 2026. https://github.com/firecrawl/firecrawl-mcp-server/blob/main/CHANGELOG.md"
        ],
        "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",
          "Four partial incidents in the 90 days to 1 November 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.36.0 on 27 October 2026, after 43 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; `firecrawl_crawl` and `firecrawl_agent` are marked not idempotent, so don't retry them blindly",
          "Check the URL before scraping. Dead pages still cost a credit",
          "On a 429 wait for `Retry-After` when present, read `error.code` and `retryAfterSeconds` in structuredContent, 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": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 75
          }
        ],
        "editorialScores": {
          "ergonomics": 92,
          "maintenance": 87,
          "payments": 50,
          "reliability": 78,
          "schema": 91,
          "security": 70,
          "transparency": 60
        },
        "provenanceScore": 90,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-11-01",
          "oldest": "2026-11-01",
          "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-11-01",
        "score": 90
      },
      "requirements": {
        "setupChecked": true,
        "complianceChecked": true,
        "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-11-11T06:59:37.564256341Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 295,
          "lastNote": "initialize answered",
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.99,
          "p50ms24h": 267,
          "p95ms24h": 363,
          "samples24h": 244,
          "samples30d": 7731,
          "days": [
            {
              "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": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 243,
              "ok": 243
            },
            {
              "date": "2026-11-08",
              "probes": 243,
              "ok": 243
            },
            {
              "date": "2026-11-09",
              "probes": 243,
              "ok": 243
            },
            {
              "date": "2026-11-10",
              "probes": 244,
              "ok": 244
            },
            {
              "date": "2026-11-11",
              "probes": 72,
              "ok": 72
            }
          ],
          "since": "2026-10-08T00:00:00Z"
        },
        "vendorStatus": {
          "page": "https://status.firecrawl.dev",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-11T05:34:46.427272904Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "firecrawl/firecrawl-mcp-server",
            "version": "v3.36.1",
            "released": "2026-11-03",
            "seenAt": "2026-11-11T05:57:17.598866562Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.firecrawl/firecrawl-mcp-server",
            "version": "3.39.0",
            "seenAt": "2026-11-10T19:22:02.357354042Z"
          },
          {
            "registry": "npm",
            "name": "firecrawl-mcp",
            "version": "3.39.0",
            "seenAt": "2026-11-11T05:57:17.390159552Z"
          }
        ],
        "githubStars": 7797,
        "npmWeekly": 197377,
        "securityTxt": {
          "url": "https://firecrawl.dev/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-06-10T00:00:00.000Z",
          "checkedAt": "2026-11-10T16:08:41.698611103Z"
        },
        "llmsTxt": {
          "url": "https://docs.firecrawl.dev/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-10T15:43:06.599242721Z"
        },
        "domain": {
          "domain": "firecrawl.dev",
          "registered": "2024-04-08",
          "source": "https://pubapi.registry.google/rdap/domain/firecrawl.dev",
          "checkedAt": "2026-11-08T15:10:08.024306688Z"
        },
        "pages": [
          {
            "url": "https://firecrawl.dev/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-10T16:20:49.528177355Z",
            "changedAt": "2026-11-10T16:20:49.528177355Z",
            "fingerprint": "41493b1d817a"
          },
          {
            "url": "https://raw.githubusercontent.com/firecrawl/firecrawl-mcp-server/main/CHANGELOG.md",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-10T16:32:07.596341459Z",
            "changedAt": "2026-11-10T16:32:07.596341459Z",
            "fingerprint": "7936aed008bb"
          },
          {
            "url": "https://www.firecrawl.dev/pricing",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-10T16:39:45.250469764Z",
            "changedAt": "2026-11-10T16:39:45.250469764Z",
            "fingerprint": "a42a22e02016"
          },
          {
            "url": "https://firecrawl.dev/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-10T16:20:52.625483267Z",
            "changedAt": "2026-11-10T16:20:52.625483267Z",
            "fingerprint": "44aed534032c"
          },
          {
            "url": "https://firecrawl.dev/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-10T16:20:54.399517786Z",
            "changedAt": "2026-11-10T16:20:54.399517786Z",
            "fingerprint": "a273262703e9"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.firecrawl.dev/v2/mcp",
          "checkedAt": "2026-11-11T02:41:09.28271832Z",
          "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, or a targeted answer. 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. `url` may omit the scheme (`example.com/page`); it is read as https.\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": true,
                            "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": true,
                              "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."
                  },
                  "conversationId": {
                    "description": "conversationId from any earlier Firecrawl tool result in this conversation; after parallel calls, any one of theirs. Omit only on the first call of a conversation; the result returns one to pass on every later call.",
                    "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
                    "type": "string"
                  },
                  "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",
                        "query",
                        "audio"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "includeTags": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "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": {
                    "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."
                  },
                  "conversationId": {
                    "description": "Pass on later Firecrawl calls in this conversation.",
                    "type": "string"
                  },
                  "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."
                  },
                  "feedbackRefs": {
                    "description": "Retained results only: `[{provider, capability, feedbackRef}]` per call; pass a ref in `callRatings` of the feedback tool to rate that call."
                  },
                  "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."
                  },
                  "retryable": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Whether resending the same request can succeed; set when the API refused before any provider ran."
                  },
                  "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": "\nUse this when you need current or specific information from the web: recent events, latest releases and versions, prices, people and companies, statistics, or any fact that may have changed since your training data or that you are not sure of. Returns ranked results with query-relevant highlights; each web result is a title, URL, and description. Operators include quoted phrases, `-term`, `site:host`, `inurl:term`, `intitle:term`, and `related:host`; the set is non-exhaustive. `includeDomains` and `excludeDomains` are mutually exclusive hostname filters; categories limit result types to `research`, `pdf`, `developer`, or `gov`.\n\nFor a programming question, add `categories: [\"developer\"]`. It searches an index of public repositories, GitHub issues, merged pull requests, repository READMEs, and code documentation, and returns the results in `data.web` with `category: \"developer\"`.\n\nFor a legal or regulatory question, `categories: [\"gov\"]` returns results 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.\n\nAuthenticated search combines web results, semantic tool summaries and domain matches. Use sources: [\"alexandria\"] for semantic tools only. Authenticated searches always add alexandria to the sources, so sources: [\"web\"] also returns providers; domainTools: false turns off website-matched tools only. On an authenticated session, tool matches describe available structured-data capabilities, not executed data. toolDetail: \"compact\" (default) returns only provider, capability and description; \"summary\" adds metadata; \"full\" includes their input and output contracts. firecrawl_scrape with an alexandria body executes a selected capability; firecrawl_find_tools provides catalogue browsing and full contracts.\n\nReturns result groups in `data` and an operation `id`.\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"
                  },
                  "conversationId": {
                    "description": "conversationId from any earlier Firecrawl tool result in this conversation; after parallel calls, any one of theirs. Omit only on the first call of a conversation; the result returns one to pass on every later call.",
                    "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
                    "type": "string"
                  },
                  "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": true,
                            "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"
                      }
                    },
                    "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"
                  },
                  "conversationId": {
                    "description": "Pass on later Firecrawl calls in this conversation.",
                    "type": "string"
                  },
                  "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"
                  },
                  "conversationId": {
                    "description": "conversationId from any earlier Firecrawl tool result in this conversation; after parallel calls, any one of theirs. Omit only on the first call of a conversation; the result returns one to pass on every later call.",
                    "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
                    "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": true,
                        "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"
                  },
                  "conversationId": {
                    "description": "Pass on later Firecrawl calls in this conversation.",
                    "type": "string"
                  },
                  "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": 7130,
          "changedAt": "2026-09-28T21:55:47.203996335Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 7130,
            "counts": {
              "error": 0,
              "note": 0,
              "warn": 7
            },
            "findings": [
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "firecrawl_parse",
                "message": "19 parameters without a description: excludeTags, formats, includeTags, jsonOptions, jsonOptions.prompt, jsonOptions.schema and 13 more",
                "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 16 parameters has a description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC13",
                "severity": "warn",
                "tool": "firecrawl_parse",
                "message": "jsonOptions.schema (object with no properties)",
                "fix": "Declare the properties (or additionalProperties with a schema) and the array's items."
              },
              {
                "rule": "TC13",
                "severity": "warn",
                "tool": "firecrawl_search",
                "message": "scrapeOptions.jsonOptions.schema (object with no properties)",
                "fix": "Declare the properties (or additionalProperties with a schema) and the array's items."
              },
              {
                "rule": "TC22",
                "severity": "warn",
                "tool": "firecrawl_scrape",
                "message": "the definition is about 2,962 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,654 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              }
            ]
          }
        },
        "github": {
          "repo": "firecrawl/firecrawl-mcp-server",
          "checkedAt": "2026-11-09T10:24:20.829966509Z",
          "stars": 7785,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-09T09:58:11Z",
          "openIssues": 102,
          "openPRs": 90,
          "issuesOpened90d": 25,
          "issuesClosed90d": 2,
          "prsMerged90d": 177,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 46,
            "failure": 1,
            "other": 3,
            "latest": "success",
            "latestAt": "2026-11-09T09:57:38Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 23,
            "medianDays": 8
          }
        },
        "updatedAt": "2026-11-11T06:59:37.564256341Z"
      },
      "streak": {
        "days": 28,
        "from": "2026-10-14",
        "last": {
          "kind": "breaking",
          "date": "2026-10-14",
          "what": "v3.30.0 removed `agent_hints` from every tool's output schema and stopped sending `X-Firecrawl-Agent-Hints`",
          "source": "https://raw.githubusercontent.com/firecrawl/firecrawl-mcp-server/main/CHANGELOG.md"
        },
        "best": 28
      }
    },
    "answer": "Firecrawl MCP scores 75 (BB) on agent readiness against Nexscope's 46.2 (D), and leads in every scored category.",
    "b": {
      "slug": "nexscope",
      "name": "Nexscope",
      "vendor": "ECOCREATE TECHNOLOGY PTE. LTD.",
      "vendorUrl": "https://www.nexscope.ai",
      "kind": "platform",
      "category": "web-scrapers",
      "summary": "Nexscope is a hosted platform for ecommerce sellers with marketplace product, keyword and competitor data for Amazon, TikTok Shop, Walmart, Temu, 1688 and others, plus AI product images and video, through a web app, REST API and remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/nexscope",
      "markdownUrl": "https://www.anchorterminal.com/tools/nexscope.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/nexscope.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/nexscope.json",
      "dns": "nexscope.grade.anchorterminal.com",
      "repo": "https://github.com/nexscope-ai/nexscope-ecommerce-api",
      "license": "Proprietary hosted service under the Nexscope terms (last updated 8 October 2026), whose contracting party is ECOCREATE TECHNOLOGY PTE. LTD. of Singapore. The OpenAPI file's licence is 'Proprietary API; use subject to Nexscope Terms'. In github.com/nexscope-ai/nexscope-ecommerce-api only the example clients, validation scripts, tests and workflow are MIT. The API documentation, catalogue, definitions and sample data stay copyright Nexscope",
      "transports": [
        "streamable-http",
        "http"
      ],
      "remoteUrl": "https://api.nexscope.ai/mcp",
      "packages": [],
      "auth": "mixed",
      "authNotes": "The remote MCP server takes OAuth 2.1 (authorisation code with PKCE, scope `mcp:tools`) in clients that support it, or a Nexscope API key as `Authorization: Bearer nk-...`, which the tool pages call a compatibility option. The REST API takes the same key as a Bearer header. A person signs in and creates the key under API Access, API Keys. The full key is shown once, and keys can be expired, disabled or deleted, per the help page's troubleshooting. No key scopes, rotation rule or key-management API were found. Creative API key access needs an active subscription. Trial credits don't enable it. The OAuth metadata on api.nexscope.ai was not read (https://www.nexscope.ai/mcp-map/amazon-search, https://www.nexscope.ai/help/skills-external-access, https://github.com/nexscope-ai/nexscope-ecommerce-api, checked 2026-11-10).",
      "pricing": "paid",
      "pricingNotes": "Credits on a monthly subscription. A Free Trial gives 1,000 credits for 3 days with no card, at 1 API and 1 MCP request a second and 1 concurrent each, with no video API. Starter is $29 a month for 30,000 credits (3 requests a second, 2 concurrent), Growth $55 for 75,000 (5 and 4) and Pro $129 for 150,000 (10 and 8), each half price for the first period, with yearly billing and credits that reset monthly and don't roll over. Pay-as-you-go top-ups buy Data credits only, with no subscription. Each tool has its own credit cost, at least 10 for a Data API call. Amazon Search shows 'from 21 credits per call' and a recent average of 30. Refunds within 7 days if unused, per the terms. The home page listed Growth at $69 on the same day (https://www.nexscope.ai/pricing, https://www.nexscope.ai/mcp-map, https://www.nexscope.ai/terms, checked 2026-11-10).",
      "priceSummary": "$0.001 / credit",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 on the pricing page, the API quickstart, the MCP map, llms.txt, the visible part of the OpenAPI file or the GitHub repository on 2026-11-10. Credits come from a subscription or a Data top-up after a browser sign-in (https://www.nexscope.ai/pricing).",
        "endpoints": []
      },
      "toolCount": 382,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-10"
      },
      "docsUrl": "https://www.nexscope.ai/api-docs",
      "llmsTxt": "https://www.nexscope.ai/llms.txt",
      "openapi": "https://api.nexscope.ai/openapi.json",
      "registryName": "io.github.nexscope/ecommerce",
      "capabilities": [
        "web.extract",
        "shopping.search",
        "shopping.prices",
        "seo.keywords",
        "seo.backlinks",
        "search.serp",
        "image.generate",
        "image.edit",
        "video.generate",
        "video.image-to-video"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "mcp",
        "remote-mcp",
        "oauth",
        "api-key",
        "openapi",
        "llms-txt",
        "marketplace",
        "shopping",
        "images",
        "video",
        "credits",
        "subscription",
        "free-trial",
        "no-card",
        "new"
      ],
      "lastRelease": "2026-11-09",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 46.2,
        "grade": "D",
        "agentReady": false,
        "rank": 1191,
        "ranked": true,
        "rankOf": 1520,
        "categoryRank": 28,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 44,
          "maintenance": 65,
          "payments": 35,
          "reliability": 39,
          "schema": 64,
          "security": 41,
          "transparency": 41
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-10"
        },
        "negative": 0,
        "verdict": "An agent can reach Amazon, TikTok Shop, Temu, 1688 and other marketplace data, plus image and video models, on one credit balance through a remote MCP server with OAuth or a REST API with a public OpenAPI file. The connection loads 382 tools at once, and there is no status page, changelog or idempotency key.",
        "bestFor": "Agents that research ecommerce products, competitors, keywords, sourcing and patents across Amazon, TikTok Shop, Walmart, Temu, 1688 and other marketplaces, and that also make listing images and video, on one credit balance.",
        "strengths": [
          "Marketplace product, keyword, competitor and sourcing data across more than ten marketplaces behind one key and one MCP endpoint",
          "OAuth 2.1 with PKCE and a `mcp:tools` scope on the MCP server, or a Bearer key shown once",
          "A public OpenAPI 3.1 file and a GitHub repository with request and response definitions, samples and standard-library clients for every documented API",
          "Per-plan API and MCP request limits published, and a 3-day trial of 1,000 credits with no card",
          "1688 order, payment-link, receipt and cancel calls each need an explicit JSON `true` confirmation field"
        ],
        "weaknesses": [
          "The MCP connection advertises the full catalogue of 382 tools, with no toolsets or read-only subset",
          "No status page, SLA, public changelog or security.txt found",
          "No idempotency keys, and business errors answer HTTP 200 unless a header asks otherwise",
          "The privacy policy states no retention periods and names no hosting, AI or data suppliers",
          "Many Data definitions are field descriptors rather than JSON Schema, and the Amazon Search tool page omits the `keyword` argument its own examples pass"
        ],
        "agentNotes": [
          "Check the outer `code` is 0 before reading `data`, or send `X-Nexscope-Http-Status: semantic` to get HTTP error statuses.",
          "Call an image or video tool once, keep the `taskId`, and poll `nexscope_media_task_result`. A second call bills a second job.",
          "Read the tool's credit cost before a call. Each tool costs at least 10 credits and some cost over 300.",
          "Before you set a 1688 confirmation field to `true`, show the user the preview and get approval.",
          "If the server returns 429 or 503, wait for `Retry-After` when present and back off."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 46.2
          }
        ],
        "editorialScores": {
          "ergonomics": 44,
          "maintenance": 65,
          "payments": 35,
          "reliability": 39,
          "schema": 64,
          "security": 41,
          "transparency": 33
        },
        "provenanceScore": 48,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-10",
            "maintenance": "2026-11-10",
            "payments": "2026-11-10",
            "reliability": "2026-11-10",
            "schema": "2026-11-10",
            "security": "2026-11-10",
            "transparency": "2026-11-10"
          },
          "last": "2026-11-10",
          "oldest": "2026-11-10",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl --fail-with-body -X POST 'https://api.nexscope.ai/api/skill-api/v1/skills/amazon-search/run' \\\n  -H \"Authorization: Bearer $NEXSCOPE_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-Nexscope-Http-Status: semantic' \\\n  -d '{\"keyword\":\"phone case\",\"page\":1}'",
        "config": {
          "mcpServers": {
            "nexscope": {
              "headers": {
                "Authorization": "Bearer YOUR_NEXSCOPE_API_KEY"
              },
              "type": "streamableHttp",
              "url": "https://api.nexscope.ai/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/web.extract",
        "tool": "https://letme.dev/nexscope"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Nexscope credit (Starter)",
          "unit": "credit",
          "usd": 0.00097,
          "note": "$29 a month for 30,000 credits, half price in the first month. Credits reset monthly"
        },
        {
          "item": "Nexscope credit (Pro)",
          "unit": "credit",
          "usd": 0.00086,
          "note": "$129 a month for 150,000 credits"
        },
        {
          "item": "Amazon Search tool call (Starter)",
          "unit": "call",
          "usd": 0.029,
          "note": "A recent average of 30 credits, range 16 to 94, per the MCP tool page on 10 November 2026. About 20 results a page"
        },
        {
          "item": "Starter plan",
          "unit": "month",
          "usd": 29,
          "note": "30,000 credits, 3 API and 3 MCP requests a second, 2 concurrent each"
        }
      ],
      "provenance": {
        "legalEntity": "ECOCREATE TECHNOLOGY PTE. LTD.",
        "domain": "nexscope.ai",
        "domainRegistered": "2026-03-04",
        "domainNote": "RDAP (Identity Digital) gives nexscope.ai a registration date of 4 March 2026 through GoDaddy, with the registrant behind Domains By Proxy. The terms and privacy policy name ECOCREATE TECHNOLOGY PTE. LTD., 'a company incorporated in Singapore', with no registration number or street address.",
        "endpointOnVendorDomain": true,
        "terms": "https://www.nexscope.ai/terms",
        "privacy": "https://www.nexscope.ai/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-10",
        "notes": [
          "The terms (last updated 8 October 2026) name ECOCREATE TECHNOLOGY PTE. LTD. under the laws of Singapore with SIAC arbitration seated in Singapore, cap liability at the amount paid in the six months before a claim, promise no availability, permit the official APIs and MCP integrations within plan limits, forbid bots and scrapers outside them, and give notice of material changes through the service or by email.",
          "The privacy policy (last updated 8 October 2026) names the same company, says uploaded materials are not used to train AI models, names Google Analytics, Microsoft Clarity, Ahrefs Analytics, Google Ads, X advertising and FirstPromoter, lists hosting, storage, AI processing, payment, email, support and authentication providers only by type, gives no retention periods ('this policy does not specify a single deletion deadline for all data') and mentions no DPA.",
          "https://www.nexscope.ai/.well-known/security.txt answered a client error. No status page or changelog is linked from the home page, llms.txt, the API quickstart or the MCP map.",
          "robots.txt on www.nexscope.ai gives `*` and twelve named crawlers, ClaudeBot among them, the same rules and disallows /api/ and /share/. Nothing there was fetched. api.nexscope.ai publishes no robots.txt (/robots.txt answers a JSON login error). Only /openapi.json and one GET to /mcp were sent there, per the batch. The MCP registry's /robots.txt answered a client error.",
          "firstReleased is 2026-08-07, the date on Nexscope's launch post ('Updated Aug 07, 2026', no earlier publication date shown), which names API, MCP and Skills as the ways to connect an agent and 1,000 free starting credits. The API repository dates its snapshot of an already public directory of 225 APIs to 10 September 2026, and the OpenAPI version label is 2026-08-28-public-catalog-v1. The domain dates from 4 March 2026 and the npm `nexscope` skills CLI from 20 March 2026, but neither reaches the API. lastRelease is 2026-11-09, when the 1688 procurement API contracts were synced as released."
        ],
        "score": 48
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/nexscope.json",
      "live": {
        "slug": "nexscope",
        "probe": {
          "target": "https://api.nexscope.ai/mcp",
          "method": "get",
          "lastAt": "2026-11-11T06:59:50.048088824Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 305,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 271,
          "p95ms24h": 358,
          "samples24h": 43,
          "samples30d": 43,
          "days": [
            {
              "date": "2026-11-11",
              "probes": 43,
              "ok": 43
            }
          ],
          "since": "2026-11-11T02:53:20.057234625Z"
        },
        "githubStars": 18,
        "updatedAt": "2026-11-11T06:59:50.048088824Z"
      },
      "streak": {
        "days": 0,
        "from": "2026-11-11",
        "sinceWatching": true,
        "best": 0
      }
    },
    "edges": [
      {
        "by": 48,
        "category": "ergonomics",
        "leads": "firecrawl-mcp",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "27 tools in the full profile by the README's count (28 on the hosted endpoint with a key, per the contract snapshot), 3 on the keyless endpoint and 9 on the search-only endpoint, and env flags drop the feedback tools (23 of 25, the 11 to 30 band plus 8 for fixed subsets). Format selection, main-content filtering, page limits on map and crawl, and results over 20,000 estimated tokens handed off to retained storage instead of inline (20). Recovery payloads with next actions, and since 3.35.0 API refusals carry a machine-readable `code`, `status` and `retryAfterSeconds` in structuredContent, but schema mismatches reported in open issues (17 of 20). readOnlyHint or destructiveHint on all 28 tools of the hosted full profile, with monitor delete and interact stop marked destructive, and since 3.35.0 idempotentHint on the crawl, agent, interact and monitor tools. No idempotency keys for crawl or agent jobs (17 of 20). One required argument on most tools, and official SDKs in Python and Node (15).",
          "b": "Read on the MCP server, with the REST API where a line covers it. The MCP map lists 382 tools and says the category manifests 'narrow metadata for your integration; the MCP connection still advertises the full catalog'. That is more than 30 tools with no toolsets, dynamic loading or read-only subset found (5). Search tools page by `page` (about 20 results), with filters such as marketplace, category node, sort and device per tool, but no general pagination model or field selection, and output size depends on each tool (12 of 20). By default business errors answer HTTP 200 with an outer `code`. The `X-Nexscope-Http-Status: semantic` header maps them to HTTP statuses, the OpenAPI file names codes such as `DATA_IMAGE_DOWNLOAD_FAILED` and `CAPABILITY_BACKEND_UNAVAILABLE` in field text, and MCP errors aren't documented. SandBase earned 16 with typed bridge errors (11 of 20). Data calls only read. No idempotency keys and no readOnlyHint or destructiveHint documented. Async jobs return a `taskId` with a poll tool and a rule not to resubmit, and 1688 order, payment-link, receipt and cancel calls need an explicit JSON `true` confirmation (8 of 20). Few required parameters with defaults on most. No official SDK package, only standard-library clients in the repository for JavaScript and Python, which SoldFetch earned 8 for (8 of 15). 5+12+11+8+8 = 44."
        },
        "scores": {
          "a": 92,
          "b": 44
        }
      },
      {
        "by": 39,
        "category": "reliability",
        "leads": "firecrawl-mcp",
        "name": "Reliability",
        "reasons": {
          "a": "Better Stack status page at status.firecrawl.dev with history (20). Four incidents in the 90 days to 1 November 2026, all partial degradations of api.firecrawl.dev, the longest 56 minutes on the /interact `prompt` field on 27 August (06:00 to 06:56 UTC in the feed) and the others 7, 16 and 46 minutes, with none after 15 September. The 20 July /interact incident has left the window (20). Rate limits published per plan and endpoint, from 10 scrapes a minute on Free to 10,000 on Scale, plus concurrent browsers and a per-IP daily cap for keyless use, re-read on 1 November (15). The Errors reference, linked from the rate-limit page, says 429s carry `Retry-After` when available, marks every error retryable or not, and gives backoff advice per code. No idempotency keys for calls that start crawl, agent or monitor jobs (13 of 15). SLA on Enterprise only, per the pricing page, with no terms published (0). GA (10). 20 + 20 + 15 + 13 + 0 + 10 = 78.",
          "b": "Hosted lines, graded on the remote MCP server and the REST API at api.nexscope.ai. No status page is linked from the home page, llms.txt, the API quickstart or the MCP map, and none was found (0). With no page there is no incident history to read (5). The pricing page publishes requests a second and concurrency per plan, the same for API and MCP, with 1 and 1 on the trial, 3 and 2 on Starter, 5 and 4 on Growth, 10 and 8 on Pro (15). The quickstart calls 429 an 'execution admission rate limit' and says to honour `Retry-After` on 429 and 503 when present. No idempotency key exists. The repository says 'Do not blindly retry POST requests' and to check whether a task was created before resubmitting, and the MCP tool pages say a reconnecting client should query existing async work rather than resubmit. SoldFetch earned 15 with idempotency keys and SandBase 11 with keys on some writes, so guidance without keys earns 9 (9 of 15). No SLA, and the terms say 'We cannot guarantee the Service will be available at all times' (0). No beta or preview label on the API or the MCP server (10). 0+5+15+9+0+10 = 39."
        },
        "scores": {
          "a": 78,
          "b": 39
        }
      },
      {
        "by": 34,
        "category": "transparency",
        "leads": "firecrawl-mcp",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "MIT (30). Zero data retention on Enterprise and a DPA from Standard up, but the privacy policy, re-read on 1 November, still dates from 26 December 2024, keeps personal data until you ask for deletion and gives no retention period for scraped content (12 of 30). The v1 endpoints are kept as legacy alongside v2 and the pricing change of 4 September 2026 was dated, but we found no deprecation policy (8 of 20). Data stored in the United States, and Stripe, PostHog, Crisp and Vercel Analytics are named, with no full subprocessor list (10 of 20).",
          "b": "The editorial half. The service is closed. The terms (8 October 2026) name ECOCREATE TECHNOLOGY PTE. LTD. under Singapore law with no registration number or address. The repository's MIT licence covers client code only, and the documentation and definitions stay copyright Nexscope. Scrapewise earned 15 for closed terms with MIT side code (15 of 30). The privacy policy (8 October 2026) says uploads are not used to train AI models and that connected selling-partner data is deleted or de-identified when no longer needed, but 'this policy does not specify a single deletion deadline for all data', and no DPA was found. SandBase took 12 with no retention periods (10 of 30). No deprecation policy or dated notices. The terms promise notice of material changes before they take effect where practicable, and the MCP map keeps a legacy v1 beside v2 (3 of 20). Analytics and advertising vendors are named (Google Analytics, Microsoft Clarity, Ahrefs, Google Ads, X, FirstPromoter), but hosting, AI processing and payment providers only by type, with no data locations. The repository's source notes say supplier references 'are presented as Nexscope', so the data suppliers go unnamed except LinkFox Agent for 1688 authorisation (5 of 20). 15+10+3+5 = 33. The provenance half is computed from the provenance block."
        },
        "scores": {
          "a": 75,
          "b": 41
        }
      },
      {
        "by": 29,
        "category": "security",
        "leads": "firecrawl-mcp",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "OAuth on the hosted endpoint `/v2/mcp-oauth`, a separate OAuth identity for the search-only endpoint, and plain revocable keys as `Authorization: Bearer`. Keys locked to endpoints and formats, and IP allowlists, are Enterprise only (25 of 30). The README says never to put a key in the server URL. 3.29.1 removed the credential-in-path route from the repository's service image, and it was never documented as an option, so no deduction. 3.36.0 checks Host and Origin in local HTTP mode against DNS rebinding. Keyless and search-only surfaces limit what a session can do, write tools carry destructiveHint, and Alexandria provider terms need explicit user consent and `confirmed: true` (18 of 20). Retained Alexandria results tell the model that source content is data, not instructions, and Enterprise Threat Protection blocks risky URLs, off by default. The API's opt-in `checkPromptInjection` classifier is now a top-level scrape option for any format, markdown included, and for crawl, search and monitors (+4 credits, 403 `SCRAPE_PROMPT_INJECTION_DETECTED`). The MCP tool schemas still don't expose it, so an agent using this server can't turn it on (8 of 15). firecrawl_credit_usage shows spend, by endpoint and by day since 3.34.0, but its description says it can't attribute single jobs, URLs or MCP clients, and we found no per-call log for operators (5 of 15). SOC 2 Type II on the Enterprise page, and security.txt valid to 10 June 2027 with a Bugcrowd vulnerability disclosure programme, re-read on 1 November. CVE-2026-116066 (High in GitHub's unreviewed database, published 25 October), a DNS-rebinding SSRF in the Firecrawl API's Playwright service before 2.11.586, was fixed in a public commit on 21 October that cites issue #5256. No bug bounty found (14 of 20).",
          "b": "The MCP server takes OAuth 2.1 with PKCE and one scope, `mcp:tools`, per the tool pages, or a Bearer `nk-` API key. Keys are created by a person under API Access, shown once, and can be expired, disabled or deleted, with no scopes or rotation found. The OAuth metadata on api.nexscope.ai wasn't read. No query-string key option was found. Manifold earned 22 with OAuth and hashed keys whose storage it documents (20 of 30). Most tools read. Writes exist (1688 procurement on the user's own buyer account, Amazon Ads entity operations through an owned connection, paid generation jobs), and the 1688 calls need an explicit JSON `true` per action after a preview, with the guide saying to get the user's approval first. Credits cap spend. No read-only key or tool allowlist (12 of 20). Tools return third-party listings, reviews, social posts and web pages, and no prompt-injection guidance was found. Manifold, the closest marketing-data MCP, took 0 (0). The Account credits and Account usage APIs, `costToken` in data responses and credits charged on task results give per-call visibility. No key-level audit was found (9 of 15). security.txt answered a client error. No disclosure policy, bug bounty or certification found (0 of 20). 20+12+0+9+0 = 41."
        },
        "scores": {
          "a": 70,
          "b": 41
        }
      },
      {
        "by": 27,
        "category": "schema",
        "leads": "firecrawl-mcp",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "Public OpenAPI at docs.firecrawl.dev/api-reference/v2-openapi.json (and v1), and zod schemas on every MCP tool (25). llms.txt and Markdown docs (10). The README and server instructions say when not to use a tool, for example to look elsewhere when a browser session must be driven step by step across many calls, and 3.33.4 added when-to-use sentences to the search and scrape descriptions (18 of 20). Typed inputs with enums, but open issue #325 counts 132 parameters with no description and #373 reports a published schema that disagrees with the API, per the 1 October check, not re-read on 1 November. 3.35.0 briefly advertised record-typed inputs as closed empty objects, fixed in 3.36.0 the next day (11 of 15). Examples throughout, keyless failures return structured recovery payloads with `next_actions` and `signup_url`, and an Errors reference lists each HTTP status and error string with cause, remedy and whether to retry (15 of 15). A CHANGELOG and firecrawl.dev/changelog. The CHANGELOG now has dated entries for 3.29.0 to 3.36.0, but still skips 3.22 to 3.24 and 3.26 to 3.28 and lists 3.25.0 as unreleased (12 of 15).",
          "b": "A public OpenAPI 3.1 file at api.nexscope.ai/openapi.json, about 3.8 MB, linked from the quickstart. Visible request bodies are typed with required fields, patterns, enums and `additionalProperties: false`, but responses are open `data` objects and the components section, with the security scheme and the shared error response, wasn't reached. In the repository 166 of 252 request definitions are field descriptors rather than JSON Schema. The hosted tools/list wasn't read. SoldFetch took 17 with untyped responses and SandBase 22 with components unread (19 of 25). llms.txt on www.nexscope.ai and Markdown references for every API in the repository (10). MCP tool descriptions are one line ('Find Amazon products by keyword and marketplace. Results come back as structured JSON.'), with no when-not-to-use. The repository's references carry long trigger text ('trigger this skill whenever their need involves real-time Amazon search results'), not guidance on when to pick another tool (10 of 20). Tool pages list types, defaults, enums and length limits, but the Amazon Search page marks no argument required and omits the `keyword` its own examples pass, and many limits sit in prose (8 of 15). Every API has a request sample, a response fixture and cURL, JavaScript and Python clients, though most fixtures are labelled historical. Errors are an HTTP table, two named codes (11209, 12001) and a semantic error response whose schema wasn't read. MCP errors aren't documented (10 of 15). Path versioning under /v1, MCP v2 beside a legacy v1, and a dated OpenAPI version label, but no public changelog. SandBase earned 7 on the same pattern (7 of 15). 19+10+10+8+10+7 = 64."
        },
        "scores": {
          "a": 91,
          "b": 64
        }
      },
      {
        "by": 22,
        "category": "maintenance",
        "leads": "firecrawl-mcp",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "firecrawl-mcp 3.36.0 on 27 October 2026, matching the registry (30). 43 version bumps in the 90 days from 3 August to 1 November, 12 of them since 17 October (20). Reported bugs from July and August (#325, #357, #373) show no fix in the repository's commits to 29 October. Issue states and reply times couldn't be read on 1 November (12 of 25, per the 1 October check). io.github.firecrawl/firecrawl-mcp-server at 3.36.0 in the official registry under a GitHub-verified namespace, published 27 October and marked latest (15). CI builds and tests on push and pull request to main, with npm trusted publishing and, since 23 October, a signed container image (10). 30 + 20 + 12 + 15 + 10 = 87.",
          "b": "Read as a closed service with a public documentation repository. The repository synced the released 1688 procurement contracts on 9 November 2026 and committed again on 10 November (30). No releases or changelog. The dated record is the registry's four versions on 14 and 16 October, repository commits on 8, 9, 20 and 29 October and 2, 9 and 10 November, and source notes dating WooCommerce (29 October) and design search (2 November) additions. SoldFetch earned 10 for dated commits without releases (10 of 20). No public changelog. Support is service@nexscope.ai, WhatsApp and a booked call, untested. The repository's one merged pull request came from the organisation itself, and GitHub's API refused us, so issues weren't read (5 of 15). The official MCP registry lists `io.github.nexscope/ecommerce`, active, latest 1.0.3 of 16 October 2026, read first-hand (15). A CI workflow runs offline catalogue validation and unit tests on standard-library clients with no dependencies. The run results weren't read (5 of 10). 30+10+5+15+5 = 65."
        },
        "scores": {
          "a": 87,
          "b": 65
        }
      }
    ],
    "facts": [
      {
        "a": "MCP server",
        "b": "Platform",
        "name": "Kind"
      },
      {
        "a": "Firecrawl (Mendable)",
        "b": "ECOCREATE TECHNOLOGY PTE. LTD.",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.firecrawl.dev/v2/mcp",
        "b": "https://api.nexscope.ai/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "stdio, Streamable HTTP, SSE (legacy)",
        "b": "Streamable HTTP, HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT",
        "b": "Proprietary hosted service under the Nexscope terms (last updated 8 October 2026), whose contracting party is ECOCREATE TECHNOLOGY PTE. LTD. of Singapore. The OpenAPI file's licence is 'Proprietary API; use subject to Nexscope Terms'. In github.com/nexscope-ai/nexscope-ecommerce-api only the example clients, validation scripts, tests and workflow are MIT. The API documentation, catalogue, definitions and sample data stay copyright Nexscope",
        "name": "Licence"
      },
      {
        "a": "27",
        "b": "382",
        "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.nexscope/ecommerce",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-27",
        "b": "2026-11-09",
        "name": "Last release"
      },
      {
        "a": "2024-11-05",
        "b": "not read yet",
        "name": "Terms last updated"
      },
      {
        "a": "2024-12-26",
        "b": "not read yet",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not read yet",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not read yet",
        "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 75 (BB) on agent readiness against Nexscope's 46.2 (D), and leads in every scored category.",
        "question": "Which is better for AI agents, Firecrawl MCP or Nexscope?"
      },
      {
        "answer": "Yes. Firecrawl MCP has a hosted endpoint at https://mcp.firecrawl.dev/v2/mcp and Nexscope at https://api.nexscope.ai/mcp.",
        "question": "Can an agent call Firecrawl MCP and Nexscope without installing anything?"
      },
      {
        "answer": "Firecrawl MCP is open source (MIT). No open-source release is listed for Nexscope.",
        "question": "Are Firecrawl MCP and Nexscope open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 78 against 39",
          "Schema \u0026 documentation, 91 against 64",
          "Agent ergonomics, 92 against 44",
          "Security \u0026 auth, 70 against 41",
          "Payments \u0026 pricing, 50 against 35",
          "Maintenance \u0026 community, 87 against 65",
          "Transparency \u0026 trust, 75 against 41"
        ],
        "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": null,
        "also": [
          "Free to start without a card",
          "No incidents deducted, where Firecrawl MCP loses 3 points for them"
        ],
        "goodFor": "Agents that research ecommerce products, competitors, keywords, sourcing and patents across Amazon, TikTok Shop, Walmart, Temu, 1688 and other marketplaces, and that also make listing images and video, on one credit balance.",
        "slug": "nexscope",
        "watchFor": "The MCP connection advertises the full catalogue of 382 tools, with no toolsets or read-only subset"
      }
    ],
    "history": {
      "firecrawl-mcp": [
        {
          "causes": [
            "event"
          ],
          "date": "2026-11-01",
          "delta": -3,
          "from": 78,
          "fromGrade": "A",
          "to": 75,
          "toGrade": "BB"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 77.9,
          "fromGrade": "BB",
          "to": 78,
          "toGrade": "A"
        },
        {
          "causes": [
            "evidence"
          ],
          "date": "2026-10-17",
          "delta": 2.6,
          "from": 75.3,
          "fromGrade": "BB",
          "to": 77.9,
          "toGrade": "BB"
        }
      ],
      "nexscope": null
    },
    "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/arcmira-vs-firecrawl-mcp.json",
        "title": "Arcmira vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/arcmira-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-firecrawl-mcp.json",
        "title": "Grounding with Bing Search vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-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/crawl4ai-vs-firecrawl-mcp.json",
        "title": "Crawl4AI vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/crawl4ai-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-firecrawl-mcp.json",
        "title": "fastCRW vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/crw-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/decodo-vs-firecrawl-mcp.json",
        "title": "Decodo Web Data API vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/decodo-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-mojeek.json",
        "title": "Firecrawl MCP vs Mojeek Web Search API",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-mojeek"
      },
      {
        "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-outcrawl.json",
        "title": "Firecrawl MCP vs Outcrawl",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-outcrawl"
      },
      {
        "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-perplexity-search-api.json",
        "title": "Firecrawl MCP vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-perplexity-search-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-qovia.json",
        "title": "Firecrawl MCP vs Qovia",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-qovia"
      },
      {
        "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-specstream.json",
        "title": "Firecrawl MCP vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-specstream"
      },
      {
        "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-webscraping-ai.json",
        "title": "Firecrawl MCP vs WebScraping.AI",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-webscraping-ai"
      },
      {
        "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/browseract-vs-firecrawl-mcp.json",
        "title": "BrowserAct vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/browseract-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browseract-vs-nexscope.json",
        "title": "BrowserAct vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/browseract-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/context-dev-vs-nexscope.json",
        "title": "Context.dev vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/context-dev-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crawl4ai-vs-nexscope.json",
        "title": "Crawl4AI vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/crawl4ai-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-nexscope.json",
        "title": "fastCRW vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/crw-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/decodo-vs-nexscope.json",
        "title": "Decodo Web Data API vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/decodo-vs-nexscope"
      },
      {
        "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-nexscope.json",
        "title": "Diffbot vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/diffbot-vs-nexscope"
      },
      {
        "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-scrapeatlas.json",
        "title": "Firecrawl MCP vs ScrapeAtlas",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeatlas"
      },
      {
        "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-soldfetch.json",
        "title": "Firecrawl MCP vs SoldFetch",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-soldfetch"
      },
      {
        "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-nexscope.json",
        "title": "jevcrawl vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/jevcrawl-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microlink-vs-nexscope.json",
        "title": "Microlink vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/microlink-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-olostep.json",
        "title": "Nexscope vs Olostep",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-olostep"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-outcrawl.json",
        "title": "Nexscope vs Outcrawl",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-outcrawl"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-oxylabs-web-scraper.json",
        "title": "Nexscope vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-printfriendly-mcp.json",
        "title": "Nexscope vs PrintFriendly MCP server",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-printfriendly-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-qovia.json",
        "title": "Nexscope vs Qovia",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-qovia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapeatlas.json",
        "title": "Nexscope vs ScrapeAtlas",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapeatlas"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapegraphai.json",
        "title": "Nexscope vs ScrapeGraphAI",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapegraphai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapeops.json",
        "title": "Nexscope vs ScrapeOps Proxy API Aggregator",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapeops"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scraperapi.json",
        "title": "Nexscope vs ScraperAPI",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scraperapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapewise.json",
        "title": "Nexscope vs Scrapewise",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapewise"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapfly.json",
        "title": "Nexscope vs Scrapfly",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapfly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingant.json",
        "title": "Nexscope vs ScrapingAnt",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingbee.json",
        "title": "Nexscope vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingdog.json",
        "title": "Nexscope vs Scrapingdog",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-soldfetch.json",
        "title": "Nexscope vs SoldFetch",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-soldfetch"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-spider-cloud.json",
        "title": "Nexscope vs Spider",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-spider-cloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-webscraping-ai.json",
        "title": "Nexscope vs WebScraping.AI",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-webscraping-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-zenrows.json",
        "title": "Nexscope vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-zyte.json",
        "title": "Nexscope vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/nexscope-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-microlink.json",
        "title": "Firecrawl MCP vs Microlink",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-microlink"
      },
      {
        "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"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 39,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 78,
        "key": "reliability",
        "name": "Reliability",
        "nexscope": 39,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 27,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 91,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "nexscope": 64,
        "weight": 13
      },
      {
        "by": 48,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 92,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "nexscope": 44,
        "weight": 13
      },
      {
        "by": 29,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 70,
        "key": "security",
        "name": "Security \u0026 auth",
        "nexscope": 41,
        "weight": 14
      },
      {
        "by": 15,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 50,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "nexscope": 35,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 22,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 87,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "nexscope": 65,
        "weight": 7
      },
      {
        "by": 34,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 75,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "nexscope": 41,
        "weight": 7
      }
    ],
    "summary": "Firecrawl MCP scores 75 (BB) on agent readiness against Nexscope's 46.2 (D), and leads in every scored category. Both do extraction.",
    "tasks": null,
    "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.",
      "nexscope": "An agent can reach Amazon, TikTok Shop, Temu, 1688 and other marketplace data, plus image and video models, on one credit balance through a remote MCP server with OAuth or a REST API with a public OpenAPI file. The connection loads 382 tools at once, and there is no status page, changelog or idempotency key."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-nexscope",
    "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-nexscope.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-nexscope.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-nexscope.min.md"
  },
  "markdown": "Firecrawl MCP scores 75 (BB) on agent readiness against Nexscope's 46.2 (D), and leads in every scored category. Both do extraction.\n\n- Firecrawl MCP: grade BB, 75/100, rank #74 of 1520. Markdown https://www.anchorterminal.com/tools/firecrawl-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/firecrawl-mcp.json\n- Nexscope: grade D, 46.2/100, rank #1191 of 1520. Markdown https://www.anchorterminal.com/tools/nexscope.md · JSON https://www.anchorterminal.com/api/v1/tools/nexscope.json\n- Best web scraping and crawling APIs for AI agents: https://www.anchorterminal.com/best/web-scrapers/index.md\n- All 533 scrapers comparisons: https://www.anchorterminal.com/compare/web-scrapers/index.md\n\n## Which one, for what\n\n### Firecrawl MCP (BB)\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 39\n- Schema \u0026 documentation, 91 against 64\n- Agent ergonomics, 92 against 44\n- Security \u0026 auth, 70 against 41\n- Payments \u0026 pricing, 50 against 35\n- Maintenance \u0026 community, 87 against 65\n- Transparency \u0026 trust, 75 against 41\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### Nexscope (D)\n\nGood for: Agents that research ecommerce products, competitors, keywords, sourcing and patents across Amazon, TikTok Shop, Walmart, Temu, 1688 and other marketplaces, and that also make listing images and video, on one credit balance.\n\nAlso in its favour:\n- Free to start without a card\n- No incidents deducted, where Firecrawl MCP loses 3 points for them\n\nWatch for: The MCP connection advertises the full catalogue of 382 tools, with no toolsets or read-only subset\n\n\n## Why the edge\n\n### Agent ergonomics: Firecrawl MCP +48\n\n- Firecrawl MCP (92): 27 tools in the full profile by the README's count (28 on the hosted endpoint with a key, per the contract snapshot), 3 on the keyless endpoint and 9 on the search-only endpoint, and env flags drop the feedback tools (23 of 25, the 11 to 30 band plus 8 for fixed subsets). Format selection, main-content filtering, page limits on map and crawl, and results over 20,000 estimated tokens handed off to retained storage instead of inline (20). Recovery payloads with next actions, and since 3.35.0 API refusals carry a machine-readable `code`, `status` and `retryAfterSeconds` in structuredContent, but schema mismatches reported in open issues (17 of 20). readOnlyHint or destructiveHint on all 28 tools of the hosted full profile, with monitor delete and interact stop marked destructive, and since 3.35.0 idempotentHint on the crawl, agent, interact and monitor tools. No idempotency keys for crawl or agent jobs (17 of 20). One required argument on most tools, and official SDKs in Python and Node (15).\n- Nexscope (44): Read on the MCP server, with the REST API where a line covers it. The MCP map lists 382 tools and says the category manifests 'narrow metadata for your integration; the MCP connection still advertises the full catalog'. That is more than 30 tools with no toolsets, dynamic loading or read-only subset found (5). Search tools page by `page` (about 20 results), with filters such as marketplace, category node, sort and device per tool, but no general pagination model or field selection, and output size depends on each tool (12 of 20). By default business errors answer HTTP 200 with an outer `code`. The `X-Nexscope-Http-Status: semantic` header maps them to HTTP statuses, the OpenAPI file names codes such as `DATA_IMAGE_DOWNLOAD_FAILED` and `CAPABILITY_BACKEND_UNAVAILABLE` in field text, and MCP errors aren't documented. SandBase earned 16 with typed bridge errors (11 of 20). Data calls only read. No idempotency keys and no readOnlyHint or destructiveHint documented. Async jobs return a `taskId` with a poll tool and a rule not to resubmit, and 1688 order, payment-link, receipt and cancel calls need an explicit JSON `true` confirmation (8 of 20). Few required parameters with defaults on most. No official SDK package, only standard-library clients in the repository for JavaScript and Python, which SoldFetch earned 8 for (8 of 15). 5+12+11+8+8 = 44.\n\n### Reliability: Firecrawl MCP +39\n\n- Firecrawl MCP (78): Better Stack status page at status.firecrawl.dev with history (20). Four incidents in the 90 days to 1 November 2026, all partial degradations of api.firecrawl.dev, the longest 56 minutes on the /interact `prompt` field on 27 August (06:00 to 06:56 UTC in the feed) and the others 7, 16 and 46 minutes, with none after 15 September. The 20 July /interact incident has left the window (20). Rate limits published per plan and endpoint, from 10 scrapes a minute on Free to 10,000 on Scale, plus concurrent browsers and a per-IP daily cap for keyless use, re-read on 1 November (15). The Errors reference, linked from the rate-limit page, says 429s carry `Retry-After` when available, marks every error retryable or not, and gives backoff advice per code. No idempotency keys for calls that start crawl, agent or monitor jobs (13 of 15). SLA on Enterprise only, per the pricing page, with no terms published (0). GA (10). 20 + 20 + 15 + 13 + 0 + 10 = 78.\n- Nexscope (39): Hosted lines, graded on the remote MCP server and the REST API at api.nexscope.ai. No status page is linked from the home page, llms.txt, the API quickstart or the MCP map, and none was found (0). With no page there is no incident history to read (5). The pricing page publishes requests a second and concurrency per plan, the same for API and MCP, with 1 and 1 on the trial, 3 and 2 on Starter, 5 and 4 on Growth, 10 and 8 on Pro (15). The quickstart calls 429 an 'execution admission rate limit' and says to honour `Retry-After` on 429 and 503 when present. No idempotency key exists. The repository says 'Do not blindly retry POST requests' and to check whether a task was created before resubmitting, and the MCP tool pages say a reconnecting client should query existing async work rather than resubmit. SoldFetch earned 15 with idempotency keys and SandBase 11 with keys on some writes, so guidance without keys earns 9 (9 of 15). No SLA, and the terms say 'We cannot guarantee the Service will be available at all times' (0). No beta or preview label on the API or the MCP server (10). 0+5+15+9+0+10 = 39.\n\n### Transparency \u0026 trust: Firecrawl MCP +34\n\n- Firecrawl MCP (75): MIT (30). Zero data retention on Enterprise and a DPA from Standard up, but the privacy policy, re-read on 1 November, still dates from 26 December 2024, keeps personal data until you ask for deletion and gives no retention period for scraped content (12 of 30). The v1 endpoints are kept as legacy alongside v2 and the pricing change of 4 September 2026 was dated, but we found no deprecation policy (8 of 20). Data stored in the United States, and Stripe, PostHog, Crisp and Vercel Analytics are named, with no full subprocessor list (10 of 20).\n- Nexscope (41): The editorial half. The service is closed. The terms (8 October 2026) name ECOCREATE TECHNOLOGY PTE. LTD. under Singapore law with no registration number or address. The repository's MIT licence covers client code only, and the documentation and definitions stay copyright Nexscope. Scrapewise earned 15 for closed terms with MIT side code (15 of 30). The privacy policy (8 October 2026) says uploads are not used to train AI models and that connected selling-partner data is deleted or de-identified when no longer needed, but 'this policy does not specify a single deletion deadline for all data', and no DPA was found. SandBase took 12 with no retention periods (10 of 30). No deprecation policy or dated notices. The terms promise notice of material changes before they take effect where practicable, and the MCP map keeps a legacy v1 beside v2 (3 of 20). Analytics and advertising vendors are named (Google Analytics, Microsoft Clarity, Ahrefs, Google Ads, X, FirstPromoter), but hosting, AI processing and payment providers only by type, with no data locations. The repository's source notes say supplier references 'are presented as Nexscope', so the data suppliers go unnamed except LinkFox Agent for 1688 authorisation (5 of 20). 15+10+3+5 = 33. The provenance half is computed from the provenance block.\n\n### Security \u0026 auth: Firecrawl MCP +29\n\n- Firecrawl MCP (70): OAuth on the hosted endpoint `/v2/mcp-oauth`, a separate OAuth identity for the search-only endpoint, and plain revocable keys as `Authorization: Bearer`. Keys locked to endpoints and formats, and IP allowlists, are Enterprise only (25 of 30). The README says never to put a key in the server URL. 3.29.1 removed the credential-in-path route from the repository's service image, and it was never documented as an option, so no deduction. 3.36.0 checks Host and Origin in local HTTP mode against DNS rebinding. Keyless and search-only surfaces limit what a session can do, write tools carry destructiveHint, and Alexandria provider terms need explicit user consent and `confirmed: true` (18 of 20). Retained Alexandria results tell the model that source content is data, not instructions, and Enterprise Threat Protection blocks risky URLs, off by default. The API's opt-in `checkPromptInjection` classifier is now a top-level scrape option for any format, markdown included, and for crawl, search and monitors (+4 credits, 403 `SCRAPE_PROMPT_INJECTION_DETECTED`). The MCP tool schemas still don't expose it, so an agent using this server can't turn it on (8 of 15). firecrawl_credit_usage shows spend, by endpoint and by day since 3.34.0, but its description says it can't attribute single jobs, URLs or MCP clients, and we found no per-call log for operators (5 of 15). SOC 2 Type II on the Enterprise page, and security.txt valid to 10 June 2027 with a Bugcrowd vulnerability disclosure programme, re-read on 1 November. CVE-2026-116066 (High in GitHub's unreviewed database, published 25 October), a DNS-rebinding SSRF in the Firecrawl API's Playwright service before 2.11.586, was fixed in a public commit on 21 October that cites issue #5256. No bug bounty found (14 of 20).\n- Nexscope (41): The MCP server takes OAuth 2.1 with PKCE and one scope, `mcp:tools`, per the tool pages, or a Bearer `nk-` API key. Keys are created by a person under API Access, shown once, and can be expired, disabled or deleted, with no scopes or rotation found. The OAuth metadata on api.nexscope.ai wasn't read. No query-string key option was found. Manifold earned 22 with OAuth and hashed keys whose storage it documents (20 of 30). Most tools read. Writes exist (1688 procurement on the user's own buyer account, Amazon Ads entity operations through an owned connection, paid generation jobs), and the 1688 calls need an explicit JSON `true` per action after a preview, with the guide saying to get the user's approval first. Credits cap spend. No read-only key or tool allowlist (12 of 20). Tools return third-party listings, reviews, social posts and web pages, and no prompt-injection guidance was found. Manifold, the closest marketing-data MCP, took 0 (0). The Account credits and Account usage APIs, `costToken` in data responses and credits charged on task results give per-call visibility. No key-level audit was found (9 of 15). security.txt answered a client error. No disclosure policy, bug bounty or certification found (0 of 20). 20+12+0+9+0 = 41.\n\n### Schema \u0026 documentation: Firecrawl MCP +27\n\n- Firecrawl MCP (91): Public OpenAPI at docs.firecrawl.dev/api-reference/v2-openapi.json (and v1), and zod schemas on every MCP tool (25). llms.txt and Markdown docs (10). The README and server instructions say when not to use a tool, for example to look elsewhere when a browser session must be driven step by step across many calls, and 3.33.4 added when-to-use sentences to the search and scrape descriptions (18 of 20). Typed inputs with enums, but open issue #325 counts 132 parameters with no description and #373 reports a published schema that disagrees with the API, per the 1 October check, not re-read on 1 November. 3.35.0 briefly advertised record-typed inputs as closed empty objects, fixed in 3.36.0 the next day (11 of 15). Examples throughout, keyless failures return structured recovery payloads with `next_actions` and `signup_url`, and an Errors reference lists each HTTP status and error string with cause, remedy and whether to retry (15 of 15). A CHANGELOG and firecrawl.dev/changelog. The CHANGELOG now has dated entries for 3.29.0 to 3.36.0, but still skips 3.22 to 3.24 and 3.26 to 3.28 and lists 3.25.0 as unreleased (12 of 15).\n- Nexscope (64): A public OpenAPI 3.1 file at api.nexscope.ai/openapi.json, about 3.8 MB, linked from the quickstart. Visible request bodies are typed with required fields, patterns, enums and `additionalProperties: false`, but responses are open `data` objects and the components section, with the security scheme and the shared error response, wasn't reached. In the repository 166 of 252 request definitions are field descriptors rather than JSON Schema. The hosted tools/list wasn't read. SoldFetch took 17 with untyped responses and SandBase 22 with components unread (19 of 25). llms.txt on www.nexscope.ai and Markdown references for every API in the repository (10). MCP tool descriptions are one line ('Find Amazon products by keyword and marketplace. Results come back as structured JSON.'), with no when-not-to-use. The repository's references carry long trigger text ('trigger this skill whenever their need involves real-time Amazon search results'), not guidance on when to pick another tool (10 of 20). Tool pages list types, defaults, enums and length limits, but the Amazon Search page marks no argument required and omits the `keyword` its own examples pass, and many limits sit in prose (8 of 15). Every API has a request sample, a response fixture and cURL, JavaScript and Python clients, though most fixtures are labelled historical. Errors are an HTTP table, two named codes (11209, 12001) and a semantic error response whose schema wasn't read. MCP errors aren't documented (10 of 15). Path versioning under /v1, MCP v2 beside a legacy v1, and a dated OpenAPI version label, but no public changelog. SandBase earned 7 on the same pattern (7 of 15). 19+10+10+8+10+7 = 64.\n\n### Maintenance \u0026 community: Firecrawl MCP +22\n\n- Firecrawl MCP (87): firecrawl-mcp 3.36.0 on 27 October 2026, matching the registry (30). 43 version bumps in the 90 days from 3 August to 1 November, 12 of them since 17 October (20). Reported bugs from July and August (#325, #357, #373) show no fix in the repository's commits to 29 October. Issue states and reply times couldn't be read on 1 November (12 of 25, per the 1 October check). io.github.firecrawl/firecrawl-mcp-server at 3.36.0 in the official registry under a GitHub-verified namespace, published 27 October and marked latest (15). CI builds and tests on push and pull request to main, with npm trusted publishing and, since 23 October, a signed container image (10). 30 + 20 + 12 + 15 + 10 = 87.\n- Nexscope (65): Read as a closed service with a public documentation repository. The repository synced the released 1688 procurement contracts on 9 November 2026 and committed again on 10 November (30). No releases or changelog. The dated record is the registry's four versions on 14 and 16 October, repository commits on 8, 9, 20 and 29 October and 2, 9 and 10 November, and source notes dating WooCommerce (29 October) and design search (2 November) additions. SoldFetch earned 10 for dated commits without releases (10 of 20). No public changelog. Support is service@nexscope.ai, WhatsApp and a booked call, untested. The repository's one merged pull request came from the organisation itself, and GitHub's API refused us, so issues weren't read (5 of 15). The official MCP registry lists `io.github.nexscope/ecommerce`, active, latest 1.0.3 of 16 October 2026, read first-hand (15). A CI workflow runs offline catalogue validation and unit tests on standard-library clients with no dependencies. The run results weren't read (5 of 10). 30+10+5+15+5 = 65.\n\n## Score by category\n\n| Category | Weight | Firecrawl MCP | Nexscope | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 78 | 39 | Firecrawl MCP +39 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 91 | 64 | Firecrawl MCP +27 |\n| Agent ergonomics | 13% (16.2 this run) | 92 | 44 | Firecrawl MCP +48 |\n| Security \u0026 auth | 14% (17.5 this run) | 70 | 41 | Firecrawl MCP +29 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 50 | 35 | Firecrawl MCP +15 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 87 | 65 | Firecrawl MCP +22 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 75 | 41 | Firecrawl MCP +34 |\n| Negative events | ≤15 | -3 | 0 | |\n| **Total** | | **75 · BB** | **46.2 · D** | |\n\n## Facts side by side\n\n| Fact | Firecrawl MCP | Nexscope |\n| --- | --- | --- |\n| Kind | MCP server | Platform |\n| Vendor | Firecrawl (Mendable) | ECOCREATE TECHNOLOGY PTE. LTD. |\n| Hosted endpoint | `https://mcp.firecrawl.dev/v2/mcp` | `https://api.nexscope.ai/mcp` |\n| Transports | stdio, Streamable HTTP, SSE (legacy) | Streamable HTTP, HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | MIT | Proprietary hosted service under the Nexscope terms (last updated 8 October 2026), whose contracting party is ECOCREATE TECHNOLOGY PTE. LTD. of Singapore. The OpenAPI file's licence is 'Proprietary API; use subject to Nexscope Terms'. In github.com/nexscope-ai/nexscope-ecommerce-api only the example clients, validation scripts, tests and workflow are MIT. The API documentation, catalogue, definitions and sample data stay copyright Nexscope |\n| Tools exposed | 27 | 382 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `io.github.firecrawl/firecrawl-mcp-server` | `io.github.nexscope/ecommerce` |\n| Last release | 2026-10-27 | 2026-11-09 |\n| Terms last updated | 2024-11-05 | not read yet |\n| Privacy policy last updated | 2024-12-26 | not read yet |\n| Customer content may train models | not found in the text | not read yet |\n| Terms restrict automated access | not found in the text | not read yet |\n| Terms restrict benchmarking | not found in the text | not read yet |\n| Terms or service can change without notice | yes | not read yet |\n| Arbitration or class-action waiver | yes | not read yet |\n| Popularity | 7.5k stars, 29k npm/wk | none |\n| Agent reviews | 3.5/5 (8) | none |\n\n## How the scores have moved\n\n### Firecrawl MCP\n\n- -3.0 on 1 November 2026 (A to BB): negative event\n- +0.1 on 27 October 2026 (BB to A): checklist\n- +2.6 on 17 October 2026: new evidence\n\n### Nexscope\n\nNo score change since it was listed.\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**Nexscope.** An agent can reach Amazon, TikTok Shop, Temu, 1688 and other marketplace data, plus image and video models, on one credit balance through a remote MCP server with OAuth or a REST API with a public OpenAPI file. The connection loads 382 tools at once, and there is no status page, changelog or idempotency key.\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; `firecrawl_crawl` and `firecrawl_agent` are marked not idempotent, so don't retry them blindly\n5. Check the URL before scraping. Dead pages still cost a credit\n6. On a 429 wait for `Retry-After` when present, read `error.code` and `retryAfterSeconds` in structuredContent, and check the Errors table's retryable column before retrying\n\n### Nexscope\n\n1. Check the outer `code` is 0 before reading `data`, or send `X-Nexscope-Http-Status: semantic` to get HTTP error statuses.\n2. Call an image or video tool once, keep the `taskId`, and poll `nexscope_media_task_result`. A second call bills a second job.\n3. Read the tool's credit cost before a call. Each tool costs at least 10 credits and some cost over 300.\n4. Before you set a 1688 confirmation field to `true`, show the user the preview and get approval.\n5. If the server returns 429 or 503, wait for `Retry-After` when present and back off.\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 Nexscope?\n\nFirecrawl MCP scores 75 (BB) on agent readiness against Nexscope's 46.2 (D), and leads in every scored category.\n\n### Can an agent call Firecrawl MCP and Nexscope without installing anything?\n\nYes. Firecrawl MCP has a hosted endpoint at https://mcp.firecrawl.dev/v2/mcp and Nexscope at https://api.nexscope.ai/mcp.\n\n### Are Firecrawl MCP and Nexscope open source?\n\nFirecrawl MCP is open source (MIT). No open-source release is listed for Nexscope.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/firecrawl-mcp-vs-nexscope.json, and with the fewest tokens: https://www.anchorterminal.com/compare/firecrawl-mcp-vs-nexscope.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"firecrawl-mcp\", \"b\": \"nexscope\"}`. From a terminal: `anchor compare firecrawl-mcp nexscope`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/firecrawl-mcp.json and https://www.anchorterminal.com/api/v1/tools/nexscope.json\n\n## Other comparisons with Firecrawl MCP or Nexscope\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- [Arcmira vs Firecrawl MCP](https://www.anchorterminal.com/compare/arcmira-vs-firecrawl-mcp.md)\n- [Grounding with Bing Search vs Firecrawl MCP](https://www.anchorterminal.com/compare/bing-grounding-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- [Crawl4AI vs Firecrawl MCP](https://www.anchorterminal.com/compare/crawl4ai-vs-firecrawl-mcp.md)\n- [fastCRW vs Firecrawl MCP](https://www.anchorterminal.com/compare/crw-vs-firecrawl-mcp.md)\n- [Decodo Web Data API vs Firecrawl MCP](https://www.anchorterminal.com/compare/decodo-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 Mojeek Web Search API](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-mojeek.md)\n- [Firecrawl MCP vs Olostep](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-olostep.md)\n- [Firecrawl MCP vs Outcrawl](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-outcrawl.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 Perplexity Search API](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-perplexity-search-api.md)\n- [Firecrawl MCP vs Qovia](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-qovia.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 SpecStream](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-specstream.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 WebScraping.AI](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-webscraping-ai.md)\n- [Firecrawl MCP vs You.com APIs](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-you-com-api.md)\n- [BrowserAct vs Firecrawl MCP](https://www.anchorterminal.com/compare/browseract-vs-firecrawl-mcp.md)\n- [BrowserAct vs Nexscope](https://www.anchorterminal.com/compare/browseract-vs-nexscope.md)\n- [Context.dev vs Nexscope](https://www.anchorterminal.com/compare/context-dev-vs-nexscope.md)\n- [Crawl4AI vs Nexscope](https://www.anchorterminal.com/compare/crawl4ai-vs-nexscope.md)\n- [fastCRW vs Nexscope](https://www.anchorterminal.com/compare/crw-vs-nexscope.md)\n- [Decodo Web Data API vs Nexscope](https://www.anchorterminal.com/compare/decodo-vs-nexscope.md)\n- [Diffbot vs Firecrawl MCP](https://www.anchorterminal.com/compare/diffbot-vs-firecrawl-mcp.md)\n- [Diffbot vs Nexscope](https://www.anchorterminal.com/compare/diffbot-vs-nexscope.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 ScrapeAtlas](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapeatlas.md)\n- [Firecrawl MCP vs ScraperAPI](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scraperapi.md)\n- [Firecrawl MCP vs SoldFetch](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-soldfetch.md)\n- [Firecrawl MCP vs ZenRows](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-zenrows.md)\n- [jevcrawl vs Nexscope](https://www.anchorterminal.com/compare/jevcrawl-vs-nexscope.md)\n- [Microlink vs Nexscope](https://www.anchorterminal.com/compare/microlink-vs-nexscope.md)\n- [Nexscope vs Olostep](https://www.anchorterminal.com/compare/nexscope-vs-olostep.md)\n- [Nexscope vs Outcrawl](https://www.anchorterminal.com/compare/nexscope-vs-outcrawl.md)\n- [Nexscope vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/nexscope-vs-oxylabs-web-scraper.md)\n- [Nexscope vs PrintFriendly MCP server](https://www.anchorterminal.com/compare/nexscope-vs-printfriendly-mcp.md)\n- [Nexscope vs Qovia](https://www.anchorterminal.com/compare/nexscope-vs-qovia.md)\n- [Nexscope vs ScrapeAtlas](https://www.anchorterminal.com/compare/nexscope-vs-scrapeatlas.md)\n- [Nexscope vs ScrapeGraphAI](https://www.anchorterminal.com/compare/nexscope-vs-scrapegraphai.md)\n- [Nexscope vs ScrapeOps Proxy API Aggregator](https://www.anchorterminal.com/compare/nexscope-vs-scrapeops.md)\n- [Nexscope vs ScraperAPI](https://www.anchorterminal.com/compare/nexscope-vs-scraperapi.md)\n- [Nexscope vs Scrapewise](https://www.anchorterminal.com/compare/nexscope-vs-scrapewise.md)\n- [Nexscope vs Scrapfly](https://www.anchorterminal.com/compare/nexscope-vs-scrapfly.md)\n- [Nexscope vs ScrapingAnt](https://www.anchorterminal.com/compare/nexscope-vs-scrapingant.md)\n- [Nexscope vs ScrapingBee](https://www.anchorterminal.com/compare/nexscope-vs-scrapingbee.md)\n- [Nexscope vs Scrapingdog](https://www.anchorterminal.com/compare/nexscope-vs-scrapingdog.md)\n- [Nexscope vs SoldFetch](https://www.anchorterminal.com/compare/nexscope-vs-soldfetch.md)\n- [Nexscope vs Spider](https://www.anchorterminal.com/compare/nexscope-vs-spider-cloud.md)\n- [Nexscope vs WebScraping.AI](https://www.anchorterminal.com/compare/nexscope-vs-webscraping-ai.md)\n- [Nexscope vs ZenRows](https://www.anchorterminal.com/compare/nexscope-vs-zenrows.md)\n- [Nexscope vs Zyte API](https://www.anchorterminal.com/compare/nexscope-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 Microlink](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-microlink.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-11-11",
    "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 Nexscope",
        "url": ""
      }
    ],
    "description": "Firecrawl MCP scores 75 (BB) to Nexscope's 46.2 (D) for extraction. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Firecrawl MCP BB 75",
      "Nexscope D 46.2",
      "scores"
    ],
    "h1": "Firecrawl MCP vs Nexscope",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/firecrawl-mcp-vs-nexscope",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Firecrawl MCP vs Nexscope for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-11",
    "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-nexscope"
  },
  "tokens": {
    "markdown": 7700,
    "slim": 1280
  },
  "version": 1
}
