[
  {
    "productId": "brave-search-api",
    "storyId": "agent-research-pipeline",
    "verdict": "partial",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Brave's docs show a coherent path for the story: Web Search for search, the LLM Context endpoint for pre-extracted, token-budgeted content ('no scraping'), and the Answers API/MCP summarization tool for synthesis, all under one API/account and exposed via an official MCP server with search+summarization tools. However, community evidence shows the free/standard tier ToS explicitly prohibits using responses for AI inference, requiring users to switch to a separate paid AI Inference plan to legitimately run this exact agentic search→extract→synthesize flow, which is a significant real-world caveat. Missing for 10: independent hands-on proof of a single API call/session chaining search, extraction, and synthesis end-to-end, and resolution of the ToS friction for standard-tier AI-native use.",
    "evidenceIds": [
      "brave-search-api-docs-26",
      "brave-search-api-docs-39",
      "brave-search-api-docs-27",
      "brave-search-api-docs-43",
      "brave-search-api-docs-53",
      "brave-search-api-docs-54",
      "brave-search-api-docs-16",
      "brave-search-api-docs-30",
      "brave-search-api-docs-15",
      "brave-search-api-comm-1",
      "brave-search-api-comm-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "agent-tool-call-ready",
    "verdict": "partial",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Brave ships an official MCP server plus guides for Claude Desktop, Open WebUI, n8n, Dify, OpenClaw and 'Skills' for Cursor/Copilot/Codex/etc., and a dedicated LLM Context endpoint explicitly built for machine/tool consumption — strong evidence of ready-made agent-framework tool integration. However, no OpenAPI/function-calling schema was found (probe returned 404s for openapi.json/swagger.json), and community reporting shows the standard/free plan's ToS explicitly prohibits using responses for AI inference, requiring a separate AI Inference plan for agent use — a real practical caveat on 'plug-and-play' tool use. Missing for 10: published OpenAPI/function-calling JSON schema, and clarity/first-party confirmation resolving the ToS friction for standard-tier agent use.",
    "evidenceIds": [
      "brave-search-api-docs-15",
      "brave-search-api-docs-12",
      "brave-search-api-docs-13",
      "brave-search-api-docs-14",
      "brave-search-api-docs-37",
      "brave-search-api-docs-38",
      "brave-search-api-docs-45",
      "brave-search-api-docs-26",
      "brave-search-api-probe-3",
      "brave-search-api-probe-4",
      "brave-search-api-comm-1",
      "brave-search-api-comm-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-agent-docs",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "A live probe confirms llms.txt exists (HTTP 200) with agent-oriented framing describing the API's LLM-read capabilities, and docs explicitly reference agent-oriented resources like a Skills page compatible with numerous coding agents/IDEs, an official MCP server, and an LLM Context endpoint 'benchmarked as the most powerful Search API for AI.' missing for 10: individual page .md endpoints return 404 (no full llms-full.txt style per-page markdown), and no independent/community confirmation that agents successfully consume llms.txt in practice.",
    "evidenceIds": [
      "brave-search-api-probe-1",
      "brave-search-api-docs-45",
      "brave-search-api-docs-15",
      "brave-search-api-docs-26",
      "brave-search-api-probe-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-ai-insights",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Brave Search API ships multiple AI-generated insight features directly on its own data: an Answers API with 'AI-generated answers backed by real-time web search and verifiable sources', AI-powered summarization from search results, an LLM Context endpoint optimized for agents, AI-generated POI/location descriptions, and search suggestions/spell-check. These are well documented across docs and the MCP server. However, community evidence shows the free tier's ToS explicitly prohibits using responses for AI inference, requiring users to switch to a separate AI Inference plan to legitimately use these AI features with agents. Missing for 10: independent hands-on validation of summarization/answer quality, and clearer first-party clarification reconciling the ToS restriction with the AI-agent-focused feature set.",
    "evidenceIds": [
      "brave-search-api-docs-27",
      "brave-search-api-docs-43",
      "brave-search-api-docs-16",
      "brave-search-api-docs-30",
      "brave-search-api-docs-26",
      "brave-search-api-docs-51",
      "brave-search-api-docs-47",
      "brave-search-api-comm-1",
      "brave-search-api-comm-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-autonomous-automation",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Brave Search API is a search/data API consumed by other systems (agents, MCP clients, automation platforms like n8n/Dify) — it does not itself provide a scheduler, workflow engine, or persistent background execution capability. Setting up autonomous background automations is the role of the consuming platform, not this API, so the axis is a category mismatch for this product type.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-builtin-assistant",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Brave Search API is a search/data API meant to be consumed as a tool by other AI agents and assistants (e.g., via its MCP server or LLM Context endpoint) — it is not itself a product with a built-in assistant to which a user delegates tasks. This is a category mismatch, not a missing feature.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-headless",
    "verdict": "full",
    "quality": 8,
    "confidence": "medium",
    "rationale": "As a REST API accessed via API key and curl calls, Brave Search API is inherently headless and scriptable, with docs demonstrating curl-based requests, API key auth setup, and integration into automation platforms like n8n and MCP servers for agentic pipelines. Missing for 10: no explicit CI/CD pipeline example or rate-limit/CI-specific guidance, and no independent hands-on CI report.",
    "evidenceIds": [
      "brave-search-api-docs-1",
      "brave-search-api-docs-10",
      "brave-search-api-docs-14",
      "brave-search-api-docs-15",
      "brave-search-api-docs-38",
      "brave-search-api-probe-4"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-mcp-client",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Brave Search API is a search backend/service, not an agent or orchestrator that itself consumes MCP servers' tools; the evidence shows it ships an MCP server so other agents can call *it*, which is the reverse relationship. The story of 'plugging MCP servers into this product so it can use their tools' is a category error for a search API product.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-mcp-server",
    "verdict": "partial",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Brave publishes an official MCP server (github.com/brave/brave-search-mcp-server) covering web/local/image/video/news search, LLM context, and summarization, plus a first-party guide for wiring it into Claude Desktop via MCP — solid evidence the axis is met. However, community evidence shows a real caveat: the standard/free API ToS prohibits using responses for AI inference, requiring a separate 'AI Inference' plan, which complicates the 'connect an agent' promise for typical users. Missing for 10: independent hands-on report of the MCP server working end-to-end, and official clarification resolving the ToS/plan conflict for agentic use.",
    "evidenceIds": [
      "brave-search-api-docs-12",
      "brave-search-api-docs-15",
      "brave-search-api-docs-16",
      "brave-search-api-probe-4",
      "brave-search-api-comm-1",
      "brave-search-api-comm-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-nl-commands",
    "verdict": "full",
    "quality": 8,
    "confidence": "medium",
    "rationale": "Brave Search API is explicitly built for natural-language queries and agentic consumption: the Rich Search API resolves natural queries like 'weather in london' (docs-49), the LLM Context/Answers endpoints are designed for machine/LLM consumption, and Brave ships an official MCP server plus 'Skills' that let Claude Code, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, Goose, Amp, Roo Code, etc. invoke the API purely via natural-language agent commands (docs-15, docs-45, docs-12, docs-37, docs-38). This directly supports an AI-native user operating the product conversationally through their agent of choice rather than hand-crafting API calls. Missing for 10: independent hands-on verification that these natural-language/agent integrations work smoothly in practice, and clarity on the ToS restriction on free-tier AI inference use noted in community discussion (comm-1/comm-2), which adds a minor licensing caveat rather than a capability failure.",
    "evidenceIds": [
      "brave-search-api-docs-49",
      "brave-search-api-docs-45",
      "brave-search-api-docs-12",
      "brave-search-api-docs-15",
      "brave-search-api-docs-26",
      "brave-search-api-docs-37",
      "brave-search-api-docs-38",
      "brave-search-api-comm-1",
      "brave-search-api-comm-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-official-cli",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack documents an official MCP server, various integration guides, and 'Skills' for third-party CLIs (e.g., Gemini CLI, Claude Code) but no dedicated first-party Brave Search API CLI tool is mentioned anywhere.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-public-api",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Brave Search API is explicitly documented as a REST/curl-based public API with API keys, extensive query parameters, and even an LLM-specific context endpoint benchmarked for AI agents; probe confirms live docs and llms.txt endpoint. Some caveats exist (no discoverable OpenAPI/swagger spec, and community notes ToS ambiguity around AI inference on the free tier requiring a separate AI plan), which slightly limit a fully frictionless agentic experience. missing for 10: machine-readable OpenAPI/swagger spec, and clean ToS alignment for AI-inference use without plan switching.",
    "evidenceIds": [
      "brave-search-api-docs-1",
      "brave-search-api-docs-2",
      "brave-search-api-docs-26",
      "brave-search-api-probe-1",
      "brave-search-api-probe-3",
      "brave-search-api-comm-1",
      "brave-search-api-comm-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-scoped-keys",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "The evidence shows only basic API key retrieval and general dashboard docs; there is no mention of scoped, role-based, or least-privilege credential issuance, key permissions, or agent-specific access controls. This is a reasonable axis for an API product, but no evidence supports it being delivered.",
    "evidenceIds": [
      "brave-search-api-docs-1"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-sdks",
    "verdict": "partial",
    "quality": 4,
    "confidence": "low",
    "rationale": "Brave documents REST endpoints (curl examples) and an official MCP server (brave-search-mcp-server) for agent integration, plus OpenAI-SDK compatibility for the Answers endpoint, but there is no evidence of dedicated official client SDKs (Python/JS/Go packages) or a published OpenAPI spec — probes for openapi.json and docs.md both 404. Missing for 10: dedicated first-party language SDKs, published OpenAPI/spec artifacts, independent developer corroboration of SDK usage.",
    "evidenceIds": [
      "brave-search-api-docs-15",
      "brave-search-api-docs-54",
      "brave-search-api-probe-3",
      "brave-search-api-probe-4",
      "brave-search-api-docs-45"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "agentic-webhooks",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "Brave Search API is a request/response search API with an MCP server for agent tool use, but no evidence anywhere in the pack of a webhook/event subscription mechanism.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "api-interactive-docs",
    "verdict": "partial",
    "quality": 3,
    "confidence": "medium",
    "rationale": "The docs site has a structured API reference (per-endpoint pages like rich_search, local_pois, suggestions) and includes copy-pasteable curl examples, but there is no evidence of an interactive 'try-it' console or runnable code sandbox — probes for an OpenAPI/Swagger spec (a common backbone for interactive references) returned 404s. Missing for 10: evidence of a live/interactive request-runner UI, OpenAPI-based reference, or embedded runnable code examples beyond static curl snippets.",
    "evidenceIds": [
      "brave-search-api-docs-47",
      "brave-search-api-docs-49",
      "brave-search-api-docs-50",
      "brave-search-api-docs-3",
      "brave-search-api-probe-3",
      "brave-search-api-probe-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "api-machine-spec",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "Direct probes for an OpenAPI/Swagger spec at all standard locations (openapi.json, swagger.json, etc.) returned 404, and no evidence item links to a downloadable machine-readable spec file; only a documentation site and an llms.txt summary page exist, not a formal API spec.",
    "evidenceIds": [
      "brave-search-api-probe-3",
      "brave-search-api-probe-2",
      "brave-search-api-probe-1"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "api-sandbox",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Brave Search API is a live search index/service, not a system with a sandbox/test environment concept — the axis is a category error for a search API product; there is no production data being written to that would require sandbox isolation.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "api-versioning-policy",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "The evidence pack contains extensive documentation of endpoints, features, and integrations, but nothing about API versioning scheme, version numbers, changelog, or a documented deprecation/sunset policy — a fair and applicable axis for any developer-facing API.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "automation-bulk-operations",
    "verdict": "partial",
    "quality": 3,
    "confidence": "low",
    "rationale": "The only evidence of bulk operations is the Local Search API accepting up to 20 location IDs in a single request for POI details/descriptions; there is no documented batch endpoint for submitting multiple search queries at once or any general bulk-processing capability across web/image/video/news search. Missing for 10: batch query submission across many search terms, bulk export/processing tooling, and any documented rate/throughput features for large-scale automated bulk use beyond the 20-ID POI limit.",
    "evidenceIds": [
      "brave-search-api-docs-24",
      "brave-search-api-docs-35",
      "brave-search-api-docs-50"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "automation-rules-engine",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Brave Search API is a search/data API product, not an automation/rules-engine platform; defining event-triggered rules is outside its category — this axis belongs to workflow/automation tools that consume the API (e.g., n8n), not the API itself.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "automation-scheduled-jobs",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Brave Search API is a search/data API, not an orchestration or scheduling platform; recurring job/workflow scheduling is not a capability class it could plausibly ship — it's the domain of the automation tools (e.g. n8n) that consume this API as a node, not the API itself.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "automation-versioned-workflows",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Brave Search API is a search/data API, not an automation platform with workflows or configurations to version, review, or roll back; this axis is a category error for this product type.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "batch-async-processing",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence of batch or asynchronous job submission for high-volume workloads; the API is documented as a synchronous per-query REST API with pagination via offset, not batch/async job endpoints. Pricing-limits related docs cover rate limiting/plans indirectly but nothing about job queuing or batch processing.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "citation-metadata",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Docs confirm results include titles and URLs (doc-40) and support date-based filtering/freshness (doc-3, doc-19), plus verifiable-source AI answers (doc-17, doc-27) and news search from trusted sources (doc-28), suggesting citation-relevant metadata is present. However, no evidence explicitly documents a 'published date' field per result or confirms 'canonical URL' normalization in the response schema, and no OpenAPI/schema reference or independent hands-on test verifies field consistency. Missing for 10: explicit per-result published-date field documentation, explicit canonical-URL guarantee, and independent corroboration of citation accuracy.",
    "evidenceIds": [
      "brave-search-api-docs-40",
      "brave-search-api-docs-19",
      "brave-search-api-docs-3",
      "brave-search-api-docs-17",
      "brave-search-api-docs-27",
      "brave-search-api-docs-28"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "direct-answer-generation",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Brave documents a dedicated Answers endpoint that returns 'AI-generated answers backed by real-time web search and verifiable sources', with streaming and OpenAI-SDK compatibility, indicating a single-call sourced LLM answer is possible. However, the separate Summarizer feature explicitly requires two calls (search with summary:true, then fetch the summary key), and community evidence shows the free/standard plan's ToS forbids using responses for AI inference, requiring a separate AI Inference plan — a real-world caveat on using this for LLM-answer generation. Missing for 10: a concrete single-request/response example for the Answers endpoint, independent hands-on verification of answer quality/sourcing, and clarity on how the ToS/plan restriction affects typical developer usage.",
    "evidenceIds": [
      "brave-search-api-docs-27",
      "brave-search-api-docs-43",
      "brave-search-api-docs-53",
      "brave-search-api-docs-54",
      "brave-search-api-docs-16",
      "brave-search-api-comm-1",
      "brave-search-api-comm-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "documented-rate-limits",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "No evidence in the pack documents specific rate limits, concurrency caps, or a self-serve upgrade flow; only tangential mentions of a 'standard' vs 'AI Inference' plan appear in a community post, with no linked docs on limits or upgrade mechanics.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "domain-include-exclude",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Brave Search API supports domain exclusion/restriction via query operators like 'site:' and '-' minus exclusion, plus Goggles for custom boosting/demoting of specific websites and domains, giving developers multiple mechanisms to control which domains appear. missing for 10: no dedicated first-class 'exclude_domains' API parameter is documented (relies on query syntax and Goggles), and no independent/hands-on verification confirming reliability of these exclusion mechanisms in practice.",
    "evidenceIds": [
      "brave-search-api-docs-6",
      "brave-search-api-docs-7",
      "brave-search-api-docs-20",
      "brave-search-api-docs-21",
      "brave-search-api-docs-32",
      "brave-search-api-docs-44"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "find-similar-links",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence of a 'find similar pages/URLs' or related-URL search feature; Brave Search API's documented capabilities (web, image, video, news, local, answers, LLM context, spell check, suggestions) do not include a similarity/related-page endpoint.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "free-tier-prototyping",
    "verdict": "disputed",
    "quality": 5,
    "confidence": "medium",
    "rationale": "Docs suggest quick API-key signup ('make your first request in minutes') implying a free tier exists, and community evidence confirms a free tier, but that same evidence shows the free tier's ToS explicitly bans using responses for AI inference — the core prototyping use case highlighted throughout Brave's own AI/agent-focused documentation — forcing developers to cancel and switch to a separate paid 'AI Inference' plan to legally prototype AI use cases.",
    "evidenceIds": [
      "brave-search-api-docs-1",
      "brave-search-api-comm-1",
      "brave-search-api-comm-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "fresh-results-recency",
    "verdict": "full",
    "quality": 8,
    "confidence": "medium",
    "rationale": "Docs explicitly document date-range/recency filters (e.g. `pd` for last 24 hours, 'powerful date-based filtering'), news search for real-time articles, and claims of a frequently crawled/indexed billion-page index ensuring freshness. Missing for 10: independent/third-party benchmarking of index freshness or update frequency, and no explicit documentation of the full set of date-range operators beyond the 24-hour example.",
    "evidenceIds": [
      "brave-search-api-docs-3",
      "brave-search-api-docs-19",
      "brave-search-api-docs-18",
      "brave-search-api-docs-28",
      "brave-search-api-docs-31"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "full-page-contents",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Brave's docs describe a dedicated LLM Context endpoint that returns 'pre-extracted page content for your LLM — no scraping, token-budgeted' with configurable token/URL limits, going beyond simple title/snippet results and explicitly built for machine consumption in RAG/agent pipelines. missing for 10: explicit format spec (markdown vs plain text) of the extracted content, and independent/hands-on third-party validation of extraction quality/fidelity",
    "evidenceIds": [
      "brave-search-api-docs-39",
      "brave-search-api-docs-26",
      "brave-search-api-docs-55",
      "brave-search-api-docs-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "geo-language-targeting",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Docs confirm country-code targeting for web search and location-based features (POI search, local descriptions), supporting geographic localization. However, no explicit evidence of a language parameter for localization, so full multi-axis localization (country, language, location) isn't fully documented. missing for 10: explicit language-parameter documentation, independent verification of localization accuracy.",
    "evidenceIds": [
      "brave-search-api-docs-4",
      "brave-search-api-docs-10",
      "brave-search-api-docs-24",
      "brave-search-api-docs-35",
      "brave-search-api-docs-50",
      "brave-search-api-docs-51"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "keyword-hybrid-modes",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "The evidence pack describes filtering, ranking (Goggles), pagination, safesearch, and rich verticals, but there is no mention of selectable retrieval modes such as keyword vs neural vs hybrid search per query — Brave's API appears to expose a single indexed web search with re-ranking, not configurable retrieval algorithms.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "news-vertical-endpoints",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Docs show dedicated vertical endpoints/categories including news ('real-time news articles from thousands of trusted sources'), images (billions of images with filtering), video search, local/POI search, and rich search verticals like sports/stocks/weather, alongside date-based freshness filters (pd/pw/pm/py) for recency. Missing for 10: a documented finance-specific endpoint (only general 'stocks' vertical mentioned) and independent third-party corroboration of vertical query behavior beyond first-party docs.",
    "evidenceIds": [
      "brave-search-api-docs-28",
      "brave-search-api-docs-29",
      "brave-search-api-docs-41",
      "brave-search-api-docs-42",
      "brave-search-api-docs-25",
      "brave-search-api-docs-3",
      "brave-search-api-docs-19",
      "brave-search-api-probe-1"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "openness-api-parity",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Docs show the API exposes most of the same verticals as the consumer Brave Search UI — web, image, video, news, local/POI, rich results (sports/stocks/weather), Goggles re-ranking, AI-generated answers/summarization, suggestions and spell-check — suggesting broad feature parity (docs-6,10,27-30,41-51). However there's no explicit vendor claim of full UI/API parity, no OpenAPI spec is discoverable (probe-3), and community evidence flags that the free-tier ToS actually prohibits AI-inference use of API responses, requiring a separate paid plan — a real-world caveat for AI-native use that the UI doesn't impose (comm-1, comm-2). Missing for 10: an explicit parity statement, evidence of UI-only features (e.g., personalization/history) being absent or present in API, and resolution of the ToS friction for AI use.",
    "evidenceIds": [
      "brave-search-api-docs-6",
      "brave-search-api-docs-10",
      "brave-search-api-docs-27",
      "brave-search-api-docs-28",
      "brave-search-api-docs-29",
      "brave-search-api-docs-41",
      "brave-search-api-docs-42",
      "brave-search-api-docs-47",
      "brave-search-api-docs-48",
      "brave-search-api-docs-49",
      "brave-search-api-comm-1",
      "brave-search-api-comm-2",
      "brave-search-api-probe-3"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "openness-full-export",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Brave Search API is a stateless query/search service — users send search requests and receive results; there is no persistent user-generated data corpus to 'export and leave' with in the sense this story implies (e.g., notes, documents, account content). Data portability/lock-in axes don't meaningfully apply to a pay-per-query search API.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "openness-open-license",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack shows Brave Search API is a proprietary, closed-source hosted API/service; only a companion MCP server wrapper is open source on GitHub, but that is a client integration tool, not the product's own source (search index, ranking, backend). No license or repository for the core Brave Search API itself is evidenced.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "openness-self-host",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Brave Search API is a hosted search index/API service, not software whose core (the crawl/index infrastructure) can be self-hosted by users; self-hosting is a category error for this product type. Only the thin MCP server wrapper is self-hostable, which is a client integration, not the core product.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "privacy-data-residency",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence in the pack mentions data residency, regional data storage options, or compliance/geo-storage controls for the Brave Search API—only search result targeting by country code (a query parameter, not data residency). This is a fair axis for an API service handling user queries, but no capability is documented.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "privacy-no-training",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "No evidence pack item addresses a user-facing control or policy for preventing personal data from being used to train AI models; the closest evidence (comm-1, comm-2) discusses ToS restrictions on using API *responses* for AI inference and a separate 'AI Inference' plan, not data-training opt-out.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "privacy-retention-controls",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "No evidence in the pack discusses data retention policies, deletion controls, or privacy settings a user could configure for the Brave Search API; the community evidence only concerns ToS restrictions on AI inference usage, not data retention/deletion.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "privacy-telemetry-optout",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "No evidence in the pack describes any telemetry opt-out, privacy settings, or usage-tracking controls for API consumers; the community item discusses ToS restrictions on AI inference use, not telemetry/tracking opt-out.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "rag-ready-snippets",
    "verdict": "partial",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Brave Search API ships a dedicated LLM Context endpoint described as pre-extracted, token-budgeted, and default for RAG/tools/chatbots, with configurable token/URL limits and an official MCP server exposing 'LLM context' as a tool — directly matching the story. However, community evidence shows the free tier's ToS explicitly prohibits using API responses for 'AI inference,' requiring purchase of a separate AI Inference plan to legitimately use this for RAG, which is a significant real-world caveat. Missing for 10: independent/hands-on benchmarks validating RAG output quality, and clarity resolving the ToS friction for standard-plan users.",
    "evidenceIds": [
      "brave-search-api-docs-39",
      "brave-search-api-docs-26",
      "brave-search-api-docs-55",
      "brave-search-api-docs-15",
      "brave-search-api-docs-16",
      "brave-search-api-comm-1",
      "brave-search-api-comm-2"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "relevance-scores",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The docs describe ranking, re-ranking via Goggles, and filters like safesearch/date, but no evidence anywhere of a per-result numeric relevance/confidence score field that a developer could read and threshold on programmatically.",
    "evidenceIds": []
  },
  {
    "productId": "brave-search-api",
    "storyId": "robots-compliance-stance",
    "verdict": "disputed",
    "quality": 3,
    "confidence": "medium",
    "rationale": "No documentation in the evidence pack addresses robots.txt handling or content licensing terms at all. On permitted use, community evidence shows a real contradiction: Brave's free-tier ToS reportedly prohibits using API responses for 'AI inference,' yet Brave's own official guides promote integrating the API with AI agents (OpenClaw, Claude MCP, Dify) — users had to discover a separate paid 'AI Inference plan' to comply, undercutting a clear, consistent documented stance. missing for 10: any explicit robots.txt policy, any content licensing/reuse terms, and a consistent (non-contradictory) permitted-use statement.",
    "evidenceIds": [
      "brave-search-api-comm-1",
      "brave-search-api-comm-2",
      "brave-search-api-docs-12",
      "brave-search-api-docs-37"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "semantic-neural-search",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence describes Brave Search API as a keyword/index-based crawler service (crawls and indexes billions of pages, supports site:, quotes, exclusion operators) plus AI-generated summaries/answers layered on top of search results — nothing describes vector/embedding-based semantic retrieval that surfaces results a keyword engine would miss. AI Answers/LLM Context endpoints ground answers on existing keyword search results rather than performing meaning-based retrieval.",
    "evidenceIds": [
      "brave-search-api-docs-18",
      "brave-search-api-docs-21",
      "brave-search-api-docs-7",
      "brave-search-api-docs-26",
      "brave-search-api-docs-39"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "structured-json-output",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "The evidence pack shows Brave Search API returns fixed response schemas (JSON results for web/image/video/news/local/answers) and offers no mechanism for developers to define a custom JSON schema that outputs are validated/structured against; no OpenAPI/structured-output/schema-binding feature is documented (openapi probes return 404).",
    "evidenceIds": [
      "brave-search-api-probe-3",
      "brave-search-api-docs-39",
      "brave-search-api-docs-26"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "subpage-crawling",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "The evidence shows Brave Search API returns ranked results, site-specific search filters (site:), and pre-extracted per-result content for LLM consumption, but nothing about crawling subpages or traversing an entire site starting from a result. There is no sitemap-following, recursive crawl, or 'fetch all pages under this domain' capability documented anywhere in the docs or MCP server description.",
    "evidenceIds": [
      "brave-search-api-docs-7",
      "brave-search-api-docs-21",
      "brave-search-api-docs-39",
      "brave-search-api-docs-18"
    ]
  },
  {
    "productId": "brave-search-api",
    "storyId": "transparent-request-pricing",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "The evidence pack contains no docs or pages showing actual per-request or per-credit pricing figures, tiers, or a self-serve pricing table; the only related mentions are community references to a 'free tier' and a separate 'AI Inference plan' (brave-search-api-comm-1, brave-search-api-comm-2) that imply multiple plans exist but give no concrete pricing numbers or confirmation that pricing is disclosed without contacting sales.",
    "evidenceIds": [
      "brave-search-api-comm-1",
      "brave-search-api-comm-2"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agent-research-pipeline",
    "verdict": "full",
    "quality": 8,
    "confidence": "medium",
    "rationale": "Exa's Agent API and Contents/Answer endpoints explicitly support a single-API multi-step flow: search, extract clean content, and synthesize a grounded answer with citations (exa-docs-25, exa-docs-26, exa-docs-24, exa-gh-3/8), and the search endpoint can even return contents inline (exa-docs-22, exa-docs-35). Community feedback shows mixed real-world reliability (e.g., stuck verification, incomplete enrichment) which tempers confidence. Missing for 10: independent hands-on validation of the full search→extract→synthesize loop working end-to-end without manual chaining, and clearer benchmarking of synthesis quality.",
    "evidenceIds": [
      "exa-docs-25",
      "exa-docs-26",
      "exa-docs-24",
      "exa-docs-22",
      "exa-gh-3",
      "exa-gh-8",
      "exa-docs-35",
      "exa-comm-3"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agent-tool-call-ready",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Exa ships an official JS/TS SDK with `webSearch()` designed explicitly for use as a tool in OpenAI/Anthropic agent loops, plus an open-source MCP server connecting Claude Desktop, Cursor, VS Code, ChatGPT, Codex, Grok and other MCP clients, and structured output_schema/JSON extraction for direct tool-call consumption. missing for 10: no official OpenAI/Anthropic function-calling JSON schema published directly (only inferred via SDK helper), no independent hands-on validation of agent-framework integration reliability, and no public OpenAPI spec (probe returned 404s).",
    "evidenceIds": [
      "exa-gh-1",
      "exa-gh-4",
      "exa-docs-6",
      "exa-docs-14",
      "exa-docs-30",
      "exa-docs-31",
      "exa-docs-3",
      "exa-gh-6",
      "exa-probe-4",
      "exa-docs-32"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-agent-docs",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "Exa hosts a real llms.txt (verified live at exa.ai/llms.txt, HTTP 200) plus a full documentation index at /docs/llms.txt, and its docs pages have .md variants (e.g. search-api-guide.md) explicitly designed for agent consumption, with agent-skills.md teaching coding agents to use Exa's APIs. This is corroborated by a live probe, not just vendor claims. Missing for 10: independent third-party confirmation that agents actually consume/parse these files successfully in practice.",
    "evidenceIds": [
      "exa-probe-1",
      "exa-probe-2",
      "exa-docs-23",
      "exa-docs-25",
      "exa-docs-32"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-ai-insights",
    "verdict": "partial",
    "quality": 4,
    "confidence": "low",
    "rationale": "Websets can enrich and verify search results with AI-generated additional data points (exa-docs-8, exa-docs-15, exa-docs-21), which is the closest analog to 'insights from data' in Exa's product, but this is about web search results rather than a user's own stored data/dashboard, and independent evidence shows enrichment is unreliable (exa-comm-2 shows failed data enrichment for price). Missing for 10: evidence of insight generation over a user's own uploaded/proprietary data set, dashboard-style analytics, or reliable enrichment accuracy corroborated independently.",
    "evidenceIds": [
      "exa-docs-8",
      "exa-docs-15",
      "exa-docs-21",
      "exa-comm-2"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-autonomous-automation",
    "verdict": "partial",
    "quality": 5,
    "confidence": "medium",
    "rationale": "Exa offers scheduled/monitoring searches ('Scheduled searches that surface new events on the web') and async webhook callbacks for Websets enrichment, which enable background automation for search/data-gathering tasks, but there's no evidence of a general-purpose automation/agent scheduler, workflow builder, or broader autonomous task execution beyond search/websets. missing for 10: details on automation setup UI/API, retry/monitoring controls, broader task types beyond search/enrichment, and independent confirmation these scheduled jobs run reliably.",
    "evidenceIds": [
      "exa-docs-9",
      "exa-docs-10",
      "exa-docs-21",
      "exa-docs-15"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-builtin-assistant",
    "verdict": "disputed",
    "quality": 4,
    "confidence": "medium",
    "rationale": "Exa's dashboard-based Websets/Exa Agent let a user hand off a natural-language task ('agtech companies that raised Series A') and have it autonomously search, verify, and enrich results without code (exa-docs-8, exa-docs-15, exa-docs-29), which is a form of built-in delegated AI assistant. However, hands-on community reports directly contradict reliability: a tester's Websets query failed to extract requested price data, another saw verification get stuck indefinitely with mostly misses, and a GitHub-search 'agent' feature was only ~30% accurate with broken example code (exa-comm-2, exa-comm-3, exa-comm-4). Missing for 10: a conversational/chat-style assistant UI, independent corroboration that delegated tasks complete reliably, and resolution of the documented failures.",
    "evidenceIds": [
      "exa-docs-8",
      "exa-docs-15",
      "exa-docs-29",
      "exa-comm-2",
      "exa-comm-3",
      "exa-comm-4"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-headless",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Exa is an API-first product (exa-js SDK, REST endpoints, webhooks, streaming) that is naturally callable headlessly from scripts/CI without any UI, and supports async batch operations like Websets and deep research suited to automation pipelines. missing for 10: no explicit CI/CD example (e.g., GitHub Actions), no dedicated 'headless/automation' documentation section, and no independent report confirming CI usage.",
    "evidenceIds": [
      "exa-gh-1",
      "exa-gh-2",
      "exa-docs-9",
      "exa-docs-21",
      "exa-docs-33",
      "exa-probe-2"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-mcp-client",
    "verdict": "na",
    "quality": 0,
    "confidence": "medium",
    "rationale": "Exa is a search/data platform that exposes its own capabilities to other AI assistants via an official MCP server (exa-docs-6, exa-docs-30, exa-probe-4) — it plays the MCP server role, not the client role that consumes external MCP servers' tools. There is no evidence Exa itself acts as an agent that plugs in and uses third-party MCP servers; its 'Exa Agent'/'Exa Connect' features integrate proprietary data partners, not the MCP protocol, so this client-side axis does not apply to this product's role.",
    "evidenceIds": [
      "exa-docs-6",
      "exa-docs-30",
      "exa-docs-27",
      "exa-probe-4"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-mcp-server",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "Exa ships a well-documented official MCP server with setup guides for Claude Desktop, Cursor, VS Code, ChatGPT, Codex, Grok and any MCP client, exposing web search, fetching, Exa Agent, and Exa Connect tools; it's open source and requires no API key to start. This is a first-party, dedicated server product (not an agent-client scenario), directly satisfying the story. Missing for 10: independent hands-on community verification of the MCP server specifically (community evidence covers the web/search product but not MCP integration experience).",
    "evidenceIds": [
      "exa-docs-6",
      "exa-docs-14",
      "exa-docs-20",
      "exa-docs-30",
      "exa-docs-31",
      "exa-probe-4"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-nl-commands",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Exa's core search API accepts natural-language queries directly (e.g. 'agtech companies in the US that raised Series A'), Websets are built from a natural-language query plus criteria, and Exa's MCP server lets AI assistants like Claude/Cursor/ChatGPT operate it purely via NL commands without code. This is well documented across docs and GitHub examples. missing for 10: independent hands-on verification that NL commands reliably map to correct results (community reports show mixed accuracy, e.g. missed price enrichment and slow/stuck verification), and no first-party benchmark of NL-command success rate.",
    "evidenceIds": [
      "exa-docs-22",
      "exa-docs-28",
      "exa-docs-8",
      "exa-docs-6",
      "exa-docs-30",
      "exa-gh-5",
      "exa-comm-2",
      "exa-comm-3"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-official-cli",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "Evidence covers Exa's SDKs (exa-js), MCP server, dashboard, and API docs, but no official CLI tool is mentioned anywhere in the pack. Since API-first companies commonly ship a CLI, the axis applies, but there's no evidence Exa offers one.",
    "evidenceIds": []
  },
  {
    "productId": "exa",
    "storyId": "agentic-public-api",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "Exa provides a well-documented public API (search, answer, websets, structured extraction) plus official SDKs (exa-js) with concrete code examples for driving it programmatically, corroborated by llms.txt/docs probes and community hands-on trial usage. missing for 10: no discoverable OpenAPI/swagger spec (404s on all probed paths), which would round out machine-readable API documentation.",
    "evidenceIds": [
      "exa-docs-1",
      "exa-docs-3",
      "exa-gh-1",
      "exa-gh-3",
      "exa-docs-16",
      "exa-probe-1",
      "exa-probe-2",
      "exa-probe-3",
      "exa-comm-1"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-scoped-keys",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "No evidence of scoped or least-privilege API key/credential issuance—docs mention API key sync into a project and rate limits, but nothing about granular permissions, scopes, or restricted-access tokens for agents.",
    "evidenceIds": [
      "exa-docs-33",
      "exa-docs-16"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-sdks",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Exa ships an official JS/TS SDK (exa-js) on GitHub with documented methods like webSearch(), streamSearch(), answer(), and schema-constrained search, directly supporting AI-native SDK-based integration into agent loops. missing for 10: independent/hands-on community validation of SDK quality, and evidence of official SDKs beyond JS/TS (e.g., Python) are not shown in the pack.",
    "evidenceIds": [
      "exa-gh-1",
      "exa-gh-2",
      "exa-gh-3",
      "exa-gh-6",
      "exa-gh-7",
      "exa-gh-8",
      "exa-gh-9",
      "exa-docs-3"
    ]
  },
  {
    "productId": "exa",
    "storyId": "agentic-webhooks",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Exa's Websets API documents real-time HTTP callbacks ('webhooks') as items are added or enriched, giving AI-native users a way to subscribe to search/enrichment events rather than polling. However, this is scoped specifically to Websets and no broader webhook infrastructure (e.g., event types, signing/security docs, retries) is evidenced for other Exa products like plain search or Agent API. Missing for 10: platform-wide webhook documentation covering multiple event types, security/verification details, and independent/hands-on confirmation of webhook reliability.",
    "evidenceIds": [
      "exa-docs-21",
      "exa-docs-28",
      "exa-docs-15"
    ]
  },
  {
    "productId": "exa",
    "storyId": "api-interactive-docs",
    "verdict": "disputed",
    "quality": 4,
    "confidence": "medium",
    "rationale": "Exa's docs claim a 'Get Code' feature that generates a 'complete, tested integration snippet' in under a minute (exa-docs-11), and the JS SDK provides runnable code examples (exa-gh-1-5), but there's no evidence of a true interactive API reference (OpenAPI/Swagger endpoints all 404'd per exa-probe-3), and a hands-on reviewer found the generated cURL example in 'Get Code' to be 'demonstrably wrong' (exa-comm-4), directly contradicting the 'tested' claim. missing for 10: a genuine try-it-out API console, working/tested generated snippets, independent confirmation the code examples run correctly.",
    "evidenceIds": [
      "exa-docs-11",
      "exa-gh-1",
      "exa-comm-4",
      "exa-probe-3"
    ]
  },
  {
    "productId": "exa",
    "storyId": "api-machine-spec",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "A direct probe for an OpenAPI/Swagger spec at all standard locations (openapi.json, swagger.json, etc.) returned 404s, and while Exa offers llms.txt and markdown doc indexes, these are documentation aids, not a machine-readable API schema (endpoints/params/types) that a buyer could import into tooling like Postman or codegen.",
    "evidenceIds": [
      "exa-probe-3",
      "exa-probe-1",
      "exa-probe-2"
    ]
  },
  {
    "productId": "exa",
    "storyId": "api-sandbox",
    "verdict": "na",
    "quality": 0,
    "confidence": "medium",
    "rationale": "Exa is a read-only web search/retrieval API with no user-owned production dataset to protect; the sandbox-vs-production data distinction doesn't apply to its category (it only has trial credits, not a sandboxed data environment).",
    "evidenceIds": []
  },
  {
    "productId": "exa",
    "storyId": "api-versioning-policy",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence pack item mentions API versioning scheme (e.g., v1/v2 endpoints) or any documented deprecation policy for older API versions; docs cover rate limits, pricing, and features but not version lifecycle management.",
    "evidenceIds": []
  },
  {
    "productId": "exa",
    "storyId": "automation-bulk-operations",
    "verdict": "partial",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Exa's Websets product is explicitly built for bulk operations — 'build large lists', verify and enrich every match against criteria, async list building/enrichment, and scheduled searches for new items (exa-docs-7,8,9,10,15,28). However, hands-on community reports show real gaps: missing enrichment data (price columns), 'Verifying...' stuck states, and inconsistent match rates (exa-comm-2,3,4), indicating the bulk pipeline doesn't always complete reliably at scale. Missing for 10: independent benchmarks confirming reliability at large scale, and resolution of the noted enrichment/verification failures.",
    "evidenceIds": [
      "exa-docs-7",
      "exa-docs-8",
      "exa-docs-9",
      "exa-docs-10",
      "exa-docs-15",
      "exa-docs-28",
      "exa-comm-2",
      "exa-comm-3",
      "exa-comm-4"
    ]
  },
  {
    "productId": "exa",
    "storyId": "automation-rules-engine",
    "verdict": "partial",
    "quality": 5,
    "confidence": "medium",
    "rationale": "Exa's Websets support scheduled searches that surface new events and real-time HTTP callbacks (webhooks) when items are added or enriched, which functions as a basic event-triggered automation mechanism. However, there's no evidence of a full rule-definition system (conditional logic, multi-step actions, or an automation builder) — missing for 10: user-defined conditional rules, multi-action workflows, and any hands-on/independent confirmation that scheduled searches or webhooks work reliably in practice.",
    "evidenceIds": [
      "exa-docs-10",
      "exa-docs-21",
      "exa-docs-9"
    ]
  },
  {
    "productId": "exa",
    "storyId": "automation-scheduled-jobs",
    "verdict": "partial",
    "quality": 5,
    "confidence": "medium",
    "rationale": "Exa's pricing docs explicitly mention \"Scheduled searches that surface new events on the web\" and \"Async deep research, list building, and enrichment,\" indicating recurring/scheduled job capability tied to Websets, but there is no detailed documentation of how to configure recurrence, cron-like scheduling, or workflow orchestration, and no independent/hands-on evidence confirming this works reliably. missing for 10: detailed docs on setting up recurring schedules, examples of scheduled workflow configuration, independent verification of scheduled jobs working as claimed.",
    "evidenceIds": [
      "exa-docs-9",
      "exa-docs-10",
      "exa-docs-21"
    ]
  },
  {
    "productId": "exa",
    "storyId": "automation-versioned-workflows",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Exa is a search/retrieval API and agent platform, not a workflow/automation builder with versioned pipelines; there is no concept of 'automations' with version history or rollback in the evidence. Scheduled searches and webhooks exist but nothing about versioning, review, or rollback of configurations, so the axis is a category error for this product.",
    "evidenceIds": []
  },
  {
    "productId": "exa",
    "storyId": "batch-async-processing",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Exa's docs describe Websets for async list-building/enrichment at scale, async deep research, scheduled searches, and webhook callbacks for job status — directly supporting asynchronous high-volume workloads, backed by rate-limit documentation for query volume management. Missing for 10: an explicit bulk/batch query submission endpoint (vs. Websets-specific async jobs), and independent/hands-on benchmarks confirming reliable performance at high volume.",
    "evidenceIds": [
      "exa-docs-9",
      "exa-docs-10",
      "exa-docs-21",
      "exa-docs-28",
      "exa-docs-16"
    ]
  },
  {
    "productId": "exa",
    "storyId": "citation-metadata",
    "verdict": "partial",
    "quality": 5,
    "confidence": "low",
    "rationale": "Exa's API supports date filtering (startPublishedDate) and domain/path targeting, and its answer/citation feature returns sourced URLs, implying results carry URLs and dates, but no evidence pack item explicitly documents the search result schema (title, canonical url, publishedDate fields) or addresses duplicate/canonicalization handling for citation accuracy. Missing for 10: explicit schema documentation showing title/url/publishedDate fields returned per result, evidence of canonical URL deduplication, and independent confirmation that dates/titles are consistently accurate.",
    "evidenceIds": [
      "exa-gh-9",
      "exa-gh-8",
      "exa-docs-22",
      "exa-docs-24"
    ]
  },
  {
    "productId": "exa",
    "storyId": "direct-answer-generation",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Exa's `/answer` endpoint (exposed via exa-js `exa.answer()`) returns an LLM-generated answer with citations in a single call, as shown in exa-gh-3 and exa-gh-8 (\"Get answers with citations\"). This is backed by first-party SDK code, though there's no independent hands-on validation of answer quality specifically for this endpoint. Missing for 10: independent/community verification of the answer API's accuracy and citation quality, and deeper docs beyond SDK snippets.",
    "evidenceIds": [
      "exa-gh-3",
      "exa-gh-8",
      "exa-docs-26"
    ]
  },
  {
    "productId": "exa",
    "storyId": "documented-rate-limits",
    "verdict": "partial",
    "quality": 4,
    "confidence": "low",
    "rationale": "Exa has a dedicated rate-limits doc page (exa-docs-16) confirming default per-endpoint limits exist, and self-serve signup/API-key provisioning with credits is documented (exa-docs-33, exa-docs-34), implying a self-serve path to get and fund an account. However, no evidence shows actual numeric rate limits, concurrency caps, or a documented tier-based upgrade mechanism (e.g., paid plan comparison unlocking higher throughput). Missing for 10: concrete rate-limit/concurrency numbers, documented upgrade tiers and how limits scale with them, and any independent confirmation of these limits in practice.",
    "evidenceIds": [
      "exa-docs-16",
      "exa-docs-33",
      "exa-docs-34"
    ]
  },
  {
    "productId": "exa",
    "storyId": "domain-include-exclude",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "Exa's API explicitly supports both includeDomains and excludeDomains parameters (accepting domains and path prefixes), documented in the search API guide and demonstrated in the exa-js GitHub README with a concrete includeDomains example. This directly delivers domain restriction/exclusion for developers via a first-party, well-documented parameter with SDK code example. Missing for 10: no independent/hands-on confirmation specifically of excludeDomains behavior in practice.",
    "evidenceIds": [
      "exa-docs-5",
      "exa-docs-13",
      "exa-docs-19",
      "exa-gh-9"
    ]
  },
  {
    "productId": "exa",
    "storyId": "find-similar-links",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack covers Exa's keyword/neural search, contents extraction, Websets, MCP integration, and agent tooling, but nowhere mentions a 'find similar' or URL-based similarity search endpoint. No documentation, GitHub snippet, or community report in this pack references finding pages similar to a given URL.",
    "evidenceIds": []
  },
  {
    "productId": "exa",
    "storyId": "free-tier-prototyping",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Exa's pricing docs explicitly state $20 free credits on sign-up plus $10/month recurring credits with no payment method required, directly enabling free prototyping, and community evidence confirms users signing up for trial accounts and testing the API without payment friction (exa-comm-1). missing for 10: no independent long-term verification of ongoing $10/month credit renewal or explicit free-tier rate limits beyond generic rate-limit doc.",
    "evidenceIds": [
      "exa-docs-34",
      "exa-docs-33",
      "exa-comm-1",
      "exa-docs-16"
    ]
  },
  {
    "productId": "exa",
    "storyId": "fresh-results-recency",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Exa's API supports date-range filtering (startPublishedDate/endPublishedDate) as shown in the JS SDK example, and Exa positions itself as a 'real-time knowledge index' with scheduled searches that surface new events on the web, indicating recency-focused indexing and monitoring capabilities. missing for 10: explicit documentation of crawl/index refresh frequency or independent benchmarks validating recency/freshness claims beyond marketing language.",
    "evidenceIds": [
      "exa-gh-9",
      "exa-docs-10",
      "exa-probe-1",
      "exa-docs-9"
    ]
  },
  {
    "productId": "exa",
    "storyId": "full-page-contents",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Exa's Contents API explicitly returns 'clean page content from URLs, handling JavaScript-rendered pages, PDFs, and complex layouts automatically,' and this full-content extraction is also bundled into Search results (up to 10 per search) rather than being limited to snippets, with a token-efficient full-text mode described as '10x token efficient extracts.' Missing for 10: explicit documentation of markdown as an output format option, and independent/hands-on developer confirmation of full-text/markdown extraction quality.",
    "evidenceIds": [
      "exa-docs-24",
      "exa-docs-35",
      "exa-docs-22",
      "exa-docs-2",
      "exa-docs-17"
    ]
  },
  {
    "productId": "exa",
    "storyId": "geo-language-targeting",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack documents domain include/exclude filters and date filters (e.g., includeDomains, startPublishedDate) but contains no mention of country, language, or geographic location search parameters anywhere in Exa's API or docs. Missing for 10: any documented country/locale/language filter parameter, geo-targeting options, or localization examples.",
    "evidenceIds": [
      "exa-docs-5",
      "exa-docs-13",
      "exa-docs-19",
      "exa-gh-9"
    ]
  },
  {
    "productId": "exa",
    "storyId": "keyword-hybrid-modes",
    "verdict": "partial",
    "quality": 4,
    "confidence": "low",
    "rationale": "Docs mention 'custom search types with appropriate latency-quality profiles' (instant vs deep-reasoning search), implying multiple selectable search modes, but the evidence never explicitly names 'keyword', 'neural', or 'hybrid' as distinct per-query parameters as described in the story. missing for 10: explicit documentation of keyword/neural/hybrid mode names, a code example showing a 'type' parameter switch, and independent confirmation that all three modes are selectable per query.",
    "evidenceIds": [
      "exa-docs-1",
      "exa-docs-12",
      "exa-docs-18"
    ]
  },
  {
    "productId": "exa",
    "storyId": "news-vertical-endpoints",
    "verdict": "partial",
    "quality": 4,
    "confidence": "low",
    "rationale": "Exa's docs mention custom indexes for people, companies, and publications and domain/date filtering (includeDomains, startPublishedDate), suggesting some vertical-style filtering, but there is no explicit evidence of dedicated endpoints or category filters for news, images, or finance specifically. Missing for 10: explicit 'category' parameter documentation covering news/images/finance verticals, examples of querying these specific verticals, and independent confirmation of vertical-specific accuracy.",
    "evidenceIds": [
      "exa-docs-4",
      "exa-gh-9",
      "exa-docs-13"
    ]
  },
  {
    "productId": "exa",
    "storyId": "openness-api-parity",
    "verdict": "partial",
    "quality": 5,
    "confidence": "low",
    "rationale": "Exa's docs show that Websets, its dashboard feature, can be built visually with 'no code required' (exa-docs-7/29) and that the same functionality is exposed via the Websets API (exa-docs-8/15/28), suggesting rough UI/API parity for that feature, and search/contents/answer are all API-first with UI as a thin layer (exa-comm-7). However there is no explicit documentation stating full feature parity between the dashboard and API, and no OpenAPI spec was found (exa-probe-3) to verify completeness. Missing for 10: an explicit parity statement or changelog showing every UI capability (e.g. dashboard analytics, billing controls, websets monitoring UI) is mirrored in the API, and independent confirmation that no UI-only features exist.",
    "evidenceIds": [
      "exa-docs-7",
      "exa-docs-8",
      "exa-docs-15",
      "exa-docs-28",
      "exa-docs-29",
      "exa-comm-7",
      "exa-probe-3"
    ]
  },
  {
    "productId": "exa",
    "storyId": "openness-full-export",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "Exa's docs describe search, contents, websets, and MCP integration, but nowhere is there evidence of a data export feature (e.g., bulk export of websets/results in open formats like CSV/JSON) or account data portability for users to 'take their data and leave'. This is a fair axis for a data platform, but no evidence supports it.",
    "evidenceIds": []
  },
  {
    "productId": "exa",
    "storyId": "openness-open-license",
    "verdict": "partial",
    "quality": 3,
    "confidence": "low",
    "rationale": "Exa's core search/retrieval engine and backend are proprietary SaaS; only peripheral components are open — the Exa MCP server is explicitly stated to be 'open source and available on GitHub' (exa-docs-31) and the JS client SDK lives on GitHub (exa-gh-1), but these are thin client/integration layers, not the product's actual search index or ranking source. missing for 10: no open license for the core search engine/index itself, no repository or license file covering the main product, no independent confirmation of license terms for the open pieces.",
    "evidenceIds": [
      "exa-docs-31",
      "exa-gh-1",
      "exa-docs-14"
    ]
  },
  {
    "productId": "exa",
    "storyId": "openness-self-host",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "Exa is presented as a hosted SaaS search/index platform with proprietary crawled indexes; only the thin MCP connector (exa-docs-31) is open source, not the core search/retrieval engine or index. No evidence anywhere of a self-hostable core product, on-prem deployment, or open-source release of the underlying search infrastructure.",
    "evidenceIds": [
      "exa-docs-31",
      "exa-probe-1",
      "exa-docs-4"
    ]
  },
  {
    "productId": "exa",
    "storyId": "privacy-data-residency",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence anywhere in the pack mentions data residency, region selection, or storage location options for Exa's API, MCP server, or Websets; this is an applicable privacy axis for an AI-native data/search platform but no documentation addresses it.",
    "evidenceIds": []
  },
  {
    "productId": "exa",
    "storyId": "privacy-no-training",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "The evidence pack contains no documentation, policy statement, or setting related to opting out of data being used for AI model training; the only tangential item concerns Exa scraping third-party websites (ignoring robots.txt), not user-submitted data protection. No opt-out mechanism, privacy policy language, or enterprise data-handling guarantee is present.",
    "evidenceIds": []
  },
  {
    "productId": "exa",
    "storyId": "privacy-retention-controls",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "No evidence pack items address data retention policies, deletion controls, or privacy/data-handling settings for user data or query history; one community post alleges Exa ignores robots.txt when indexing web content, which is unrelated to user data retention controls. Missing for 10: any documentation of data retention periods, user-initiated deletion/export mechanisms, or privacy controls over stored queries/results.",
    "evidenceIds": []
  },
  {
    "productId": "exa",
    "storyId": "privacy-telemetry-optout",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "No evidence in the pack addresses telemetry, usage tracking, or opt-out settings for Exa; there's even a community report of Exa itself indexing data disregarding robots.txt, but nothing about the product providing an opt-out for tracking of its own users.",
    "evidenceIds": []
  },
  {
    "productId": "exa",
    "storyId": "rag-ready-snippets",
    "verdict": "full",
    "quality": 8,
    "confidence": "medium",
    "rationale": "Exa's docs explicitly target RAG-context sizing: '10x token efficient extracts' with a recommended 4000-character cap, `output_schema` for structured JSON, clean page content extraction handling JS/PDFs, and citation-backed `answer()` calls — all clearly aimed at feeding LLM pipelines directly. Community feedback (exa-comm-1, exa-comm-8) corroborates the RAG-focused design ('SERP is not the right way to let an LLM interact with the web'), though one user requested a 'cruft cleaner' suggesting content isn't always perfectly trimmed. Missing for 10: independent benchmarks quantifying token-efficiency/relevance gains, and no evidence addressing edge cases like very large result sets consistently staying within context budgets.",
    "evidenceIds": [
      "exa-docs-2",
      "exa-docs-3",
      "exa-docs-22",
      "exa-docs-23",
      "exa-docs-24",
      "exa-gh-3",
      "exa-comm-1",
      "exa-comm-8"
    ]
  },
  {
    "productId": "exa",
    "storyId": "relevance-scores",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "No evidence pack item mentions a per-result relevance/similarity score field, score-based thresholding, or any API parameter to filter/sort results by a numeric relevance score. This is a reasonable axis for a search API, but nothing in docs, SDK, or community evidence documents such a score being returned or usable for pipeline thresholding.",
    "evidenceIds": []
  },
  {
    "productId": "exa",
    "storyId": "robots-compliance-stance",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "No first-party documentation addresses robots.txt policy, content licensing, or permitted use of search results; the only related evidence is a community tweet alleging Exa ignores robots.txt when indexing (exa-comm-9), which is a complaint, not a documented policy. Since Exa never publishes an explicit stance, this is an unmet, applicable axis rather than a vendor claim being disputed.",
    "evidenceIds": [
      "exa-comm-9"
    ]
  },
  {
    "productId": "exa",
    "storyId": "semantic-neural-search",
    "verdict": "disputed",
    "quality": 5,
    "confidence": "medium",
    "rationale": "Exa's docs describe a purpose-built neural/semantic search model that returns 'clean, relevant page content' in natural language rather than keyword matching, and one HN commenter explicitly notes Exa's insight that 'SERP is not the right way to let an LLM interact with the web.' However, hands-on community reports contradict the quality claim: one user got '1 match, 14 misses' with results stuck 'Verifying...', and another found GitHub repo search only '30/70' accurate at finding requested items. Missing for 10: independent benchmark comparisons against keyword search, resolution of the reported miss-rate issues, and broader corroboration of search accuracy beyond a single anecdotal thread.",
    "evidenceIds": [
      "exa-docs-22",
      "exa-docs-17",
      "exa-docs-18",
      "exa-comm-8",
      "exa-comm-3",
      "exa-comm-4"
    ]
  },
  {
    "productId": "exa",
    "storyId": "structured-json-output",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Exa's docs explicitly describe an `output_schema` parameter usable with any search type to extract structured JSON from results, and the GitHub SDK documents concrete schema constraints (max nesting depth 2, max 10 properties) confirming real enforcement of a JSON schema. Missing for 10: independent/hands-on confirmation that schema-constrained output works reliably in practice and richer documentation of schema validation/error handling.",
    "evidenceIds": [
      "exa-docs-3",
      "exa-gh-6"
    ]
  },
  {
    "productId": "exa",
    "storyId": "subpage-crawling",
    "verdict": "partial",
    "quality": 5,
    "confidence": "low",
    "rationale": "Exa's Contents API and domain-scoping options (includeDomains/excludeDomains with path prefixes, 'limit results to an entire domain or a specific section of a site') let engineers restrict search/content retrieval to a site or subsection, and Exa Contents cleanly extracts page content including JS-rendered pages and PDFs, which supports basic multi-page extraction from a domain. However there is no explicit documentation of a dedicated 'crawl subpages from a search result' or recursive site-crawl parameter, and no hands-on evidence of crawling an entire site tree. Missing for 10: explicit subpage/recursive-crawl API parameter, and independent verification that full-site crawling from a single result works reliably.",
    "evidenceIds": [
      "exa-docs-13",
      "exa-docs-5",
      "exa-docs-19",
      "exa-docs-24",
      "exa-docs-35"
    ]
  },
  {
    "productId": "exa",
    "storyId": "transparent-request-pricing",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Exa's pricing page (exa-docs-34) shows self-serve credit-based pricing ($20 signup credit, $10/month, no payment method required) and a dedicated /docs/reference/pricing page exists (exa-docs-9, exa-docs-10) listing feature tiers, indicating pricing is public and requires no sales contact. However, the evidence pack doesn't show a detailed per-endpoint/per-request cost table or explicit dollar-per-call rates, so the granularity a developer needs to estimate exact costs is unclear. Missing for 10: explicit per-request/per-token cost breakdown, confirmation that all endpoints (websets, agent, MCP) are covered in the same public pricing page, independent confirmation that pricing is fully self-serve without enterprise gating.",
    "evidenceIds": [
      "exa-docs-34",
      "exa-docs-9",
      "exa-docs-10"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agent-research-pipeline",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "The Agent API supports building agents with built-in tools (web search, URL fetch, code sandbox), multi-step reasoning via Pro Search, structured output synthesis, and multi-turn context retention — covering search, extraction, and synthesis in one API call chain. missing for 10: independent/hands-on third-party validation of a full multi-step research flow end-to-end, and quantitative benchmarks on extraction fidelity.",
    "evidenceIds": [
      "perplexity-sonar-docs-5",
      "perplexity-sonar-docs-30",
      "perplexity-sonar-docs-31",
      "perplexity-sonar-docs-32",
      "perplexity-sonar-docs-33",
      "perplexity-sonar-docs-28",
      "perplexity-sonar-docs-38"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agent-tool-call-ready",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Perplexity ships an official MCP server (remote and local/stdio) that exposes its search/reasoning as agent-consumable tools, plus OpenAPI schema, official SDKs with type-safe function signatures, built-in tools (web search, sandbox, URL fetch) designed for tool-call consumption within the Agent API, and integration with Anthropic's Messages API MCP connector. This directly matches the story of plugging the API into an agent via ready-made schemas/integrations. Missing for 10: independent third-party validation of agent-framework interop (e.g. LangChain/AutoGen adapters) and hands-on developer reports confirming smooth tool-call schema usage beyond vendor docs.",
    "evidenceIds": [
      "perplexity-sonar-docs-4",
      "perplexity-sonar-docs-18",
      "perplexity-sonar-docs-19",
      "perplexity-sonar-docs-20",
      "perplexity-sonar-docs-30",
      "perplexity-sonar-probe-3",
      "perplexity-sonar-probe-4",
      "perplexity-sonar-gh-5"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-agent-docs",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "Direct probe evidence confirms llms.txt is live (HTTP 200) with an index pointing to agent-oriented docs, plus .md variants of docs pages and an OpenAPI spec are all directly fetchable, exactly matching the agent-consumable docs pattern; docs also explicitly reference agents/coding agents consuming these resources. Missing for 10: no independent third-party report of an agent actually successfully using llms.txt in practice.",
    "evidenceIds": [
      "perplexity-sonar-probe-1",
      "perplexity-sonar-probe-2",
      "perplexity-sonar-probe-3",
      "perplexity-sonar-docs-24"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-ai-insights",
    "verdict": "partial",
    "quality": 5,
    "confidence": "medium",
    "rationale": "Sonar API provides building blocks (embeddings for RAG, Agent API with sandbox/code execution, structured output, web search tools) that a developer could use to build AI-generated insights over their own data, but it is a raw API/platform, not an end-user product with built-in ingestion or dashboard-style insight generation from 'my data'. missing for 10: native data-ingestion/connectors for a user's own datasets, a first-party UI or workflow that surfaces proactive insights/suggestions from stored user data, and independent evidence of this being used end-to-end for such insights.",
    "evidenceIds": [
      "perplexity-sonar-docs-3",
      "perplexity-sonar-docs-30",
      "perplexity-sonar-docs-31",
      "perplexity-sonar-docs-32",
      "perplexity-sonar-docs-38"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-autonomous-automation",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence describes building agents via the Agent API (tools, sandbox, model fallback, profiles, multi-turn context) but nothing about scheduling, triggers, or autonomous background execution without a caller invoking the API — it's a request/response API, not a background-automation runtime.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-builtin-assistant",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "The Agent API provides a genuine delegate-task capability: presets give 'a working agent in one field', instructions/input define system prompts and per-turn tasks, and built-in tools (web search, URL fetch, code sandbox) let the agent autonomously perform multi-step work and return results inline. However, this is a developer-facing API construct rather than a built-in assistant embedded in an end-user product surface — there's no evidence of a native chat/assistant UI within the product itself that an 'ai-native user' interacts with directly. missing for 10: evidence of an end-user-facing assistant UI (vs. API-only agent), independent/hands-on validation of agent task delegation working reliably, and clarity on autonomy limits beyond documented tool list.",
    "evidenceIds": [
      "perplexity-sonar-docs-28",
      "perplexity-sonar-docs-29",
      "perplexity-sonar-docs-30",
      "perplexity-sonar-docs-31",
      "perplexity-sonar-docs-33",
      "perplexity-sonar-docs-34",
      "perplexity-sonar-docs-35"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-headless",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Sonar API is fundamentally a REST/API product with official Python SDK (sync and async clients, httpx/aiohttp), CLI tool returning JSON for shell pipelines/agent tool calls, retries/error handling, and an OpenAPI spec — all directly enabling headless/CI automation. Docs explicitly call out CLI output as 'ready for shell pipelines and agent tool calls, with no code to write.' Missing for 10: no explicit CI/CD pipeline examples (e.g. GitHub Actions) or independent third-party report of running it in CI.",
    "evidenceIds": [
      "perplexity-sonar-docs-8",
      "perplexity-sonar-docs-24",
      "perplexity-sonar-gh-1",
      "perplexity-sonar-gh-2",
      "perplexity-sonar-gh-4",
      "perplexity-sonar-gh-5",
      "perplexity-sonar-probe-3"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-mcp-client",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence only shows Perplexity publishing its own MCP server (and an Anthropic-side MCP connector for consuming Perplexity's tools) — i.e., Perplexity acts as the tool provider, not as a client that ingests third-party MCP servers' tools. The Agent API's 'built-in tools' (web search, sandbox, fetch, finance/people search) are Perplexity-hosted, and there is no documentation of a mechanism to plug an arbitrary external MCP server into the Agent/Sonar API so it can call that server's tools.",
    "evidenceIds": [
      "perplexity-sonar-docs-4",
      "perplexity-sonar-docs-18",
      "perplexity-sonar-docs-19",
      "perplexity-sonar-docs-20",
      "perplexity-sonar-docs-30"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-mcp-server",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Perplexity Sonar API is not itself an agent but a service/API, so this axis applies; docs clearly document an official MCP server, both a Perplexity-hosted remote endpoint (api.perplexity.ai/mcp) and a local stdio server, plus tool-restriction configuration, allowing agents to connect via MCP. Missing for 10: independent/hands-on third-party confirmation of the MCP server working in practice beyond first-party docs.",
    "evidenceIds": [
      "perplexity-sonar-docs-4",
      "perplexity-sonar-docs-18",
      "perplexity-sonar-docs-19",
      "perplexity-sonar-docs-10",
      "perplexity-sonar-probe-4"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-nl-commands",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "The Agent API is explicitly designed around natural-language 'instructions' and 'input' fields, presets, and MCP integration so AI assistants and agents can drive the product purely via NL commands rather than rigid code paths, and the CLI/MCP server extend this to terminal and agent-tool contexts. missing for 10: independent or hands-on third-party verification that NL-driven agent behavior works reliably in practice, and no evidence of a conversational end-user interface beyond API/CLI/MCP docs.",
    "evidenceIds": [
      "perplexity-sonar-docs-28",
      "perplexity-sonar-docs-29",
      "perplexity-sonar-docs-30",
      "perplexity-sonar-docs-18",
      "perplexity-sonar-docs-19",
      "perplexity-sonar-docs-24"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-official-cli",
    "verdict": "full",
    "quality": 8,
    "confidence": "medium",
    "rationale": "Perplexity documents an official 'pplx' CLI for search from the terminal or coding agent, explicitly designed for shell pipelines and agent tool calls (JSON output, no code required), which directly matches the ai-native/agentic story. Missing for 10: independent hands-on verification/community corroboration of the CLI beyond first-party docs, and more detail on install/distribution channels.",
    "evidenceIds": [
      "perplexity-sonar-docs-8",
      "perplexity-sonar-docs-13",
      "perplexity-sonar-docs-24"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-public-api",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "Perplexity Sonar API is extensively documented as a public API with OpenAPI spec, official SDKs (Python etc.), CLI, quickstart guides, and API reference for the Sonar/Search/Agent endpoints, confirmed by a live openapi.json probe and multiple docs. This directly matches the ai-native/agenticness story of driving the product through a documented public API. Missing for 10: independent third-party developer testimonials beyond one skeptical HN comment about model selection, which doesn't contradict API existence.",
    "evidenceIds": [
      "perplexity-sonar-docs-1",
      "perplexity-sonar-docs-7",
      "perplexity-sonar-docs-8",
      "perplexity-sonar-docs-37",
      "perplexity-sonar-probe-3",
      "perplexity-sonar-gh-5",
      "perplexity-sonar-docs-23"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-scoped-keys",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence covers API key generation, rate-limit tiers, and tool-restriction for MCP servers, but there is no mention of scoped or least-privilege API credentials (e.g., per-key permissions, role-based scopes, restricted key creation for sub-agents). Nothing in the docs describes issuing narrowly-scoped keys for delegated agent use.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-sdks",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Docs explicitly point to official, type-safe SDKs (perplexity-sonar-docs-7/12), and there's a real Python SDK repo on GitHub with streaming, async/sync clients, typed responses, retries, and error handling (perplexity-sonar-gh-1 through gh-6), corroborating first-party claims with hands-on package evidence. Missing for 10: explicit confirmation of SDKs in multiple other languages (e.g., JS/TS, Go) beyond Python, and independent community usage reports of the SDKs themselves.",
    "evidenceIds": [
      "perplexity-sonar-docs-7",
      "perplexity-sonar-docs-12",
      "perplexity-sonar-gh-1",
      "perplexity-sonar-gh-2",
      "perplexity-sonar-gh-3",
      "perplexity-sonar-gh-4",
      "perplexity-sonar-gh-5",
      "perplexity-sonar-gh-6"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "agentic-webhooks",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence of any webhook/event subscription mechanism in the Sonar API docs; the product offers request/response APIs, SDKs, CLI, and MCP integration but nothing about outbound event notifications or webhooks.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "api-interactive-docs",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Docs include an OpenAPI spec (probe-3) and an interactive Playground where users can try the Search API without an API key (docs-14), plus a full API reference page (docs-23) — strong signals of an interactive reference experience. However, there's no explicit confirmation that the API reference pages themselves embed runnable/executable code examples (vs. just a separate Playground and static code snippets). Missing for 10: direct evidence of in-reference 'try it' runnable code blocks, independent user confirmation of the interactive reference experience.",
    "evidenceIds": [
      "perplexity-sonar-docs-14",
      "perplexity-sonar-docs-23",
      "perplexity-sonar-probe-3",
      "perplexity-sonar-probe-2"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "api-machine-spec",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "A probe confirms a machine-readable OpenAPI spec is live at https://docs.perplexity.ai/openapi.json (HTTP 200, contains 'openapi' key), directly satisfying the story, and this is corroborated by an llms.txt documentation index also returning 200. Missing for 10: independent/community confirmation of the OpenAPI spec's completeness or usage beyond the first-party probe.",
    "evidenceIds": [
      "perplexity-sonar-probe-3",
      "perplexity-sonar-probe-1",
      "perplexity-sonar-probe-2"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "api-sandbox",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence of any sandbox environment, test mode, or isolated non-production data access for Sonar API—only production API docs, SDKs, MCP server, pricing tiers, and an interactive Playground (which uses live web search, not isolated test data) are mentioned.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "api-versioning-policy",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack shows extensive API documentation, SDKs, an OpenAPI spec, and product features, but nowhere mentions API versioning scheme, a deprecation policy, model sunset timelines, or changelog practices. A community comment even notes model selection 'regressed' over time with no policy context given. No evidence supports this specific axis.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "automation-bulk-operations",
    "verdict": "partial",
    "quality": 3,
    "confidence": "low",
    "rationale": "The Search API mentions 'multi-query search' (perplexity-sonar-docs-17), which hints at handling multiple queries in one call, but there's no explicit batch/bulk endpoint, no documentation of processing many items (e.g., a list of URLs, files, or embeddings) in a single request, and no examples of bulk automation workflows. Missing for 10: dedicated batch/bulk API endpoint, explicit bulk-item processing docs, and evidence of large-scale bulk usage patterns.",
    "evidenceIds": [
      "perplexity-sonar-docs-17",
      "perplexity-sonar-docs-6",
      "perplexity-sonar-docs-9"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "automation-rules-engine",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Perplexity Sonar API is a search/answer/agent API and SDK, not an event/rule-based automation or workflow-trigger platform; there's no concept of user-defined triggers firing actions on events. This is a wrong-axis question for this product category.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "automation-scheduled-jobs",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence in the pack mentions any scheduling, cron, recurring job, or workflow automation trigger feature for Sonar/Agent API; the docs cover search, agents, tools, MCP, routing, and SDKs but nothing about persisting or scheduling recurring runs.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "automation-versioned-workflows",
    "verdict": "partial",
    "quality": 3,
    "confidence": "low",
    "rationale": "Perplexity's Agent API 'profiles' are described as reusable, versioned configurations that can be saved and selected by ID, which is a thin form of automation versioning, but there is no documented review workflow or rollback mechanism for these profiles or any other automation constructs. missing for 10: explicit rollback/revert capability, change review or diff tooling, audit history beyond simple versioning.",
    "evidenceIds": [
      "perplexity-sonar-docs-35"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "batch-async-processing",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence covers synchronous SDK calls, streaming (SSE), retries, rate-limit tiers, and model routing/fallback, but nowhere mentions batch job submission or an asynchronous job/queue API for high-volume workloads — the async client mentioned is just a non-blocking HTTP client, not a batch-job system. No documentation of batch endpoints, job polling, or bulk submission exists in the pack.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "citation-metadata",
    "verdict": "partial",
    "quality": 4,
    "confidence": "low",
    "rationale": "Docs confirm the API returns a `citations` array and a `search_results` object alongside answers, and the Search API returns 'ranked results' with content extraction, implying source metadata is present. However, the evidence pack never explicitly confirms canonical URL, title, and published-date fields in the schema (the API reference snippet is truncated before showing field names), so accuracy/completeness of that metadata for citation purposes is unverified. missing for 10: explicit schema documentation of title/url/date fields per search result, independent confirmation that returned URLs/dates are accurate and stable for citation.",
    "evidenceIds": [
      "perplexity-sonar-docs-23",
      "perplexity-sonar-docs-17",
      "perplexity-sonar-docs-38"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "direct-answer-generation",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "Docs explicitly describe getting web-grounded answers with built-in citations in one API call (Sonar/Agent API), with a quickstart to make the first call in under 3 minutes, and the API reference shows a response schema with 'citations' and 'search_results' fields. Docs even distinguish this from the raw Search API, clarifying that the sourced LLM-generated answer use case is served by the Sonar/Agent endpoints. missing for 10: independent hands-on developer verification of citation quality/accuracy beyond vendor docs.",
    "evidenceIds": [
      "perplexity-sonar-docs-1",
      "perplexity-sonar-docs-23",
      "perplexity-sonar-docs-37",
      "perplexity-sonar-docs-38"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "documented-rate-limits",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Docs describe a dedicated rate-limits/usage-tiers page where spending automatically and permanently upgrades your tier (self-serve, no manual request needed), which covers rate limits and an upgrade path. However, no evidence explicitly documents concurrency caps or specific per-tier numeric limits. Missing for 10: explicit concurrency cap documentation, concrete per-tier RPM/RPS figures, independent confirmation of the auto-upgrade mechanism.",
    "evidenceIds": [
      "perplexity-sonar-docs-9",
      "perplexity-sonar-docs-16",
      "perplexity-sonar-docs-22"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "domain-include-exclude",
    "verdict": "partial",
    "quality": 5,
    "confidence": "low",
    "rationale": "Docs explicitly mention 'domain filtering' as a Search API feature and reference 'advanced filtering' of search results, indicating some domain include/exclude capability exists. However, there is no detailed documentation of the actual parameter/API syntax, allowed limits, or confirmation it supports exclusion specifically (vs just filtering to include). Missing for 10: explicit parameter documentation (e.g. search_domain_filter), examples of excluding domains, independent/hands-on verification of behavior.",
    "evidenceIds": [
      "perplexity-sonar-docs-17",
      "perplexity-sonar-docs-2"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "find-similar-links",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "The evidence pack covers web search, embeddings, MCP integration, agent tooling, and code sandboxing, but there is no mention of a 'find similar pages/URLs' or URL-based similarity search feature anywhere in the docs.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "free-tier-prototyping",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence shows an API key signup flow and a no-key-required Playground for testing, but no documentation of a free tier, free trial credits, or free quota for the Sonar API itself — rate-limit tiers are described as advancing with paid spend, not free usage. missing for 10: explicit free credits/free tier terms, any trial credit amount, or free-usage rate limits for new developers.",
    "evidenceIds": [
      "perplexity-sonar-docs-14",
      "perplexity-sonar-docs-37",
      "perplexity-sonar-docs-16"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "fresh-results-recency",
    "verdict": "partial",
    "quality": 4,
    "confidence": "low",
    "rationale": "Docs claim 'real-time data' and 'advanced filtering'/'domain filtering' in the Search API, implying a fresh, filterable index, but no evidence explicitly documents date-range or recency-specific filter parameters or index update cadence. missing for 10: explicit documentation of recency/date-range filter parameters, evidence of index refresh frequency, independent verification of freshness.",
    "evidenceIds": [
      "perplexity-sonar-docs-2",
      "perplexity-sonar-docs-17",
      "perplexity-sonar-docs-38"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "full-page-contents",
    "verdict": "partial",
    "quality": 4,
    "confidence": "low",
    "rationale": "Docs mention the Search API offers \"content extraction for developers\" alongside ranked results and snippets (perplexity-sonar-docs-17), suggesting more than snippet-level text is retrievable, but the CLI docs explicitly describe only \"query-relevant page snippets\" (perplexity-sonar-docs-24) and no doc confirms full-page or markdown output format, schema, or size limits. Missing for 10: explicit API field/response example returning full page text or markdown, documentation of extraction depth/limits, and independent confirmation that returned content is full-page rather than truncated snippets.",
    "evidenceIds": [
      "perplexity-sonar-docs-17",
      "perplexity-sonar-docs-24",
      "perplexity-sonar-docs-38"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "geo-language-targeting",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack describes domain filtering, multi-query search, search context tuning, and content extraction, but no citation mentions country, language, or location-based localization parameters for the Sonar/Search/Agent APIs. This is a plausible axis for a web-search API, but no supporting evidence exists in the pack.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "keyword-hybrid-modes",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence describes search context size, domain filtering, and multi-query search, but no documentation mentions selectable retrieval modes such as keyword, neural, or hybrid search per query.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "news-vertical-endpoints",
    "verdict": "partial",
    "quality": 4,
    "confidence": "medium",
    "rationale": "Docs mention a built-in 'finance search' tool and general domain/content filtering in the Search API, showing some vertical/category targeting, but there is no evidence of dedicated endpoints or filters for news or images verticals specifically. missing for 10: dedicated news endpoint/filter, dedicated images endpoint/filter, explicit documentation of category-based filtering beyond finance/people/web/URL/sandbox tools.",
    "evidenceIds": [
      "perplexity-sonar-docs-30",
      "perplexity-sonar-docs-17",
      "perplexity-sonar-docs-2"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "openness-api-parity",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "The Sonar/Agent API exposes a very wide surface — search, agent orchestration, MCP server (remote and local), CLI, SDKs, sandboxed code execution, structured output, model fallback, profiles — suggesting most capabilities are API-accessible and even API-first, with a playground for exploration. However, none of the evidence explicitly compares API capabilities against the consumer chat UI (e.g., Spaces, Threads, Collections, personalization features), so full UI-parity is not directly demonstrated. Missing for 10: explicit statement or evidence that all consumer-UI-only features (e.g., Spaces, saved threads, UI personalization) are also exposed via API, and independent confirmation of parity.",
    "evidenceIds": [
      "perplexity-sonar-docs-8",
      "perplexity-sonar-docs-24",
      "perplexity-sonar-docs-30",
      "perplexity-sonar-docs-31",
      "perplexity-sonar-docs-18",
      "perplexity-sonar-docs-19",
      "perplexity-sonar-docs-35",
      "perplexity-sonar-docs-14"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "openness-full-export",
    "verdict": "na",
    "quality": 0,
    "confidence": "medium",
    "rationale": "Perplexity Sonar API is a developer-facing API/platform for search, generation, and agent workflows; it does not function as a data-storage application where a user accumulates personal content that would need bulk export in open formats. Data export/portability is not a natural axis for this kind of product — developers already own their request/response data via their own integration.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "openness-open-license",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "Perplexity Sonar API is a closed commercial API; the evidence shows SDKs and a local MCP server are open-source components, but there is no evidence the core Sonar/Agent API source or models are released under an open license, so a user cannot read the product's source.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "openness-self-host",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "Perplexity Sonar API is a hosted, closed-source API/SaaS product; there is no evidence of any self-hostable core model, search index, or backend—only a local MCP connector (a thin client wrapper) that still calls Perplexity's cloud API. The core product (search/answer engine) cannot be run on the user's own infrastructure. missing for 10: any self-hosted deployment option, open-source core engine/model weights, or on-prem offering.",
    "evidenceIds": [
      "perplexity-sonar-docs-18",
      "perplexity-sonar-docs-19",
      "perplexity-sonar-comm-1"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "privacy-data-residency",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence in the pack mentions data residency, region selection, or data storage location controls for the Sonar API; this is an applicable axis for an API/cloud service but no documentation addresses it.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "privacy-no-training",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "No evidence in the pack addresses data usage for training, opt-out settings, or a privacy/data-retention policy for API data; nothing in the docs pack mentions training-data opt-out at all.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "privacy-retention-controls",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "No evidence in the pack addresses data retention policies, deletion controls, or privacy/data-handling settings for the Sonar API; the docs cover search, agents, MCP, routing, and SDKs but nothing about controlling stored data or deleting logs/history.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "privacy-telemetry-optout",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence in the pack addresses telemetry opt-out or usage-tracking controls for the Sonar API; nothing mentions privacy settings, data retention toggles, or telemetry configuration.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "rag-ready-snippets",
    "verdict": "full",
    "quality": 8,
    "confidence": "medium",
    "rationale": "Docs explicitly market a Search API returning 'raw, ranked web search results' for developer processing, distinct from the answer-generating Agent API, with domain filtering, multi-query search, and content extraction designed for RAG use, plus embeddings generation for semantic search/RAG pipelines. SDKs, CLI, and structured citations/search_results fields support direct ingestion into a RAG context window. missing for 10: no independent benchmark or hands-on evidence of chunk sizing/token-length suitability for context windows, and no explicit documentation of result truncation or size controls tailored to LLM context limits.",
    "evidenceIds": [
      "perplexity-sonar-docs-2",
      "perplexity-sonar-docs-3",
      "perplexity-sonar-docs-17",
      "perplexity-sonar-docs-38",
      "perplexity-sonar-docs-23"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "relevance-scores",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "Docs describe ranked web/search results, citations, and a search_results field, but nowhere do they document per-result relevance/confidence scores that a developer could use to threshold what enters a pipeline. Missing for 10: any documented score field in the API response schema, docs explaining score semantics, or examples of threshold-based filtering.",
    "evidenceIds": [
      "perplexity-sonar-docs-17",
      "perplexity-sonar-docs-23",
      "perplexity-sonar-docs-38"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "robots-compliance-stance",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence in the pack addresses robots.txt handling, content licensing terms, or a documented policy on permitted use of search results — only general API/product docs, SDK, and pricing information are present.",
    "evidenceIds": []
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "semantic-neural-search",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Docs explicitly mention embeddings 'for semantic search and RAG pipelines' and web search with ranked/filtered results, supporting meaning-based retrieval beyond keyword matching, but the evidence never shows benchmark or hands-on proof that this semantic search surfaces results keyword engines miss. Missing for 10: independent/hands-on evidence comparing semantic vs keyword recall, detail on embedding model quality/architecture, and concrete examples of semantic-only matches.",
    "evidenceIds": [
      "perplexity-sonar-docs-3",
      "perplexity-sonar-docs-2",
      "perplexity-sonar-docs-17",
      "perplexity-sonar-docs-6"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "structured-json-output",
    "verdict": "full",
    "quality": 8,
    "confidence": "medium",
    "rationale": "Docs explicitly describe a 'Structured output' feature that 'makes the model return JSON that conforms to a schema you define, so you can deserialize it directly,' directly matching the story. Missing for 10: independent/hands-on corroboration beyond first-party docs, and no code sample showing the schema definition syntax in the evidence pack.",
    "evidenceIds": [
      "perplexity-sonar-docs-32"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "subpage-crawling",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "Evidence shows single-query search, URL fetch, and content-extraction tools (docs-17, docs-30, docs-38) but nothing about recursively crawling subpages or an entire site starting from a search result; no site-map/crawl-depth feature is documented.",
    "evidenceIds": [
      "perplexity-sonar-docs-17",
      "perplexity-sonar-docs-30",
      "perplexity-sonar-docs-38"
    ]
  },
  {
    "productId": "perplexity-sonar",
    "storyId": "transparent-request-pricing",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Perplexity publishes a dedicated pricing page (search context, Pro Search, credit-tier rate limits) and lets developers self-serve by generating an API key in minutes without contacting sales, implying transparent self-serve pricing. However the evidence pack never shows actual per-request or per-credit dollar figures, so we can't confirm the pricing is fully itemized/clear from what's provided. Missing for 10: concrete $/request or $/credit rate tables, confirmation that all model/tool usage (sandbox, MCP, agent tools) is separately priced and disclosed publicly.",
    "evidenceIds": [
      "perplexity-sonar-docs-5",
      "perplexity-sonar-docs-6",
      "perplexity-sonar-docs-9",
      "perplexity-sonar-docs-16",
      "perplexity-sonar-docs-21",
      "perplexity-sonar-docs-37"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agent-research-pipeline",
    "verdict": "partial",
    "quality": 5,
    "confidence": "medium",
    "rationale": "SerpApi provides search results (JSON/markdown) and an MCP integration so agents can call it as a search tool, plus RAG use-case docs showing search data feeding into AI pipelines, but it is fundamentally a single-purpose search-scraping API — it does not itself perform multi-step 'extract full page contents' or 'synthesize' steps within one API call; those would need to be orchestrated by the agent/other tools. missing for 10: evidence of a single API call or endpoint that chains search + full-content extraction + synthesis, native content-extraction (beyond search snippets) capability, and independent hands-on proof of a full multi-step research flow working end-to-end.",
    "evidenceIds": [
      "serpapi-docs-19",
      "serpapi-docs-21",
      "serpapi-docs-25",
      "serpapi-probe-4",
      "serpapi-docs-3"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agent-tool-call-ready",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "SerpApi documents an official MCP server (serpapi-mcp) enabling any MCP-compatible agent (Claude, ChatGPT, Cursor) to call it as a web search tool, plus markdown-optimized output designed for LLM/agent consumption and llms.txt/docs.md endpoints for agent discoverability. missing for 10: no published OpenAPI/function-calling JSON schema (openapi.json probes 404), and no independent hands-on report of agent-framework integration success beyond vendor docs.",
    "evidenceIds": [
      "serpapi-docs-21",
      "serpapi-probe-4",
      "serpapi-docs-19",
      "serpapi-probe-1",
      "serpapi-probe-3",
      "serpapi-docs-25"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-agent-docs",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "Probe confirms llms.txt exists at serpapi.com/llms.txt (HTTP 200) and per-page markdown docs (.md suffix) are available, plus explicit docs pages describing markdown output optimized for LLMs/agents and MCP integration. missing for 10: no independent/community confirmation of an agent actually consuming llms.txt in practice.",
    "evidenceIds": [
      "serpapi-probe-1",
      "serpapi-probe-2",
      "serpapi-docs-19",
      "serpapi-docs-20",
      "serpapi-docs-21",
      "serpapi-probe-4"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-ai-insights",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "SerpApi's evidence shows it as a raw search-data API/scraper with use-case pages suggesting users feed results into external AI/RAG pipelines, but there's no evidence the product itself generates AI insights or suggestions from a user's own data inside a dashboard or interface. The AI-SEO/GEO use case describes monitoring brand visibility manually, not built-in AI-generated insights.",
    "evidenceIds": [
      "serpapi-docs-22",
      "serpapi-docs-25",
      "serpapi-docs-19"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-autonomous-automation",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "SerpApi offers an async request mode (submit now, retrieve later) and account-level 'Automatic Early Renewal', but there is no evidence of a scheduling/cron engine, webhooks, or any mechanism for users to configure recurring searches that run autonomously in the background without manual polling. missing for 10: scheduled/recurring search jobs, webhook/callback delivery, any 'automation' or monitoring dashboard for background runs.",
    "evidenceIds": [
      "serpapi-docs-9",
      "serpapi-docs-14",
      "serpapi-docs-6"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-builtin-assistant",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "SerpApi is a search-data API/tool product, not an AI assistant application; it provides data to external AI agents (via MCP, RAG use cases) rather than hosting a built-in assistant for users to delegate tasks to. This axis is a category error for an API product of this kind.",
    "evidenceIds": []
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-headless",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "SerpApi is a pure REST API with API-key auth and official SDKs (Python, etc.) enabling non-interactive scripted calls with no browser/UI, suitable for CI/automation; docs also show an async submission mode for background/batch jobs. Missing for 10: explicit CI/CD pipeline examples (e.g., GitHub Actions workflow) or dedicated docs describing running in CI.",
    "evidenceIds": [
      "serpapi-gh-1",
      "serpapi-docs-9",
      "serpapi-gh-7",
      "serpapi-docs-20",
      "serpapi-probe-2"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-mcp-client",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "SerpApi is a search-data API/tool provider, not an AI agent or agentic platform that would itself consume/plug in external MCP servers. The evidence instead shows SerpApi ships its OWN MCP server so that agents can consume SerpApi as a tool (serpapi-docs-21, serpapi-probe-4) — the inverse relationship, which is the correct axis for this product type, not this story's client-side axis.",
    "evidenceIds": [
      "serpapi-docs-21",
      "serpapi-probe-4"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-mcp-server",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "SerpApi documents an official MCP integration letting MCP-compatible agents (Claude, ChatGPT, Cursor) use it as a web search tool, and a dedicated serpapi-mcp GitHub repo confirms a first-party MCP server implementation. Missing for 10: independent/hands-on community corroboration of the MCP server working in practice, and detailed setup/config docs beyond the brief integration blurb.",
    "evidenceIds": [
      "serpapi-docs-21",
      "serpapi-probe-4",
      "serpapi-docs-20"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-nl-commands",
    "verdict": "partial",
    "quality": 5,
    "confidence": "medium",
    "rationale": "SerpApi itself is a structured JSON API driven by explicit parameters (q, location, engine, etc.), not a natural-language command console, but its documented MCP server integration lets MCP-compatible AI agents (Claude, ChatGPT, Cursor) invoke it as a tool, effectively letting an AI-native user issue natural-language requests that the agent translates into SerpApi calls. Missing for 10: no first-party natural-language CLI/chat interface for the API itself, and no independent hands-on evidence of the MCP server's real-world reliability.",
    "evidenceIds": [
      "serpapi-docs-21",
      "serpapi-probe-4",
      "serpapi-docs-10",
      "serpapi-docs-19"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-official-cli",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "SerpApi ships client libraries, an MCP server, and a script builder, but there is no evidence of an official CLI tool for interacting with the API.",
    "evidenceIds": []
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-public-api",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "SerpApi is fundamentally an API product with extensive documented endpoints (Search, News, Ads, Flights, etc.), official client libraries in multiple languages, markdown/JSON output modes for LLM consumption, llms.txt and .md doc endpoints for AI agents, and an official MCP server, all confirmed by live probes and docs. missing for 10: no discoverable OpenAPI/Swagger spec (probe found 404s across candidate paths), and independent hands-on confirmation is limited to community commentary rather than a full third-party integration review.",
    "evidenceIds": [
      "serpapi-docs-1",
      "serpapi-docs-19",
      "serpapi-docs-20",
      "serpapi-docs-21",
      "serpapi-gh-1",
      "serpapi-probe-1",
      "serpapi-probe-2",
      "serpapi-probe-3",
      "serpapi-probe-4"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-scoped-keys",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "Evidence shows only a single API key mechanism (used directly in requests) with no mention of scoped, role-based, or least-privilege sub-keys/tokens for agents; community feedback even flags that embedding the secret key in the URL complicates secret management, suggesting no finer-grained credentialing exists.",
    "evidenceIds": [
      "serpapi-gh-1",
      "serpapi-comm-2"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-sdks",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "SerpApi ships official SDKs (e.g., the Python client, with docs pointing to installing 'the library for your language') and explicitly supports AI-native workflows via LLM-optimized markdown output and an official MCP server for AI agents. The one caveat is that the flagship Python package is being deprecated in favor of a newer implementation, showing SDK churn.\nmissing for 10: independent/hands-on validation of SDK quality across multiple languages, and clarity on the full breadth of language coverage beyond Python.",
    "evidenceIds": [
      "serpapi-gh-1",
      "serpapi-gh-2",
      "serpapi-gh-6",
      "serpapi-docs-19",
      "serpapi-docs-20",
      "serpapi-docs-21",
      "serpapi-probe-4"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "agentic-webhooks",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence shows async search submission and a Searches Archive API for polling results, but no mention anywhere of webhook subscriptions or event push notifications. Missing for 10: any documented webhook endpoint, event subscription mechanism, or push-notification callback feature.",
    "evidenceIds": [
      "serpapi-docs-9",
      "serpapi-docs-14"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "api-interactive-docs",
    "verdict": "partial",
    "quality": 5,
    "confidence": "medium",
    "rationale": "SerpApi has extensive documentation pages with parameter descriptions and code snippets (e.g., Python examples, script builder mentioned in serpapi-gh-7) and markdown-formatted docs for LLMs, but there is no evidence of an interactive, runnable API reference (e.g., a live 'try it' console or Swagger/OpenAPI explorer) — the openapi probe returned 404s across all candidate paths. missing for 10: an interactive in-browser API console/playground with runnable requests, an OpenAPI/Swagger spec, and independent confirmation that examples can be executed directly from the docs.",
    "evidenceIds": [
      "serpapi-gh-7",
      "serpapi-docs-20",
      "serpapi-probe-2",
      "serpapi-probe-3",
      "serpapi-docs-19"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "api-machine-spec",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "SerpApi provides docs in markdown (.md) and an llms.txt file for LLM consumption, but a direct probe for standard OpenAPI/Swagger spec locations (openapi.json, swagger.json, etc.) returned 404 on all candidates, and no other evidence pack item references a downloadable OpenAPI/Swagger spec.",
    "evidenceIds": [
      "serpapi-probe-3",
      "serpapi-probe-1",
      "serpapi-probe-2"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "api-sandbox",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "SerpApi is a live search-scraping API with a free tier, caching, and 'ZeroTrace Mode' for not storing data, but there is no evidence of a distinct sandbox/test environment separate from production data — all searches appear to hit live Google/Bing/etc. results against the same API key and billing. Missing for 10: any documented sandbox mode, test API keys, mock/staging endpoint, or explicit separation between test and production data.",
    "evidenceIds": []
  },
  {
    "productId": "serpapi",
    "storyId": "api-versioning-policy",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "Evidence shows a client library (google-search-results-python) being deprecated in favor of a newer package, but there is no documentation of API versioning (e.g., v1/v2 endpoints) or a formal deprecation policy for the SerpApi service/API itself; an OpenAPI spec probe returned 404s. This is an applicable axis for an API product, but no evidence supports it being delivered.",
    "evidenceIds": [
      "serpapi-gh-2",
      "serpapi-gh-5",
      "serpapi-gh-9",
      "serpapi-probe-3"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "automation-bulk-operations",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack covers single-search parameters, formats, caching, and archive retrieval, but nothing indicates a bulk/batch API endpoint for submitting or processing many search items at once. Bulk operations are a plausible feature for a search-API product, but no documentation or examples confirm this capability exists.",
    "evidenceIds": []
  },
  {
    "productId": "serpapi",
    "storyId": "automation-rules-engine",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "SerpApi's evidence pack shows only search scraping APIs, caching, and plan billing automation (Automatic Early Renewal), none of which let a user define custom rules that trigger arbitrary actions on events. No webhook, alerting, or rule-engine capability is documented.",
    "evidenceIds": [
      "serpapi-docs-6"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "automation-scheduled-jobs",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "No evidence of any scheduling, cron-like, or recurring job/workflow feature in SerpApi's docs or integrations—only ad-hoc synchronous/async single searches and a temporary results cache/archive API are documented.",
    "evidenceIds": [
      "serpapi-docs-9",
      "serpapi-docs-14",
      "serpapi-gh-3"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "automation-versioned-workflows",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "SerpApi is a search-results scraping API/service, not an automation-authoring tool with a workflow/pipeline to version, review, or roll back; this axis is a category error for its product type.",
    "evidenceIds": []
  },
  {
    "productId": "serpapi",
    "storyId": "batch-async-processing",
    "verdict": "partial",
    "quality": 7,
    "confidence": "medium",
    "rationale": "SerpApi explicitly supports async submission via the `async` parameter (submit now, retrieve later) plus a Searches Archive API to fetch async results later, which directly enables asynchronous high-volume workflows [serpapi-docs-9][serpapi-docs-14]. However, there is no explicit documentation of a dedicated batch-job endpoint or bulk-submission API for large query sets. Missing for 10: dedicated batch/bulk submission endpoint documentation, rate/throughput guarantees for high-volume async workloads, and independent confirmation of async reliability at scale.",
    "evidenceIds": [
      "serpapi-docs-9",
      "serpapi-docs-14"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "citation-metadata",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "The evidence pack describes SerpApi's general search/JSON output, formats, and MCP integration, but never documents the structure of returned result fields (e.g., canonical URL, title, published date) that a developer would rely on for citations. Missing for 10: explicit schema documentation of link/title/date fields, examples showing these fields populated, or independent verification of their accuracy/canonicality.",
    "evidenceIds": [
      "serpapi-docs-1",
      "serpapi-docs-18",
      "serpapi-gh-1"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "direct-answer-generation",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "SerpApi's evidence shows it returns structured/markdown search results (including Google AI Overview scraping and RAG use-case framing) meant to be fed into a separate LLM pipeline, not a single-call endpoint that itself returns an LLM-generated, sourced answer. No endpoint or docs describe SerpApi generating the answer itself.",
    "evidenceIds": [
      "serpapi-docs-25",
      "serpapi-docs-22",
      "serpapi-docs-19"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "documented-rate-limits",
    "verdict": "partial",
    "quality": 5,
    "confidence": "medium",
    "rationale": "Pricing page shows tiered plans with searches-per-month caps (e.g., 250/month free tier) and a self-serve 'Automatic Early Renewal' upgrade mechanism triggered once searches are used up, giving a self-serve path to more capacity. However, there is no explicit documentation of concurrency caps (simultaneous request limits) or per-second/per-minute rate limits, which developers typically need for building resilient clients. Missing for 10: explicit concurrency/rate-limit numbers (requests per second/minute), documented error/backoff behavior when limits are hit, and independent confirmation of self-serve upgrade flow beyond pricing page claims.",
    "evidenceIds": [
      "serpapi-docs-26",
      "serpapi-docs-6",
      "serpapi-docs-15"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "domain-include-exclude",
    "verdict": "partial",
    "quality": 5,
    "confidence": "low",
    "rationale": "SerpApi supports Google search operators like 'site:' which can be used to include or exclude specific domains (e.g., site:example.com or -site:example.com), giving developers a workaround to restrict/exclude domains, but there's no dedicated first-class parameter or documented feature specifically for domain inclusion/exclusion filtering. missing for 10: a documented dedicated domain-restrict/exclude parameter, explicit examples of exclude-domain usage, and independent confirmation this works reliably across engines.",
    "evidenceIds": [
      "serpapi-docs-10"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "find-similar-links",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "SerpApi's docs only mention support for generic Google search operators like inurl:, site:, and intitle: — there is no evidence of support for the 'related:' operator or any dedicated 'find similar pages' feature that would let a developer discover pages similar to a given URL.",
    "evidenceIds": [
      "serpapi-docs-10",
      "serpapi-docs-1"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "free-tier-prototyping",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "SerpApi's pricing page explicitly documents a free tier of 250 searches/month at $0, and cached searches are also free and don't count against quota, giving developers a clear path to prototype without payment; the free plan is easy to sign up for via API key per the docs/GitHub examples. Missing for 10: no independent/community confirmation of the free-tier signup experience or its limitations in practice.",
    "evidenceIds": [
      "serpapi-docs-26",
      "serpapi-docs-13",
      "serpapi-gh-1",
      "serpapi-docs-20"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "fresh-results-recency",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence shows SerpApi is a real-time scraping API with caching (1h cache) and mentions of 'real-time JSON API' claims, but nothing in the pack documents explicit date-range or recency filter parameters (e.g., time-window search flags) or describes how frequently the underlying index itself is refreshed. Without concrete documentation of such filters, the axis is unaddressed by the evidence provided.",
    "evidenceIds": [
      "serpapi-probe-1",
      "serpapi-docs-13",
      "serpapi-docs-14"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "full-page-contents",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "SerpApi supports an `md` output format that returns markdown-formatted search results optimized for LLMs/AI agents, and a dedicated markdown-output feature serving any search result as clean markdown, plus raw HTML output — but this is markdown/HTML of the SERP results themselves, not full page text extraction of the underlying linked pages. missing for 10: evidence of extracting full text/markdown of the destination web pages (not just search result snippets/HTML/markdown), and independent hands-on verification of markdown output quality.",
    "evidenceIds": [
      "serpapi-docs-3",
      "serpapi-docs-11",
      "serpapi-docs-19"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "geo-language-targeting",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "SerpApi docs and SDK examples show explicit location/language parameters (e.g. 'location' recommended at city level, 'gl'/search origin parameter) and a code example passing 'location':'Austin,Texas' with a helper to disambiguate locations. This directly supports localization by country/language/location for a data engineer's search queries. Missing for 10: explicit documentation/example of the 'hl' (language) and 'gl' (country) parameters together with independent hands-on confirmation of localized result differences.",
    "evidenceIds": [
      "serpapi-docs-2",
      "serpapi-docs-17",
      "serpapi-gh-1",
      "serpapi-gh-4"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "keyword-hybrid-modes",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "SerpApi is a search-engine scraping/API product that returns Google/Bing/etc. results; it does not offer configurable retrieval modes like keyword/neural/hybrid, which is a concept specific to vector/semantic search engines. This axis is a category error for a SERP-scraping API.",
    "evidenceIds": []
  },
  {
    "productId": "serpapi",
    "storyId": "news-vertical-endpoints",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "SerpApi ships dedicated endpoints for specific verticals such as Google News (with topic_token category filters) and other specialized APIs like Google Flights and Google Ads Transparency Center, alongside the core search API; images vertical is implied by the broader engine family though not explicitly documented in this pack. Evidence includes first-party docs for parameters and topic filtering plus API listings confirming multiple vertical-specific endpoints. Missing for 10: explicit documentation/example of an Images-specific endpoint and independent hands-on confirmation of vertical query results.",
    "evidenceIds": [
      "serpapi-docs-3",
      "serpapi-docs-4",
      "serpapi-docs-12",
      "serpapi-docs-18",
      "serpapi-docs-24",
      "serpapi-docs-27",
      "serpapi-docs-1"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "openness-api-parity",
    "verdict": "partial",
    "quality": 5,
    "confidence": "low",
    "rationale": "Evidence strongly documents that SerpApi's core scraping functionality (Google, News, Ads, Flights, etc.) and output formats (json/html/md) are fully accessible via the API and various language libraries, and even account-level settings like ZeroTrace Mode and Automatic Early Renewal are described as configurable in docs. However, there is no evidence of an API/endpoint for programmatically managing billing, plan changes, or dashboard analytics (api-metrics page appears to be a UI-only dashboard), and no OpenAPI spec was found (404s), leaving unclear whether account/administrative actions in the UI have full API parity. missing for 10: API endpoints for billing/plan management, confirmation that dashboard-only features (api-metrics, account settings) have API equivalents, and independent verification of full UI-API parity.",
    "evidenceIds": [
      "serpapi-docs-1",
      "serpapi-docs-3",
      "serpapi-docs-5",
      "serpapi-docs-6",
      "serpapi-docs-16",
      "serpapi-probe-3",
      "serpapi-docs-20"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "openness-full-export",
    "verdict": "partial",
    "quality": 3,
    "confidence": "low",
    "rationale": "SerpApi's outputs (search results) are always available in open formats—JSON, HTML, or markdown—and a Searches Archive API lets users retrieve past results, while ZeroTrace mode means the vendor doesn't retain data at all. But there is no documented bulk 'export all my account data and leave' feature, account-data portability tool, or data-deletion/export workflow beyond retrieving individual past search results. missing for 10: a documented bulk account-data export mechanism, explicit data portability/deletion tooling, and independent confirmation that users can fully extract historical usage/account data before leaving.",
    "evidenceIds": [
      "serpapi-docs-3",
      "serpapi-docs-11",
      "serpapi-docs-19",
      "serpapi-docs-14",
      "serpapi-docs-5"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "openness-open-license",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "SerpApi is a closed, paid SaaS API; only client-side SDK wrappers (e.g. google-search-results-python) are on GitHub, and there is no evidence the core search/scraping service or API source is released under an open license — the wrappers are thin API clients, not 'the product' itself.",
    "evidenceIds": [
      "serpapi-gh-6",
      "serpapi-gh-8",
      "serpapi-gh-2"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "openness-self-host",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "SerpApi is a hosted SaaS scraping/API service; there is no evidence of a self-hostable core engine, and the product's architecture (proprietary scraping infrastructure, IP rotation, legal shield tied to SerpApi's own infrastructure) is inherently a managed cloud service, not something designed to be self-hosted by users.",
    "evidenceIds": []
  },
  {
    "productId": "serpapi",
    "storyId": "privacy-data-residency",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "No evidence SerpApi offers region/residency choice for data storage; there's a ZeroTrace Mode that avoids storing data at all, but nothing about selecting a storage region or jurisdiction for retained data.",
    "evidenceIds": []
  },
  {
    "productId": "serpapi",
    "storyId": "privacy-no-training",
    "verdict": "partial",
    "quality": 4,
    "confidence": "low",
    "rationale": "SerpApi doesn't explicitly address AI-training use of customer data, but its ZeroTrace Mode claims that once a search completes, no search parameters/files/data are stored, which would preclude such data being used to train models — an indirect but relevant privacy control. missing for 10: explicit AI-training data-use policy/statement, opt-out mechanism specifically for AI training, and independent verification of ZeroTrace Mode's scope.",
    "evidenceIds": [
      "serpapi-docs-5"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "privacy-retention-controls",
    "verdict": "partial",
    "quality": 5,
    "confidence": "medium",
    "rationale": "SerpApi documents a 'ZeroTrace Mode' that stops storage of search parameters/files/data, giving users some control over data retention, and mentions a temporary 1h cache and a Searches Archive API for retrieving stored results. However, there's no documentation of a general data-deletion mechanism, retention policy for non-ZeroTrace plans, or user-initiated deletion of historical searches/account data. missing for 10: explicit deletion/export controls for stored account data, retention policy details for standard (non-ZeroTrace) plans, independent confirmation that ZeroTrace behaves as claimed.",
    "evidenceIds": [
      "serpapi-docs-5",
      "serpapi-docs-13",
      "serpapi-docs-14",
      "serpapi-gh-3"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "privacy-telemetry-optout",
    "verdict": "partial",
    "quality": 4,
    "confidence": "low",
    "rationale": "SerpApi's ZeroTrace Mode lets users prevent storage of search parameters/data ('once a search completes, it's as if it never happened'), which is adjacent to a telemetry/usage-tracking opt-out but is framed around search data retention rather than explicit telemetry or usage analytics collection. No documentation addresses opting out of product usage telemetry (e.g., client library analytics, dashboard tracking) specifically. Missing for 10: explicit telemetry/usage-tracking opt-out documentation, evidence covering the SDK/API client's own telemetry behavior, and independent confirmation that ZeroTrace disables all tracking beyond search data.",
    "evidenceIds": [
      "serpapi-docs-5"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "rag-ready-snippets",
    "verdict": "full",
    "quality": 8,
    "confidence": "medium",
    "rationale": "SerpApi explicitly supports markdown output 'optimized for LLMs and AI agents' with roughly half the token size of JSON, a field-selection parameter to reduce payload size, and explicitly markets a RAG use case ('Feed search data into AI pipelines to minimize hallucinations'), plus an llms.txt and MCP server for agent consumption. missing for 10: independent/hands-on evidence confirming markdown output quality and ranking relevance in a real RAG pipeline, and no benchmark showing token/size reduction claims validated externally.",
    "evidenceIds": [
      "serpapi-docs-19",
      "serpapi-docs-7",
      "serpapi-docs-25",
      "serpapi-probe-1",
      "serpapi-probe-4",
      "serpapi-docs-3"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "relevance-scores",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence in the pack mentions relevance scores or a scoring/confidence field on results that a developer could threshold on; SerpApi's docs describe fields like format, topic tokens, and result fields but nothing about per-result relevance scoring for pipeline filtering.",
    "evidenceIds": []
  },
  {
    "productId": "serpapi",
    "storyId": "robots-compliance-stance",
    "verdict": "partial",
    "quality": 5,
    "confidence": "medium",
    "rationale": "SerpApi publishes a clear stance on legality of scraping/parsing via its 'U.S. Legal Shield' (covering use of data as long as it's not illegal, with $2M coverage on Production plans), and community discussion corroborates this legal defense framing. However, there is no explicit documented stance on robots.txt compliance or content licensing/copyright of scraped results—only the broad legality/permitted-use angle is covered. Missing for 10: explicit robots.txt policy statement, explicit content-licensing/copyright guidance, independent verification of legal shield's real-world enforceability.",
    "evidenceIds": [
      "serpapi-docs-8",
      "serpapi-docs-15",
      "serpapi-comm-1",
      "serpapi-comm-3"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "semantic-neural-search",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "SerpApi's evidence describes scraping keyword-based results from Google, Bing, etc. (serpapi-docs-1, serpapi-gh-6) and provides RAG/feed-to-LLM use cases (serpapi-docs-25), but nothing indicates it performs meaning-based/semantic search or surfaces results that keyword engines would miss — it merely mirrors the underlying search engine's keyword results. No vector search, embeddings, or semantic ranking capability is mentioned anywhere in the pack.",
    "evidenceIds": [
      "serpapi-docs-1",
      "serpapi-gh-6",
      "serpapi-docs-25"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "structured-json-output",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "SerpApi returns structured JSON per endpoint and lets developers pick output format (json/html/md) or filter fields, but there is no evidence of a mechanism to supply a custom JSON schema that the response is validated/shaped against.",
    "evidenceIds": [
      "serpapi-docs-3",
      "serpapi-docs-7",
      "serpapi-docs-11"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "subpage-crawling",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "SerpApi's documented capability is restricted to scraping structured search engine results pages (Google, Bing, News, Ads, Flights, etc.); there is no evidence of any subpage/site-crawling capability that would follow a search result link to fetch and traverse the destination site's pages. All docs and GitHub references describe SERP scraping only, not general web crawling. Missing for 10: any documentation or code showing SerpApi fetching/crawling pages beyond the search results themselves, a crawl depth/breadth parameter, or site-wide crawling feature.",
    "evidenceIds": [
      "serpapi-docs-1",
      "serpapi-docs-18",
      "serpapi-gh-6",
      "serpapi-docs-19"
    ]
  },
  {
    "productId": "serpapi",
    "storyId": "transparent-request-pricing",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "SerpApi publishes a public pricing page with a free tier (250 searches/month), paid plans, and automatic early renewal, all discoverable without sales contact (serpapi-docs-6, serpapi-docs-26). Community discussion on HN also references SerpApi's plan structure without any indication of a sales-gated model. Missing for 10: a full per-request/credit cost table across all paid tiers and confirmation that no enterprise tier requires contacting sales.",
    "evidenceIds": [
      "serpapi-docs-26",
      "serpapi-docs-6",
      "serpapi-docs-5",
      "serpapi-comm-1"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agent-research-pipeline",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Tavily's single API/SDK exposes search, extract, crawl/map, and a dedicated research endpoint that itself performs multiple searches, source analysis, and report synthesis (tavily-docs-4,13,26,27,29), all accessible through one client/API key. This directly matches a multi-step search→extract→synthesize research flow callable by an agent. Missing for 10: independent/hands-on third-party validation of the research endpoint's synthesis quality and no evidence of chaining search+extract+research in a single documented end-to-end example.",
    "evidenceIds": [
      "tavily-docs-4",
      "tavily-docs-13",
      "tavily-docs-26",
      "tavily-docs-27",
      "tavily-docs-29",
      "tavily-docs-2",
      "tavily-docs-22",
      "tavily-gh-8"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agent-tool-call-ready",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Tavily ships SDKs (Python/JS) designed explicitly for LLM/agent consumption (qna_search 'perfect for usage by LLMs', get_search_context for direct RAG feeding), plus an official MCP server compatible with any MCP client for tool-call integration, and clear API reference/OpenAPI-style endpoint docs for search/extract/crawl/map/research. missing for 10: no discoverable OpenAPI/JSON schema spec (probe found 404s) and no explicit named framework integrations (e.g., LangChain/LlamaIndex tool classes) cited in evidence.",
    "evidenceIds": [
      "tavily-gh-10",
      "tavily-gh-9",
      "tavily-docs-19",
      "tavily-docs-14",
      "tavily-docs-32",
      "tavily-docs-35",
      "tavily-probe-3",
      "tavily-probe-2"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agentic-agent-docs",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Tavily hosts a working llms.txt (confirmed live via probe, HTTP 200) with agent-oriented CLI examples, plus an agent-setup SKILL.md and MCP server docs explicitly designed for agent consumption. missing for 10: independent third-party confirmation that agents successfully consume/act on the llms.txt content beyond Tavily's own docs.",
    "evidenceIds": [
      "tavily-probe-1",
      "tavily-docs-38",
      "tavily-docs-16",
      "tavily-docs-9",
      "tavily-docs-14",
      "tavily-probe-3"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agentic-ai-insights",
    "verdict": "na",
    "quality": 0,
    "confidence": "medium",
    "rationale": "Tavily is a web-search/extraction/crawling API infrastructure for building AI agents, not a data platform where a user's own stored data is analyzed to surface in-product insights or suggestions; its 'research'/'search' outputs are AI-generated summaries of external web content, not analysis of a user's own data within a product UI. This axis is a category mismatch for an API/SDK product rather than an applicable-but-unmet capability.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "agentic-autonomous-automation",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Tavily is a web search/extraction/crawl API and MCP server for agents to call as a tool; it provides no scheduling, triggers, or background automation/orchestration capability of its own. Setting up autonomous background automations is a workflow/orchestration platform concern, not something this API product category addresses.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "agentic-builtin-assistant",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Tavily is a web-search/data API and SDK toolkit that other AI agents call into (search, extract, crawl, map, research), not a product with its own embedded AI assistant UI that a user delegates tasks to. The evidence shows Tavily as a tool provider for external agents/MCP clients, not as an agent itself — this axis is a category mismatch for this product type.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "agentic-headless",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Tavily is a REST API with SDKs (Python/JS) and a CLI (tvly search/extract/crawl/research) that can be run non-interactively from scripts or CI, with API keys, rate limits, and usage/logs endpoints suited to automated pipelines. missing for 10: no explicit CI/CD pipeline example (e.g., GitHub Actions) or independent report confirming headless CI usage.",
    "evidenceIds": [
      "tavily-docs-15",
      "tavily-docs-38",
      "tavily-docs-32",
      "tavily-docs-35",
      "tavily-docs-17",
      "tavily-docs-31",
      "tavily-docs-10"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agentic-mcp-client",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Tavily is a web-data/API service (search, extract, crawl, map, research) that itself ships an official MCP server so agents can call ITS tools — the evidence never positions Tavily as an agent/orchestrator that consumes other MCP servers' tools. Plugging external MCP servers into a product only applies to agent hosts/orchestration platforms, not to a tool/API provider like Tavily, so this client-role axis is a category mismatch.",
    "evidenceIds": [
      "tavily-docs-5",
      "tavily-docs-19",
      "tavily-docs-37",
      "tavily-probe-3"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agentic-mcp-server",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Tavily documents an official MCP server providing tavily-search and tavily-extract tools, explicitly compatible with Cursor, Claude Desktop, and any MCP client, confirmed by a live docs page probe. Missing for 10: independent/hands-on third-party confirmation of MCP server reliability and no mention of the full tool set (crawl/map/research) being exposed via MCP.",
    "evidenceIds": [
      "tavily-docs-5",
      "tavily-docs-14",
      "tavily-docs-19",
      "tavily-docs-37",
      "tavily-probe-3"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agentic-nl-commands",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Tavily's API accepts natural-language queries (search, research, crawl instructions) and its MCP server plus CLI (tvly search/extract/crawl/research) let AI-native users invoke it via natural-language-like commands rather than rigid syntax; instructions like crawl's 'Find all pages on the Python SDK' show NL-driven parameterization. missing for 10: no evidence of a true conversational/chat interface parsing arbitrary free-form user commands end-to-end, and no independent/hands-on verification beyond vendor docs and github readme.",
    "evidenceIds": [
      "tavily-docs-3",
      "tavily-docs-11",
      "tavily-docs-38",
      "tavily-docs-5",
      "tavily-probe-3",
      "tavily-gh-8"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agentic-official-cli",
    "verdict": "partial",
    "quality": 3,
    "confidence": "low",
    "rationale": "The llms.txt docs excerpt shows CLI commands like `tvly search`, `tvly extract`, `tvly crawl`, `tvly research`, suggesting an official CLI named `tvly` exists, but there is no dedicated installation guide, README, or independent corroboration beyond this single snippet. missing for 10: dedicated CLI docs/install instructions, GitHub repo or package listing for the CLI, independent/hands-on confirmation of the tool.",
    "evidenceIds": [
      "tavily-docs-38"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agentic-public-api",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "Tavily is fundamentally an API-first product with extensive documented REST endpoints (search, extract, crawl, map, research) plus official Python/JS SDKs, rate-limit docs, usage/logs endpoints, and keyless trial mode — all clearly aimed at programmatic/AI-native consumption. Missing for 10: a discoverable machine-readable OpenAPI/swagger spec (probe found 404s on standard paths), which would round out full API-native tooling.",
    "evidenceIds": [
      "tavily-docs-22",
      "tavily-docs-23",
      "tavily-docs-24",
      "tavily-docs-25",
      "tavily-docs-26",
      "tavily-docs-32",
      "tavily-docs-35",
      "tavily-docs-17",
      "tavily-docs-30",
      "tavily-docs-31",
      "tavily-gh-6",
      "tavily-probe-2"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agentic-scoped-keys",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "Evidence shows API-key authentication, project IDs and session/user identifiers for usage attribution, but nothing about issuing scoped or least-privilege credentials (e.g., read-only keys, permission-restricted keys, per-tool key scoping) for agents. missing for 10: any documentation of restricted-permission API keys, role/scope-based key creation, or agent-specific least-privilege credential issuance.",
    "evidenceIds": [
      "tavily-docs-33",
      "tavily-docs-34",
      "tavily-docs-30"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agentic-sdks",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "Tavily ships official Python and JavaScript SDKs with rich, documented functionality (search, extract, crawl, map, research, QnA, RAG context) via pip/npm install and quick-start guides, plus reference docs covering auth, rate limits, project/session attribution, and proxy config. Missing for 10: independent/third-party corroboration beyond vendor docs and GitHub repo, and no official OpenAPI spec was found (probe returned 404s).",
    "evidenceIds": [
      "tavily-docs-15",
      "tavily-docs-32",
      "tavily-docs-35",
      "tavily-docs-10",
      "tavily-docs-11",
      "tavily-docs-12",
      "tavily-docs-13",
      "tavily-gh-2",
      "tavily-docs-33",
      "tavily-docs-34",
      "tavily-docs-36",
      "tavily-probe-2"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "agentic-webhooks",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "Tavily's evidence pack covers search, extract, crawl, map, research APIs, SDKs, and an MCP server, but there is no mention of webhooks or event subscription mechanisms anywhere in the docs, GitHub, or probes; async research status must be polled via request ID rather than pushed via webhook.",
    "evidenceIds": [
      "tavily-docs-28",
      "tavily-docs-29",
      "tavily-probe-1",
      "tavily-probe-2"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "api-interactive-docs",
    "verdict": "partial",
    "quality": 5,
    "confidence": "medium",
    "rationale": "Tavily has a documented API reference with endpoint pages (search, extract, crawl, map, research) and code snippets, but there's no confirmed interactive/runnable console—an openapi.json probe returned 404s across candidate paths, suggesting no standard interactive spec-driven explorer. missing for 10: evidence of an actual interactive 'try it' console or sandbox with live runnable requests, a discoverable OpenAPI/Swagger spec, and independent confirmation of interactivity beyond static code examples.",
    "evidenceIds": [
      "tavily-docs-22",
      "tavily-docs-23",
      "tavily-docs-24",
      "tavily-docs-25",
      "tavily-docs-26",
      "tavily-probe-2"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "api-machine-spec",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "Tavily has detailed API reference docs but an explicit probe for standard OpenAPI/Swagger spec locations (openapi.json, swagger.json, etc.) returned 404s, and no evidence pack item points to a downloadable machine-readable spec.",
    "evidenceIds": [
      "tavily-probe-2"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "api-sandbox",
    "verdict": "partial",
    "quality": 4,
    "confidence": "low",
    "rationale": "Docs mention distinct 'Development' vs 'Production' rate-limit tiers/keys (implying separate environments) and a keyless mode to try the API without an account, which together hint at a way to test without full production access, but there is no explicit sandbox environment, mock data, or isolation-from-production-data guarantee documented. missing for 10: explicit sandbox/test-mode documentation, confirmation that development keys don't touch live production data or billing, and any hands-on/independent corroboration.",
    "evidenceIds": [
      "tavily-docs-17",
      "tavily-docs-20",
      "tavily-gh-2",
      "tavily-gh-6",
      "tavily-gh-11"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "api-versioning-policy",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence of API versioning scheme (e.g., v1/v2 paths) or any documented deprecation policy; OpenAPI spec probes returned 404s and no changelog/deprecation docs appear in the evidence pack.",
    "evidenceIds": [
      "tavily-probe-2"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "automation-bulk-operations",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Tavily explicitly supports bulk operations: Extract can batch up to 20 URLs per request, and Crawl/Map can traverse and explore hundreds of paths in parallel graph-based traversal, plus Research performs multi-search comprehensive reports with async status retrieval. These directly satisfy 'bulk operations across many items' for an AI-native/automation use case. Missing for 10: no documented bulk/batch search across many queries in one call, and no independent hands-on benchmark confirming throughput at scale beyond vendor docs.",
    "evidenceIds": [
      "tavily-docs-23",
      "tavily-docs-24",
      "tavily-docs-25",
      "tavily-docs-26",
      "tavily-docs-28",
      "tavily-gh-7",
      "tavily-gh-8"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "automation-rules-engine",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Tavily is a web search/extraction/research API and MCP toolset for AI agents, not an automation/rules-engine platform; there is no concept of user-defined triggers or event-driven actions in its evidence. This is a category mismatch rather than a missing feature.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "automation-scheduled-jobs",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Tavily is a search/extraction/research API and MCP toolset for agents, not a scheduler or workflow orchestrator; scheduling recurring jobs is outside its product category (it provides synchronous/async request-response endpoints, not cron-like automation).",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "automation-versioned-workflows",
    "verdict": "na",
    "quality": 0,
    "confidence": "high",
    "rationale": "Tavily is a web search/extraction/crawling API and MCP tool, not an automation/workflow builder with configurable automations to version or roll back — this axis is a category error for this product type.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "batch-async-processing",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Tavily's Research endpoint supports async job submission with request-ID based status polling and streaming, and Extract supports batching up to 20 URLs per request; rate-limit docs show RPM tiers and 429/retry-after handling for high-volume workloads. However there's no dedicated bulk/batch job queue for Search itself, no webhook/callback pattern for large offline jobs, and no explicit high-volume batch pricing guidance beyond per-credit usage. Missing for 10: a true batch-submission API for search queries, webhook/callback support for async job completion, and documented guidance/pricing for large-scale batch workloads.",
    "evidenceIds": [
      "tavily-docs-26",
      "tavily-docs-28",
      "tavily-docs-29",
      "tavily-docs-23",
      "tavily-docs-6",
      "tavily-docs-17"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "citation-metadata",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence describes Tavily's search/extract/crawl endpoints and SDKs but never documents the actual result schema (URL, title, published date fields) returned by search results, so there's no evidence supporting reliable citation metadata for developers to build accurate citations.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "direct-answer-generation",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Tavily's qna_search (and its underlying Q&A search_depth) returns a single, sourced, LLM-generated direct answer in one API call, explicitly described as 'accurate and concise answers to questions, in one line of code. Perfect for usage by LLMs.' The search endpoint also supports an include_answer option returning a synthesized answer alongside sources. Missing for 10: no independent third-party benchmark of answer quality/accuracy, and no explicit example showing the 'answer' field returned alongside source URLs in the same response payload.",
    "evidenceIds": [
      "tavily-gh-5",
      "tavily-gh-10",
      "tavily-docs-1",
      "tavily-docs-22"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "documented-rate-limits",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Tavily's docs explicitly state RPM caps for Development (100) vs Production (1,000) environments, describe 429/retry-after behavior, and the pricing page shows a self-serve free tier and usage-based paid plans with a usage/logs API to track consumption — together implying a self-serve upgrade path from dev to production limits. However, there is no explicit concurrency-cap documentation or a clearly described step-by-step upgrade workflow beyond the environment distinction. Missing for 10: explicit concurrency limits, a documented step-by-step self-serve upgrade/billing flow.",
    "evidenceIds": [
      "tavily-docs-6",
      "tavily-docs-17",
      "tavily-docs-20",
      "tavily-docs-21",
      "tavily-docs-30",
      "tavily-docs-31",
      "tavily-docs-7",
      "tavily-docs-39"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "domain-include-exclude",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack never mentions domain include/exclude filtering (no 'include_domains' or 'exclude_domains' parameters, or any similar filter) anywhere in the docs, SDK, or API reference excerpts provided; it only covers exact_match, crawl/map depth, research modes, and rate limits.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "find-similar-links",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "Tavily's evidence shows search (query-based), extract, crawl, and map (both traverse a site's own link structure from a base URL) but no capability to find other pages on the web that are semantically/topically similar to a given URL, which is the actual ask here. Crawl/Map only discover pages within the same site's domain, not similar external content.",
    "evidenceIds": [
      "tavily-gh-7",
      "tavily-docs-24",
      "tavily-gh-1",
      "tavily-docs-25"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "free-tier-prototyping",
    "verdict": "full",
    "quality": 9,
    "confidence": "high",
    "rationale": "Tavily offers 1,000 free API credits/month with no credit card required, plus a keyless SDK mode for search/extract to try before signing up, and clear rate limits for development tier prototyping. missing for 10: no independent/community corroboration of the free-tier experience beyond vendor docs.",
    "evidenceIds": [
      "tavily-docs-7",
      "tavily-docs-21",
      "tavily-docs-39",
      "tavily-gh-2",
      "tavily-gh-6",
      "tavily-gh-11",
      "tavily-docs-17"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "fresh-results-recency",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack covers Tavily's search, extract, crawl, map, and research endpoints, rate limits, and MCP integration, but contains no mention of date-range parameters, recency/freshness filters, or index update frequency. Missing for 10: explicit date-range/time_range search parameters, recency filter documentation, and any claim about index freshness or update cadence.",
    "evidenceIds": [
      "tavily-docs-22",
      "tavily-gh-3",
      "tavily-docs-1"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "full-page-contents",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Tavily Extract explicitly retrieves full page content (not just snippets) from one or more URLs, batching up to 20 per request, and is documented as a distinct endpoint separate from Search snippets; SDKs and MCP server expose this extract capability directly. Missing for 10: explicit confirmation of markdown-formatted output vs raw text, and independent third-party verification of extraction fidelity.",
    "evidenceIds": [
      "tavily-docs-2",
      "tavily-docs-23",
      "tavily-gh-2",
      "tavily-docs-19"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "geo-language-targeting",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack documents search, extract, crawl, map, research, and MCP capabilities but never mentions country, language, or geo-location filtering/localization parameters for search results. missing for 10: any documented country/language/location parameter, evidence of localized result sets, or docs referencing geographic targeting.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "keyword-hybrid-modes",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack shows Tavily's search API supports exact-phrase matching (exact_match=True) but there is no documentation of selectable retrieval modes such as keyword vs neural vs hybrid search per query.",
    "evidenceIds": [
      "tavily-gh-3"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "news-vertical-endpoints",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack describes Tavily's generic search, extract, crawl, map, and research endpoints, but nowhere mentions vertical-specific categories or filters such as news, images, or finance. Missing for 10: any documentation of a topic/category parameter (e.g., topic=news/finance), dedicated vertical endpoints, or image-specific search options.",
    "evidenceIds": [
      "tavily-docs-22",
      "tavily-docs-1",
      "tavily-gh-1"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "openness-api-parity",
    "verdict": "full",
    "quality": 7,
    "confidence": "medium",
    "rationale": "Tavily's core functionality (search, extract, crawl, map, research, Q&A, RAG context) is fully exposed through the API/SDKs, and CLI/MCP integrations mirror this, suggesting the API is the primary interface with no UI-only features documented. However, there's no explicit comparison confirming full UI-API parity, and no public OpenAPI spec was found (404 on all probed paths), leaving some doubt about completeness of self-service API discovery. Missing for 10: explicit UI feature list to compare against API, and a public OpenAPI/swagger spec for full endpoint parity verification.",
    "evidenceIds": [
      "tavily-docs-1",
      "tavily-docs-2",
      "tavily-docs-3",
      "tavily-docs-4",
      "tavily-gh-1",
      "tavily-gh-4",
      "tavily-gh-5",
      "tavily-docs-22",
      "tavily-docs-23",
      "tavily-docs-24",
      "tavily-docs-25",
      "tavily-docs-26",
      "tavily-docs-38",
      "tavily-probe-2"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "openness-full-export",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "Tavily's docs show usage/logs endpoints (tavily-docs-30, tavily-docs-31) for tracking API usage, but there is no evidence of a comprehensive data export feature, open-format data dumps, or account data portability mechanism that would let a user export all their data and leave the platform.",
    "evidenceIds": [
      "tavily-docs-30",
      "tavily-docs-31"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "openness-open-license",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "Tavily is a closed, hosted API/SaaS service; while a Python SDK client repo exists on GitHub, the evidence never states any open-source license or exposes the core Tavily service/backend source code. Missing for 10: explicit license grant, access to backend/service source, any statement of open-sourcing the core product.",
    "evidenceIds": [
      "tavily-gh-1",
      "tavily-gh-2"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "openness-self-host",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "Tavily is offered exclusively as a hosted API/SaaS product (API keys, rate limits, pricing tiers, keyless mode against the 'public Tavily API') with no evidence of a self-hostable core engine, on-prem deployment option, or open-source server code.",
    "evidenceIds": [
      "tavily-docs-7",
      "tavily-gh-2",
      "tavily-docs-17"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "privacy-data-residency",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence in the pack mentions data residency, regional storage options, or geographic control over where data is processed/stored; only security/privacy filtering (PII blocking) is mentioned, not data residency choice. Missing for 10: any mention of region selection, data residency guarantees, or geo-specific deployment options.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "privacy-no-training",
    "verdict": "none",
    "quality": 0,
    "confidence": "high",
    "rationale": "No evidence pack item addresses training-data opt-out or a policy preventing customer data from being used to train AI models; only PII/security filtering is mentioned, which is unrelated to model-training data usage.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "privacy-retention-controls",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "No evidence in the pack addresses data retention policies, deletion controls, or user ability to manage stored data/logs beyond usage logging mentions; nothing documents a deletion/export mechanism.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "privacy-telemetry-optout",
    "verdict": "none",
    "quality": 0,
    "confidence": "low",
    "rationale": "No evidence Tavily documents any telemetry/usage-tracking opt-out mechanism; the only related docs (tavily-docs-33, tavily-docs-34) describe optional session/user/project identifiers for analytics attribution, not a way to disable tracking. Missing for 10: any documented telemetry opt-out setting, privacy policy language on data collection, or configuration flag to disable analytics.",
    "evidenceIds": [
      "tavily-docs-33",
      "tavily-docs-34"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "rag-ready-snippets",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Tavily's get_search_context explicitly produces a context string sized for direct RAG use ('you now have a context string that you can feed directly into your RAG Application'), and qna_search is described as tuned for concise LLM-consumable answers; docs also describe content validation layers improving result quality. missing for 10: no independent/third-party benchmark of ranking quality or context sizing tradeoffs beyond first-party claims.",
    "evidenceIds": [
      "tavily-gh-9",
      "tavily-gh-4",
      "tavily-gh-10",
      "tavily-docs-18"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "relevance-scores",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "The evidence pack describes Tavily's search, extract, crawl, map, and research endpoints but never mentions a relevance/score field returned per result that a developer could use to threshold results. Missing for 10: any documentation of a numeric relevance score in the search response schema, and any guidance on filtering/thresholding by that score.",
    "evidenceIds": [
      "tavily-docs-22",
      "tavily-gh-3"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "robots-compliance-stance",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "No evidence pack item documents Tavily's stance on robots.txt compliance, content licensing of crawled/extracted data, or permitted use of search/crawl results; only a general note about security/privacy validation layers (tavily-docs-18) touches trust but not this specific axis.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "semantic-neural-search",
    "verdict": "partial",
    "quality": 5,
    "confidence": "low",
    "rationale": "Tavily's search API accepts natural-language queries (e.g., 'Who is Leo Messi?') and the existence of an `exact_match=True` flag implies the default behavior is not strict keyword matching, suggesting some meaning-based ranking. However, no evidence explicitly documents embeddings, semantic ranking, or a comparison showing it surfaces results keyword search misses. Missing for 10: explicit documentation of semantic/embedding-based ranking methodology, benchmark or example showing recall beyond keyword search, and independent corroboration of search-quality claims.",
    "evidenceIds": [
      "tavily-docs-1",
      "tavily-gh-3",
      "tavily-gh-5",
      "tavily-gh-9"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "structured-json-output",
    "verdict": "none",
    "quality": 0,
    "confidence": "medium",
    "rationale": "No evidence in the pack mentions a JSON-schema-based structured output feature, response schema parameter, or Pydantic/type-safe output validation for search/extract/crawl/research endpoints; responses appear to be fixed JSON shapes rather than developer-defined schemas.",
    "evidenceIds": []
  },
  {
    "productId": "tavily",
    "storyId": "subpage-crawling",
    "verdict": "full",
    "quality": 8,
    "confidence": "high",
    "rationale": "Tavily Crawl explicitly traverses a website's content starting from a base URL with graph-based parallel exploration and intelligent discovery, and Map generates full site maps similarly, both documented with SDK examples (tavily_client.crawl(...), tavily_client.map(...)). This directly satisfies crawling subpages/entire sites from a starting URL. Missing for 10: no independent/hands-on verification beyond vendor docs and GitHub README, and no explicit example of crawling starting directly from a search result URL (only from an arbitrary base URL).",
    "evidenceIds": [
      "tavily-gh-7",
      "tavily-docs-24",
      "tavily-docs-11",
      "tavily-docs-3",
      "tavily-gh-1",
      "tavily-docs-25",
      "tavily-docs-12"
    ]
  },
  {
    "productId": "tavily",
    "storyId": "transparent-request-pricing",
    "verdict": "partial",
    "quality": 6,
    "confidence": "medium",
    "rationale": "Tavily's public pricing page confirms a self-serve, no-sales-required model: 1,000 free API credits/month with no credit card required and a 'pay only for what you use' model. However, the evidence pack does not show an explicit per-request/per-credit cost table or endpoint-specific credit pricing breakdown, so the exact cost transparency is only partially demonstrated. Missing for 10: a detailed per-endpoint credit-cost table, tier pricing breakdown beyond the free tier.",
    "evidenceIds": [
      "tavily-docs-7",
      "tavily-docs-8",
      "tavily-docs-21",
      "tavily-docs-39"
    ]
  }
]
