{
  "data": {
    "a": {
      "slug": "perplexity-search-api",
      "name": "Perplexity Search API",
      "vendor": "Perplexity",
      "vendorUrl": "https://www.perplexity.ai/",
      "kind": "http-api",
      "category": "search",
      "summary": "Perplexity's Search API returns ranked web results with extracted page text as JSON from Perplexity's own index, through `POST /search`. The same key reaches the Agent API's web_search tool for cited answers, and a hosted MCP server wraps both.",
      "url": "https://www.anchorterminal.com/tools/perplexity-search-api",
      "markdownUrl": "https://www.anchorterminal.com/tools/perplexity-search-api.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/perplexity-search-api.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/perplexity-search-api.json",
      "dns": "perplexity-search-api.grade.anchorterminal.com",
      "repo": "https://github.com/perplexityai/modelcontextprotocol",
      "license": "Proprietary service under the Perplexity API Terms of Service. The MCP server is MIT and the official SDKs Apache-2.0",
      "transports": [
        "streamable-http",
        "stdio"
      ],
      "remoteUrl": "https://api.perplexity.ai/mcp",
      "packages": [
        {
          "registry": "pypi",
          "name": "perplexityai"
        },
        {
          "registry": "npm",
          "name": "@perplexity-ai/perplexity_ai"
        },
        {
          "registry": "npm",
          "name": "@perplexity-ai/mcp-server"
        }
      ],
      "auth": "mixed",
      "authNotes": "Bearer Perplexity API key in the `Authorization` header. Keys belong to a project in the API console, are shown once, and can be generated and revoked through `/generate_auth_token` and `/revoke_auth_token`, with a rotation guide. No per-key scopes found. The hosted MCP server also accepts Sign in with Perplexity (OAuth), where the user picks the organisation to bill.",
      "pricing": "usage",
      "pricingNotes": "$5 per 1,000 successful Search API requests, or $1 with Fast Search, with up to five queries per request billed once. Invalid, rate-limited and failed requests are not billed. Agent API web_search is $2.50 per 1,000 calls plus model tokens. Prepaid credits with a card. No free allowance found.",
      "priceSummary": "$5 / 1k req",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Search API docs, the pricing page, the OpenAPI description or llms.txt (checked 2026-11-06). An empty balance returns 402 Payment Required with no payment requirements, per the FAQ.",
        "endpoints": []
      },
      "toolCount": 4,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.perplexity.ai/docs/search/overview",
      "llmsTxt": "https://docs.perplexity.ai/llms.txt",
      "openapi": "https://docs.perplexity.ai/openapi.json",
      "registryName": "ai.perplexity/mcp-server",
      "capabilities": [
        "web.search",
        "search.answer",
        "search.research"
      ],
      "tags": [
        "hosted",
        "usage-priced",
        "prepaid",
        "card-required",
        "closed-source",
        "openapi",
        "llms-txt",
        "mcp",
        "remote-mcp",
        "mcp-registry",
        "python",
        "typescript",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-10-23",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 70.2,
        "grade": "BB",
        "agentReady": true,
        "rank": 210,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 5,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 85,
          "maintenance": 82,
          "payments": 25,
          "reliability": 80,
          "schema": 89,
          "security": 56,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Raw ranked results with token-capped page text from Perplexity's own index, $5 per 1,000 requests or $1 with Fast Search, an OpenAPI description and a hosted MCP server with read-only annotations. Uptime is not guaranteed, there is no free allowance, keys carry no scopes, and no guidance on untrusted page text was found.",
        "bestFor": "Agents on any model that need raw ranked sources with extracted text at a low per-request price, and teams that want cited answers from the same key through the Agent API.",
        "strengths": [
          "OpenAPI 3.1 description of `POST /search` with enums and limits, llms.txt and a Markdown twin of every docs page",
          "`max_tokens`, `max_tokens_per_page` and `max_results` cap what reaches the model, and up to five queries share one billed request",
          "Per-request prices published without login, and invalid, rate-limited and failed requests are not billed",
          "Hosted MCP server with OAuth or a key; the local server is in the official registry under the verified ai.perplexity namespace",
          "security.txt valid to 31 December 2027, a SOC 2 Type II report and a SECURITY.md that takes private reports"
        ],
        "weaknesses": [
          "The FAQ says uptime and recovery time are not guaranteed, and the terms carry no SLA",
          "No free allowance and prepaid credits with a card; Stripe Projects still needs a $10 purchase",
          "Project keys have no scopes or spending limits, so any key can run every API on the account",
          "No guidance on treating returned snippets as untrusted text was found in the docs or the MCP server",
          "The DPA says Perplexity Search may follow different data terms, and no retention period for search queries is stated"
        ],
        "agentNotes": [
          "Set `max_tokens_per_page` and `max_tokens` before calling; extracted text otherwise fills the context, and the price does not change with size",
          "Skip results with an empty `snippet` and dedupe by `url` when sending a `query` array; each query costs one rate-limit unit",
          "Use `search_type: \"fast\"` for $1 per 1,000 when latency and cost matter more than depth",
          "On 429 wait for Retry-After, then back off; on 402 stop and ask the user to add credits",
          "Use the Search API for sources and the Agent API's web_search tool for a written answer with citations"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 70.2
          }
        ],
        "editorialScores": {
          "ergonomics": 85,
          "maintenance": 82,
          "payments": 25,
          "reliability": 80,
          "schema": 89,
          "security": 56,
          "transparency": 51
        },
        "provenanceScore": 80,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install perplexityai",
        "http": "curl -X POST https://api.perplexity.ai/search \\\n  -H \"Authorization: Bearer $PERPLEXITY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"query\": \"renewable energy technologies\", \"max_results\": 10, \"max_tokens\": 50000, \"max_tokens_per_page\": 4096}'",
        "claudeCode": "claude mcp add --transport http perplexity https://api.perplexity.ai/mcp",
        "config": {
          "mcpServers": {
            "perplexity": {
              "url": "https://api.perplexity.ai/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/web.search",
        "tool": "https://letme.dev/perplexity-search-api"
      },
      "sameCompany": [
        "perplexity-space",
        "pplx-decider",
        "pplx-decider-flash"
      ],
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Search API request",
          "unit": "1k-requests",
          "usd": 5,
          "note": "Up to five queries in one request billed once; failed and rate-limited requests not billed"
        },
        {
          "item": "Search API request with Fast Search",
          "unit": "1k-requests",
          "usd": 1,
          "note": "`search_type: \"fast\"`"
        },
        {
          "item": "Agent API web_search call",
          "unit": "1k-calls",
          "usd": 2.5,
          "note": "Plus model tokens; $1.00 with Fast Search"
        },
        {
          "item": "Agent API fetch_url call",
          "unit": "1k-calls",
          "usd": 0.5,
          "note": "Plus model tokens"
        }
      ],
      "provenance": {
        "legalEntity": "Perplexity AI, Inc.",
        "domain": "perplexity.ai",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://www.perplexity.ai/hub/legal/perplexity-api-terms-of-service",
        "privacy": "https://www.perplexity.ai/hub/legal/privacy-notice",
        "statusPage": "https://status.perplexity.com/",
        "changelog": "https://docs.perplexity.ai/docs/resources/changelog",
        "securityTxt": "valid",
        "checked": "2026-11-06",
        "notes": [
          "The API Terms of Service (last updated 23 January 2026) name Perplexity AI, Inc. and California law. The Data Processing Addendum (last updated 13 August 2026) deletes personal data within 30 days of the service ending and notes that Perplexity Search may follow different data terms.",
          "www.perplexity.ai/.well-known/security.txt is valid until 31 December 2027 and links www.perplexity.ai/security.",
          "The status page moved to incident.io on 10 September 2026 and has Website, App, Computer and API components, with no separate Search component.",
          "docs.perplexity.ai/robots.txt allows the docs and carries Content-Signal ai-train=yes, search=yes, ai-input=yes. The terms have no clause on automated access to the website.",
          "The changelog dates entries by month only. Domain registration was not checked."
        ],
        "score": 80
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/perplexity-search-api.json",
      "live": {
        "slug": "perplexity-search-api",
        "probe": {
          "target": "https://api.perplexity.ai/mcp",
          "method": "get",
          "lastAt": "2026-11-07T18:20:46.568623937Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 254,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 164,
          "p95ms24h": 262,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.perplexity.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T18:21:53.516499278Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "ai.perplexity/mcp-server",
            "version": "1.2.1",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "@perplexity-ai/mcp-server",
            "version": "1.3.0",
            "seenAt": "2026-11-06T23:55:31.394431614Z"
          },
          {
            "registry": "npm",
            "name": "@perplexity-ai/perplexity_ai",
            "version": "0.41.0",
            "seenAt": "2026-11-06T23:55:30.575713692Z"
          },
          {
            "registry": "pypi",
            "name": "perplexityai",
            "version": "0.46.1",
            "released": "2026-10-23",
            "seenAt": "2026-11-06T23:55:30.34668899Z"
          }
        ],
        "githubStars": 2612,
        "npmWeekly": 97298,
        "pypiWeekly": 401537,
        "securityTxt": {
          "url": "https://perplexity.ai/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-12-31T00:00:00Z",
          "checkedAt": "2026-11-07T16:01:03.917430365Z"
        },
        "llmsTxt": {
          "url": "https://docs.perplexity.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:36.681222085Z"
        },
        "pages": [
          {
            "url": "https://docs.perplexity.ai/docs/resources/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:07:27.675707255Z",
            "changedAt": "2026-11-06T13:29:48.535494355Z",
            "fingerprint": "a52a171e1f1f"
          },
          {
            "url": "https://www.perplexity.ai/hub/legal/privacy-notice",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:32:54.875760985Z",
            "changedAt": "2026-11-06T13:53:25.792168971Z",
            "fingerprint": "29c9dd01613d"
          },
          {
            "url": "https://www.perplexity.ai/hub/legal/perplexity-api-terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:32:50.897959644Z",
            "changedAt": "2026-11-06T13:53:22.592031411Z",
            "fingerprint": "6a7e4a95f45b"
          }
        ],
        "mcpTools": {
          "url": "https://api.perplexity.ai/mcp",
          "checkedAt": "2026-11-07T01:46:49.011542458Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:46:49.011542458Z"
        },
        "updatedAt": "2026-11-07T18:21:53.516499278Z"
      }
    },
    "answer": "Perplexity Search API scores 70.2 (BB) on agent readiness against SpecStream's 64.4 (B), and leads in 4 of 7 scored categories. SpecStream leads on security \u0026 auth and payments \u0026 pricing.",
    "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": 470,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 13,
        "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-07T18:20:56.282271614Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 168,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 168,
          "p95ms24h": 297,
          "samples24h": 239,
          "samples30d": 960,
          "days": [
            {
              "date": "2026-11-03",
              "probes": 101,
              "ok": 101
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "specstream/specstream-tools",
            "version": "v1.2.0",
            "released": "2026-10-15",
            "seenAt": "2026-11-07T00:07:25.527981066Z"
          },
          {
            "registry": "mcp-registry",
            "name": "ai.specstream/specstream",
            "version": "1.3.3",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "@specstream/sdk",
            "version": "1.2.0",
            "seenAt": "2026-11-07T00:07:23.626038145Z"
          },
          {
            "registry": "pypi",
            "name": "specstream-client",
            "version": "1.2.0",
            "released": "2026-11-03",
            "seenAt": "2026-11-07T00:07:23.444556172Z"
          },
          {
            "registry": "pypi",
            "name": "specstream-mcp-stdio",
            "version": "1.2.3",
            "released": "2026-11-03",
            "seenAt": "2026-11-07T00:07:24.447981908Z"
          }
        ],
        "githubStars": 0,
        "npmWeekly": 171,
        "pypiWeekly": 123,
        "securityTxt": {
          "url": "https://specstream.ai/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-10-08T00:00:00.000Z",
          "checkedAt": "2026-11-07T16:01:15.975147412Z"
        },
        "llmsTxt": {
          "url": "https://specstream.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:00.129710848Z"
        },
        "pages": [
          {
            "url": "https://specstream.ai/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:20:27.712530256Z",
            "changedAt": "2026-11-05T13:04:48.164521653Z",
            "fingerprint": "8eb83071eaea"
          },
          {
            "url": "https://specstream.ai/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:20:29.901966256Z",
            "changedAt": "2026-11-06T13:41:57.164998223Z",
            "fingerprint": "06eaeda2e947"
          },
          {
            "url": "https://specstream.ai/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:20:31.812928908Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "5bdf44cc317f"
          },
          {
            "url": "https://specstream.ai/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:20:35.708132973Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "55aaec0bbf91"
          }
        ],
        "mcpTools": {
          "url": "https://api.specstream.ai/mcp",
          "checkedAt": "2026-11-07T01:48:05.375102455Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:48:05.375102455Z"
        },
        "updatedAt": "2026-11-07T18:20:56.282271614Z"
      }
    },
    "edges": [
      {
        "by": 60,
        "category": "payments",
        "leads": "specstream",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 in the docs, pricing page, OpenAPI or llms.txt (0). $5 per 1,000 successful requests, $1 with Fast Search, published without a login, with failed and rate-limited requests not billed (20). Usage is prepaid with a card on the billing page, and no free allowance was found. The console playground needs no key but is a page for a person, not an API allowance (0). A person signs up in the console. The Stripe Projects route provisions a project, key and credits from a terminal, but needs a person's Stripe account with a payment method and a $10 minimum purchase (5 of 20, as on the Decisions API listing). 0 + 20 + 0 + 5 = 25.",
          "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": 25,
          "b": 85
        }
      },
      {
        "by": 57,
        "category": "reliability",
        "leads": "perplexity-search-api",
        "name": "Reliability",
        "reasons": {
          "a": "Graded on the hosted lines, for `POST /search` and the hosted MCP server. status.perplexity.com, on incident.io since 10 September 2026, has an API component with an RSS feed and a JSON summary. There is no separate Search component (20). In the 90 days from 8 August the feed lists 'Investigating API issue' on 13 August, resolved with no detail, a usage-based billing issue on 3 September, and on 9 October elevated errors on the website, app and Computer, where the API 'remained operational throughout'. Minor only, with the caveat that history before the migration may be incomplete (20). The Search API is limited to 50 query units a second with a burst of 50 on every tier, and the other APIs publish QPS and token limits per tier (15). 429 carries Retry-After and an `error.type`, the SDKs retry 429 and 5xx twice honouring Retry-After, the Search best-practices page shows backoff, and failed or rate-limited searches are not billed. Searches have no side effects (15). The FAQ says Perplexity does not guarantee uptime, failure frequency or recovery time, and the terms carry no SLA (0). No beta label on the Search API, launched on 25 September 2025 (10). 20 + 20 + 15 + 15 + 0 + 10 = 80.",
          "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": 80,
          "b": 23
        }
      },
      {
        "by": 20,
        "category": "ergonomics",
        "leads": "perplexity-search-api",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "`max_results` 1 to 20, `max_tokens` and `max_tokens_per_page` cap the extracted text, and results are title, url, snippet and two dates. The MCP server has four tools (23 of 25). Domain, language, recency, publication and update date filters and `country`, with up to five queries in one request. No pagination or offset (16 of 20). 429 bodies name the limit hit, the SDKs map status codes to typed errors, and 402 marks an empty balance. Search-specific error bodies beyond 422 validation are not documented (13 of 20). Searches only read, failed and rate-limited requests are not billed, and the MCP server sets readOnlyHint true, destructiveHint false and idempotentHint false on every tool (18 of 20). Only `query` is required. Official Python and TypeScript SDKs, a CLI and a Python Search SDK (15). 23 + 16 + 13 + 18 + 15 = 85.",
          "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": 85,
          "b": 65
        }
      },
      {
        "by": 17,
        "category": "security",
        "leads": "specstream",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Project API keys, shown once, revocable, and generated and revoked through two documented endpoints with a rotation guide. No per-key scopes or spending limits were found. The hosted MCP server also takes Sign in with Perplexity (OAuth). Keys go in the Authorization header only (22 of 30, as on the Decisions API listing). Search only reads, and MCP clients can disable tools, but any key reaches every API on the account, including the Agent API's sandbox and MCP tools (8 of 20). Snippets are third-party page text, and no guidance on treating them as untrusted was found in the docs, the MCP server or its SECURITY.md (0 of 15). Responses carry a request `id`, and the console shows usage by key. The Audit API covers enterprise organisations' web app events with its own keys, not API calls (8 of 15). security.txt valid until 31 December 2027 linking a security page, a SOC 2 Type II report, a 2025 HIPAA gap assessment and a CAIQlite listed on the trust centre, and a SECURITY.md on the MCP server that takes private reports through GitHub advisories or security@perplexity.ai. The trust centre is drawn by script and wasn't read (18 of 20). 22 + 8 + 0 + 8 + 18 = 56.",
          "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": 56,
          "b": 73
        }
      },
      {
        "by": 9,
        "category": "schema",
        "leads": "perplexity-search-api",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "OpenAPI 3.1.0 at docs.perplexity.ai/openapi.json describes `POST /search` with typed request and response schemas, listed in llms.txt (25). llms.txt indexes every page, each with a Markdown twin (10). The overview says what a result holds, that snippets can be empty, when to use the Search API instead of the Agent API, and that it takes queries not URLs and does not re-fetch pages (19 of 20). `search_type` is an enum, `max_results`, `max_tokens` and `max_tokens_per_page` carry minimum and maximum, country and language codes carry lengths, and `query` is a string or an array. The recency filter is an enum in the docs, and date filters are `MM/DD/YYYY` strings (14 of 15). Python, TypeScript and cURL examples with a recorded response. The spec documents only 200 and 422 for `/search`, and status codes are listed on the SDK error-handling page and the rate-limit page rather than for Search (11 of 15). A public changelog with several entries a month, dated by month only, and an unversioned `/search` path (10 of 15). 25 + 10 + 19 + 14 + 11 + 10 = 89.",
          "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": 89,
          "b": 80
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "Platform",
        "name": "Kind"
      },
      {
        "a": "Perplexity",
        "b": "SpecStream SAS",
        "name": "Vendor"
      },
      {
        "a": "https://api.perplexity.ai/mcp",
        "b": "https://api.specstream.ai/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "Streamable HTTP, stdio",
        "b": "Streamable HTTP, HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "$2.50 per 1,000 tool calls",
        "b": "not published",
        "name": "Price for web search"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the Perplexity API Terms of Service. The MCP server is MIT and the official SDKs Apache-2.0",
        "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": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "ai.perplexity/mcp-server",
        "b": "ai.specstream/specstream",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-23",
        "b": "2026-11-03",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "not read yet",
        "name": "Terms last updated"
      },
      {
        "a": "couldn't be read",
        "b": "not read yet",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "not read yet",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "not read yet",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "not read yet",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "not read yet",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "not read yet",
        "name": "Arbitration or class-action waiver"
      }
    ],
    "faq": [
      {
        "answer": "Perplexity Search API scores 70.2 (BB) on agent readiness against SpecStream's 64.4 (B), and leads in 4 of 7 scored categories. SpecStream leads on security \u0026 auth and payments \u0026 pricing.",
        "question": "Which is better for AI agents, Perplexity Search API or SpecStream?"
      },
      {
        "answer": "Yes. Perplexity Search API has a hosted endpoint at https://api.perplexity.ai/mcp and SpecStream at https://api.specstream.ai/mcp.",
        "question": "Can an agent call Perplexity Search API and SpecStream without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 80 against 23",
          "Schema \u0026 documentation, 89 against 80",
          "Agent ergonomics, 85 against 65"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "Runs on your own machine"
        ],
        "goodFor": "Agents on any model that need raw ranked sources with extracted text at a low per-request price, and teams that want cited answers from the same key through the Agent API.",
        "slug": "perplexity-search-api",
        "watchFor": "The FAQ says uptime and recovery time are not guaranteed, and the terms carry no SLA"
      },
      {
        "aheadOn": [
          "Security \u0026 auth, 73 against 56",
          "Payments \u0026 pricing, 85 against 25"
        ],
        "also": [
          "An agent can pay per call over x402, with no account",
          "Free to start without a card"
        ],
        "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": null,
    "job": {
      "capability": "web.search",
      "name": "Web search"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agentcore-web-search-vs-perplexity-search-api.json",
        "title": "Web Search Tool on Amazon Bedrock AgentCore vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/agentcore-web-search-vs-perplexity-search-api"
      },
      {
        "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/bing-grounding-vs-perplexity-search-api.json",
        "title": "Grounding with Bing Search vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-perplexity-search-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bing-grounding-vs-specstream.json",
        "title": "Grounding with Bing Search vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/bing-grounding-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brave-search-mcp-vs-perplexity-search-api.json",
        "title": "Brave Search API + MCP vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/brave-search-mcp-vs-perplexity-search-api"
      },
      {
        "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-perplexity-search-api.json",
        "title": "Cloudflare Web Search API vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/cloudflare-web-search-vs-perplexity-search-api"
      },
      {
        "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-perplexity-search-api.json",
        "title": "DeepSeek Search and Fetch API vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/deepseek-search-api-vs-perplexity-search-api"
      },
      {
        "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-perplexity-search-api.json",
        "title": "Exa API + MCP vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-perplexity-search-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exa-mcp-vs-specstream.json",
        "title": "Exa API + MCP vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/exa-mcp-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-perplexity-search-api.json",
        "title": "Firecrawl MCP vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-perplexity-search-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-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-perplexity-search-api.json",
        "title": "Kagi Search API vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/kagi-search-vs-perplexity-search-api"
      },
      {
        "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-perplexity-search-api.json",
        "title": "Linkup vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/linkup-vs-perplexity-search-api"
      },
      {
        "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/mojeek-vs-perplexity-search-api.json",
        "title": "Mojeek Web Search API vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/mojeek-vs-perplexity-search-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mojeek-vs-specstream.json",
        "title": "Mojeek Web Search API vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/mojeek-vs-specstream"
      },
      {
        "json": "https://www.anchorterminal.com/compare/newscatcher-vs-perplexity-search-api.json",
        "title": "NewsCatcher vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/newscatcher-vs-perplexity-search-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/parallel-search-api-vs-perplexity-search-api.json",
        "title": "Parallel Search and Task APIs vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/parallel-search-api-vs-perplexity-search-api"
      },
      {
        "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/perplexity-search-api-vs-searchapi-io.json",
        "title": "Perplexity Search API vs SearchAPI.io",
        "url": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-searchapi-io"
      },
      {
        "json": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-serpapi.json",
        "title": "Perplexity Search API vs SerpApi",
        "url": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-serpapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-serper.json",
        "title": "Perplexity Search API vs Serper",
        "url": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-serper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-serphouse.json",
        "title": "Perplexity Search API vs SERPHouse",
        "url": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-serphouse"
      },
      {
        "json": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-serpkite.json",
        "title": "Perplexity Search API vs SerpKite",
        "url": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-serpkite"
      },
      {
        "json": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-tavily-mcp.json",
        "title": "Perplexity Search API vs Tavily API + MCP",
        "url": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-tavily-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-tinyfish-search.json",
        "title": "Perplexity Search API vs TinyFish Search",
        "url": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-tinyfish-search"
      },
      {
        "json": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-valyu.json",
        "title": "Perplexity Search API vs Valyu",
        "url": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-valyu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-you-com-api.json",
        "title": "Perplexity Search API vs You.com APIs",
        "url": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-you-com-api"
      },
      {
        "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/serphouse-vs-specstream.json",
        "title": "SERPHouse vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/serphouse-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-perplexity-search-api.json",
        "title": "Arcmira vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/arcmira-vs-perplexity-search-api"
      },
      {
        "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/grep-ai-vs-perplexity-search-api.json",
        "title": "Grep AI vs Perplexity Search API",
        "url": "https://www.anchorterminal.com/compare/grep-ai-vs-perplexity-search-api"
      },
      {
        "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/newscatcher-vs-specstream.json",
        "title": "NewsCatcher vs SpecStream",
        "url": "https://www.anchorterminal.com/compare/newscatcher-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"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 57,
        "edge": "perplexity-search-api",
        "key": "reliability",
        "name": "Reliability",
        "perplexity-search-api": 80,
        "specstream": 23,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 9,
        "edge": "perplexity-search-api",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "perplexity-search-api": 89,
        "specstream": 80,
        "weight": 13
      },
      {
        "by": 20,
        "edge": "perplexity-search-api",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "perplexity-search-api": 85,
        "specstream": 65,
        "weight": 13
      },
      {
        "by": 17,
        "edge": "specstream",
        "key": "security",
        "name": "Security \u0026 auth",
        "perplexity-search-api": 56,
        "specstream": 73,
        "weight": 14
      },
      {
        "by": 60,
        "edge": "specstream",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "perplexity-search-api": 25,
        "specstream": 85,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "edge": "perplexity-search-api",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "perplexity-search-api": 82,
        "specstream": 81,
        "weight": 7
      },
      {
        "by": 0,
        "edge": "",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "perplexity-search-api": 66,
        "specstream": 66,
        "weight": 7
      }
    ],
    "summary": "Perplexity Search API scores 70.2 (BB) on agent readiness against SpecStream's 64.4 (B), and leads in 4 of 7 scored categories. SpecStream leads on security \u0026 auth and payments \u0026 pricing. Both do web search. SpecStream accepts x402. Perplexity Search API doesn't.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "perplexity-search-api": "Raw ranked results with token-capped page text from Perplexity's own index, $5 per 1,000 requests or $1 with Fast Search, an OpenAPI description and a hosted MCP server with read-only annotations. Uptime is not guaranteed, there is no free allowance, keys carry no scopes, and no guidance on untrusted page text was found.",
      "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/perplexity-search-api-vs-specstream",
    "json": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-specstream.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-specstream.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-specstream.min.md"
  },
  "markdown": "Perplexity Search API scores 70.2 (BB) on agent readiness against SpecStream's 64.4 (B), and leads in 4 of 7 scored categories. SpecStream leads on security \u0026 auth and payments \u0026 pricing. Both do web search. SpecStream accepts x402. Perplexity Search API doesn't.\n\n- Perplexity Search API: grade BB, 70.2/100, rank #210 of 1486. Markdown https://www.anchorterminal.com/tools/perplexity-search-api.md · JSON https://www.anchorterminal.com/api/v1/tools/perplexity-search-api.json\n- SpecStream: grade B, 64.4/100, rank #470 of 1486. 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 308 search comparisons: https://www.anchorterminal.com/compare/search/index.md\n\n## Which one, for what\n\n### Perplexity Search API (BB)\n\nGood for: Agents on any model that need raw ranked sources with extracted text at a low per-request price, and teams that want cited answers from the same key through the Agent API.\n\nAhead on:\n- Reliability, 80 against 23\n- Schema \u0026 documentation, 89 against 80\n- Agent ergonomics, 85 against 65\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- Runs on your own machine\n\nWatch for: The FAQ says uptime and recovery time are not guaranteed, and the terms carry no SLA\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 56\n- Payments \u0026 pricing, 85 against 25\n\nAlso in its favour:\n- An agent can pay per call over x402, with no account\n- Free to start without a card\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### Payments \u0026 pricing: SpecStream +60\n\n- Perplexity Search API (25): No x402, MPP or L402 in the docs, pricing page, OpenAPI or llms.txt (0). $5 per 1,000 successful requests, $1 with Fast Search, published without a login, with failed and rate-limited requests not billed (20). Usage is prepaid with a card on the billing page, and no free allowance was found. The console playground needs no key but is a page for a person, not an API allowance (0). A person signs up in the console. The Stripe Projects route provisions a project, key and credits from a terminal, but needs a person's Stripe account with a payment method and a $10 minimum purchase (5 of 20, as on the Decisions API listing). 0 + 20 + 0 + 5 = 25.\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### Reliability: Perplexity Search API +57\n\n- Perplexity Search API (80): Graded on the hosted lines, for `POST /search` and the hosted MCP server. status.perplexity.com, on incident.io since 10 September 2026, has an API component with an RSS feed and a JSON summary. There is no separate Search component (20). In the 90 days from 8 August the feed lists 'Investigating API issue' on 13 August, resolved with no detail, a usage-based billing issue on 3 September, and on 9 October elevated errors on the website, app and Computer, where the API 'remained operational throughout'. Minor only, with the caveat that history before the migration may be incomplete (20). The Search API is limited to 50 query units a second with a burst of 50 on every tier, and the other APIs publish QPS and token limits per tier (15). 429 carries Retry-After and an `error.type`, the SDKs retry 429 and 5xx twice honouring Retry-After, the Search best-practices page shows backoff, and failed or rate-limited searches are not billed. Searches have no side effects (15). The FAQ says Perplexity does not guarantee uptime, failure frequency or recovery time, and the terms carry no SLA (0). No beta label on the Search API, launched on 25 September 2025 (10). 20 + 20 + 15 + 15 + 0 + 10 = 80.\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: Perplexity Search API +20\n\n- Perplexity Search API (85): `max_results` 1 to 20, `max_tokens` and `max_tokens_per_page` cap the extracted text, and results are title, url, snippet and two dates. The MCP server has four tools (23 of 25). Domain, language, recency, publication and update date filters and `country`, with up to five queries in one request. No pagination or offset (16 of 20). 429 bodies name the limit hit, the SDKs map status codes to typed errors, and 402 marks an empty balance. Search-specific error bodies beyond 422 validation are not documented (13 of 20). Searches only read, failed and rate-limited requests are not billed, and the MCP server sets readOnlyHint true, destructiveHint false and idempotentHint false on every tool (18 of 20). Only `query` is required. Official Python and TypeScript SDKs, a CLI and a Python Search SDK (15). 23 + 16 + 13 + 18 + 15 = 85.\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 +17\n\n- Perplexity Search API (56): Project API keys, shown once, revocable, and generated and revoked through two documented endpoints with a rotation guide. No per-key scopes or spending limits were found. The hosted MCP server also takes Sign in with Perplexity (OAuth). Keys go in the Authorization header only (22 of 30, as on the Decisions API listing). Search only reads, and MCP clients can disable tools, but any key reaches every API on the account, including the Agent API's sandbox and MCP tools (8 of 20). Snippets are third-party page text, and no guidance on treating them as untrusted was found in the docs, the MCP server or its SECURITY.md (0 of 15). Responses carry a request `id`, and the console shows usage by key. The Audit API covers enterprise organisations' web app events with its own keys, not API calls (8 of 15). security.txt valid until 31 December 2027 linking a security page, a SOC 2 Type II report, a 2025 HIPAA gap assessment and a CAIQlite listed on the trust centre, and a SECURITY.md on the MCP server that takes private reports through GitHub advisories or security@perplexity.ai. The trust centre is drawn by script and wasn't read (18 of 20). 22 + 8 + 0 + 8 + 18 = 56.\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### Schema \u0026 documentation: Perplexity Search API +9\n\n- Perplexity Search API (89): OpenAPI 3.1.0 at docs.perplexity.ai/openapi.json describes `POST /search` with typed request and response schemas, listed in llms.txt (25). llms.txt indexes every page, each with a Markdown twin (10). The overview says what a result holds, that snippets can be empty, when to use the Search API instead of the Agent API, and that it takes queries not URLs and does not re-fetch pages (19 of 20). `search_type` is an enum, `max_results`, `max_tokens` and `max_tokens_per_page` carry minimum and maximum, country and language codes carry lengths, and `query` is a string or an array. The recency filter is an enum in the docs, and date filters are `MM/DD/YYYY` strings (14 of 15). Python, TypeScript and cURL examples with a recorded response. The spec documents only 200 and 422 for `/search`, and status codes are listed on the SDK error-handling page and the rate-limit page rather than for Search (11 of 15). A public changelog with several entries a month, dated by month only, and an unversioned `/search` path (10 of 15). 25 + 10 + 19 + 14 + 11 + 10 = 89.\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## Score by category\n\n| Category | Weight | Perplexity Search API | SpecStream | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 80 | 23 | Perplexity Search API +57 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 89 | 80 | Perplexity Search API +9 |\n| Agent ergonomics | 13% (16.2 this run) | 85 | 65 | Perplexity Search API +20 |\n| Security \u0026 auth | 14% (17.5 this run) | 56 | 73 | SpecStream +17 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 25 | 85 | SpecStream +60 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 82 | 81 | Perplexity Search API +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 66 | 66 | even |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **70.2 · BB** | **64.4 · B** | |\n\n## Facts side by side\n\n| Fact | Perplexity Search API | SpecStream |\n| --- | --- | --- |\n| Kind | HTTP API | Platform |\n| Vendor | Perplexity | SpecStream SAS |\n| Hosted endpoint | `https://api.perplexity.ai/mcp` | `https://api.specstream.ai/mcp` |\n| Transports | Streamable HTTP, stdio | Streamable HTTP, HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Pay per use | Pay per use |\n| Price for web search | $2.50 per 1,000 tool calls | not published |\n| x402 | no | yes |\n| Licence | Proprietary service under the Perplexity API Terms of Service. The MCP server is MIT and the official SDKs Apache-2.0 | 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 | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `ai.perplexity/mcp-server` | `ai.specstream/specstream` |\n| Last release | 2026-10-23 | 2026-11-03 |\n| Terms last updated | couldn't be read | not read yet |\n| Privacy policy last updated | couldn't be read | not read yet |\n| Customer content may train models | couldn't be read | not read yet |\n| Terms restrict automated access | couldn't be read | not read yet |\n| Terms restrict benchmarking | couldn't be read | not read yet |\n| Terms or service can change without notice | couldn't be read | not read yet |\n| Arbitration or class-action waiver | couldn't be read | not read yet |\n\n## Verdicts\n\n**Perplexity Search API.** Raw ranked results with token-capped page text from Perplexity's own index, $5 per 1,000 requests or $1 with Fast Search, an OpenAPI description and a hosted MCP server with read-only annotations. Uptime is not guaranteed, there is no free allowance, keys carry no scopes, and no guidance on untrusted page text was found.\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### Perplexity Search API\n\n1. Set `max_tokens_per_page` and `max_tokens` before calling; extracted text otherwise fills the context, and the price does not change with size\n2. Skip results with an empty `snippet` and dedupe by `url` when sending a `query` array; each query costs one rate-limit unit\n3. Use `search_type: \"fast\"` for $1 per 1,000 when latency and cost matter more than depth\n4. On 429 wait for Retry-After, then back off; on 402 stop and ask the user to add credits\n5. Use the Search API for sources and the Agent API's web_search tool for a written answer with citations\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, Perplexity Search API or SpecStream?\n\nPerplexity Search API scores 70.2 (BB) on agent readiness against SpecStream's 64.4 (B), and leads in 4 of 7 scored categories. SpecStream leads on security \u0026 auth and payments \u0026 pricing.\n\n### Can an agent call Perplexity Search API and SpecStream without installing anything?\n\nYes. Perplexity Search API has a hosted endpoint at https://api.perplexity.ai/mcp and SpecStream at https://api.specstream.ai/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/perplexity-search-api-vs-specstream.json, and with the fewest tokens: https://www.anchorterminal.com/compare/perplexity-search-api-vs-specstream.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"perplexity-search-api\", \"b\": \"specstream\"}`. From a terminal: `anchor compare perplexity-search-api specstream`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/perplexity-search-api.json and https://www.anchorterminal.com/api/v1/tools/specstream.json\n\n## Other comparisons with Perplexity Search API or SpecStream\n\n- [Web Search Tool on Amazon Bedrock AgentCore vs Perplexity Search API](https://www.anchorterminal.com/compare/agentcore-web-search-vs-perplexity-search-api.md)\n- [Web Search Tool on Amazon Bedrock AgentCore vs SpecStream](https://www.anchorterminal.com/compare/agentcore-web-search-vs-specstream.md)\n- [Grounding with Bing Search vs Perplexity Search API](https://www.anchorterminal.com/compare/bing-grounding-vs-perplexity-search-api.md)\n- [Grounding with Bing Search vs SpecStream](https://www.anchorterminal.com/compare/bing-grounding-vs-specstream.md)\n- [Brave Search API + MCP vs Perplexity Search API](https://www.anchorterminal.com/compare/brave-search-mcp-vs-perplexity-search-api.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 Perplexity Search API](https://www.anchorterminal.com/compare/cloudflare-web-search-vs-perplexity-search-api.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 Perplexity Search API](https://www.anchorterminal.com/compare/deepseek-search-api-vs-perplexity-search-api.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 Perplexity Search API](https://www.anchorterminal.com/compare/exa-mcp-vs-perplexity-search-api.md)\n- [Exa API + MCP vs SpecStream](https://www.anchorterminal.com/compare/exa-mcp-vs-specstream.md)\n- [Firecrawl MCP vs Perplexity Search API](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-perplexity-search-api.md)\n- [Firecrawl MCP vs SpecStream](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-specstream.md)\n- [Kagi Search API vs Perplexity Search API](https://www.anchorterminal.com/compare/kagi-search-vs-perplexity-search-api.md)\n- [Kagi Search API vs SpecStream](https://www.anchorterminal.com/compare/kagi-search-vs-specstream.md)\n- [Linkup vs Perplexity Search API](https://www.anchorterminal.com/compare/linkup-vs-perplexity-search-api.md)\n- [Linkup vs SpecStream](https://www.anchorterminal.com/compare/linkup-vs-specstream.md)\n- [Mojeek Web Search API vs Perplexity Search API](https://www.anchorterminal.com/compare/mojeek-vs-perplexity-search-api.md)\n- [Mojeek Web Search API vs SpecStream](https://www.anchorterminal.com/compare/mojeek-vs-specstream.md)\n- [NewsCatcher vs Perplexity Search API](https://www.anchorterminal.com/compare/newscatcher-vs-perplexity-search-api.md)\n- [Parallel Search and Task APIs vs Perplexity Search API](https://www.anchorterminal.com/compare/parallel-search-api-vs-perplexity-search-api.md)\n- [Parallel Search and Task APIs vs SpecStream](https://www.anchorterminal.com/compare/parallel-search-api-vs-specstream.md)\n- [Perplexity Search API vs SearchAPI.io](https://www.anchorterminal.com/compare/perplexity-search-api-vs-searchapi-io.md)\n- [Perplexity Search API vs SerpApi](https://www.anchorterminal.com/compare/perplexity-search-api-vs-serpapi.md)\n- [Perplexity Search API vs Serper](https://www.anchorterminal.com/compare/perplexity-search-api-vs-serper.md)\n- [Perplexity Search API vs SERPHouse](https://www.anchorterminal.com/compare/perplexity-search-api-vs-serphouse.md)\n- [Perplexity Search API vs SerpKite](https://www.anchorterminal.com/compare/perplexity-search-api-vs-serpkite.md)\n- [Perplexity Search API vs Tavily API + MCP](https://www.anchorterminal.com/compare/perplexity-search-api-vs-tavily-mcp.md)\n- [Perplexity Search API vs TinyFish Search](https://www.anchorterminal.com/compare/perplexity-search-api-vs-tinyfish-search.md)\n- [Perplexity Search API vs Valyu](https://www.anchorterminal.com/compare/perplexity-search-api-vs-valyu.md)\n- [Perplexity Search API vs You.com APIs](https://www.anchorterminal.com/compare/perplexity-search-api-vs-you-com-api.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- [SERPHouse vs SpecStream](https://www.anchorterminal.com/compare/serphouse-vs-specstream.md)\n- [SerpKite vs SpecStream](https://www.anchorterminal.com/compare/serpkite-vs-specstream.md)\n- [Arcmira vs Perplexity Search API](https://www.anchorterminal.com/compare/arcmira-vs-perplexity-search-api.md)\n- [Arcmira vs SpecStream](https://www.anchorterminal.com/compare/arcmira-vs-specstream.md)\n- [Grep AI vs Perplexity Search API](https://www.anchorterminal.com/compare/grep-ai-vs-perplexity-search-api.md)\n- [Grep AI vs SpecStream](https://www.anchorterminal.com/compare/grep-ai-vs-specstream.md)\n- [NewsCatcher vs SpecStream](https://www.anchorterminal.com/compare/newscatcher-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",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Perplexity Search API vs SpecStream",
        "url": ""
      }
    ],
    "description": "Perplexity Search scores 70.2 (BB) to SpecStream's 64.4 (B) for web search. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Perplexity Search API BB 70.2",
      "SpecStream B 64.4",
      "scores"
    ],
    "h1": "Perplexity Search API vs SpecStream",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/perplexity-search-api-vs-specstream",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Perplexity Search vs SpecStream for AI agents (2026) | Anchor Terminal",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/perplexity-search-api-vs-specstream"
  },
  "tokens": {
    "markdown": 6350,
    "slim": 3780
  },
  "version": 1
}
