{
  "data": {
    "a": {
      "slug": "bing-grounding",
      "name": "Grounding with Bing Search",
      "vendor": "Microsoft",
      "vendorUrl": "https://www.microsoft.com/bing/apis",
      "kind": "http-api",
      "category": "search",
      "summary": "Grounding with Bing Search is Microsoft's web search tool for agents in Foundry Agent Service. A Foundry model searches Bing during a Responses API run and returns an answer with URL citations, through the bing_grounding and web_search tools.",
      "url": "https://www.anchorterminal.com/tools/bing-grounding",
      "markdownUrl": "https://www.anchorterminal.com/tools/bing-grounding.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/bing-grounding.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/bing-grounding.json",
      "dns": "bing-grounding.grade.anchorterminal.com",
      "license": "Proprietary service under the customer's Microsoft agreement and the separate Grounding with Bing terms of use, which exclude it from the Microsoft Data Protection Addendum",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://{account}.services.ai.azure.com/api/projects/{project}/openai/v1/responses",
      "packages": [
        {
          "registry": "pypi",
          "name": "azure-ai-projects"
        },
        {
          "registry": "npm",
          "name": "@azure/ai-projects"
        }
      ],
      "auth": "oauth",
      "authNotes": "Microsoft Entra ID bearer token for the Foundry project (scope https://ai.azure.com/.default, for example through DefaultAzureCredential), with the Foundry User role to create and run agents. The bing_grounding tool also needs a Grounding with Bing resource whose key is stored in a project connection, created by someone with Contributor and Foundry Project Manager. The agent never holds the Bing key. The web_search tool needs no Bing resource or connection.",
      "pricing": "usage",
      "pricingNotes": "$14 per 1,000 transactions for Grounding with Bing Search and for Grounding with Bing Custom Search, counted as tool calls per run, plus the model deployment's token charges. No free tier found. An Azure subscription and a person's signup are needed first.",
      "priceSummary": "$14 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 on the Foundry web search and Bing tools pages, the Grounding with Bing pricing page or the terms of use (checked 2026-11-06). Billing runs through the Azure subscription.",
        "endpoints": []
      },
      "toolCount": 3,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://learn.microsoft.com/en-us/azure/foundry/agents/how-to/tools/web-search",
      "capabilities": [
        "web.search",
        "search.answer"
      ],
      "tags": [
        "hosted",
        "usage-priced",
        "closed-source",
        "enterprise",
        "card-required",
        "status-page",
        "python",
        "typescript"
      ],
      "lastRelease": "2026-11-02",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 63.7,
        "grade": "B",
        "agentReady": false,
        "rank": 502,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 15,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 61,
          "maintenance": 80,
          "payments": 20,
          "reliability": 68,
          "schema": 68,
          "security": 79,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "First-party Bing grounding inside Foundry Agent Service, called with Entra ID so the agent never holds a search key, at a published $14 per 1,000 transactions. The tools return a model's answer with citations, never the raw results, and data sent to them falls outside Microsoft's Data Protection Addendum and Azure's compliance boundary.",
        "bestFor": "Teams already building on Foundry Agent Service who want cited answers from Bing without handling a search key.",
        "strengths": [
          "Callers authenticate with Microsoft Entra ID and Foundry RBAC roles, and the Bing resource key stays in a project connection",
          "Price and limits published without a login, $14 per 1,000 transactions, 150 a second and 1 million a day",
          "Count, freshness, market and language parameters, and a Custom Search variant that limits grounding to chosen domains",
          "Docs say to treat web search results as untrusted input, and admins can turn web search off for a whole subscription"
        ],
        "weaknesses": [
          "The Bing tools never return raw results to developers, only a model-written answer with citation links",
          "The Data Protection Addendum does not apply and query data leaves the Azure compliance and geographic boundary",
          "No free tier, and a first call needs an Azure subscription, a Foundry project, a model deployment and, for bing_grounding, a paid Bing resource",
          "Terms forbid using Bing output to train or evaluate AI models and limit storing or caching it"
        ],
        "agentNotes": [
          "Use the citations in the response annotations as the sources; the tool output itself is not returned, and the terms require showing the URLs and the Bing query link",
          "Expect each run to bill one transaction per tool call at $14 per 1,000, plus model tokens, and set count and freshness in the tool configuration",
          "Treat cited page text as untrusted input and don't put secrets or personal data in prompts, since queries leave the Azure compliance boundary",
          "On 429 back off exponentially; no Retry-After header is documented for the tool"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 63.7
          }
        ],
        "editorialScores": {
          "ergonomics": 61,
          "maintenance": 80,
          "payments": 20,
          "reliability": 68,
          "schema": 68,
          "security": 79,
          "transparency": 45
        },
        "provenanceScore": 87,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install azure-ai-projects azure-identity",
        "http": "curl -X POST \"$FOUNDRY_PROJECT_ENDPOINT/openai/v1/responses\" \\\n  -H \"Authorization: Bearer $AGENT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\":\"'$FOUNDRY_MODEL_DEPLOYMENT_NAME'\",\"input\":\"How does Wikipedia explain Euler identity?\",\"tool_choice\":\"required\",\"tools\":[{\"type\":\"bing_grounding\",\"bing_grounding\":{\"search_configurations\":[{\"project_connection_id\":\"'$BING_PROJECT_CONNECTION_ID'\",\"count\":7,\"market\":\"en-US\",\"set_lang\":\"en\",\"freshness\":\"week\"}]}}]}'"
      },
      "letme": {
        "capability": "https://letme.dev/web.search",
        "tool": "https://letme.dev/bing-grounding"
      },
      "sameCompany": [
        "azure-openai",
        "azure-foundry-fine-tuning",
        "azure-ai-content-safety",
        "azure-speech-to-text",
        "azure-text-to-speech",
        "microsoft-agent-framework",
        "microsoft-execution-containers",
        "microsoft-entra-agent-id",
        "azure-key-vault",
        "azure-document-intelligence",
        "azure-devops-mcp",
        "microsoft-learn-mcp",
        "tokeneconomizer",
        "playwright-mcp",
        "azure-mcp",
        "azure-maps",
        "azure-translator",
        "microsoft-graph-calendar",
        "azure-blob-storage",
        "onedrive-sharepoint",
        "microsoft-teams",
        "dynamics-365-sales",
        "copilot-studio-mcp",
        "power-automate",
        "foundry-local",
        "microsoft-decision-1",
        "microsoft-advertising-api",
        "microsoft-excel-graph",
        "outlook-mail-graph",
        "microsoft-graph-people",
        "mage-vl-cowork"
      ],
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Grounding with Bing Search transaction",
          "unit": "1k-requests",
          "usd": 14,
          "note": "Counted as tool calls per run, plus the model deployment's token charges"
        },
        {
          "item": "Grounding with Bing Custom Search transaction",
          "unit": "1k-requests",
          "usd": 14,
          "note": "Same limits, 150 a second and 1 million a day"
        }
      ],
      "provenance": {
        "legalEntity": "Microsoft Corporation",
        "domain": "microsoft.com",
        "domainRegistered": "1991-05-02",
        "endpointOnVendorDomain": true,
        "terms": "https://www.microsoft.com/bing/apis/grounding-legal-enterprise",
        "privacy": "https://privacy.microsoft.com/en-us/privacystatement",
        "statusPage": "https://azure.status.microsoft/en-us/status",
        "changelog": "https://learn.microsoft.com/en-us/azure/foundry/whats-new-foundry",
        "securityTxt": "expired",
        "checked": "2026-11-06",
        "notes": [
          "The Foundry project endpoint is on services.ai.azure.com, a Microsoft domain. Domain registration date carried from the Azure listings' provenance.",
          "The Grounding with Bing terms of use (updated November 2025) are subject to the customer's Microsoft agreement (MCA, MBSA or MOSA) and name no separate contracting entity. They forbid using output on sites that block the customer's crawler, using links for crawling or scraping, and bypassing transaction limits.",
          "www.microsoft.com/.well-known/security.txt still carries Expires 2026-09-23T16:00:00.000Z on 6 November 2026.",
          "learn.microsoft.com/robots.txt allows the documentation paths read. The Azure status history page lists post-incident reviews for five years."
        ],
        "score": 87
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/bing-grounding.json",
      "live": {
        "slug": "bing-grounding",
        "probe": {
          "target": "https://{account}.services.ai.azure.com/api/projects/{project}/openai/v1/responses",
          "method": "get",
          "lastAt": "2026-11-07T18:20:13.927615013Z",
          "lastOk": false,
          "lastStatus": 0,
          "lastMs": 0,
          "lastNote": "invalid character \"{\" in host name",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 0
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 0
            }
          ],
          "outages": [
            {
              "start": "2026-11-06T22:45:07.390416052Z",
              "end": "0001-01-01T00:00:00Z",
              "note": "invalid character \"{\" in host name"
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@azure/ai-projects",
            "version": "2.10.0",
            "seenAt": "2026-11-06T23:11:06.900508365Z"
          },
          {
            "registry": "pypi",
            "name": "azure-ai-projects",
            "version": "2.10.0",
            "released": "2026-10-30",
            "seenAt": "2026-11-06T23:11:05.00335007Z"
          }
        ],
        "npmWeekly": 1368538,
        "pypiWeekly": 1896178,
        "securityTxt": {
          "url": "https://microsoft.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-10-27T16:00:00.000Z",
          "checkedAt": "2026-11-07T16:02:01.196666056Z"
        },
        "pages": [
          {
            "url": "https://www.microsoft.com/bing/apis/grounding-legal-enterprise",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:31:40.128456318Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ddf25722851a"
          }
        ],
        "updatedAt": "2026-11-07T18:20:13.927615013Z"
      }
    },
    "answer": "Firecrawl MCP scores 75 (BB) on agent readiness against Grounding with Bing Search's 63.7 (B), and leads in 6 of 7 scored categories. Grounding with Bing Search leads on security \u0026 auth.",
    "b": {
      "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": 72,
        "ranked": true,
        "rankOf": 1486,
        "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-07T18:20:25.154297244Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 328,
          "lastNote": "initialize answered",
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.99,
          "p50ms24h": 270,
          "p95ms24h": 350,
          "samples24h": 239,
          "samples30d": 7910,
          "days": [
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 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": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.firecrawl.dev",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:47:46.795460403Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "firecrawl/firecrawl-mcp-server",
            "version": "v3.36.1",
            "released": "2026-11-03",
            "seenAt": "2026-11-06T23:26:00.46548765Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.firecrawl/firecrawl-mcp-server",
            "version": "3.38.0",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "firecrawl-mcp",
            "version": "3.38.0",
            "seenAt": "2026-11-06T23:26:00.161211066Z"
          }
        ],
        "githubStars": 7769,
        "npmWeekly": 168149,
        "securityTxt": {
          "url": "https://firecrawl.dev/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-06-10T00:00:00.000Z",
          "checkedAt": "2026-11-07T16:01:18.805542113Z"
        },
        "llmsTxt": {
          "url": "https://docs.firecrawl.dev/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:29.646146739Z"
        },
        "domain": {
          "domain": "firecrawl.dev",
          "registered": "2024-04-08",
          "source": "https://pubapi.registry.google/rdap/domain/firecrawl.dev",
          "checkedAt": "2026-11-01T14:10:12.278466746Z"
        },
        "pages": [
          {
            "url": "https://firecrawl.dev/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:09:53.804645459Z",
            "changedAt": "2026-11-07T14:09:53.804645459Z",
            "fingerprint": "586cfa3166fe"
          },
          {
            "url": "https://raw.githubusercontent.com/firecrawl/firecrawl-mcp-server/main/CHANGELOG.md",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:20:52.237291922Z",
            "changedAt": "2026-11-07T14:20:52.237291922Z",
            "fingerprint": "f566e8706385"
          },
          {
            "url": "https://www.firecrawl.dev/pricing",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:28:36.203840903Z",
            "changedAt": "2026-11-07T14:28:36.203840903Z",
            "fingerprint": "222831078533"
          },
          {
            "url": "https://firecrawl.dev/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:09:56.502669591Z",
            "changedAt": "2026-11-07T14:09:56.502669591Z",
            "fingerprint": "5f4e48062094"
          },
          {
            "url": "https://firecrawl.dev/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:09:58.687410468Z",
            "changedAt": "2026-11-07T14:09:58.687410468Z",
            "fingerprint": "0704a7ff261b"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.firecrawl.dev/v2/mcp",
          "checkedAt": "2026-11-07T01:44:36.118960558Z",
          "status": "ok",
          "protocol": "2026-07-28",
          "tools": [
            {
              "name": "firecrawl_scrape",
              "title": "Firecrawl scrape",
              "description": "\nScrape one URL and return its content: markdown by default, or HTML, links, screenshots, branding data, a targeted answer, or JSON matching a supplied schema. Use it when the request identifies a page and needs its content or defined fields: the user gives a URL or names a page or PDF and wants it read or summarized, or wants prices, specs, contact details or a table from it. Use `firecrawl_search` when additional web sources are needed; on an authenticated session, `firecrawl_map` lists a site's URLs and `firecrawl_crawl` collects a set of pages. `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",
                        "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"
                  },
                  "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."
                  },
                  "scrape_id": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Identifier of the underlying scrape."
                  },
                  "screenshot": {
                    "description": "Screenshot of the page."
                  },
                  "success": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Whether the API call succeeded."
                  },
                  "summary": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Summary of the page content."
                  },
                  "tokenEstimateMethod": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "How `estimatedTokens` was derived."
                  },
                  "tools": {
                    "description": "Domain-matched Alexandria tools for the page, when `domainTools` is set."
                  },
                  "video": {
                    "description": "Video extracted from the page."
                  },
                  "warning": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Non-fatal warning about the result."
                  },
                  "workspaceId": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Workspace holding a retained result, for inspection through virtual Bash."
                  }
                },
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Firecrawl scrape"
              }
            },
            {
              "name": "firecrawl_search",
              "title": "Firecrawl web search",
              "description": "\nSearch web, news, or image sources and return ranked results with query-relevant highlights. Use it for current information, or to list businesses, people, products, jobs or events with websites, prices or contacts. Each web result is a title, URL, and description; use `firecrawl_scrape` on a result URL when the excerpt is not enough.\n\nAuthenticated search also returns matching Alexandria data providers in data.tools (companies, people, jobs, finance and filings, public records and government spending, real estate, places and restaurants, retail and prices, package registries and developer data, news, research, and more). Prefer a provider over scraping pages when the task needs the same fields across several entities, exact figures or timestamps, provenance, or many records; use web results when they already answer the question. Authenticated searches always add alexandria to the sources, so sources: [\"web\"] also returns providers; domainTools: false turns off website-matched tools only.\n\nOn an authenticated session, tool matches describe available capabilities; `firecrawl_find_tools` returns their contracts and `firecrawl_scrape` with an `alexandria` body executes a selected capability. Keyless sessions get no Alexandria matches in data.tools.\n\nFor a programming question, add `categories: [\"developer\"]`; its hits return in `data.web` with `category: \"developer\"`. For a legal or regulatory question, `categories: [\"gov\"]` returns hits in `data.web` with `category: \"gov\"` and cannot be combined with other categories; authenticated sessions also have `firecrawl_gov_search` as the dedicated tool. Verify gov results' issuer, jurisdiction, status, and version before citing current law. `categories: [\"research\"]` restricts web results to research-affiliated websites; the `firecrawl_research_*` tools are a separate surface over paper abstracts and full text (PubMed, bioRxiv, medRxiv, arXiv). Returns source-type result groups and usage metadata. Authenticated responses can include an `id` for optional search feedback.\n",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "additionalProperties": false,
                "properties": {
                  "categories": {
                    "description": "Limit results to specific source types. `research` restricts ordinary web results to research-affiliated websites and returns page snippets, which is separate from the `firecrawl_research_*` tools that search paper abstracts and full text across biomedical (PubMed, bioRxiv, medRxiv) and arXiv literature; `pdf` searches PDF results; `developer` searches an index built for coding agents over public repositories, GitHub issues, merged pull requests, repository READMEs, and code documentation; `gov` searches the Government Index of US federal, state, and local legal and regulatory sources, the index behind firecrawl_gov_search, and cannot be combined with other categories; gov hits can include historical versions, bill text, agency guidance, and third-party reproductions, so verify the issuer, jurisdiction, enacted/effective status, and version before citing current governing law, clarify a missing jurisdiction or ambiguous as-of date, and use general search for non-US questions or missing coverage (no hits does not establish that no applicable law exists). `developer` and `gov` return hits in `data.web` with `category` set to their name; the other categories also filter `data.web`.",
                    "items": {
                      "enum": [
                        "research",
                        "pdf",
                        "developer",
                        "gov"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "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"
                      },
                      "zeroDataRetention": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "sources": {
                    "description": "Search sources; authenticated sessions default to web + alexandria, keyless sessions to web only. Authenticated searches always add alexandria to the sources, so sources: [\"web\"] also returns providers; domainTools: false turns off website-matched tools only. enterprise zdr or anon searches do not add it. Use [\"alexandria\"] alone for provider discovery without web results.",
                    "items": {
                      "anyOf": [
                        {
                          "enum": [
                            "web",
                            "images",
                            "news",
                            "alexandria",
                            "exchange"
                          ],
                          "type": "string"
                        },
                        {
                          "additionalProperties": false,
                          "properties": {
                            "type": {
                              "enum": [
                                "web",
                                "images",
                                "news",
                                "alexandria",
                                "exchange"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "type"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "tbs": {
                    "type": "string"
                  },
                  "toolDetail": {
                    "description": "Compact by default. Compact returns only provider, capability and description; full includes contracts. Inspect selected compact tools with firecrawl_find_tools providers and capabilities.",
                    "enum": [
                      "compact",
                      "summary",
                      "full"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query",
                  "objective"
                ],
                "type": "object"
              },
              "outputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "additionalProperties": false,
                "properties": {
                  "agent_hints": {
                    "description": "Optional response guidance from the Firecrawl API.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "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": 7167,
          "changedAt": "2026-09-28T21:55:47.203996335Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 7167,
            "counts": {
              "error": 0,
              "note": 0,
              "warn": 9
            },
            "findings": [
              {
                "rule": "TC07",
                "severity": "warn",
                "tool": "firecrawl_search",
                "message": "the description is about 512 tokens",
                "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "firecrawl_parse",
                "message": "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 29 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_scrape",
                "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,977 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,676 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              }
            ]
          }
        },
        "github": {
          "repo": "firecrawl/firecrawl-mcp-server",
          "checkedAt": "2026-11-02T08:48:34.279225163Z",
          "stars": 7748,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-02T02:43:31Z",
          "openIssues": 102,
          "openPRs": 82,
          "issuesOpened90d": 27,
          "issuesClosed90d": 3,
          "prsMerged90d": 164,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 33,
            "failure": 1,
            "other": 16,
            "latest": "success",
            "latestAt": "2026-11-02T02:46:04Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 23,
            "medianDays": 8
          }
        },
        "updatedAt": "2026-11-07T18:20:25.154297244Z"
      }
    },
    "edges": [
      {
        "by": 31,
        "category": "ergonomics",
        "leads": "firecrawl-mcp",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Read as a server-side search tool inside an agent run. The tools return a model's answer with citations rather than raw results, and `search_context_size` sets how much context web search uses. A caller can't size or inspect the result set itself, since the Bing tools never return their output. Custom Search confines grounding to chosen domains without code (18 of 25). `count`, freshness, market and language filters, and domain restriction through Custom Search. No pagination or offset (13 of 20). Troubleshooting tables give causes and fixes for connection ID, RBAC and 429 problems, but the tools document no error codes (8 of 20). Searches only read, so a retry is safe apart from the per-transaction charge. No MCP annotations are documented for the toolbox's web search tool (10 of 20). The web_search route needs only a project, a model deployment and the Foundry User role. bing_grounding also needs a paid Bing resource and a project connection. SDKs in Python, C#, JavaScript and Java (12 of 15). Prompt caching gets no hits with the Bing tools, because they add a timestamp to every request. 18 + 13 + 8 + 10 + 12 = 61.",
          "b": "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)."
        },
        "scores": {
          "a": 61,
          "b": 92
        }
      },
      {
        "by": 30,
        "category": "payments",
        "leads": "firecrawl-mcp",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). $14 per 1,000 transactions for Grounding with Bing Search and Custom Search, published on microsoft.com without a login (20). No free tier for Grounding with Bing, and an Azure subscription needs a card, as on the Azure Translator listing (0). A person signs up for Azure, creates a Foundry project and, for bing_grounding, a Bing resource (0).",
          "b": "No x402, MPP or L402 in the README, pricing page or agent onboarding guide, re-read on 1 November (0). Plans are public with per-endpoint credit costs (1 a page, search 2 per 10 results, +4 for JSON formats), and $5 top-ups only on paid plans, so between plan-only and per-unit (15 of 20). Free plan with 1,000 credits a month, no card (20). The hosted keyless endpoint gives scrape, search and parse with no signup, but crawl, map and agent need a key. The agent onboarding guide adds key routes through Stripe Projects and, on supported platforms, a WorkOS ID-JAG assertion, both of which start from a person's existing login (15 of 20)."
        },
        "scores": {
          "a": 20,
          "b": 50
        }
      },
      {
        "by": 23,
        "category": "schema",
        "leads": "firecrawl-mcp",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "The tools are typed in the official SDKs (BingGroundingTool, BingCustomSearchPreviewTool, WebSearchTool) in Python, C#, JavaScript and Java, and the toolbox exposes web search as an MCP tool. No public OpenAPI description of the Responses tool types was confirmed from the pages read (10 of 25). Microsoft Learn serves each page as Markdown with `accept=text/markdown`, though learn.microsoft.com/llms.txt answers 404 (10). The pages say what each of four web grounding routes is for and when to choose it, when to use Custom Search instead, and not to ask the model to summarise a whole page (17 of 20). Parameters are typed with defaults and limits in prose, `count` 1 to 50 with default 5, freshness values and a date-range form, market and language formats, `search_context_size` low, medium or high (11 of 15). Examples in Python, C#, TypeScript, Java and REST with expected output, and troubleshooting tables for connection ID, authentication and 429 problems, but no error codes or bodies for the tools (10 of 15). Requests carry `api-version=v1` on the toolbox, SDK changelogs are dated and a monthly What's New page lists new articles, the latest for August 2026 (10 of 15). 10 + 10 + 17 + 11 + 10 + 10 = 68.",
          "b": "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)."
        },
        "scores": {
          "a": 68,
          "b": 91
        }
      },
      {
        "by": 10,
        "category": "reliability",
        "leads": "firecrawl-mcp",
        "name": "Reliability",
        "reasons": {
          "a": "Graded on the hosted lines, for the Foundry Agent Service tools agents call. Azure status page with post-incident reviews and a Foundry Agent Service component (20). The history page read on 6 November lists one review in the 90 days from 8 August that names Foundry Agent Service, intermittent failures and latency in Sweden Central from 10:03 to 15:58 UTC on 29 September 2026. It was one region and partial, and the review doesn't name Grounding with Bing, so minor only, the reading the Azure Translator listing got for the same review (20). The pricing page publishes 150 transactions a second and 1 million a day for each Grounding with Bing resource (15). The web search troubleshooting table says to answer 429 with exponential backoff and retries. No Retry-After or tool-specific overload guidance was found, and searches have no side effects (8 of 15). No SLA naming Grounding with Bing was found. The terms make it a First Party Consumption Service apart from the Online Services terms, and the Online Services SLA document wasn't opened (0). Grounding with Bing Custom Search is marked preview and Grounding with Bing Search is not, but no page read states general availability for it or for the web_search tool, and the .NET SDK is in preview (5 of 10). 20 + 20 + 15 + 8 + 0 + 5 = 68.",
          "b": "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."
        },
        "scores": {
          "a": 68,
          "b": 78
        }
      },
      {
        "by": 9,
        "category": "security",
        "leads": "bing-grounding",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Callers authenticate to the Foundry project with Microsoft Entra ID tokens and RBAC roles (Foundry User to run agents, Foundry Project Manager to add connections), with just-in-time Contributor through Entra PIM for provisioning. The Bing resource key sits in a project connection and the agent never holds it. No key in a URL (28 of 30). The tools only read. Custom Search confines grounding to configured public domains, and an admin can turn web search off for a whole subscription. There is no per-agent read-only toggle to set, since the tools have no write path (15 of 20). The web search page tells developers to treat web search results as untrusted input and to keep secrets and personal data out of prompts, and the tool best practices page says the same of all tool outputs. Raw results are not passed back to the caller (10 of 15). Run steps show each tool call and the Bing query sent, and Azure's activity log covers resource changes. No per-query audit log for Bing was found (10 of 15). Microsoft runs a coordinated vulnerability disclosure policy and bounty programmes through MSRC. microsoft.com's security.txt passed its Expires date on 23 September 2026 and still carries it on 6 November, and the Azure compliance attestations are not shown to cover a service whose data leaves the compliance boundary (16 of 20). 28 + 15 + 10 + 10 + 16 = 79.",
          "b": "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)."
        },
        "scores": {
          "a": 79,
          "b": 70
        }
      },
      {
        "by": 9,
        "category": "transparency",
        "leads": "firecrawl-mcp",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service. The terms of use, updated November 2025, are separate from the Online Services terms and sit under the customer's Microsoft agreement (15 of 30). The docs and the terms agree that the Data Protection Addendum and the Product Terms' privacy and security terms don't apply, that Microsoft and the customer are independent controllers, and that the query and parameters leave the Azure compliance and geographic boundary. The terms defer storage and use of query data to the general Microsoft Privacy Statement and state no retention period (15 of 30). The Bing Search APIs retirement was announced on 16 May 2025 for 11 August 2025, under three months' notice, and the web search page marks the Deep Research tool deprecated with a replacement. Microsoft's lifecycle policy covers Azure services, but no deprecation terms for Grounding with Bing were found (10 of 20). Data location for Bing processing isn't stated, and no sub-processor list for it was found (5 of 20). 15 + 15 + 10 + 5 = 45.",
          "b": "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)."
        },
        "scores": {
          "a": 66,
          "b": 75
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "MCP server",
        "name": "Kind"
      },
      {
        "a": "Microsoft",
        "b": "Firecrawl (Mendable)",
        "name": "Vendor"
      },
      {
        "a": "https://{account}.services.ai.azure.com/api/projects/{project}/openai/v1/responses",
        "b": "https://mcp.firecrawl.dev/v2/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "Streamable HTTP",
        "b": "stdio, Streamable HTTP, SSE (legacy)",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "$14 per 1,000 requests",
        "b": "not published",
        "name": "Price for web search"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the customer's Microsoft agreement and the separate Grounding with Bing terms of use, which exclude it from the Microsoft Data Protection Addendum",
        "b": "MIT",
        "name": "Licence"
      },
      {
        "a": "3",
        "b": "27",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "io.github.firecrawl/firecrawl-mcp-server",
        "name": "MCP registry"
      },
      {
        "a": "2026-11-02",
        "b": "2026-10-27",
        "name": "Last release"
      },
      {
        "a": "2025-11-01",
        "b": "2024-11-05",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-01",
        "b": "2024-12-26",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "7.5k stars, 29k npm/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3.5/5 (8)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Firecrawl MCP scores 75 (BB) on agent readiness against Grounding with Bing Search's 63.7 (B), and leads in 6 of 7 scored categories. Grounding with Bing Search leads on security \u0026 auth.",
        "question": "Which is better for AI agents, Grounding with Bing Search or Firecrawl MCP?"
      },
      {
        "answer": "Grounding with Bing Search uses an OAuth sign-in. Firecrawl MCP takes an API key or an OAuth sign-in.",
        "question": "Do Grounding with Bing Search and Firecrawl MCP need an API key?"
      },
      {
        "answer": "Yes. Grounding with Bing Search has a hosted endpoint at https://{account}.services.ai.azure.com/api/projects/{project}/openai/v1/responses and Firecrawl MCP at https://mcp.firecrawl.dev/v2/mcp.",
        "question": "Can an agent call Grounding with Bing Search and Firecrawl MCP without installing anything?"
      },
      {
        "answer": "No open-source release is listed for Grounding with Bing Search. Firecrawl MCP is open source (MIT).",
        "question": "Are Grounding with Bing Search and Firecrawl MCP open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 79 against 70"
        ],
        "also": [
          "No incidents deducted, where Firecrawl MCP loses 3 points for them"
        ],
        "goodFor": "Teams already building on Foundry Agent Service who want cited answers from Bing without handling a search key.",
        "slug": "bing-grounding",
        "watchFor": "The Bing tools never return raw results to developers, only a model-written answer with citation links"
      },
      {
        "aheadOn": [
          "Reliability, 78 against 68",
          "Schema \u0026 documentation, 91 against 68",
          "Agent ergonomics, 92 against 61",
          "Payments \u0026 pricing, 50 against 20",
          "Maintenance \u0026 community, 87 against 80",
          "Transparency \u0026 trust, 75 against 66"
        ],
        "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"
      }
    ],
    "history": {
      "bing-grounding": null,
      "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"
        }
      ]
    },
    "job": {
      "capability": "web.search",
      "name": "Web search"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agentcore-web-search-vs-bing-grounding.json",
        "title": "Web Search Tool on Amazon Bedrock AgentCore vs Grounding with Bing Search",
        "url": "https://www.anchorterminal.com/compare/agentcore-web-search-vs-bing-grounding"
      },
      {
        "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-bing-grounding.json",
        "title": "Arcmira vs Grounding with Bing Search",
        "url": "https://www.anchorterminal.com/compare/arcmira-vs-bing-grounding"
      },
      {
        "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-brave-search-mcp.json",
        "title": "Grounding with Bing Search vs Brave Search API + MCP",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-brave-search-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-cloudflare-web-search.json",
        "title": "Grounding with Bing Search vs Cloudflare Web Search API",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-cloudflare-web-search"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-deepseek-search-api.json",
        "title": "Grounding with Bing Search vs DeepSeek Search and Fetch API",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-deepseek-search-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-exa-mcp.json",
        "title": "Grounding with Bing Search vs Exa API + MCP",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-exa-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-kagi-search.json",
        "title": "Grounding with Bing Search vs Kagi Search API",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-kagi-search"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-linkup.json",
        "title": "Grounding with Bing Search vs Linkup",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-linkup"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-mojeek.json",
        "title": "Grounding with Bing Search vs Mojeek Web Search API",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-mojeek"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-newscatcher.json",
        "title": "Grounding with Bing Search vs NewsCatcher",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-newscatcher"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-parallel-search-api.json",
        "title": "Grounding with Bing Search vs Parallel Search and Task APIs",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-parallel-search-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-perplexity-search-api.json",
        "title": "Grounding with Bing Search vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-perplexity-search-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-searchapi-io.json",
        "title": "Grounding with Bing Search vs SearchAPI.io",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-searchapi-io"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-serpapi.json",
        "title": "Grounding with Bing Search vs SerpApi",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-serpapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-serper.json",
        "title": "Grounding with Bing Search vs Serper",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-serper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-serphouse.json",
        "title": "Grounding with Bing Search vs SERPHouse",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-serphouse"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-serpkite.json",
        "title": "Grounding with Bing Search vs SerpKite",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-serpkite"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-specstream.json",
        "title": "Grounding with Bing Search vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-tavily-mcp.json",
        "title": "Grounding with Bing Search vs Tavily API + MCP",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-tavily-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-tinyfish-search.json",
        "title": "Grounding with Bing Search vs TinyFish Search",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-tinyfish-search"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-valyu.json",
        "title": "Grounding with Bing Search vs Valyu",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-valyu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-you-com-api.json",
        "title": "Grounding with Bing Search vs You.com APIs",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-you-com-api"
      },
      {
        "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/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/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/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"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-grep-ai.json",
        "title": "Grounding with Bing Search vs Grep AI",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-grep-ai"
      }
    ],
    "panel": null,
    "scores": [
      {
        "bing-grounding": 68,
        "by": 10,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 78,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "bing-grounding": 68,
        "by": 23,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 91,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "bing-grounding": 61,
        "by": 31,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 92,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "bing-grounding": 79,
        "by": 9,
        "edge": "bing-grounding",
        "firecrawl-mcp": 70,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "bing-grounding": 20,
        "by": 30,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 50,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "bing-grounding": 80,
        "by": 7,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 87,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "bing-grounding": 66,
        "by": 9,
        "edge": "firecrawl-mcp",
        "firecrawl-mcp": 75,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Firecrawl MCP scores 75 (BB) on agent readiness against Grounding with Bing Search's 63.7 (B), and leads in 6 of 7 scored categories. Grounding with Bing Search leads on security \u0026 auth. Both do web search.",
    "tasks": null,
    "tutorials": [
      {
        "title": "Turn a documentation page into Markdown with Firecrawl",
        "tool": "firecrawl-mcp",
        "url": "https://www.anchorterminal.com/tutorials/firecrawl-mcp/"
      }
    ],
    "verdicts": {
      "bing-grounding": "First-party Bing grounding inside Foundry Agent Service, called with Entra ID so the agent never holds a search key, at a published $14 per 1,000 transactions. The tools return a model's answer with citations, never the raw results, and data sent to them falls outside Microsoft's Data Protection Addendum and Azure's compliance boundary.",
      "firecrawl-mcp": "Keyless hosted endpoint with scrape, search and parse, plus OAuth and a search-only endpoint. No x402 or other machine payment."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/bing-grounding-vs-firecrawl-mcp",
    "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-firecrawl-mcp.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/bing-grounding-vs-firecrawl-mcp.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/bing-grounding-vs-firecrawl-mcp.min.md"
  },
  "markdown": "Firecrawl MCP scores 75 (BB) on agent readiness against Grounding with Bing Search's 63.7 (B), and leads in 6 of 7 scored categories. Grounding with Bing Search leads on security \u0026 auth. Both do web search.\n\n- Grounding with Bing Search: grade B, 63.7/100, rank #502 of 1486. Markdown https://www.anchorterminal.com/tools/bing-grounding.md · JSON https://www.anchorterminal.com/api/v1/tools/bing-grounding.json\n- Firecrawl MCP: grade BB, 75/100, rank #72 of 1486. Markdown https://www.anchorterminal.com/tools/firecrawl-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/firecrawl-mcp.json\n- Best web search APIs for AI agents: https://www.anchorterminal.com/best/search/index.md\n- All 308 search comparisons: https://www.anchorterminal.com/compare/search/index.md\n- Best web scraping and crawling APIs for AI agents: https://www.anchorterminal.com/best/web-scrapers/index.md\n- All 501 scrapers comparisons: https://www.anchorterminal.com/compare/web-scrapers/index.md\n\n## Which one, for what\n\n### Grounding with Bing Search (B)\n\nGood for: Teams already building on Foundry Agent Service who want cited answers from Bing without handling a search key.\n\nAhead on:\n- Security \u0026 auth, 79 against 70\n\nAlso in its favour:\n- No incidents deducted, where Firecrawl MCP loses 3 points for them\n\nWatch for: The Bing tools never return raw results to developers, only a model-written answer with citation links\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 68\n- Schema \u0026 documentation, 91 against 68\n- Agent ergonomics, 92 against 61\n- Payments \u0026 pricing, 50 against 20\n- Maintenance \u0026 community, 87 against 80\n- Transparency \u0026 trust, 75 against 66\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\n## Why the edge\n\n### Agent ergonomics: Firecrawl MCP +31\n\n- Grounding with Bing Search (61): Read as a server-side search tool inside an agent run. The tools return a model's answer with citations rather than raw results, and `search_context_size` sets how much context web search uses. A caller can't size or inspect the result set itself, since the Bing tools never return their output. Custom Search confines grounding to chosen domains without code (18 of 25). `count`, freshness, market and language filters, and domain restriction through Custom Search. No pagination or offset (13 of 20). Troubleshooting tables give causes and fixes for connection ID, RBAC and 429 problems, but the tools document no error codes (8 of 20). Searches only read, so a retry is safe apart from the per-transaction charge. No MCP annotations are documented for the toolbox's web search tool (10 of 20). The web_search route needs only a project, a model deployment and the Foundry User role. bing_grounding also needs a paid Bing resource and a project connection. SDKs in Python, C#, JavaScript and Java (12 of 15). Prompt caching gets no hits with the Bing tools, because they add a timestamp to every request. 18 + 13 + 8 + 10 + 12 = 61.\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\n### Payments \u0026 pricing: Firecrawl MCP +30\n\n- Grounding with Bing Search (20): No x402, MPP or L402 (0). $14 per 1,000 transactions for Grounding with Bing Search and Custom Search, published on microsoft.com without a login (20). No free tier for Grounding with Bing, and an Azure subscription needs a card, as on the Azure Translator listing (0). A person signs up for Azure, creates a Foundry project and, for bing_grounding, a Bing resource (0).\n- Firecrawl MCP (50): No x402, MPP or L402 in the README, pricing page or agent onboarding guide, re-read on 1 November (0). Plans are public with per-endpoint credit costs (1 a page, search 2 per 10 results, +4 for JSON formats), and $5 top-ups only on paid plans, so between plan-only and per-unit (15 of 20). Free plan with 1,000 credits a month, no card (20). The hosted keyless endpoint gives scrape, search and parse with no signup, but crawl, map and agent need a key. The agent onboarding guide adds key routes through Stripe Projects and, on supported platforms, a WorkOS ID-JAG assertion, both of which start from a person's existing login (15 of 20).\n\n### Schema \u0026 documentation: Firecrawl MCP +23\n\n- Grounding with Bing Search (68): The tools are typed in the official SDKs (BingGroundingTool, BingCustomSearchPreviewTool, WebSearchTool) in Python, C#, JavaScript and Java, and the toolbox exposes web search as an MCP tool. No public OpenAPI description of the Responses tool types was confirmed from the pages read (10 of 25). Microsoft Learn serves each page as Markdown with `accept=text/markdown`, though learn.microsoft.com/llms.txt answers 404 (10). The pages say what each of four web grounding routes is for and when to choose it, when to use Custom Search instead, and not to ask the model to summarise a whole page (17 of 20). Parameters are typed with defaults and limits in prose, `count` 1 to 50 with default 5, freshness values and a date-range form, market and language formats, `search_context_size` low, medium or high (11 of 15). Examples in Python, C#, TypeScript, Java and REST with expected output, and troubleshooting tables for connection ID, authentication and 429 problems, but no error codes or bodies for the tools (10 of 15). Requests carry `api-version=v1` on the toolbox, SDK changelogs are dated and a monthly What's New page lists new articles, the latest for August 2026 (10 of 15). 10 + 10 + 17 + 11 + 10 + 10 = 68.\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\n### Reliability: Firecrawl MCP +10\n\n- Grounding with Bing Search (68): Graded on the hosted lines, for the Foundry Agent Service tools agents call. Azure status page with post-incident reviews and a Foundry Agent Service component (20). The history page read on 6 November lists one review in the 90 days from 8 August that names Foundry Agent Service, intermittent failures and latency in Sweden Central from 10:03 to 15:58 UTC on 29 September 2026. It was one region and partial, and the review doesn't name Grounding with Bing, so minor only, the reading the Azure Translator listing got for the same review (20). The pricing page publishes 150 transactions a second and 1 million a day for each Grounding with Bing resource (15). The web search troubleshooting table says to answer 429 with exponential backoff and retries. No Retry-After or tool-specific overload guidance was found, and searches have no side effects (8 of 15). No SLA naming Grounding with Bing was found. The terms make it a First Party Consumption Service apart from the Online Services terms, and the Online Services SLA document wasn't opened (0). Grounding with Bing Custom Search is marked preview and Grounding with Bing Search is not, but no page read states general availability for it or for the web_search tool, and the .NET SDK is in preview (5 of 10). 20 + 20 + 15 + 8 + 0 + 5 = 68.\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\n### Security \u0026 auth: Grounding with Bing Search +9\n\n- Grounding with Bing Search (79): Callers authenticate to the Foundry project with Microsoft Entra ID tokens and RBAC roles (Foundry User to run agents, Foundry Project Manager to add connections), with just-in-time Contributor through Entra PIM for provisioning. The Bing resource key sits in a project connection and the agent never holds it. No key in a URL (28 of 30). The tools only read. Custom Search confines grounding to configured public domains, and an admin can turn web search off for a whole subscription. There is no per-agent read-only toggle to set, since the tools have no write path (15 of 20). The web search page tells developers to treat web search results as untrusted input and to keep secrets and personal data out of prompts, and the tool best practices page says the same of all tool outputs. Raw results are not passed back to the caller (10 of 15). Run steps show each tool call and the Bing query sent, and Azure's activity log covers resource changes. No per-query audit log for Bing was found (10 of 15). Microsoft runs a coordinated vulnerability disclosure policy and bounty programmes through MSRC. microsoft.com's security.txt passed its Expires date on 23 September 2026 and still carries it on 6 November, and the Azure compliance attestations are not shown to cover a service whose data leaves the compliance boundary (16 of 20). 28 + 15 + 10 + 10 + 16 = 79.\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\n### Transparency \u0026 trust: Firecrawl MCP +9\n\n- Grounding with Bing Search (66): Closed service. The terms of use, updated November 2025, are separate from the Online Services terms and sit under the customer's Microsoft agreement (15 of 30). The docs and the terms agree that the Data Protection Addendum and the Product Terms' privacy and security terms don't apply, that Microsoft and the customer are independent controllers, and that the query and parameters leave the Azure compliance and geographic boundary. The terms defer storage and use of query data to the general Microsoft Privacy Statement and state no retention period (15 of 30). The Bing Search APIs retirement was announced on 16 May 2025 for 11 August 2025, under three months' notice, and the web search page marks the Deep Research tool deprecated with a replacement. Microsoft's lifecycle policy covers Azure services, but no deprecation terms for Grounding with Bing were found (10 of 20). Data location for Bing processing isn't stated, and no sub-processor list for it was found (5 of 20). 15 + 15 + 10 + 5 = 45.\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\n## Score by category\n\n| Category | Weight | Grounding with Bing Search | Firecrawl MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 68 | 78 | Firecrawl MCP +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 68 | 91 | Firecrawl MCP +23 |\n| Agent ergonomics | 13% (16.2 this run) | 61 | 92 | Firecrawl MCP +31 |\n| Security \u0026 auth | 14% (17.5 this run) | 79 | 70 | Grounding with Bing Search +9 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 50 | Firecrawl MCP +30 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 80 | 87 | Firecrawl MCP +7 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 66 | 75 | Firecrawl MCP +9 |\n| Negative events | ≤15 | 0 | -3 | |\n| **Total** | | **63.7 · B** | **75 · BB** | |\n\n## Facts side by side\n\n| Fact | Grounding with Bing Search | Firecrawl MCP |\n| --- | --- | --- |\n| Kind | HTTP API | MCP server |\n| Vendor | Microsoft | Firecrawl (Mendable) |\n| Hosted endpoint | `https://{account}.services.ai.azure.com/api/projects/{project}/openai/v1/responses` | `https://mcp.firecrawl.dev/v2/mcp` |\n| Transports | Streamable HTTP | stdio, Streamable HTTP, SSE (legacy) |\n| Auth | OAuth | OAuth or key |\n| Pricing | Pay per use | Freemium |\n| Price for web search | $14 per 1,000 requests | not published |\n| x402 | no | no |\n| Licence | Proprietary service under the customer's Microsoft agreement and the separate Grounding with Bing terms of use, which exclude it from the Microsoft Data Protection Addendum | MIT |\n| Tools exposed | 3 | 27 |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| MCP registry | not listed | `io.github.firecrawl/firecrawl-mcp-server` |\n| Last release | 2026-11-02 | 2026-10-27 |\n| Terms last updated | 2025-11-01 | 2024-11-05 |\n| Privacy policy last updated | 2026-09-01 | 2024-12-26 |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | none | 7.5k stars, 29k npm/wk |\n| Agent reviews | none | 3.5/5 (8) |\n\n## How the scores have moved\n\n### Grounding with Bing Search\n\nNo score change since it was listed.\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## Verdicts\n\n**Grounding with Bing Search.** First-party Bing grounding inside Foundry Agent Service, called with Entra ID so the agent never holds a search key, at a published $14 per 1,000 transactions. The tools return a model's answer with citations, never the raw results, and data sent to them falls outside Microsoft's Data Protection Addendum and Azure's compliance boundary.\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## Before you call either\n\n### Grounding with Bing Search\n\n1. Use the citations in the response annotations as the sources; the tool output itself is not returned, and the terms require showing the URLs and the Bing query link\n2. Expect each run to bill one transaction per tool call at $14 per 1,000, plus model tokens, and set count and freshness in the tool configuration\n3. Treat cited page text as untrusted input and don't put secrets or personal data in prompts, since queries leave the Azure compliance boundary\n4. On 429 back off exponentially; no Retry-After header is documented for the tool\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## 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, Grounding with Bing Search or Firecrawl MCP?\n\nFirecrawl MCP scores 75 (BB) on agent readiness against Grounding with Bing Search's 63.7 (B), and leads in 6 of 7 scored categories. Grounding with Bing Search leads on security \u0026 auth.\n\n### Do Grounding with Bing Search and Firecrawl MCP need an API key?\n\nGrounding with Bing Search uses an OAuth sign-in. Firecrawl MCP takes an API key or an OAuth sign-in.\n\n### Can an agent call Grounding with Bing Search and Firecrawl MCP without installing anything?\n\nYes. Grounding with Bing Search has a hosted endpoint at https://{account}.services.ai.azure.com/api/projects/{project}/openai/v1/responses and Firecrawl MCP at https://mcp.firecrawl.dev/v2/mcp.\n\n### Are Grounding with Bing Search and Firecrawl MCP open source?\n\nNo open-source release is listed for Grounding with Bing Search. Firecrawl MCP is open source (MIT).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/bing-grounding-vs-firecrawl-mcp.json, and with the fewest tokens: https://www.anchorterminal.com/compare/bing-grounding-vs-firecrawl-mcp.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"bing-grounding\", \"b\": \"firecrawl-mcp\"}`. From a terminal: `anchor compare bing-grounding firecrawl-mcp`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/bing-grounding.json and https://www.anchorterminal.com/api/v1/tools/firecrawl-mcp.json\n\n## Other comparisons with Grounding with Bing Search or Firecrawl MCP\n\n- [Web Search Tool on Amazon Bedrock AgentCore vs Grounding with Bing Search](https://www.anchorterminal.com/compare/agentcore-web-search-vs-bing-grounding.md)\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 Grounding with Bing Search](https://www.anchorterminal.com/compare/arcmira-vs-bing-grounding.md)\n- [Arcmira vs Firecrawl MCP](https://www.anchorterminal.com/compare/arcmira-vs-firecrawl-mcp.md)\n- [Grounding with Bing Search vs Brave Search API + MCP](https://www.anchorterminal.com/compare/bing-grounding-vs-brave-search-mcp.md)\n- [Grounding with Bing Search vs Cloudflare Web Search API](https://www.anchorterminal.com/compare/bing-grounding-vs-cloudflare-web-search.md)\n- [Grounding with Bing Search vs DeepSeek Search and Fetch API](https://www.anchorterminal.com/compare/bing-grounding-vs-deepseek-search-api.md)\n- [Grounding with Bing Search vs Exa API + MCP](https://www.anchorterminal.com/compare/bing-grounding-vs-exa-mcp.md)\n- [Grounding with Bing Search vs Kagi Search API](https://www.anchorterminal.com/compare/bing-grounding-vs-kagi-search.md)\n- [Grounding with Bing Search vs Linkup](https://www.anchorterminal.com/compare/bing-grounding-vs-linkup.md)\n- [Grounding with Bing Search vs Mojeek Web Search API](https://www.anchorterminal.com/compare/bing-grounding-vs-mojeek.md)\n- [Grounding with Bing Search vs NewsCatcher](https://www.anchorterminal.com/compare/bing-grounding-vs-newscatcher.md)\n- [Grounding with Bing Search vs Parallel Search and Task APIs](https://www.anchorterminal.com/compare/bing-grounding-vs-parallel-search-api.md)\n- [Grounding with Bing Search vs Perplexity Search API](https://www.anchorterminal.com/compare/bing-grounding-vs-perplexity-search-api.md)\n- [Grounding with Bing Search vs SearchAPI.io](https://www.anchorterminal.com/compare/bing-grounding-vs-searchapi-io.md)\n- [Grounding with Bing Search vs SerpApi](https://www.anchorterminal.com/compare/bing-grounding-vs-serpapi.md)\n- [Grounding with Bing Search vs Serper](https://www.anchorterminal.com/compare/bing-grounding-vs-serper.md)\n- [Grounding with Bing Search vs SERPHouse](https://www.anchorterminal.com/compare/bing-grounding-vs-serphouse.md)\n- [Grounding with Bing Search vs SerpKite](https://www.anchorterminal.com/compare/bing-grounding-vs-serpkite.md)\n- [Grounding with Bing Search vs SpecStream](https://www.anchorterminal.com/compare/bing-grounding-vs-specstream.md)\n- [Grounding with Bing Search vs Tavily API + MCP](https://www.anchorterminal.com/compare/bing-grounding-vs-tavily-mcp.md)\n- [Grounding with Bing Search vs TinyFish Search](https://www.anchorterminal.com/compare/bing-grounding-vs-tinyfish-search.md)\n- [Grounding with Bing Search vs Valyu](https://www.anchorterminal.com/compare/bing-grounding-vs-valyu.md)\n- [Grounding with Bing Search vs You.com APIs](https://www.anchorterminal.com/compare/bing-grounding-vs-you-com-api.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- [Diffbot vs Firecrawl MCP](https://www.anchorterminal.com/compare/diffbot-vs-firecrawl-mcp.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- [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- [Grounding with Bing Search vs Grep AI](https://www.anchorterminal.com/compare/bing-grounding-vs-grep-ai.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-07",
    "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": "Grounding with Bing Search vs Firecrawl MCP",
        "url": ""
      }
    ],
    "description": "Firecrawl MCP scores 75 (BB) to Grounding with Bing Search's 63.7 (B) for web search. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Grounding with Bing Search B 63.7",
      "Firecrawl MCP BB 75",
      "scores"
    ],
    "h1": "Grounding with Bing Search vs Firecrawl MCP",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/bing-grounding-vs-firecrawl-mcp",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Grounding with Bing Search vs Firecrawl MCP for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-firecrawl-mcp"
  },
  "tokens": {
    "markdown": 7550,
    "slim": 4080
  },
  "version": 1
}
