{
  "data": {
    "a": {
      "slug": "exa-mcp",
      "name": "Exa API + MCP",
      "vendor": "Exa",
      "vendorUrl": "https://exa.ai",
      "kind": "mcp",
      "category": "search",
      "summary": "Exa's REST API over its own web index, with the official MCP server in front of it.",
      "url": "https://www.anchorterminal.com/tools/exa-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/exa-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/exa-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/exa-mcp.json",
      "dns": "exa-mcp.grade.anchorterminal.com",
      "repo": "https://github.com/exa-labs/exa-mcp-server",
      "license": "MIT",
      "transports": [
        "stdio",
        "streamable-http",
        "http"
      ],
      "remoteUrl": "https://mcp.exa.ai/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "exa-js"
        },
        {
          "registry": "pypi",
          "name": "exa-py"
        },
        {
          "registry": "npm",
          "name": "exa-mcp-server"
        }
      ],
      "auth": "mixed",
      "authNotes": "API key as `Authorization: Bearer` or `x-api-key` header, created at dashboard.exa.ai. POST /search and /contents also accept an x402 `PAYMENT-SIGNATURE` header instead of a key. MCP server: Anonymous use with rate limits; optional API key via ?exaApiKey=, Authorization: Bearer or x-api-key header; OAuth login at https://mcp.exa.ai/mcp?login.",
      "pricing": "freemium",
      "pricingNotes": "$10 free credit a month (resets on the 1st) plus a one-time $10 sign-up bonus, no payment method required. Pay as you go per 1,000 requests, lite search $4, auto $7, deep-lite and deep $12, each with up to 10 results and $1 per 1,000 extra results. Legacy types keep their prices, instant $4, fast $7, deep-reasoning $15. Contents $1 per 1,000 pages per content type, answer $5 per 1,000, monitors $15 per 1,000. Agent API $0.012 to $1.00 a run by effort, ultra usage-based. Dynamic Highlights and the 19 October index additions at no extra charge. Enterprise volume pricing by quote (https://exa.ai/pricing).",
      "priceSummary": "$0.007 / call",
      "where": "both",
      "x402": {
        "level": "yes",
        "evidence": "Official 'Pay with x402' guide. POST /search and /contents accept x402 with USDC on Arc, Base (eip155:8453), World Chain or Solana, including Circle Gateway nanopayments, and the guide prices `lite` at $0.004 a request. An unpaid POST /search returned 402 on 2026-09-30; the guide was re-read on 2026-10-21 without a probe (https://exa.ai/docs/integrations/payments/x402/quickstart.md)",
        "endpoints": [
          {
            "url": "https://api.exa.ai/search",
            "priceUsd": 0.007,
            "network": "eip155:8453"
          },
          {
            "url": "https://api.exa.ai/contents",
            "priceUsd": 0.001,
            "network": "eip155:8453"
          }
        ]
      },
      "toolCount": 4,
      "popularity": {
        "githubStars": 4900,
        "npmWeekly": 1076635,
        "pypiWeekly": 1406207,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://exa.ai/docs",
      "llmsTxt": "https://exa.ai/docs/llms.txt",
      "openapi": "https://exa.ai/docs/exa-spec.yaml",
      "registryName": "ai.exa/exa",
      "capabilities": [
        "web.search",
        "web.fetch",
        "web.extract",
        "search.answer",
        "search.research",
        "search.news"
      ],
      "tags": [
        "official",
        "hosted",
        "local",
        "open-source",
        "x402",
        "freemium",
        "llms-txt",
        "no-card",
        "openapi",
        "python",
        "typescript",
        "enterprise",
        "webhooks",
        "mcp"
      ],
      "lastRelease": "2026-10-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.8,
        "grade": "B",
        "agentReady": false,
        "rank": 265,
        "ranked": true,
        "rankOf": 1272,
        "categoryRank": 7,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 96,
          "maintenance": 88,
          "payments": 90,
          "reliability": 77,
          "schema": 86,
          "security": 43,
          "transparency": 61
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": -9,
        "negativeNotes": [
          "2026-04-15. Exa's own fix (#292) says Agnost analytics on the hosted MCP captured headers, query parameters and full URLs from every request and sent them to api.agnost.ai, which leaked user API keys passed as `x-api-key` or `?exaApiKey=`. Fixed the same day, but disclosed only in the commit message, with no advisory or rotation notice that we found. Decayed for the fix, so -6 (https://github.com/exa-labs/exa-mcp-server/commit/49797a5376217da506853b12163f21db9f9c95b8)",
          "2026-10-01. The MCP server calls Agnost's `trackMCP` on startup in both the hosted and the npm stdio builds, with no README mention and no opt-out. Inputs, outputs and errors are switched off, so the events are tool names and timings. -3 (https://github.com/exa-labs/exa-mcp-server/blob/main/src/mcp-handler.ts)"
        ],
        "verdict": "x402 on /search and /contents in USDC on Arc, Base, World Chain or Solana, so an agent can pay per call with no account. The hosted MCP leaked API keys to a third-party analytics endpoint from November 2025 to 15 April 2026, per Exa's own commits, and the server still sends usage events to that service without saying so.",
        "bestFor": "Agents that search in natural language and want short highlights or page text in the same call, and for keyless or wallet-paid use.",
        "strengths": [
          "x402 on /search and /contents in USDC on Arc, Base, World Chain or Solana, so an agent can pay per call with no account",
          "Two default MCP tools for keyless use, about 1,250 characters of descriptions, and every tool marked read-only",
          "Keys can be minted by API with their own rate limit and budget",
          "Public OpenAPI, llms.txt, an error-codes page, and search warnings for request fields that have no effect",
          "$10 of credit a month with no payment method, and `lite` search at $4 per 1,000"
        ],
        "weaknesses": [
          "The hosted MCP leaked API keys to a third-party analytics endpoint from November 2025 to 15 April 2026, per Exa's own commits",
          "Agnost usage analytics in the MCP server with no disclosure or opt-out",
          "The privacy policy says query data trains Exa's models and gives no retention period",
          "No security.txt, no SECURITY.md and no prompt-injection guidance",
          "Agents API had 4 hours 56 minutes of elevated run failures on 21 to 22 September, though it read partial"
        ],
        "agentNotes": [
          "Send the key as `x-api-key` or a Bearer header, never `?exaApiKey=` in the MCP URL",
          "Ask for highlights rather than full text, and cap `maxCharacters` on `web_fetch_exa`",
          "Request only the results you'll read. More than 10 costs extra, and x402 calls stop at 10",
          "On 429, honour `Retry-After`. The QPS limit is shared by every key on the team",
          "Use `type: \"lite\"` for cheap searches, and `auto` when you need summaries, live fetches or other parameters `lite` rejects",
          "Dynamic Highlights still needs the `Exa-Beta: dynamic-highlights-2026-08-28` header per the docs, despite the GA announcement",
          "Set `budget.maxCostDollars` on `agent_run`, which a keyed MCP connection may now expose by default"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 4.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.8
          }
        ],
        "editorialScores": {
          "ergonomics": 96,
          "maintenance": 88,
          "payments": 90,
          "reliability": 77,
          "schema": 86,
          "security": 43,
          "transparency": 44
        },
        "provenanceScore": 78,
        "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": {
        "http": "curl -s -X POST https://api.exa.ai/search \\\n  -H \"Authorization: Bearer $EXA_API_KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\"query\":\"recent techniques for improving retrieval in RAG systems\",\"type\":\"auto\",\"contents\":{\"highlights\":true}}'",
        "claudeCode": "claude mcp add --transport http exa https://mcp.exa.ai/mcp",
        "config": {
          "mcpServers": {
            "exa": {
              "url": "https://mcp.exa.ai/mcp"
            }
          }
        },
        "x402": "curl -s https://api.exa.ai/search -H 'content-type: application/json' -d '{\"query\":\"x402 facilitators\",\"numResults\":5}' -i\n# HTTP/1.1 402 Payment Required\n# PAYMENT-REQUIRED: \u003cbase64 JSON: accepts[{scheme:\"exact\",network:\"eip155:8453\",amount:\"7000\",asset:USDC,payTo:...}]\u003e\n# retry with PAYMENT-SIGNATURE: \u003cbase64 signed authorization\u003e"
      },
      "letme": {
        "capability": "https://letme.dev/web.search",
        "tool": "https://letme.dev/exa-mcp"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Search, auto",
          "unit": "1k-requests",
          "usd": 7,
          "note": "up to 10 results; legacy fast at the same price"
        },
        {
          "item": "Search, lite",
          "unit": "1k-requests",
          "usd": 4,
          "note": "up to 10 results, cached content only; legacy instant at the same price"
        },
        {
          "item": "Search, deep",
          "unit": "1k-requests",
          "usd": 12
        },
        {
          "item": "Contents",
          "unit": "1k-pages",
          "usd": 1,
          "note": "per content type"
        },
        {
          "item": "Answer",
          "unit": "1k-requests",
          "usd": 5
        }
      ],
      "provenance": {
        "legalEntity": "Exa Labs Inc.",
        "domain": "exa.ai",
        "domainRegistered": "2017-12-16",
        "endpointOnVendorDomain": true,
        "terms": "https://exa.ai/assets/Exa_Labs_Terms_of_Service.pdf",
        "privacy": "https://exa.ai/privacy-policy",
        "statusPage": "https://status.exa.ai",
        "changelog": "https://exa.ai/docs/changelog",
        "securityTxt": "none",
        "checked": "2026-11-01",
        "score": 78
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/exa-mcp.json",
      "live": {
        "slug": "exa-mcp",
        "probe": {
          "target": "https://mcp.exa.ai/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-11-03T18:20:03.279133572Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 218,
          "lastNote": "initialize answered",
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.9,
          "p50ms24h": 199,
          "p95ms24h": 264,
          "samples24h": 250,
          "samples30d": 8081,
          "days": [
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 266
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 270
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "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": 191,
              "ok": 191
            }
          ],
          "outages": [
            {
              "start": "2026-10-04T18:58:14.45236595Z",
              "end": "2026-10-04T19:19:43.996268604Z",
              "note": "HTTP 503 server error"
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.exa.ai",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-03T17:12:49.075331336Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "ai.exa/exa",
            "version": "3.4.1",
            "seenAt": "2026-11-03T16:51:07.971176756Z"
          },
          {
            "registry": "npm",
            "name": "exa-js",
            "version": "2.27.0",
            "seenAt": "2026-11-02T19:16:16.234101195Z"
          },
          {
            "registry": "npm",
            "name": "exa-mcp-server",
            "version": "3.4.2",
            "seenAt": "2026-11-02T19:16:17.180129573Z"
          },
          {
            "registry": "pypi",
            "name": "exa-py",
            "version": "2.27.0",
            "released": "2026-11-01",
            "seenAt": "2026-11-02T19:16:17.072713811Z"
          }
        ],
        "githubStars": 5209,
        "npmWeekly": 1214325,
        "pypiWeekly": 1504785,
        "securityTxt": {
          "url": "https://exa.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-03T15:51:54.365324317Z"
        },
        "llmsTxt": {
          "url": "https://exa.ai/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-03T15:19:48.818945171Z"
        },
        "domain": {
          "domain": "exa.ai",
          "registered": "2017-12-16",
          "source": "https://rdap.identitydigital.services/rdap/domain/exa.ai",
          "checkedAt": "2026-11-01T14:09:42.785389124Z"
        },
        "pages": [
          {
            "url": "https://exa.ai/docs/changelog",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-03T07:49:53.748124813Z",
            "changedAt": "2026-10-31T06:12:14.620098073Z",
            "fingerprint": "5b93588655e5"
          },
          {
            "url": "https://raw.githubusercontent.com/exa-labs/exa-js/master/CHANGELOG.md",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-03T07:59:23.085483031Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7f1c06c311b3"
          },
          {
            "url": "https://exa.ai/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-03T07:49:55.854074382Z",
            "changedAt": "2026-11-03T07:49:55.854074382Z",
            "fingerprint": "e3677f74e52c"
          },
          {
            "url": "https://exa.ai/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-03T07:49:57.858984544Z",
            "changedAt": "2026-10-31T06:12:18.767088877Z",
            "fingerprint": "dbe500045994"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.exa.ai/mcp",
          "checkedAt": "2026-11-03T01:15:37.345523036Z",
          "status": "ok",
          "protocol": "2025-11-25",
          "tools": [
            {
              "name": "web_search_exa",
              "title": "Web Search",
              "description": "Search the web for any topic and get clean, ready-to-use content.\n\n      Best for: Finding current information, news, facts, people, companies, or answering questions about any topic.\n      Returns: Clean text content from top search results.\n\n      Query tips:\n      describe the ideal page, not keywords. \"blog post comparing React and Vue performance\" not \"React vs Vue\".\n      Use category:people / category:company to search through Linkedin profiles / companies respectively.\n      If highlights are insufficient, follow up with web_fetch_exa on the best URLs.",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "additionalProperties": false,
                "properties": {
                  "numResults": {
                    "description": "Number of search results to return (default: 10).",
                    "type": "number"
                  },
                  "objective": {
                    "description": "Goal for this search turn; say which documents should rank first, which should be excluded, and what specific facts or figures to pull from them.",
                    "maxLength": 4096,
                    "minLength": 1,
                    "type": "string"
                  },
                  "query": {
                    "description": "Natural language search query. Should be a semantically rich description of the ideal page, not just keywords. Optionally include category:\u003ctype\u003e (company, people) to focus results — e.g. 'category:people John Doe software engineer'.",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "query",
                  "objective"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true
              }
            },
            {
              "name": "web_fetch_exa",
              "title": "Fetch Web Pages",
              "description": "Read a webpage's full content as clean markdown. Use after web_search_exa when highlights are insufficient or to read any URL.\n\nBest for: Extracting full content from known URLs. Batch multiple URLs in one call.\nReturns: Clean text content and metadata from the page(s).",
              "inputSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "additionalProperties": false,
                "properties": {
                  "maxCharacters": {
                    "description": "Maximum characters to extract per page (default: 3000)",
                    "minimum": 1,
                    "type": "number"
                  },
                  "urls": {
                    "description": "URLs to read. Batch multiple URLs in one call.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "urls"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true
              }
            }
          ],
          "schemaTokens": 605,
          "changedAt": "2026-09-28T21:55:38.894181746Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 605,
            "counts": {
              "error": 0,
              "note": 1,
              "warn": 0
            },
            "findings": [
              {
                "rule": "TC24",
                "severity": "note",
                "message": "2 of 2 tools have no outputSchema",
                "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
              }
            ]
          }
        },
        "github": {
          "repo": "exa-labs/exa-mcp-server",
          "checkedAt": "2026-11-02T08:46:58.334507141Z",
          "stars": 5208,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-02T01:26:06Z",
          "openIssues": 5,
          "openPRs": 3,
          "issuesOpened90d": 29,
          "issuesClosed90d": 36,
          "prsMerged90d": 22,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 47,
            "failure": 3,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-11-02T01:26:32Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 4,
            "medianDays": 29.6
          }
        },
        "updatedAt": "2026-11-03T18:20:03.279133572Z"
      }
    },
    "answer": "Exa API + MCP scores 67.8 (B) on agent readiness against SpecStream's 64.4 (B), and leads in 5 of 7 scored categories. SpecStream leads on security \u0026 auth and transparency \u0026 trust.",
    "b": {
      "slug": "specstream",
      "name": "SpecStream",
      "vendor": "SpecStream SAS",
      "vendorUrl": "https://specstream.ai",
      "kind": "platform",
      "category": "search",
      "summary": "SpecStream is a hosted web data service that turns a plain-language request into rows with a source page for each value, enriches and rechecks lists, and is reached through a web app, REST API, SDKs and remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/specstream",
      "markdownUrl": "https://www.anchorterminal.com/tools/specstream.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/specstream.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/specstream.json",
      "dns": "specstream.grade.anchorterminal.com",
      "repo": "https://github.com/specstream/specstream-tools",
      "license": "Proprietary hosted service under SpecStream SAS's terms of use (updated 3 November 2026, French law). The client code in specstream/specstream-tools (SDKs, the stdio bridge, framework packages, plugins, skills and integrations) is MIT, copyright SpecStream SAS",
      "transports": [
        "streamable-http",
        "http"
      ],
      "remoteUrl": "https://api.specstream.ai/mcp",
      "packages": [
        {
          "registry": "pypi",
          "name": "specstream-client"
        },
        {
          "registry": "npm",
          "name": "@specstream/sdk"
        },
        {
          "registry": "pypi",
          "name": "specstream-mcp-stdio"
        }
      ],
      "auth": "mixed",
      "authNotes": "Two credentials, both sent as `Authorization: Bearer`. API keys (`ss_live_...`) are made under Agents \u0026 API in the workspace or with the `create_api_key` tool, shown once, limited to any of eight scopes (`specs:read`, `specs:write`, `finds:read`, `finds:write`, `finds:spend`, `projects:read`, `projects:manage`, `account:read`), to named projects, to an expiry of 1 to 365 days (90 by default) and to a spending ceiling, and revoked singly so that the next request fails; the docs group them as read, prepare or execute access and only execute starts paid work. OAuth 2.1 sign-in for MCP clients uses HTTPS client ID metadata documents or dynamic client registration, with read, prepare or execute access shown on a consent screen, and registered clients are listed and revoked in account settings. Delegated access can let an agent start named operations within a per-run limit, a monthly limit and an expiry. No secret in a query string is documented. The authorisation server metadata on api.specstream.ai was not read (see openQuestions).",
      "pricing": "usage",
      "pricingNotes": "Prices are per matching result and the same on every plan, Standard $0.05 (up to 5 facts), Expanded $0.15 (up to 15 facts and one related list with 10 related records, then 10 cents per further 10), Deep $1, plus 5 cents for a named person's email and 15 cents for a phone. Rechecks cost half the rate for a changed or new row and 1 cent for an unchanged one; checking an imported row costs 5 cents or its match rate. A run that finds nothing, rows left out and reading or pricing a request cost nothing. Free is $10 of work once for the first 30 days with no card; pay as you go tops up from $10 with no expiry; Pro $19 a month with $19 of work, Scale $99, Team $499, Enterprise from $2,500; yearly adds 20 per cent more work, and plan balance rolls over one month. Agents without an account can pay per purchase by x402 (USDC) or MPP (card, at least $1) (https://specstream.ai/pricing and https://specstream.ai/docs/agent-payments, checked 2026-11-03).",
      "priceSummary": "$19 / mo",
      "where": "hosted",
      "x402": {
        "level": "yes",
        "evidence": "The agent payments page documents `POST https://api.specstream.ai/v1/agent/lists` as the one paid route for agents without an account. It answers 402 with a `PAYMENT-REQUIRED` header for x402 v2 (USDC on Base, Arbitrum or Polygon, a Permit2 authorisation for the quoted maximum under the `upto` scheme, settled for the results cost only) and a `WWW-Authenticate: Payment` challenge for MPP by card through Stripe's Link agent wallet; the offer lasts 15 minutes and a purchase is 1 to 500 results for $1.00 to $500.00. Pricing and the changelog (15 October 2026) say the same. Not exercised, because api.specstream.ai's robots.txt could not be read, so nothing on that host was requested (https://specstream.ai/docs/agent-payments, checked 2026-11-03).",
        "endpoints": [
          {
            "url": "https://api.specstream.ai/v1/agent/lists",
            "priceUsd": null,
            "network": "eip155:8453"
          },
          {
            "url": "https://api.specstream.ai/v1/agent/lists",
            "priceUsd": null,
            "network": "eip155:42161"
          },
          {
            "url": "https://api.specstream.ai/v1/agent/lists",
            "priceUsd": null,
            "network": "eip155:137"
          }
        ]
      },
      "toolCount": 128,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://specstream.ai/docs",
      "llmsTxt": "https://specstream.ai/llms.txt",
      "openapi": "https://specstream.ai/openapi.json",
      "registryName": "ai.specstream/specstream",
      "capabilities": [
        "search.research",
        "web.search",
        "web.extract",
        "lead.enrichment",
        "data.company",
        "email.finder"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "openapi",
        "llms-txt",
        "mcp",
        "remote-mcp",
        "oauth",
        "api-key",
        "x402",
        "mpp",
        "a2a",
        "python",
        "typescript",
        "cli",
        "webhooks",
        "async-jobs",
        "agent-skills",
        "enrichment",
        "desktop-app",
        "windows",
        "eu-hosting",
        "usage-based",
        "free-tier",
        "no-card",
        "no-status-page",
        "new"
      ],
      "lastRelease": "2026-11-03",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 64.4,
        "grade": "B",
        "agentReady": false,
        "rank": 399,
        "ranked": true,
        "rankOf": 1272,
        "categoryRank": 11,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 65,
          "maintenance": 81,
          "payments": 85,
          "reliability": 23,
          "schema": 80,
          "security": 73,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "Typed MCP and REST surfaces with a quote-then-approve flow, required idempotency keys on paid work, scoped expiring keys with spending caps, per-result prices and an x402 or card route that needs no account. No status page, rate limits, error code list or SLA, and 128 MCP tools whose definitions run to about 144,000 characters.",
        "bestFor": "Agents that need a list of companies, places, grants, tenders, papers or packages matching stated conditions, with a source page on every value and a price approved before anything runs, and teams that want the same list rechecked on a schedule and sent to a sheet or CRM.",
        "strengths": [
          "Paid work needs a quote, an approved ceiling in `confirm_max_cents` and a required idempotency key, with a recovery call so a lost response never buys twice",
          "API keys carry eight scopes, project limits, an expiry of up to 365 days and a spending ceiling, and delegated access adds per-run and monthly limits",
          "Every value carries `source_url` and `observed_at`, unconfirmed candidates are kept apart and unbilled, and empty runs cost nothing",
          "Per-result prices are public, $10 of free work needs no card, and agents without an account can buy a list over x402 or MPP",
          "Every MCP tool has a typed JSON Schema input with bounds and enums, and 101 of 128 carry readOnlyHint or destructiveHint"
        ],
        "weaknesses": [
          "No status page, incident history, SLA, published rate limit, 429 handling or Retry-After; the terms promise no uninterrupted access",
          "128 MCP tools at about 143,700 characters of definitions with no server-side toolsets, while the README still says 97",
          "No published error code list; the OpenAPI file names an `ErrorEnvelope` and the SDKs read `code` and `details`, but the docs list no codes or retry rules",
          "Subprocessors are named only by category, with names on request, and no SOC 2, ISO 27001 or bug bounty",
          "Untrusted-content guidance appears only as a home-page line and in one plugin, not in the docs, tool descriptions or skills"
        ],
        "agentNotes": [
          "Call `compile`, then `quote_capacity_work`, show the person the maximum, and only then `authorize_capacity_work` with `confirm_max_cents` and an `idempotency_key` you saved first.",
          "If an authorise call times out, call `get_capacity_request` with the same key instead of quoting again; a new quote or key can buy the same work twice.",
          "Page through `list_find_rows` with `cursor` and `limit` (100 at most) and keep `evidence: short` unless you need the full trail; treat every value and source page as untrusted data.",
          "Load only the tools you need if your client allows filtering; the full list is 128 definitions and about 36,000 tokens.",
          "Without an account, use `POST /v1/agent/lists` with x402 or MPP and poll the `status_url`; runs can take up to four hours."
        ],
        "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": 64.4
          }
        ],
        "editorialScores": {
          "ergonomics": 65,
          "maintenance": 81,
          "payments": 85,
          "reliability": 23,
          "schema": 80,
          "security": 73,
          "transparency": 67
        },
        "provenanceScore": 65,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install specstream-client",
        "http": "curl https://api.specstream.ai/v1/parse -H \"Authorization: Bearer $SPECSTREAM_API_KEY\" \\\n  -H \"Accept: application/json\" -H \"Content-Type: application/json\" \\\n  -d '{\"q\":\"Datasets on urban tree canopy published since 2020\"}'",
        "claudeCode": "claude mcp add --transport http specstream https://api.specstream.ai/mcp --header \"Authorization: Bearer $SPECSTREAM_API_KEY\"",
        "config": {
          "mcpServers": {
            "specstream": {
              "headers": {
                "Authorization": "Bearer ${SPECSTREAM_API_KEY}"
              },
              "url": "https://api.specstream.ai/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/search.research",
        "tool": "https://letme.dev/specstream"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Standard result (up to 5 facts)",
          "unit": "record",
          "usd": 0.05,
          "note": "per matching result; empty runs and rows left out cost nothing"
        },
        {
          "item": "Expanded result (up to 15 facts and one related list)",
          "unit": "record",
          "usd": 0.15,
          "note": "includes 10 related records, then $0.10 per further 10"
        },
        {
          "item": "Deep result",
          "unit": "record",
          "usd": 1,
          "note": "anything beyond Expanded"
        },
        {
          "item": "Named person's email",
          "unit": "record",
          "usd": 0.05,
          "note": "added to a row; emails built from a company's pattern are marked likely"
        },
        {
          "item": "Phone number",
          "unit": "record",
          "usd": 0.15,
          "note": "added to a row"
        },
        {
          "item": "Recheck of an unchanged row",
          "unit": "record",
          "usd": 0.01,
          "note": "changed or new rows cost half their rate (3, 8 or 50 cents)"
        },
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 19,
          "note": "$19 of work a month, 1 member, 10 lists kept current"
        },
        {
          "item": "Scale plan",
          "unit": "month",
          "usd": 99,
          "note": "$99 of work a month, 10 members, 50 lists"
        },
        {
          "item": "Team plan",
          "unit": "month",
          "usd": 499,
          "note": "$499 of work a month, 50 members, 250 lists"
        }
      ],
      "provenance": {
        "legalEntity": "SpecStream SAS",
        "domain": "specstream.ai",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://specstream.ai/terms",
        "privacy": "https://specstream.ai/privacy",
        "statusPage": "",
        "changelog": "https://specstream.ai/changelog",
        "securityTxt": "valid",
        "checked": "2026-11-03",
        "notes": [
          "The legal notice in English and French (both updated 3 November 2026) names SpecStream SAS, a French société par actions simplifiée with share capital of 10 euros, RCS Narbonne 131 125 841, VAT FR49131125841, registered at 20 quai de Lorraine, 11100 Narbonne, with Tarek Etman as president and publication director and Nataliia Stepanenko as director general, hosted by Compagnie IBM France SAS on IBM Cloud in Madrid. The terms and privacy policy (both 3 November 2026) name the same company under French law.",
          "The company number was not confirmed against the register. annuaire-entreprises.data.gouv.fr and recherche-entreprises.api.gouv.fr were refused by our fetcher and a web search found no register page. The SIREN 131125841 passes its Luhn check digit and the VAT key 49 matches it; SIREN numbers starting with 1 or 2 are normally given to public bodies, which a private SAS would not be. No first-hand page contradicts the notice, so nothing is deducted.",
          "https://specstream.ai/.well-known/security.txt is valid (Contact support@specstream.ai, Expires 2027-10-08, languages en and fr). The repository's SECURITY.md adds GitHub private vulnerability reporting.",
          "firstReleased is 2026-09-30, the first entry in the dated changelog (the Windows workspace app); the npm SDK and n8n node were first published on 12 October and the stdio bridge on 12 October 2026. lastRelease is 2026-11-03, specstream-mcp-stdio 1.2.3 on PyPI.",
          "robots.txt on specstream.ai allows / and disallows /workspace (except /workspace/shared/ and /workspace/assets/), /app/, /account, /login, /signup, /join, /v1/, /oauth/, /mcp, /share/, /export/, /internal/, /cdn-cgi/ and the paths under /integrations/*/, with no rule for named AI crawlers. api.specstream.ai/robots.txt could not be read, so nothing on that host was fetched, including the OAuth well-known documents, the A2A agent card and the MCP server card.",
          "Not read: RDAP for specstream.ai, the Wayback Machine, the live MCP registry entry, PyPI project pages (a client challenge; the release feed was read instead) and the GitHub API for stars and issues."
        ],
        "score": 65
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/specstream.json",
      "live": {
        "slug": "specstream",
        "probe": {
          "target": "https://api.specstream.ai/mcp",
          "method": "get",
          "lastAt": "2026-11-03T18:20:23.661096193Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 228,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 198,
          "p95ms24h": 292,
          "samples24h": 44,
          "samples30d": 44,
          "days": [
            {
              "date": "2026-11-03",
              "probes": 44,
              "ok": 44
            }
          ]
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "ai.specstream/specstream",
            "version": "1.3.0",
            "seenAt": "2026-11-03T16:51:07.971176756Z"
          }
        ],
        "securityTxt": {
          "url": "https://specstream.ai/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-10-08T00:00:00.000Z",
          "checkedAt": "2026-11-03T15:52:31.491866186Z"
        },
        "llmsTxt": {
          "url": "https://specstream.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-03T15:21:10.521972292Z"
        },
        "updatedAt": "2026-11-03T18:20:23.661096193Z"
      }
    },
    "edges": [
      {
        "by": 54,
        "category": "reliability",
        "leads": "exa-mcp",
        "name": "Reliability",
        "reasons": {
          "a": "Instatus page at status.exa.ai with Search API, Exa MCP, Agents API and Websets components and dated history (20). In the 90 days to 1 November, history/1 shows the Search API's 1-minute blip (16 September), a 1 hour 24 minute latency incident (18 September) and 2 hours 21 minutes of elevated latency with some failed requests (21 September), and the Agents API's 25 minutes of runs failing to start (18 September, labelled major) and 4 hours 56 minutes in which 'some agent runs may fail to start or complete' (21 to 22 September). August is per the 21 October check, not re-read on 1 November (history/2 answers 404 again), with a 10-minute Search API major outage on 14 August and a 53-minute latency incident. No notices in October or November. By this run's reading each hit one product or a subset of requests and none was an hour of a core API down, so all are minor (20, up from 10, where the 21 to 22 September Agents API incident had been counted as a major). Rate limits published per endpoint, 10 QPS search and answer, 5 QPS deep, 100 QPS contents, 5 QPS and 50 active Agent runs (15). 429 with `Retry-After` when available and exponential backoff advice. We found no idempotency guidance for creating Agent runs, which cost money (12). No SLA found. The pricing page lists \"Enterprise SLAs\" on the contract plan, with no terms published (0). Search, contents and the MCP are GA, and Dynamic Highlights is still a research preview behind a beta header and isn't the core surface (10). 20 + 20 + 15 + 12 + 0 + 10 = 77.",
          "b": "Hosted reading, for the MCP server and REST API on api.specstream.ai. No public status page was found. None is linked from the site, llms.txt or the docs, llms-full.txt mentions none, and https://specstream.ai/status returned an error (0). No readable incident history, so the floor (5). No rate limit with numbers is published in the docs, llms.txt, llms-full.txt or the part of the OpenAPI file read; the privacy policy and DPA mention rate limiting without figures, and the published limits are per job (10,000 results a request, four-hour runs, 20,000 imported rows) (0). Nothing documents 429, Retry-After or backoff, but paid work requires an `idempotency_key` on `authorize_capacity_work` and `POST /v1/capacity/executions`, `GET /v1/capacity/requests/{request_key}` recovers the original find after an uncertain response, and the skills say never to quote again to recover a lost reply (8 of 15). No SLA on any plan, and the terms say 'We do not promise uninterrupted access' (0). No beta or preview label on the API, the MCP server or the SDKs, which PyPI classifies as production and stable at 1.2 (10). 0+5+0+8+0+10 = 23."
        },
        "scores": {
          "a": 77,
          "b": 23
        }
      },
      {
        "by": 31,
        "category": "ergonomics",
        "leads": "exa-mcp",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "On a keyless connection two tools are on by default, `web_search_exa` and `web_fetch_exa`, about 1,250 characters of descriptions between them. Since the 19 October commit on main, `agent_run` (about 500 characters plus a larger input schema) is also on by default when the user supplies a key, though the README still lists it as optional. `?tools=` turns on `web_search_advanced_exa` and picks the set (25). `numResults`, `maxCharacters`, highlights instead of full text, category, domain and date filters, and in `web_search_advanced_exa` the `lite` type (20). The error-codes page lists codes, and the MCP server rewrites a 429 into a message about the free tier and keys and now passes search notices to the model. Errors reach the model as text rather than a code (16). Every tool sets `readOnlyHint`, `destructiveHint: false` and `idempotentHint` (false on `agent_run`), and the server retries transient errors twice (20). Only `query` is required. Python and TypeScript SDKs (15).",
          "b": "MCP reading. 128 tools at about 143,700 characters of names, descriptions and schemas (more than 30, 5), with no server-side toolsets or dynamic loading; the framework packages for LangChain, LlamaIndex, CrewAI and the Vercel AI SDK and the Open WebUI tool expose two to four tools with the price cap held in code, and results default to short evidence (5 back, 10 of 25). Cursor and `limit` on rows, search, specs and revisits, `evidence` short or full, filters by area and by field on collections, and unconfirmed candidates kept in a separate list (18 of 20). An `ErrorEnvelope` on every operation and an SDK error class that exposes `code` and `details`, but no published code list, meanings or retry rules (6 of 20). Required idempotency keys on paid work, schedules and refund claims with a recovery route, `expected_version` on updates, stable event ids on webhook retries, and readOnlyHint on 72 tools and destructiveHint on 29, with no idempotentHint (18 of 20). `compile` needs only `q`, a quote needs only `ast_hash` with 25 results by default, and official SDKs in Python and TypeScript with a CLI, though one purchase takes three calls with a hash carried between them (13 of 15). 10+18+6+18+13 = 65."
        },
        "scores": {
          "a": 96,
          "b": 65
        }
      },
      {
        "by": 30,
        "category": "security",
        "leads": "specstream",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Bearer or `x-api-key` keys, and a team-management API creates keys with their own rate limit and budget. The hosted MCP also takes OAuth. The README documents `?exaApiKey=` in the URL, so 25 less 10 (15). Every tool is read-only and annotated so, and `?tools=` limits the set. Agent runs spend credit but change nothing. Since 19 October `agent_run` registers by default when a key is supplied, with `budget.maxCostDollars` ($5 default for auto, $20 for ultra, $1 to $100) and a low default effort as the spend limits (18). Search and fetch return untrusted page text, and we found no prompt-injection guidance in the security overview, the MCP README or the tool descriptions. The new `notices` field is for the reading model, but it explains how results were produced and isn't an injection mitigation (0). No audit log found (0). SOC 2 Type II with reports in a trust centre. No security.txt (404 on 21 October), no SECURITY.md, no bug bounty and no GitHub advisories. The April 2026 key leak below was handled in a commit message only (10).",
          "b": "API keys `ss_live_...` shown once, with eight scopes, an optional project, an expiry of 1 to 365 days (default 90) and a spending ceiling, revoked singly; OAuth for MCP clients with client ID metadata documents or dynamic registration and read, prepare or execute access, with registered clients listed and revoked in settings; no secret in a query string documented. The authorisation server metadata on api.specstream.ai was not read and rotation is not described beyond expiry (28 of 30). Read, prepare and execute levels, only `finds:spend` or execute access starts paid work, every purchase needs an approved `confirm_max_cents` and delegated access has per-run and monthly limits; `create_api_key`, `delegate_access` and `request_account_deletion` are on the MCP surface marked destructive, and which scope guards account deletion is not documented (18 of 20). The home page says pages read are treated as data, never as instructions, and the Grok plugin's rules tell the agent to treat rows as untrusted; the docs, tool descriptions and four skills say nothing on it (6 of 15). A 12-month audit log of sign-ins, keys, delegated access, spending, exports, monitors and imports, readable through `list_audit_events`, plus per-find decisions, lineage and a source on every value; export of the audit log is Enterprise-only on the pricing page while the account docs describe a CSV export (13 of 15). security.txt is valid until October 2027 with support@specstream.ai, and SECURITY.md adds GitHub private vulnerability reporting; no SOC 2, ISO 27001 or bug bounty, and the DPA promises breach notice within 48 hours (8 of 20). 28+18+6+13+8 = 73."
        },
        "scores": {
          "a": 43,
          "b": 73
        }
      },
      {
        "by": 7,
        "category": "maintenance",
        "leads": "exa-mcp",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "exa-py and exa-js 2.27.0 tagged on 30 October 2026, after 2.26.0 and the API changelog entry of 19 October (30). 14 tags of each SDK from v2.17.0 (7 August) to v2.27.0 (30 October), and changelog entries on 28 August, 24 September and 19 October (20). 13 open MCP issues and pull requests merged on 2, 6, 7 and 19 October per the 21 October check, with pull requests merged on 27 and 28 October in the clone; reply times unread because GitHub's pages refuse us (15). Official registry entry ai.exa/exa under Exa's own domain, latest 3.4.1 (published 23 September), and current Python and TypeScript SDKs (15). CI typechecks and tests the MCP server on every push. The npm package (3.4.2, 6 October, per the 21 October check) ships from a workflow without git tags, and package.json on main is still 3.4.2 on 1 November (8).",
          "b": "specstream-mcp-stdio 1.2.3 on PyPI on 3 November 2026, the Python SDK 1.2.0 committed the same day and `@specstream/sdk` 1.2.0 on npm on 31 October (30). Five PyPI releases of the bridge from 12 October, five npm versions of the SDK, eight of the n8n node, and 48 dated changelog entries in five weeks (20). A closed service with a dated changelog, support@specstream.ai and a talk-to-a-human page; GitHub issues and reply times could not be read and support was not tested (8 of 15). server.json under the reverse-DNS namespace `ai.specstream/specstream` 1.3.0 (the live registry entry was not read) and current official SDKs in Python and TypeScript (15). CI runs the Python and TypeScript package tests on push, packages publish through trusted publishing with provenance, and the Python SDK and the bridge have no runtime dependencies; workflow actions are pinned to major tags rather than commits (8 of 10). 30+20+8+15+8 = 81."
        },
        "scores": {
          "a": 88,
          "b": 81
        }
      },
      {
        "by": 6,
        "category": "schema",
        "leads": "exa-mcp",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "OpenAPI at exa.ai/docs/exa-spec.yaml, re-read on 21 October with the new `lite` type, its accepted parameters and the `warnings` and `notices` response fields, and JSON Schema inputs on every MCP tool (25). llms.txt and Markdown docs (10). `web_search_exa` tells the model how to phrase a query and when to follow up with `web_fetch_exa`, and deprecated tools name their replacement. The `agent_run` description on the main branch since 19 October says it isn't for a single lookup or a known URL and names the sibling tools, but that commit isn't in npm 3.4.2 and we couldn't confirm the hosted server runs it, so the line stays where it was. Nothing else says when not to use a tool (15). Inputs coerce loosely. `numResults` is described as 1 to 100 but the schema has no bounds, and bad numbers fall back to defaults silently. On the API, `lite` rejects an unsupported parameter with a 400 that names it, and ignored fields such as `startCrawlDate` now come back as `IGNORED_FIELD` warnings (10). An error-codes page and examples on every endpoint page (13). Dated changelog with deprecations, the latest entry 19 October. The MCP repository has no tags, so versions show only in package.json and the registry (13).",
          "b": "MCP reading, with the REST API described. The tool list shipped in specstream-mcp-stdio 1.2.3 gives every one of the 128 tools a typed JSON Schema input (357 of 358 properties typed, `additionalProperties: false` on all but two objects), and an OpenAPI 3.1 file at https://specstream.ai/openapi.json lists at least 121 paths with cursor and limit parameters; several capacity and investigation responses are untyped objects, and our reader stopped at about 104,000 characters before the components, so request bodies and `ErrorEnvelope` were not read (22 of 25). llms.txt, llms-full.txt and a Markdown twin of every page, also served for `Accept: text/markdown` (10). Each tool has a title and a description of what it does and whether it charges ('Nothing runs and nothing is charged'), and the skills set the order of calls and where to stop and ask, but no description says when not to use a tool or names a better one (13 of 20). 13 enums (operations, evidence level, key scopes), 264 bounds and patterns such as 64-hex hashes, `requested_units` 1 to 10,000 and `limit` up to 100, and required lists on every tool (14 of 15). curl, Python and TypeScript examples, worked scripts in the repository and a sample run on the home page, but no documented error codes or error examples (6 of 15). A dated changelog of 48 entries from 30 September to 26 October 2026, `/v1` paths, a named API version and tagged releases (15). 22+10+13+14+6+15 = 80."
        },
        "scores": {
          "a": 86,
          "b": 80
        }
      },
      {
        "by": 5,
        "category": "payments",
        "leads": "exa-mcp",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "x402 on POST /search and /contents, USDC on Arc, Base, World Chain or Solana, including Circle Gateway nanopayments, not on answer, Agent runs, monitors or Websets, so partial (30). Per-call prices published without login, $0.004 for `lite` (and legacy `instant`) to $0.015 for legacy deep-reasoning per search (20). $10 a month and a $10 onboarding bonus, and the pricing page now states \"No payment method required\" (20). An agent can pay by x402 with no account, and the hosted MCP works anonymously within rate limits (20).",
          "b": "x402 v2 (USDC on Base, Arbitrum or Polygon, Permit2 `upto` for the quoted maximum, settled for the results cost) and MPP by card on SpecStream's own `POST /v1/agent/lists`, the route for buying a list of 1 to 500 results without an account; enrichment of imported lists, refreshes, monitors and investigations need an account, and the route was read in the docs and not exercised because api.specstream.ai's robots.txt could not be read, so partial (25). Per-result prices published without a login, 5, 15 or 100 cents a result, 5 cents an email, 15 cents a phone, rechecks at half rate or 1 cent (20). $10 of work for 30 days with no card (20). An agent can buy a list over x402 or MPP with no account, and the A2A endpoint prices a request without a key (20). 25+20+20+20 = 85."
        },
        "scores": {
          "a": 90,
          "b": 85
        }
      }
    ],
    "facts": [
      {
        "a": "MCP server",
        "b": "Platform",
        "name": "Kind"
      },
      {
        "a": "Exa",
        "b": "SpecStream SAS",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.exa.ai/mcp",
        "b": "https://api.specstream.ai/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "stdio, Streamable HTTP, HTTP",
        "b": "Streamable HTTP, HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "$4 per 1,000 requests",
        "b": "not published",
        "name": "Price for web search"
      },
      {
        "a": "yes, from $0.007/call",
        "b": "yes",
        "name": "x402"
      },
      {
        "a": "MIT",
        "b": "Proprietary hosted service under SpecStream SAS's terms of use (updated 3 November 2026, French law). The client code in specstream/specstream-tools (SDKs, the stdio bridge, framework packages, plugins, skills and integrations) is MIT, copyright SpecStream SAS",
        "name": "Licence"
      },
      {
        "a": "4",
        "b": "128",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "ai.exa/exa",
        "b": "ai.specstream/specstream",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-30",
        "b": "2026-11-03",
        "name": "Last release"
      },
      {
        "a": "2026-06-29",
        "b": "not read yet",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not read yet",
        "name": "Customer content may train models"
      },
      {
        "a": "4.9k stars, 1.1M npm/wk, 1.4M PyPI/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "4.5/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Exa API + MCP scores 67.8 (B) on agent readiness against SpecStream's 64.4 (B), and leads in 5 of 7 scored categories. SpecStream leads on security \u0026 auth and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Exa API + MCP or SpecStream?"
      },
      {
        "answer": "Yes. Exa API + MCP has a hosted endpoint at https://mcp.exa.ai/mcp and SpecStream at https://api.specstream.ai/mcp.",
        "question": "Can an agent call Exa API + MCP and SpecStream without installing anything?"
      },
      {
        "answer": "Exa API + MCP is open source (MIT). No open-source release is listed for SpecStream.",
        "question": "Are Exa API + MCP and SpecStream open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 77 against 23",
          "Schema \u0026 documentation, 86 against 80",
          "Agent ergonomics, 96 against 65",
          "Payments \u0026 pricing, 90 against 85",
          "Maintenance \u0026 community, 88 against 81"
        ],
        "also": [
          "Runs on your own machine",
          "Open source"
        ],
        "goodFor": "Agents that search in natural language and want short highlights or page text in the same call, and for keyless or wallet-paid use.",
        "slug": "exa-mcp",
        "watchFor": "The hosted MCP leaked API keys to a third-party analytics endpoint from November 2025 to 15 April 2026, per Exa's own commits"
      },
      {
        "aheadOn": [
          "Security \u0026 auth, 73 against 43",
          "Transparency \u0026 trust, 66 against 61"
        ],
        "also": [
          "No incidents deducted, where Exa API + MCP loses 9 points for them"
        ],
        "goodFor": "Agents that need a list of companies, places, grants, tenders, papers or packages matching stated conditions, with a source page on every value and a price approved before anything runs, and teams that want the same list rechecked on a schedule and sent to a sheet or CRM.",
        "slug": "specstream",
        "watchFor": "No status page, incident history, SLA, published rate limit, 429 handling or Retry-After; the terms promise no uninterrupted access"
      }
    ],
    "history": {
      "exa-mcp": [
        {
          "causes": [
            "correction"
          ],
          "date": "2026-11-01",
          "delta": 2,
          "from": 65.8,
          "fromGrade": "B",
          "to": 67.8,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-30",
          "delta": -0.3,
          "from": 66.1,
          "fromGrade": "B",
          "to": 65.8,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 66,
          "fromGrade": "B",
          "to": 66.1,
          "toGrade": "B"
        }
      ],
      "specstream": null
    },
    "job": {
      "capability": "web.search",
      "name": "Web search"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agentcore-web-search-vs-exa-mcp.json",
        "title": "Web Search Tool on Amazon Bedrock AgentCore vs Exa API + MCP",
        "url": "https://www.anchorterminal.com/compare/agentcore-web-search-vs-exa-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agentcore-web-search-vs-specstream.json",
        "title": "Web Search Tool on Amazon Bedrock AgentCore vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/agentcore-web-search-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brave-search-mcp-vs-exa-mcp.json",
        "title": "Brave Search API + MCP vs Exa API + MCP",
        "url": "https://www.anchorterminal.com/compare/brave-search-mcp-vs-exa-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brave-search-mcp-vs-specstream.json",
        "title": "Brave Search API + MCP vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/brave-search-mcp-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-web-search-vs-exa-mcp.json",
        "title": "Cloudflare Web Search API vs Exa API + MCP",
        "url": "https://www.anchorterminal.com/compare/cloudflare-web-search-vs-exa-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-web-search-vs-specstream.json",
        "title": "Cloudflare Web Search API vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/cloudflare-web-search-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-search-api-vs-exa-mcp.json",
        "title": "DeepSeek Search and Fetch API vs Exa API + MCP",
        "url": "https://www.anchorterminal.com/compare/deepseek-search-api-vs-exa-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-search-api-vs-specstream.json",
        "title": "DeepSeek Search and Fetch API vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/deepseek-search-api-vs-specstream"
      },
      {
        "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/exa-mcp-vs-kagi-search.json",
        "title": "Exa API + MCP vs Kagi Search API",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-kagi-search"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-linkup.json",
        "title": "Exa API + MCP vs Linkup",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-linkup"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-parallel-search-api.json",
        "title": "Exa API + MCP vs Parallel Search and Task APIs",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-parallel-search-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-searchapi-io.json",
        "title": "Exa API + MCP vs SearchAPI.io",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-searchapi-io"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-serpapi.json",
        "title": "Exa API + MCP vs SerpApi",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-serpapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-serper.json",
        "title": "Exa API + MCP vs Serper",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-serper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-serpkite.json",
        "title": "Exa API + MCP vs SerpKite",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-serpkite"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-tavily-mcp.json",
        "title": "Exa API + MCP vs Tavily API + MCP",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-tavily-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-tinyfish-search.json",
        "title": "Exa API + MCP vs TinyFish Search",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-tinyfish-search"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-valyu.json",
        "title": "Exa API + MCP vs Valyu",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-valyu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-you-com-api.json",
        "title": "Exa API + MCP vs You.com APIs",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-you-com-api"
      },
      {
        "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/kagi-search-vs-specstream.json",
        "title": "Kagi Search API vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/kagi-search-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/linkup-vs-specstream.json",
        "title": "Linkup vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/linkup-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/parallel-search-api-vs-specstream.json",
        "title": "Parallel Search and Task APIs vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/parallel-search-api-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/searchapi-io-vs-specstream.json",
        "title": "SearchAPI.io vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/searchapi-io-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/serpapi-vs-specstream.json",
        "title": "SerpApi vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/serpapi-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/serper-vs-specstream.json",
        "title": "Serper vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/serper-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/serpkite-vs-specstream.json",
        "title": "SerpKite vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/serpkite-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/arcmira-vs-exa-mcp.json",
        "title": "Arcmira vs Exa API + MCP",
        "url": "https://www.anchorterminal.com/compare/arcmira-vs-exa-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/arcmira-vs-specstream.json",
        "title": "Arcmira vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/arcmira-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-grep-ai.json",
        "title": "Exa API + MCP vs Grep AI",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-grep-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/grep-ai-vs-specstream.json",
        "title": "Grep AI vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/grep-ai-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/specstream-vs-tavily-mcp.json",
        "title": "SpecStream vs Tavily API + MCP",
        "url": "https://www.anchorterminal.com/compare/specstream-vs-tavily-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/specstream-vs-tinyfish-search.json",
        "title": "SpecStream vs TinyFish Search",
        "url": "https://www.anchorterminal.com/compare/specstream-vs-tinyfish-search"
      },
      {
        "json": "https://www.anchorterminal.com/compare/specstream-vs-valyu.json",
        "title": "SpecStream vs Valyu",
        "url": "https://www.anchorterminal.com/compare/specstream-vs-valyu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/specstream-vs-you-com-api.json",
        "title": "SpecStream vs You.com APIs",
        "url": "https://www.anchorterminal.com/compare/specstream-vs-you-com-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-fetch-reference-server.json",
        "title": "Exa API + MCP vs Fetch (MCP reference server)",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-fetch-reference-server"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 54,
        "edge": "exa-mcp",
        "exa-mcp": 77,
        "key": "reliability",
        "name": "Reliability",
        "specstream": 23,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 6,
        "edge": "exa-mcp",
        "exa-mcp": 86,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "specstream": 80,
        "weight": 13
      },
      {
        "by": 31,
        "edge": "exa-mcp",
        "exa-mcp": 96,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "specstream": 65,
        "weight": 13
      },
      {
        "by": 30,
        "edge": "specstream",
        "exa-mcp": 43,
        "key": "security",
        "name": "Security \u0026 auth",
        "specstream": 73,
        "weight": 14
      },
      {
        "by": 5,
        "edge": "exa-mcp",
        "exa-mcp": 90,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "specstream": 85,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 7,
        "edge": "exa-mcp",
        "exa-mcp": 88,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "specstream": 81,
        "weight": 7
      },
      {
        "by": 5,
        "edge": "specstream",
        "exa-mcp": 61,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "specstream": 66,
        "weight": 7
      }
    ],
    "summary": "Exa API + MCP scores 67.8 (B) on agent readiness against SpecStream's 64.4 (B), and leads in 5 of 7 scored categories. SpecStream leads on security \u0026 auth and transparency \u0026 trust. Both do web search.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "exa-mcp": "x402 on /search and /contents in USDC on Arc, Base, World Chain or Solana, so an agent can pay per call with no account. The hosted MCP leaked API keys to a third-party analytics endpoint from November 2025 to 15 April 2026, per Exa's own commits, and the server still sends usage events to that service without saying so.",
      "specstream": "Typed MCP and REST surfaces with a quote-then-approve flow, required idempotency keys on paid work, scoped expiring keys with spending caps, per-result prices and an x402 or card route that needs no account. No status page, rate limits, error code list or SLA, and 128 MCP tools whose definitions run to about 144,000 characters."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/exa-mcp-vs-specstream",
    "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-specstream.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/exa-mcp-vs-specstream.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/exa-mcp-vs-specstream.min.md"
  },
  "markdown": "Exa API + MCP scores 67.8 (B) on agent readiness against SpecStream's 64.4 (B), and leads in 5 of 7 scored categories. SpecStream leads on security \u0026 auth and transparency \u0026 trust. Both do web search.\n\n- Exa API + MCP: grade B, 67.8/100, rank #265 of 1272. Markdown https://www.anchorterminal.com/tools/exa-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/exa-mcp.json\n- SpecStream: grade B, 64.4/100, rank #399 of 1272. Markdown https://www.anchorterminal.com/tools/specstream.md · JSON https://www.anchorterminal.com/api/v1/tools/specstream.json\n- Best web search APIs for AI agents: https://www.anchorterminal.com/best/search/index.md\n- All 201 search comparisons: https://www.anchorterminal.com/compare/search/index.md\n\n## Which one, for what\n\n### Exa API + MCP (B)\n\nGood for: Agents that search in natural language and want short highlights or page text in the same call, and for keyless or wallet-paid use.\n\nAhead on:\n- Reliability, 77 against 23\n- Schema \u0026 documentation, 86 against 80\n- Agent ergonomics, 96 against 65\n- Payments \u0026 pricing, 90 against 85\n- Maintenance \u0026 community, 88 against 81\n\nAlso in its favour:\n- Runs on your own machine\n- Open source\n\nWatch for: The hosted MCP leaked API keys to a third-party analytics endpoint from November 2025 to 15 April 2026, per Exa's own commits\n\n### SpecStream (B)\n\nGood for: Agents that need a list of companies, places, grants, tenders, papers or packages matching stated conditions, with a source page on every value and a price approved before anything runs, and teams that want the same list rechecked on a schedule and sent to a sheet or CRM.\n\nAhead on:\n- Security \u0026 auth, 73 against 43\n- Transparency \u0026 trust, 66 against 61\n\nAlso in its favour:\n- No incidents deducted, where Exa API + MCP loses 9 points for them\n\nWatch for: No status page, incident history, SLA, published rate limit, 429 handling or Retry-After; the terms promise no uninterrupted access\n\n\n## Why the edge\n\n### Reliability: Exa API + MCP +54\n\n- Exa API + MCP (77): Instatus page at status.exa.ai with Search API, Exa MCP, Agents API and Websets components and dated history (20). In the 90 days to 1 November, history/1 shows the Search API's 1-minute blip (16 September), a 1 hour 24 minute latency incident (18 September) and 2 hours 21 minutes of elevated latency with some failed requests (21 September), and the Agents API's 25 minutes of runs failing to start (18 September, labelled major) and 4 hours 56 minutes in which 'some agent runs may fail to start or complete' (21 to 22 September). August is per the 21 October check, not re-read on 1 November (history/2 answers 404 again), with a 10-minute Search API major outage on 14 August and a 53-minute latency incident. No notices in October or November. By this run's reading each hit one product or a subset of requests and none was an hour of a core API down, so all are minor (20, up from 10, where the 21 to 22 September Agents API incident had been counted as a major). Rate limits published per endpoint, 10 QPS search and answer, 5 QPS deep, 100 QPS contents, 5 QPS and 50 active Agent runs (15). 429 with `Retry-After` when available and exponential backoff advice. We found no idempotency guidance for creating Agent runs, which cost money (12). No SLA found. The pricing page lists \"Enterprise SLAs\" on the contract plan, with no terms published (0). Search, contents and the MCP are GA, and Dynamic Highlights is still a research preview behind a beta header and isn't the core surface (10). 20 + 20 + 15 + 12 + 0 + 10 = 77.\n- SpecStream (23): Hosted reading, for the MCP server and REST API on api.specstream.ai. No public status page was found. None is linked from the site, llms.txt or the docs, llms-full.txt mentions none, and https://specstream.ai/status returned an error (0). No readable incident history, so the floor (5). No rate limit with numbers is published in the docs, llms.txt, llms-full.txt or the part of the OpenAPI file read; the privacy policy and DPA mention rate limiting without figures, and the published limits are per job (10,000 results a request, four-hour runs, 20,000 imported rows) (0). Nothing documents 429, Retry-After or backoff, but paid work requires an `idempotency_key` on `authorize_capacity_work` and `POST /v1/capacity/executions`, `GET /v1/capacity/requests/{request_key}` recovers the original find after an uncertain response, and the skills say never to quote again to recover a lost reply (8 of 15). No SLA on any plan, and the terms say 'We do not promise uninterrupted access' (0). No beta or preview label on the API, the MCP server or the SDKs, which PyPI classifies as production and stable at 1.2 (10). 0+5+0+8+0+10 = 23.\n\n### Agent ergonomics: Exa API + MCP +31\n\n- Exa API + MCP (96): On a keyless connection two tools are on by default, `web_search_exa` and `web_fetch_exa`, about 1,250 characters of descriptions between them. Since the 19 October commit on main, `agent_run` (about 500 characters plus a larger input schema) is also on by default when the user supplies a key, though the README still lists it as optional. `?tools=` turns on `web_search_advanced_exa` and picks the set (25). `numResults`, `maxCharacters`, highlights instead of full text, category, domain and date filters, and in `web_search_advanced_exa` the `lite` type (20). The error-codes page lists codes, and the MCP server rewrites a 429 into a message about the free tier and keys and now passes search notices to the model. Errors reach the model as text rather than a code (16). Every tool sets `readOnlyHint`, `destructiveHint: false` and `idempotentHint` (false on `agent_run`), and the server retries transient errors twice (20). Only `query` is required. Python and TypeScript SDKs (15).\n- SpecStream (65): MCP reading. 128 tools at about 143,700 characters of names, descriptions and schemas (more than 30, 5), with no server-side toolsets or dynamic loading; the framework packages for LangChain, LlamaIndex, CrewAI and the Vercel AI SDK and the Open WebUI tool expose two to four tools with the price cap held in code, and results default to short evidence (5 back, 10 of 25). Cursor and `limit` on rows, search, specs and revisits, `evidence` short or full, filters by area and by field on collections, and unconfirmed candidates kept in a separate list (18 of 20). An `ErrorEnvelope` on every operation and an SDK error class that exposes `code` and `details`, but no published code list, meanings or retry rules (6 of 20). Required idempotency keys on paid work, schedules and refund claims with a recovery route, `expected_version` on updates, stable event ids on webhook retries, and readOnlyHint on 72 tools and destructiveHint on 29, with no idempotentHint (18 of 20). `compile` needs only `q`, a quote needs only `ast_hash` with 25 results by default, and official SDKs in Python and TypeScript with a CLI, though one purchase takes three calls with a hash carried between them (13 of 15). 10+18+6+18+13 = 65.\n\n### Security \u0026 auth: SpecStream +30\n\n- Exa API + MCP (43): Bearer or `x-api-key` keys, and a team-management API creates keys with their own rate limit and budget. The hosted MCP also takes OAuth. The README documents `?exaApiKey=` in the URL, so 25 less 10 (15). Every tool is read-only and annotated so, and `?tools=` limits the set. Agent runs spend credit but change nothing. Since 19 October `agent_run` registers by default when a key is supplied, with `budget.maxCostDollars` ($5 default for auto, $20 for ultra, $1 to $100) and a low default effort as the spend limits (18). Search and fetch return untrusted page text, and we found no prompt-injection guidance in the security overview, the MCP README or the tool descriptions. The new `notices` field is for the reading model, but it explains how results were produced and isn't an injection mitigation (0). No audit log found (0). SOC 2 Type II with reports in a trust centre. No security.txt (404 on 21 October), no SECURITY.md, no bug bounty and no GitHub advisories. The April 2026 key leak below was handled in a commit message only (10).\n- SpecStream (73): API keys `ss_live_...` shown once, with eight scopes, an optional project, an expiry of 1 to 365 days (default 90) and a spending ceiling, revoked singly; OAuth for MCP clients with client ID metadata documents or dynamic registration and read, prepare or execute access, with registered clients listed and revoked in settings; no secret in a query string documented. The authorisation server metadata on api.specstream.ai was not read and rotation is not described beyond expiry (28 of 30). Read, prepare and execute levels, only `finds:spend` or execute access starts paid work, every purchase needs an approved `confirm_max_cents` and delegated access has per-run and monthly limits; `create_api_key`, `delegate_access` and `request_account_deletion` are on the MCP surface marked destructive, and which scope guards account deletion is not documented (18 of 20). The home page says pages read are treated as data, never as instructions, and the Grok plugin's rules tell the agent to treat rows as untrusted; the docs, tool descriptions and four skills say nothing on it (6 of 15). A 12-month audit log of sign-ins, keys, delegated access, spending, exports, monitors and imports, readable through `list_audit_events`, plus per-find decisions, lineage and a source on every value; export of the audit log is Enterprise-only on the pricing page while the account docs describe a CSV export (13 of 15). security.txt is valid until October 2027 with support@specstream.ai, and SECURITY.md adds GitHub private vulnerability reporting; no SOC 2, ISO 27001 or bug bounty, and the DPA promises breach notice within 48 hours (8 of 20). 28+18+6+13+8 = 73.\n\n### Maintenance \u0026 community: Exa API + MCP +7\n\n- Exa API + MCP (88): exa-py and exa-js 2.27.0 tagged on 30 October 2026, after 2.26.0 and the API changelog entry of 19 October (30). 14 tags of each SDK from v2.17.0 (7 August) to v2.27.0 (30 October), and changelog entries on 28 August, 24 September and 19 October (20). 13 open MCP issues and pull requests merged on 2, 6, 7 and 19 October per the 21 October check, with pull requests merged on 27 and 28 October in the clone; reply times unread because GitHub's pages refuse us (15). Official registry entry ai.exa/exa under Exa's own domain, latest 3.4.1 (published 23 September), and current Python and TypeScript SDKs (15). CI typechecks and tests the MCP server on every push. The npm package (3.4.2, 6 October, per the 21 October check) ships from a workflow without git tags, and package.json on main is still 3.4.2 on 1 November (8).\n- SpecStream (81): specstream-mcp-stdio 1.2.3 on PyPI on 3 November 2026, the Python SDK 1.2.0 committed the same day and `@specstream/sdk` 1.2.0 on npm on 31 October (30). Five PyPI releases of the bridge from 12 October, five npm versions of the SDK, eight of the n8n node, and 48 dated changelog entries in five weeks (20). A closed service with a dated changelog, support@specstream.ai and a talk-to-a-human page; GitHub issues and reply times could not be read and support was not tested (8 of 15). server.json under the reverse-DNS namespace `ai.specstream/specstream` 1.3.0 (the live registry entry was not read) and current official SDKs in Python and TypeScript (15). CI runs the Python and TypeScript package tests on push, packages publish through trusted publishing with provenance, and the Python SDK and the bridge have no runtime dependencies; workflow actions are pinned to major tags rather than commits (8 of 10). 30+20+8+15+8 = 81.\n\n### Schema \u0026 documentation: Exa API + MCP +6\n\n- Exa API + MCP (86): OpenAPI at exa.ai/docs/exa-spec.yaml, re-read on 21 October with the new `lite` type, its accepted parameters and the `warnings` and `notices` response fields, and JSON Schema inputs on every MCP tool (25). llms.txt and Markdown docs (10). `web_search_exa` tells the model how to phrase a query and when to follow up with `web_fetch_exa`, and deprecated tools name their replacement. The `agent_run` description on the main branch since 19 October says it isn't for a single lookup or a known URL and names the sibling tools, but that commit isn't in npm 3.4.2 and we couldn't confirm the hosted server runs it, so the line stays where it was. Nothing else says when not to use a tool (15). Inputs coerce loosely. `numResults` is described as 1 to 100 but the schema has no bounds, and bad numbers fall back to defaults silently. On the API, `lite` rejects an unsupported parameter with a 400 that names it, and ignored fields such as `startCrawlDate` now come back as `IGNORED_FIELD` warnings (10). An error-codes page and examples on every endpoint page (13). Dated changelog with deprecations, the latest entry 19 October. The MCP repository has no tags, so versions show only in package.json and the registry (13).\n- SpecStream (80): MCP reading, with the REST API described. The tool list shipped in specstream-mcp-stdio 1.2.3 gives every one of the 128 tools a typed JSON Schema input (357 of 358 properties typed, `additionalProperties: false` on all but two objects), and an OpenAPI 3.1 file at https://specstream.ai/openapi.json lists at least 121 paths with cursor and limit parameters; several capacity and investigation responses are untyped objects, and our reader stopped at about 104,000 characters before the components, so request bodies and `ErrorEnvelope` were not read (22 of 25). llms.txt, llms-full.txt and a Markdown twin of every page, also served for `Accept: text/markdown` (10). Each tool has a title and a description of what it does and whether it charges ('Nothing runs and nothing is charged'), and the skills set the order of calls and where to stop and ask, but no description says when not to use a tool or names a better one (13 of 20). 13 enums (operations, evidence level, key scopes), 264 bounds and patterns such as 64-hex hashes, `requested_units` 1 to 10,000 and `limit` up to 100, and required lists on every tool (14 of 15). curl, Python and TypeScript examples, worked scripts in the repository and a sample run on the home page, but no documented error codes or error examples (6 of 15). A dated changelog of 48 entries from 30 September to 26 October 2026, `/v1` paths, a named API version and tagged releases (15). 22+10+13+14+6+15 = 80.\n\n### Payments \u0026 pricing: Exa API + MCP +5\n\n- Exa API + MCP (90): x402 on POST /search and /contents, USDC on Arc, Base, World Chain or Solana, including Circle Gateway nanopayments, not on answer, Agent runs, monitors or Websets, so partial (30). Per-call prices published without login, $0.004 for `lite` (and legacy `instant`) to $0.015 for legacy deep-reasoning per search (20). $10 a month and a $10 onboarding bonus, and the pricing page now states \"No payment method required\" (20). An agent can pay by x402 with no account, and the hosted MCP works anonymously within rate limits (20).\n- SpecStream (85): x402 v2 (USDC on Base, Arbitrum or Polygon, Permit2 `upto` for the quoted maximum, settled for the results cost) and MPP by card on SpecStream's own `POST /v1/agent/lists`, the route for buying a list of 1 to 500 results without an account; enrichment of imported lists, refreshes, monitors and investigations need an account, and the route was read in the docs and not exercised because api.specstream.ai's robots.txt could not be read, so partial (25). Per-result prices published without a login, 5, 15 or 100 cents a result, 5 cents an email, 15 cents a phone, rechecks at half rate or 1 cent (20). $10 of work for 30 days with no card (20). An agent can buy a list over x402 or MPP with no account, and the A2A endpoint prices a request without a key (20). 25+20+20+20 = 85.\n\n## Score by category\n\n| Category | Weight | Exa API + MCP | SpecStream | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 77 | 23 | Exa API + MCP +54 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 86 | 80 | Exa API + MCP +6 |\n| Agent ergonomics | 13% (16.2 this run) | 96 | 65 | Exa API + MCP +31 |\n| Security \u0026 auth | 14% (17.5 this run) | 43 | 73 | SpecStream +30 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 90 | 85 | Exa API + MCP +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 88 | 81 | Exa API + MCP +7 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 61 | 66 | SpecStream +5 |\n| Negative events | ≤15 | -9 | 0 | |\n| **Total** | | **67.8 · B** | **64.4 · B** | |\n\n## Facts side by side\n\n| Fact | Exa API + MCP | SpecStream |\n| --- | --- | --- |\n| Kind | MCP server | Platform |\n| Vendor | Exa | SpecStream SAS |\n| Hosted endpoint | `https://mcp.exa.ai/mcp` | `https://api.specstream.ai/mcp` |\n| Transports | stdio, Streamable HTTP, HTTP | Streamable HTTP, HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Pay per use |\n| Price for web search | $4 per 1,000 requests | not published |\n| x402 | yes, from $0.007/call | yes |\n| Licence | MIT | Proprietary hosted service under SpecStream SAS's terms of use (updated 3 November 2026, French law). The client code in specstream/specstream-tools (SDKs, the stdio bridge, framework packages, plugins, skills and integrations) is MIT, copyright SpecStream SAS |\n| Tools exposed | 4 | 128 |\n| Read-only variant documented | yes | no |\n| llms.txt | yes | yes |\n| MCP registry | `ai.exa/exa` | `ai.specstream/specstream` |\n| Last release | 2026-10-30 | 2026-11-03 |\n| Privacy policy last updated | 2026-06-29 | not read yet |\n| Customer content may train models | yes | not read yet |\n| Popularity | 4.9k stars, 1.1M npm/wk, 1.4M PyPI/wk | none |\n| Agent reviews | 4.5/5 (2) | none |\n\n## How the scores have moved\n\n### Exa API + MCP\n\n- +2.0 on 1 November 2026: correction\n- -0.3 on 30 October 2026: checklist\n- +0.1 on 27 October 2026: checklist\n\n### SpecStream\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Exa API + MCP.** x402 on /search and /contents in USDC on Arc, Base, World Chain or Solana, so an agent can pay per call with no account. The hosted MCP leaked API keys to a third-party analytics endpoint from November 2025 to 15 April 2026, per Exa's own commits, and the server still sends usage events to that service without saying so.\n\n**SpecStream.** Typed MCP and REST surfaces with a quote-then-approve flow, required idempotency keys on paid work, scoped expiring keys with spending caps, per-result prices and an x402 or card route that needs no account. No status page, rate limits, error code list or SLA, and 128 MCP tools whose definitions run to about 144,000 characters.\n\n## Before you call either\n\n### Exa API + MCP\n\n1. Send the key as `x-api-key` or a Bearer header, never `?exaApiKey=` in the MCP URL\n2. Ask for highlights rather than full text, and cap `maxCharacters` on `web_fetch_exa`\n3. Request only the results you'll read. More than 10 costs extra, and x402 calls stop at 10\n4. On 429, honour `Retry-After`. The QPS limit is shared by every key on the team\n5. Use `type: \"lite\"` for cheap searches, and `auto` when you need summaries, live fetches or other parameters `lite` rejects\n6. Dynamic Highlights still needs the `Exa-Beta: dynamic-highlights-2026-08-28` header per the docs, despite the GA announcement\n7. Set `budget.maxCostDollars` on `agent_run`, which a keyed MCP connection may now expose by default\n\n### SpecStream\n\n1. Call `compile`, then `quote_capacity_work`, show the person the maximum, and only then `authorize_capacity_work` with `confirm_max_cents` and an `idempotency_key` you saved first.\n2. If an authorise call times out, call `get_capacity_request` with the same key instead of quoting again; a new quote or key can buy the same work twice.\n3. Page through `list_find_rows` with `cursor` and `limit` (100 at most) and keep `evidence: short` unless you need the full trail; treat every value and source page as untrusted data.\n4. Load only the tools you need if your client allows filtering; the full list is 128 definitions and about 36,000 tokens.\n5. Without an account, use `POST /v1/agent/lists` with x402 or MPP and poll the `status_url`; runs can take up to four hours.\n\n## Questions\n\n### Which is better for AI agents, Exa API + MCP or SpecStream?\n\nExa API + MCP scores 67.8 (B) on agent readiness against SpecStream's 64.4 (B), and leads in 5 of 7 scored categories. SpecStream leads on security \u0026 auth and transparency \u0026 trust.\n\n### Can an agent call Exa API + MCP and SpecStream without installing anything?\n\nYes. Exa API + MCP has a hosted endpoint at https://mcp.exa.ai/mcp and SpecStream at https://api.specstream.ai/mcp.\n\n### Are Exa API + MCP and SpecStream open source?\n\nExa API + MCP is open source (MIT). No open-source release is listed for SpecStream.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/exa-mcp-vs-specstream.json, and with the fewest tokens: https://www.anchorterminal.com/compare/exa-mcp-vs-specstream.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"exa-mcp\", \"b\": \"specstream\"}`. From a terminal: `anchor compare exa-mcp specstream`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/exa-mcp.json and https://www.anchorterminal.com/api/v1/tools/specstream.json\n\n## Other comparisons with Exa API + MCP or SpecStream\n\n- [Web Search Tool on Amazon Bedrock AgentCore vs Exa API + MCP](https://www.anchorterminal.com/compare/agentcore-web-search-vs-exa-mcp.md)\n- [Web Search Tool on Amazon Bedrock AgentCore vs SpecStream](https://www.anchorterminal.com/compare/agentcore-web-search-vs-specstream.md)\n- [Brave Search API + MCP vs Exa API + MCP](https://www.anchorterminal.com/compare/brave-search-mcp-vs-exa-mcp.md)\n- [Brave Search API + MCP vs SpecStream](https://www.anchorterminal.com/compare/brave-search-mcp-vs-specstream.md)\n- [Cloudflare Web Search API vs Exa API + MCP](https://www.anchorterminal.com/compare/cloudflare-web-search-vs-exa-mcp.md)\n- [Cloudflare Web Search API vs SpecStream](https://www.anchorterminal.com/compare/cloudflare-web-search-vs-specstream.md)\n- [DeepSeek Search and Fetch API vs Exa API + MCP](https://www.anchorterminal.com/compare/deepseek-search-api-vs-exa-mcp.md)\n- [DeepSeek Search and Fetch API vs SpecStream](https://www.anchorterminal.com/compare/deepseek-search-api-vs-specstream.md)\n- [Exa API + MCP vs Firecrawl MCP](https://www.anchorterminal.com/compare/exa-mcp-vs-firecrawl-mcp.md)\n- [Exa API + MCP vs Kagi Search API](https://www.anchorterminal.com/compare/exa-mcp-vs-kagi-search.md)\n- [Exa API + MCP vs Linkup](https://www.anchorterminal.com/compare/exa-mcp-vs-linkup.md)\n- [Exa API + MCP vs Parallel Search and Task APIs](https://www.anchorterminal.com/compare/exa-mcp-vs-parallel-search-api.md)\n- [Exa API + MCP vs SearchAPI.io](https://www.anchorterminal.com/compare/exa-mcp-vs-searchapi-io.md)\n- [Exa API + MCP vs SerpApi](https://www.anchorterminal.com/compare/exa-mcp-vs-serpapi.md)\n- [Exa API + MCP vs Serper](https://www.anchorterminal.com/compare/exa-mcp-vs-serper.md)\n- [Exa API + MCP vs SerpKite](https://www.anchorterminal.com/compare/exa-mcp-vs-serpkite.md)\n- [Exa API + MCP vs Tavily API + MCP](https://www.anchorterminal.com/compare/exa-mcp-vs-tavily-mcp.md)\n- [Exa API + MCP vs TinyFish Search](https://www.anchorterminal.com/compare/exa-mcp-vs-tinyfish-search.md)\n- [Exa API + MCP vs Valyu](https://www.anchorterminal.com/compare/exa-mcp-vs-valyu.md)\n- [Exa API + MCP vs You.com APIs](https://www.anchorterminal.com/compare/exa-mcp-vs-you-com-api.md)\n- [Firecrawl MCP vs SpecStream](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-specstream.md)\n- [Kagi Search API vs SpecStream](https://www.anchorterminal.com/compare/kagi-search-vs-specstream.md)\n- [Linkup vs SpecStream](https://www.anchorterminal.com/compare/linkup-vs-specstream.md)\n- [Parallel Search and Task APIs vs SpecStream](https://www.anchorterminal.com/compare/parallel-search-api-vs-specstream.md)\n- [SearchAPI.io vs SpecStream](https://www.anchorterminal.com/compare/searchapi-io-vs-specstream.md)\n- [SerpApi vs SpecStream](https://www.anchorterminal.com/compare/serpapi-vs-specstream.md)\n- [Serper vs SpecStream](https://www.anchorterminal.com/compare/serper-vs-specstream.md)\n- [SerpKite vs SpecStream](https://www.anchorterminal.com/compare/serpkite-vs-specstream.md)\n- [Arcmira vs Exa API + MCP](https://www.anchorterminal.com/compare/arcmira-vs-exa-mcp.md)\n- [Arcmira vs SpecStream](https://www.anchorterminal.com/compare/arcmira-vs-specstream.md)\n- [Exa API + MCP vs Grep AI](https://www.anchorterminal.com/compare/exa-mcp-vs-grep-ai.md)\n- [Grep AI vs SpecStream](https://www.anchorterminal.com/compare/grep-ai-vs-specstream.md)\n- [SpecStream vs Tavily API + MCP](https://www.anchorterminal.com/compare/specstream-vs-tavily-mcp.md)\n- [SpecStream vs TinyFish Search](https://www.anchorterminal.com/compare/specstream-vs-tinyfish-search.md)\n- [SpecStream vs Valyu](https://www.anchorterminal.com/compare/specstream-vs-valyu.md)\n- [SpecStream vs You.com APIs](https://www.anchorterminal.com/compare/specstream-vs-you-com-api.md)\n- [Exa API + MCP vs Fetch (MCP reference server)](https://www.anchorterminal.com/compare/exa-mcp-vs-fetch-reference-server.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-03",
    "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": "Exa API + MCP vs SpecStream",
        "url": ""
      }
    ],
    "description": "Exa scores 67.8 (B) to SpecStream's 64.4 (B) for web search. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Exa API + MCP B 67.8",
      "SpecStream B 64.4",
      "scores"
    ],
    "h1": "Exa API + MCP vs SpecStream",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/exa-mcp-vs-specstream",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Exa vs SpecStream for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-03",
    "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-specstream"
  },
  "tokens": {
    "markdown": 6500,
    "slim": 4230
  },
  "version": 1
}
