Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,548Letters: 14Defects: 1,324counted 3 min ago
teppi

Server definition

Hash
sha256:4973c3e4376c2629e350fc31d4f74c07c394fed2fc871ea599adb2abe8200edc
What it is
What a remote MCP server returned when asked what it offers: 5 tools

The blob, as servednamed by its sha256

{ "instructions": "Finds and checks plans of web data APIs (scraping, crawling, SERP search, headless browser) against stated conditions. Use search with the monthly workload (pages by type and/or searches) and the required conditions; use check_conditions to verify plans the user already has in mind, by id, name or pricing-page URL (its cheapest_in_product answers whether a plan is enough and, if not, which plan of the same product is); use get_details for every recorded fact of one plan or product. Use cost_scenarios when the workload may change (for example twice the pages): it returns where the cheapest plan changes and where a plan stops covering the volume or the budget. Use relax_conditions when no plan or too few plans meet every condition: it returns the smallest change of each condition and the plans it admits. Each condition is met, not met or unknown. Unknown means the official pages do not state it; it is never guessed. Every fact carries the official source sentence and its check date. Each plan's meets_all is judged against the required conditions of that call only. To see plans that miss one condition, use the closest plans of a search with no full match, or relax_conditions; a search without the condition judges its plans without it. Prices are listed USD before tax. needs_input lists missing workload details; the results still cover what the given details allow (for a page total without the split, every share of JavaScript-rendered pages from 0% to 100%). Give that range and ask the user for the detail instead of guessing it.", "tools": [ { "description": "Use this when: the user names specific plans (by name, id or pricing-page URL) and wants to know whether they meet the workload and conditions, or which plan of the same product is the cheapest that does. Do not use this when: the user has no plans in mind yet (use search). Check specific plans, given by plan id, plan name or pricing-page URL, against the workload and conditions; up to 20 plans in one call are judged against the same conditions. Returns met / not met / unknown per condition with the official source sentence, which plans and billing options each value applies to, and a purchase link. For each plan it also names the cheapest plan of the same product that meets every required condition, with its monthly cost, or null if none does. An ambiguous name or URL returns the candidate plans instead of a guess.", "inputSchema": { "additionalProperties": false, "description": "Give offer_ids, plans or both; 20 plans at most in total.", "properties": { "ai_extraction_pages": { "description": "How many of the pages need their fields extracted by an AI model (from a prompt or a schema, or automatically) without writing selectors. Each page counts in one of the two extraction fields.", "minimum": 0, "type": "integer" }, "billing_types": { "description": "Acceptable billing: monthly_subscription (A plan with a fixed fee (or minimum commitment) billed every month.) annual_subscription (A plan paid for a year at a time.) pay_as_you_go (No plan fee; a price per unit of use, billed after use or drawn from a balance topped up with any amount.) prepaid_credits (A fixed-size credit pack bought before use, usually with an expiry.) Free plans always qualify.", "items": { "enum": [ "monthly_subscription", "annual_subscription", "pay_as_you_go", "prepaid_credits" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "browser_seconds_per_page": { "description": "Browser time per page in seconds, for headless-browser products billed by time. Every plan must then serve pages that take this long: a hosted browser does, a request-based API only when one request may run that long.", "exclusiveMinimum": 0, "type": "number" }, "data_regions": { "description": "Regions where data must be stored or processed, e.g. [\"EU\"]. Different from exit-IP countries.", "items": { "maxLength": 20, "minLength": 2, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "detail": { "default": "summary", "description": "summary returns one source sentence per fact; full returns every recorded fact and sentence.", "enum": [ "summary", "full" ], "type": "string" }, "exit_ip_countries": { "description": "ISO 3166-1 alpha-2 codes of countries the page requests must exit from, e.g. [\"US\",\"DE\"]. For search results of a country use search_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "failed_requests_not_billed": { "description": "Requests that fail on the provider side (timeouts, blocks, 5xx) must not be billed. A flat monthly price for unlimited requests meets it, since no request is billed on its own; when only success-based billing will do, use only_successful_requests_billed.", "type": "boolean" }, "max_monthly_cost_usd": { "description": "Monthly budget in USD before tax. Compared with listed prices; annual plans use their per-month equivalent.", "minimum": 0, "type": "number" }, "min_concurrency": { "description": "Minimum number of concurrent requests (or browsers) the plan must allow.", "minimum": 1, "type": "integer" }, "min_pages_per_crawl": { "description": "Pages one crawl job (from one start URL, following links) must be able to reach. A plan whose crawl has no page cap meets any number; give the size of the largest site to crawl. Different from the monthly page total.", "minimum": 1, "type": "integer" }, "min_requests_per_minute": { "description": "Minimum request rate the plan must allow, per minute.", "exclusiveMinimum": 0, "type": "number" }, "monthly_pages": { "additionalProperties": false, "description": "Pages per month by type: plain_html (static pages), javascript (needs rendering), premium_proxy (blocked sites that need residential/premium proxies), javascript_premium_proxy (both).", "minProperties": 1, "properties": { "javascript": { "minimum": 0, "type": "integer" }, "javascript_premium_proxy": { "minimum": 0, "type": "integer" }, "plain_html": { "minimum": 0, "type": "integer" }, "premium_proxy": { "minimum": 0, "type": "integer" } }, "type": "object" }, "monthly_pages_total": { "description": "Total pages per month when the split by type is not known yet. Costs and verdicts then cover every share of JavaScript-rendered pages from 0% to 100% of the total (no premium proxies), and the result lists monthly_pages under needs_input.", "minimum": 0, "type": "integer" }, "monthly_searches": { "description": "Search requests per month (one results page each).", "minimum": 0, "type": "integer" }, "needs_recurring_free_tier": { "description": "The plan must be usable every month without paying (a free plan with a monthly allowance or a monthly free credit).", "type": "boolean" }, "offer_ids": { "description": "Plan ids to check (from search or get_details).", "items": { "maxLength": 80, "minLength": 1, "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array", "uniqueItems": true }, "only_successful_requests_billed": { "description": "Billing must count successful requests only: each successful request is charged (or draws credits) and failed ones cost nothing. A flat monthly price for unlimited requests does not meet it, since the price is the same whatever succeeds.", "type": "boolean" }, "plans": { "description": "Plans given by provider and plan name (e.g. \"ScrapingBee Freelance\") or by pricing-page URL, for plans found elsewhere. A name or URL that fits several plans returns the candidates under resolution and no verdict.", "items": { "maxLength": 300, "minLength": 2, "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array", "uniqueItems": true }, "preferred": { "additionalProperties": false, "description": "Nice-to-have conditions; they do not filter, they break ties.", "properties": { "billing_types": { "description": "Acceptable billing: monthly_subscription (A plan with a fixed fee (or minimum commitment) billed every month.) annual_subscription (A plan paid for a year at a time.) pay_as_you_go (No plan fee; a price per unit of use, billed after use or drawn from a balance topped up with any amount.) prepaid_credits (A fixed-size credit pack bought before use, usually with an expiry.) Free plans always qualify.", "items": { "enum": [ "monthly_subscription", "annual_subscription", "pay_as_you_go", "prepaid_credits" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "data_regions": { "description": "Regions where data must be stored or processed, e.g. [\"EU\"]. Different from exit-IP countries.", "items": { "maxLength": 20, "minLength": 2, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "exit_ip_countries": { "description": "ISO 3166-1 alpha-2 codes of countries the page requests must exit from, e.g. [\"US\",\"DE\"]. For search results of a country use search_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "failed_requests_not_billed": { "description": "Requests that fail on the provider side (timeouts, blocks, 5xx) must not be billed. A flat monthly price for unlimited requests meets it, since no request is billed on its own; when only success-based billing will do, use only_successful_requests_billed.", "type": "boolean" }, "max_monthly_cost_usd": { "description": "Monthly budget in USD before tax. Compared with listed prices; annual plans use their per-month equivalent.", "minimum": 0, "type": "number" }, "min_concurrency": { "description": "Minimum number of concurrent requests (or browsers) the plan must allow.", "minimum": 1, "type": "integer" }, "min_pages_per_crawl": { "description": "Pages one crawl job (from one start URL, following links) must be able to reach. A plan whose crawl has no page cap meets any number; give the size of the largest site to crawl. Different from the monthly page total.", "minimum": 1, "type": "integer" }, "min_requests_per_minute": { "description": "Minimum request rate the plan must allow, per minute.", "exclusiveMinimum": 0, "type": "number" }, "needs_recurring_free_tier": { "description": "The plan must be usable every month without paying (a free plan with a monthly allowance or a monthly free credit).", "type": "boolean" }, "only_successful_requests_billed": { "description": "Billing must count successful requests only: each successful request is charged (or draws credits) and failed ones cost nothing. A flat monthly price for unlimited requests does not meet it, since the price is the same whatever succeeds.", "type": "boolean" }, "realtime_search_required": { "description": "Search results must be returned in real time (not through a queue).", "type": "boolean" }, "search_countries": { "description": "ISO 3166-1 alpha-2 codes of the countries whose search results the searches must return (the search engine's country setting, e.g. Google gl), e.g. [\"GB\",\"CA\"]. Different from exit_ip_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_engines": { "description": "Search engines whose results the plan must return, each at the plan's search price: google, bing, yahoo, yandex, baidu, duckduckgo, naver, brave (brave is Brave's own index). monthly_searches is the total over all of them.", "items": { "enum": [ "google", "bing", "yahoo", "yandex", "baidu", "duckduckgo", "naver", "brave" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_result_types": { "description": "Result types the parsed search response must contain: organic, ads, local_pack, knowledge_graph, people_also_ask, related_searches, shopping, news, images, videos, ai_overview.", "items": { "enum": [ "organic", "ads", "local_pack", "knowledge_graph", "people_also_ask", "related_searches", "shopping", "news", "images", "videos", "ai_overview" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "target_errors_not_billed": { "description": "Error responses from the target site (e.g. 404) must not be billed.", "type": "boolean" } }, "type": "object" }, "realtime_search_required": { "description": "Search results must be returned in real time (not through a queue).", "type": "boolean" }, "search_countries": { "description": "ISO 3166-1 alpha-2 codes of the countries whose search results the searches must return (the search engine's country setting, e.g. Google gl), e.g. [\"GB\",\"CA\"]. Different from exit_ip_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_engines": { "description": "Search engines whose results the plan must return, each at the plan's search price: google, bing, yahoo, yandex, baidu, duckduckgo, naver, brave (brave is Brave's own index). monthly_searches is the total over all of them.", "items": { "enum": [ "google", "bing", "yahoo", "yandex", "baidu", "duckduckgo", "naver", "brave" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_result_types": { "description": "Result types the parsed search response must contain: organic, ads, local_pack, knowledge_graph, people_also_ask, related_searches, shopping, news, images, videos, ai_overview.", "items": { "enum": [ "organic", "ads", "local_pack", "knowledge_graph", "people_also_ask", "related_searches", "shopping", "news", "images", "videos", "ai_overview" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "structured_extraction_pages": { "description": "How many of the pages must come back as JSON fields rather than HTML or text, by any method the plan offers (CSS or XPath selectors, a schema, or AI). When the fields must be found without writing selectors, use ai_extraction_pages instead; each page counts in one of the two.", "minimum": 0, "type": "integer" }, "target_errors_not_billed": { "description": "Error responses from the target site (e.g. 404) must not be billed.", "type": "boolean" } }, "type": "object" }, "name": "check_conditions", "outputSchema": { "properties": { "as_of": { "type": "string" }, "assumptions": { "items": { "type": "string" }, "type": "array" }, "needs_input": { "items": { "properties": { "field": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "field", "reason" ], "type": "object" }, "type": "array" }, "notes": { "items": { "type": "string" }, "type": "array" }, "request": { "type": "object" }, "resolution": { "description": "How each entry of plans was read.", "items": { "properties": { "candidates": { "items": { "properties": { "listed": { "type": "boolean" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "product_name": { "type": "string" }, "provider_name": { "type": "string" } }, "required": [ "offer_id", "offer_name", "provider_name" ], "type": "object" }, "type": "array" }, "candidates_total": { "type": "integer" }, "input": { "type": "string" }, "matched_by": { "enum": [ "id", "name", "url", null ] }, "note": { "type": [ "string", "null" ] }, "offer_id": { "type": [ "string", "null" ] }, "status": { "description": "resolved: one plan, checked in results; ambiguous: several plans fit, listed in candidates and not checked; not_found: no plan in the catalog fits.", "enum": [ "resolved", "ambiguous", "not_found" ] } }, "required": [ "input", "status", "offer_id", "candidates" ], "type": "object" }, "type": "array" }, "results": { "items": { "properties": { "assumptions": { "items": { "type": "string" }, "type": "array" }, "billing": { "type": "string" }, "billing_options": { "items": { "type": "string" }, "type": "array" }, "cheapest_in_product": { "description": "The cheapest listed plan of the same product that meets every required condition of this call; is_this_plan is true when that is the checked plan. null when no plan of the product meets them all.", "properties": { "billing": { "type": "string" }, "is_this_plan": { "type": "boolean" }, "monthly_cost": { "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "page_url": { "type": "string" } }, "required": [ "offer_id", "offer_name", "billing", "monthly_cost", "is_this_plan" ], "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "conditions": { "items": { "properties": { "condition": { "type": "string" }, "facts": { "description": "Facts the verdict was judged from. The monthly budget is judged from monthly_cost; its price facts are listed there only.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "label": { "type": "string" }, "reason": { "type": "string" }, "required": { "type": "boolean" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] } }, "required": [ "condition", "label", "required", "verdict", "reason", "facts" ], "type": "object" }, "type": "array" }, "link": { "properties": { "affiliate": { "properties": { "disclosure": { "type": [ "string", "null" ] }, "program": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "status" ], "type": "object" }, "landing": { "type": "string" }, "link_level": { "type": "string" }, "note": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "required": [ "url", "landing", "link_level", "affiliate" ], "type": "object" }, "listed": { "type": "boolean" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "meets_all": { "description": "Judged against the required conditions of this call only: true when every one is met, false when one is not met, \"unknown\" when none fails and one is not stated on the official pages.", "enum": [ true, false, "unknown" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "page_url": { "type": "string" }, "preferred_met": { "type": "integer" }, "prices_exclude_tax": { "type": [ "boolean", "null" ] }, "product_id": { "type": "string" }, "product_name": { "type": "string" }, "provider_id": { "type": "string" }, "provider_name": { "type": "string" }, "unknown_conditions": { "items": { "type": "string" }, "type": "array" }, "unmet_conditions": { "items": { "type": "string" }, "type": "array" }, "verdict": { "description": "One sentence: the conditions met, or the ones not met or not stated, with the reason.", "type": "string" } }, "required": [ "offer_id", "offer_name", "product_id", "provider_name", "match", "meets_all", "verdict", "billing", "monthly_cost", "conditions", "unmet_conditions", "unknown_conditions", "link", "checked_at", "cheapest_in_product" ], "type": "object" }, "type": "array" } }, "required": [ "as_of", "needs_input", "results", "assumptions", "notes" ], "type": "object" } }, { "description": "Use this when: the user asks how the cost changes as the workload grows or shifts, or at what volume another plan becomes the cheapest. Do not use this when: the workload is fixed (use search). Show how web data API plan costs change when the monthly workload changes, for example twice the pages or a larger share of JavaScript pages. Along the path from the current to a target workload it returns the cheapest fully matching plan at both ends, each workload where the cheapest plan changes, and for tracked plans where the cost first steps up, where the plan can no longer cover the volume and where the budget is exceeded. Costs follow published pricing rules (whole packs of extra credits, per-period pack limits, per-connection browser billing, monthly minimums) with official source sentences.", "inputSchema": { "additionalProperties": false, "properties": { "ai_extraction_pages": { "description": "How many of the pages need their fields extracted by an AI model (from a prompt or a schema, or automatically) without writing selectors. Each page counts in one of the two extraction fields.", "minimum": 0, "type": "integer" }, "billing_types": { "description": "Acceptable billing: monthly_subscription (A plan with a fixed fee (or minimum commitment) billed every month.) annual_subscription (A plan paid for a year at a time.) pay_as_you_go (No plan fee; a price per unit of use, billed after use or drawn from a balance topped up with any amount.) prepaid_credits (A fixed-size credit pack bought before use, usually with an expiry.) Free plans always qualify.", "items": { "enum": [ "monthly_subscription", "annual_subscription", "pay_as_you_go", "prepaid_credits" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "browser_seconds_per_page": { "description": "Browser time per page in seconds, for headless-browser products billed by time. Every plan must then serve pages that take this long: a hosted browser does, a request-based API only when one request may run that long.", "exclusiveMinimum": 0, "type": "number" }, "data_regions": { "description": "Regions where data must be stored or processed, e.g. [\"EU\"]. Different from exit-IP countries.", "items": { "maxLength": 20, "minLength": 2, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "detail": { "default": "summary", "description": "summary returns one source sentence per fact; full returns every recorded fact and sentence.", "enum": [ "summary", "full" ], "type": "string" }, "exit_ip_countries": { "description": "ISO 3166-1 alpha-2 codes of countries the page requests must exit from, e.g. [\"US\",\"DE\"]. For search results of a country use search_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "failed_requests_not_billed": { "description": "Requests that fail on the provider side (timeouts, blocks, 5xx) must not be billed. A flat monthly price for unlimited requests meets it, since no request is billed on its own; when only success-based billing will do, use only_successful_requests_billed.", "type": "boolean" }, "max_monthly_cost_usd": { "description": "Monthly budget in USD before tax. Compared with listed prices; annual plans use their per-month equivalent.", "minimum": 0, "type": "number" }, "min_concurrency": { "description": "Minimum number of concurrent requests (or browsers) the plan must allow.", "minimum": 1, "type": "integer" }, "min_pages_per_crawl": { "description": "Pages one crawl job (from one start URL, following links) must be able to reach. A plan whose crawl has no page cap meets any number; give the size of the largest site to crawl. Different from the monthly page total.", "minimum": 1, "type": "integer" }, "min_requests_per_minute": { "description": "Minimum request rate the plan must allow, per minute.", "exclusiveMinimum": 0, "type": "number" }, "monthly_pages": { "additionalProperties": false, "description": "Pages per month by type: plain_html (static pages), javascript (needs rendering), premium_proxy (blocked sites that need residential/premium proxies), javascript_premium_proxy (both).", "minProperties": 1, "properties": { "javascript": { "minimum": 0, "type": "integer" }, "javascript_premium_proxy": { "minimum": 0, "type": "integer" }, "plain_html": { "minimum": 0, "type": "integer" }, "premium_proxy": { "minimum": 0, "type": "integer" } }, "type": "object" }, "monthly_pages_total": { "description": "Total pages per month when the split by type is not known yet. Costs and verdicts then cover every share of JavaScript-rendered pages from 0% to 100% of the total (no premium proxies), and the result lists monthly_pages under needs_input.", "minimum": 0, "type": "integer" }, "monthly_searches": { "description": "Search requests per month (one results page each).", "minimum": 0, "type": "integer" }, "needs_recurring_free_tier": { "description": "The plan must be usable every month without paying (a free plan with a monthly allowance or a monthly free credit).", "type": "boolean" }, "offer_ids": { "description": "Compare only these plans and follow each of them along the path. Default: every plan that can serve the workload, following the cheapest full match at the start.", "items": { "maxLength": 80, "minLength": 1, "type": "string" }, "maxItems": 10, "minItems": 1, "type": "array", "uniqueItems": true }, "only_successful_requests_billed": { "description": "Billing must count successful requests only: each successful request is charged (or draws credits) and failed ones cost nothing. A flat monthly price for unlimited requests does not meet it, since the price is the same whatever succeeds.", "type": "boolean" }, "preferred": { "additionalProperties": false, "description": "Nice-to-have conditions; they do not filter, they break ties.", "properties": { "billing_types": { "description": "Acceptable billing: monthly_subscription (A plan with a fixed fee (or minimum commitment) billed every month.) annual_subscription (A plan paid for a year at a time.) pay_as_you_go (No plan fee; a price per unit of use, billed after use or drawn from a balance topped up with any amount.) prepaid_credits (A fixed-size credit pack bought before use, usually with an expiry.) Free plans always qualify.", "items": { "enum": [ "monthly_subscription", "annual_subscription", "pay_as_you_go", "prepaid_credits" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "data_regions": { "description": "Regions where data must be stored or processed, e.g. [\"EU\"]. Different from exit-IP countries.", "items": { "maxLength": 20, "minLength": 2, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "exit_ip_countries": { "description": "ISO 3166-1 alpha-2 codes of countries the page requests must exit from, e.g. [\"US\",\"DE\"]. For search results of a country use search_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "failed_requests_not_billed": { "description": "Requests that fail on the provider side (timeouts, blocks, 5xx) must not be billed. A flat monthly price for unlimited requests meets it, since no request is billed on its own; when only success-based billing will do, use only_successful_requests_billed.", "type": "boolean" }, "max_monthly_cost_usd": { "description": "Monthly budget in USD before tax. Compared with listed prices; annual plans use their per-month equivalent.", "minimum": 0, "type": "number" }, "min_concurrency": { "description": "Minimum number of concurrent requests (or browsers) the plan must allow.", "minimum": 1, "type": "integer" }, "min_pages_per_crawl": { "description": "Pages one crawl job (from one start URL, following links) must be able to reach. A plan whose crawl has no page cap meets any number; give the size of the largest site to crawl. Different from the monthly page total.", "minimum": 1, "type": "integer" }, "min_requests_per_minute": { "description": "Minimum request rate the plan must allow, per minute.", "exclusiveMinimum": 0, "type": "number" }, "needs_recurring_free_tier": { "description": "The plan must be usable every month without paying (a free plan with a monthly allowance or a monthly free credit).", "type": "boolean" }, "only_successful_requests_billed": { "description": "Billing must count successful requests only: each successful request is charged (or draws credits) and failed ones cost nothing. A flat monthly price for unlimited requests does not meet it, since the price is the same whatever succeeds.", "type": "boolean" }, "realtime_search_required": { "description": "Search results must be returned in real time (not through a queue).", "type": "boolean" }, "search_countries": { "description": "ISO 3166-1 alpha-2 codes of the countries whose search results the searches must return (the search engine's country setting, e.g. Google gl), e.g. [\"GB\",\"CA\"]. Different from exit_ip_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_engines": { "description": "Search engines whose results the plan must return, each at the plan's search price: google, bing, yahoo, yandex, baidu, duckduckgo, naver, brave (brave is Brave's own index). monthly_searches is the total over all of them.", "items": { "enum": [ "google", "bing", "yahoo", "yandex", "baidu", "duckduckgo", "naver", "brave" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_result_types": { "description": "Result types the parsed search response must contain: organic, ads, local_pack, knowledge_graph, people_also_ask, related_searches, shopping, news, images, videos, ai_overview.", "items": { "enum": [ "organic", "ads", "local_pack", "knowledge_graph", "people_also_ask", "related_searches", "shopping", "news", "images", "videos", "ai_overview" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "target_errors_not_billed": { "description": "Error responses from the target site (e.g. 404) must not be billed.", "type": "boolean" } }, "type": "object" }, "product_types": { "description": "Limit to these product types. Default: every type that can serve the workload.", "items": { "enum": [ "scraping_api", "serp_api", "headless_browser", "platform" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "realtime_search_required": { "description": "Search results must be returned in real time (not through a queue).", "type": "boolean" }, "scale": { "description": "Multiply every monthly count by this factor for the end of the path, e.g. 2 for twice the current workload. Give target or scale.", "exclusiveMinimum": 0, "maximum": 1000, "type": "number" }, "search_countries": { "description": "ISO 3166-1 alpha-2 codes of the countries whose search results the searches must return (the search engine's country setting, e.g. Google gl), e.g. [\"GB\",\"CA\"]. Different from exit_ip_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_engines": { "description": "Search engines whose results the plan must return, each at the plan's search price: google, bing, yahoo, yandex, baidu, duckduckgo, naver, brave (brave is Brave's own index). monthly_searches is the total over all of them.", "items": { "enum": [ "google", "bing", "yahoo", "yandex", "baidu", "duckduckgo", "naver", "brave" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_result_types": { "description": "Result types the parsed search response must contain: organic, ads, local_pack, knowledge_graph, people_also_ask, related_searches, shopping, news, images, videos, ai_overview.", "items": { "enum": [ "organic", "ads", "local_pack", "knowledge_graph", "people_also_ask", "related_searches", "shopping", "news", "images", "videos", "ai_overview" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "structured_extraction_pages": { "description": "How many of the pages must come back as JSON fields rather than HTML or text, by any method the plan offers (CSS or XPath selectors, a schema, or AI). When the fields must be found without writing selectors, use ai_extraction_pages instead; each page counts in one of the two.", "minimum": 0, "type": "integer" }, "target": { "additionalProperties": false, "description": "Workload at the end of the path; fields not given keep their current value. Give target or scale.", "minProperties": 1, "properties": { "ai_extraction_pages": { "description": "AI-extraction pages per month at the end of the path.", "minimum": 0, "type": "integer" }, "monthly_pages": { "additionalProperties": false, "description": "Pages per month by type at the end of the path. Types not listed keep their current count; give 0 to drop a type.", "minProperties": 1, "properties": { "javascript": { "minimum": 0, "type": "integer" }, "javascript_premium_proxy": { "minimum": 0, "type": "integer" }, "plain_html": { "minimum": 0, "type": "integer" }, "premium_proxy": { "minimum": 0, "type": "integer" } }, "type": "object" }, "monthly_searches": { "description": "Searches per month at the end of the path.", "minimum": 0, "type": "integer" }, "structured_extraction_pages": { "description": "Structured-extraction pages per month at the end of the path.", "minimum": 0, "type": "integer" } }, "type": "object" }, "target_errors_not_billed": { "description": "Error responses from the target site (e.g. 404) must not be billed.", "type": "boolean" } }, "type": "object" }, "name": "cost_scenarios", "outputSchema": { "properties": { "as_of": { "type": "string" }, "assumptions": { "items": { "type": "string" }, "type": "array" }, "at_end": { "description": "Up to three cheapest full matches at the target workload.", "items": { "properties": { "billing": { "type": "string" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "provider_name": { "type": "string" } }, "required": [ "offer_id", "offer_name", "provider_name", "billing", "match", "monthly_cost" ], "type": "object" }, "type": "array" }, "at_start": { "description": "Up to three cheapest full matches at the current workload.", "items": { "properties": { "billing": { "type": "string" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "provider_name": { "type": "string" } }, "required": [ "offer_id", "offer_name", "provider_name", "billing", "match", "monthly_cost" ], "type": "object" }, "type": "array" }, "compared": { "enum": [ "all_plans", "given_plans" ] }, "counts": { "properties": { "end": { "properties": { "candidates": { "type": "integer" }, "full": { "type": "integer" }, "no_match": { "type": "integer" }, "partial": { "type": "integer" } }, "required": [ "candidates", "full", "partial", "no_match" ], "type": "object" }, "start": { "properties": { "candidates": { "type": "integer" }, "full": { "type": "integer" }, "no_match": { "type": "integer" }, "partial": { "type": "integer" } }, "required": [ "candidates", "full", "partial", "no_match" ], "type": "object" } }, "required": [ "start", "end" ], "type": [ "object", "null" ] }, "needs_input": { "items": { "properties": { "field": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "field", "reason" ], "type": "object" }, "type": "array" }, "notes": { "items": { "type": "string" }, "type": "array" }, "path": { "properties": { "end": { "description": "A monthly workload in the request format.", "properties": { "ai_extraction_pages": { "type": "integer" }, "monthly_pages": { "type": "object" }, "monthly_searches": { "type": "integer" }, "structured_extraction_pages": { "type": "integer" } }, "type": "object" }, "resolution": { "type": "string" }, "start": { "description": "A monthly workload in the request format.", "properties": { "ai_extraction_pages": { "type": "integer" }, "monthly_pages": { "type": "object" }, "monthly_searches": { "type": "integer" }, "structured_extraction_pages": { "type": "integer" } }, "type": "object" }, "steps": { "type": "integer" } }, "required": [ "start", "end", "steps", "resolution" ], "type": [ "object", "null" ] }, "plans": { "description": "Every plan named above, with the official facts its costs were computed from.", "items": { "properties": { "facts": { "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "link": { "properties": { "affiliate": { "properties": { "disclosure": { "type": [ "string", "null" ] }, "program": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "status" ], "type": "object" }, "landing": { "type": "string" }, "link_level": { "type": "string" }, "note": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "required": [ "url", "landing", "link_level", "affiliate" ], "type": "object" }, "listed": { "type": "boolean" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "page_url": { "type": "string" }, "product_name": { "type": "string" }, "provider_name": { "type": "string" } }, "required": [ "offer_id", "offer_name", "provider_name", "link", "facts" ], "type": "object" }, "type": "array" }, "request": { "type": "object" }, "switches": { "description": "Each workload on the path where the cheapest full match changes.", "items": { "properties": { "from": { "properties": { "billing": { "type": "string" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "provider_name": { "type": "string" } }, "required": [ "offer_id", "offer_name", "provider_name", "billing", "match", "monthly_cost" ], "type": [ "object", "null" ] }, "reason": { "type": "string" }, "to": { "properties": { "billing": { "type": "string" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "provider_name": { "type": "string" } }, "required": [ "offer_id", "offer_name", "provider_name", "billing", "match", "monthly_cost" ], "type": [ "object", "null" ] }, "workload": { "description": "A monthly workload in the request format.", "properties": { "ai_extraction_pages": { "type": "integer" }, "monthly_pages": { "type": "object" }, "monthly_searches": { "type": "integer" }, "structured_extraction_pages": { "type": "integer" } }, "type": "object" } }, "required": [ "workload", "from", "to", "reason" ], "type": "object" }, "type": "array" }, "tracked": { "items": { "properties": { "at_end": { "properties": { "billing": { "type": "string" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "provider_name": { "type": "string" } }, "required": [ "offer_id", "offer_name", "provider_name", "billing", "match", "monthly_cost" ], "type": "object" }, "at_start": { "properties": { "billing": { "type": "string" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "provider_name": { "type": "string" } }, "required": [ "offer_id", "offer_name", "provider_name", "billing", "match", "monthly_cost" ], "type": "object" }, "budget_exceeded": { "description": "First workload where the monthly cost is known to exceed the budget; null without a budget or when it never does.", "properties": { "billing": { "type": "string" }, "conditions": { "items": { "properties": { "condition": { "type": "string" }, "reason": { "type": "string" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] } }, "required": [ "condition", "verdict", "reason" ], "type": "object" }, "type": "array" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "reason": { "type": "string" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] }, "workload": { "description": "A monthly workload in the request format.", "properties": { "ai_extraction_pages": { "type": "integer" }, "monthly_pages": { "type": "object" }, "monthly_searches": { "type": "integer" }, "structured_extraction_pages": { "type": "integer" } }, "type": "object" } }, "required": [ "workload" ], "type": [ "object", "null" ] }, "cost_change": { "description": "First workload where the monthly cost differs from the start.", "properties": { "billing": { "type": "string" }, "conditions": { "items": { "properties": { "condition": { "type": "string" }, "reason": { "type": "string" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] } }, "required": [ "condition", "verdict", "reason" ], "type": "object" }, "type": "array" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "reason": { "type": "string" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] }, "workload": { "description": "A monthly workload in the request format.", "properties": { "ai_extraction_pages": { "type": "integer" }, "monthly_pages": { "type": "object" }, "monthly_searches": { "type": "integer" }, "structured_extraction_pages": { "type": "integer" } }, "type": "object" } }, "required": [ "workload" ], "type": [ "object", "null" ] }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "provider_name": { "type": "string" }, "stops_matching": { "description": "First workload where the plan is no longer a full match.", "properties": { "billing": { "type": "string" }, "conditions": { "items": { "properties": { "condition": { "type": "string" }, "reason": { "type": "string" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] } }, "required": [ "condition", "verdict", "reason" ], "type": "object" }, "type": "array" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "reason": { "type": "string" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] }, "workload": { "description": "A monthly workload in the request format.", "properties": { "ai_extraction_pages": { "type": "integer" }, "monthly_pages": { "type": "object" }, "monthly_searches": { "type": "integer" }, "structured_extraction_pages": { "type": "integer" } }, "type": "object" } }, "required": [ "workload" ], "type": [ "object", "null" ] }, "volume_limit": { "description": "First workload the plan does not cover.", "properties": { "billing": { "type": "string" }, "conditions": { "items": { "properties": { "condition": { "type": "string" }, "reason": { "type": "string" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] } }, "required": [ "condition", "verdict", "reason" ], "type": "object" }, "type": "array" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "reason": { "type": "string" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] }, "workload": { "description": "A monthly workload in the request format.", "properties": { "ai_extraction_pages": { "type": "integer" }, "monthly_pages": { "type": "object" }, "monthly_searches": { "type": "integer" }, "structured_extraction_pages": { "type": "integer" } }, "type": "object" } }, "required": [ "workload" ], "type": [ "object", "null" ] } }, "required": [ "offer_id", "at_start", "at_end", "cost_change", "volume_limit", "budget_exceeded", "stops_matching" ], "type": "object" }, "type": "array" } }, "required": [ "as_of", "needs_input", "compared", "path", "counts", "at_start", "at_end", "switches", "tracked", "plans", "assumptions", "notes" ], "type": "object" } }, { "description": "Use this when: you need every recorded condition, pricing rule and source sentence of one plan or product found by search or named by the user. Do not use this when: you want to compare plans against a workload (use search or check_conditions). Get every recorded condition for one plan or product: value, which plans it applies to, exceptions, official source sentence, check date and purchase link. A product too long for one response comes with one source sentence per fact.", "inputSchema": { "additionalProperties": false, "description": "Give exactly one of offer_id or product_id.", "properties": { "offer_id": { "description": "A plan id, e.g. \"firecrawl-standard\".", "maxLength": 80, "minLength": 1, "type": "string" }, "product_id": { "description": "A product id, e.g. \"firecrawl-api\".", "maxLength": 80, "minLength": 1, "type": "string" } }, "type": "object" }, "name": "get_details", "outputSchema": { "properties": { "as_of": { "type": "string" }, "evidence_detail": { "description": "Present when the product was too long for one response: each fact carries one source sentence. Ask for a plan by offer_id for every sentence.", "enum": [ "summary" ] }, "offers": { "items": { "properties": { "facts": { "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "id": { "type": "string" }, "link": { "properties": { "affiliate": { "properties": { "disclosure": { "type": [ "string", "null" ] }, "program": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "status" ], "type": "object" }, "landing": { "type": "string" }, "link_level": { "type": "string" }, "note": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "required": [ "url", "landing", "link_level", "affiliate" ], "type": "object" }, "listed": { "type": "boolean" }, "name": { "type": "string" }, "type": { "type": "string" } }, "required": [ "id", "name", "type", "listed", "facts", "link" ], "type": "object" }, "type": "array" }, "product": { "properties": { "facts": { "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "id": { "type": "string" }, "kinds": { "type": "array" }, "name": { "type": "string" } }, "required": [ "id", "name", "kinds", "facts" ], "type": "object" }, "provider": { "properties": { "agent_access": { "description": "The provider's machine channels as last checked: its official MCP server (whether it answered without credentials, how it asks for them, tool names), llms.txt and OpenAPI files. Only listing requests were made. null when not checked.", "type": [ "object", "null" ] }, "data_use_scope": { "description": "Pages read, robots.txt results, the terms-of-use record and rights: the provider's rights state and whether this service serves it, and the rights of each source page.", "type": "object" }, "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" } }, "required": [ "as_of", "provider", "product", "offers" ], "type": "object" } }, { "description": "Use this when: search finds no plan or too few plans and the user wants to know which condition to loosen and by how much. Do not use this when: plans already match (use search or check_conditions). When no plan, or too few plans, meet every required condition: for each condition the user can change, returns the smallest change that lets at least one plan meet everything (for example the monthly budget needed, the concurrency available, or one exit-IP country to drop) and the plans it admits with their monthly cost. Also lists plans that fail only because a condition is not stated on the official pages, with the pages checked and the check date, so the user can confirm with the provider.", "inputSchema": { "additionalProperties": false, "properties": { "ai_extraction_pages": { "description": "How many of the pages need their fields extracted by an AI model (from a prompt or a schema, or automatically) without writing selectors. Each page counts in one of the two extraction fields.", "minimum": 0, "type": "integer" }, "billing_types": { "description": "Acceptable billing: monthly_subscription (A plan with a fixed fee (or minimum commitment) billed every month.) annual_subscription (A plan paid for a year at a time.) pay_as_you_go (No plan fee; a price per unit of use, billed after use or drawn from a balance topped up with any amount.) prepaid_credits (A fixed-size credit pack bought before use, usually with an expiry.) Free plans always qualify.", "items": { "enum": [ "monthly_subscription", "annual_subscription", "pay_as_you_go", "prepaid_credits" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "browser_seconds_per_page": { "description": "Browser time per page in seconds, for headless-browser products billed by time. Every plan must then serve pages that take this long: a hosted browser does, a request-based API only when one request may run that long.", "exclusiveMinimum": 0, "type": "number" }, "data_regions": { "description": "Regions where data must be stored or processed, e.g. [\"EU\"]. Different from exit-IP countries.", "items": { "maxLength": 20, "minLength": 2, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "detail": { "default": "summary", "description": "summary returns one source sentence per fact; full returns every recorded fact and sentence.", "enum": [ "summary", "full" ], "type": "string" }, "exit_ip_countries": { "description": "ISO 3166-1 alpha-2 codes of countries the page requests must exit from, e.g. [\"US\",\"DE\"]. For search results of a country use search_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "failed_requests_not_billed": { "description": "Requests that fail on the provider side (timeouts, blocks, 5xx) must not be billed. A flat monthly price for unlimited requests meets it, since no request is billed on its own; when only success-based billing will do, use only_successful_requests_billed.", "type": "boolean" }, "limit": { "default": 3, "description": "Maximum plans listed for each change and under confirm_with_provider (default 3).", "maximum": 20, "minimum": 1, "type": "integer" }, "max_monthly_cost_usd": { "description": "Monthly budget in USD before tax. Compared with listed prices; annual plans use their per-month equivalent.", "minimum": 0, "type": "number" }, "min_concurrency": { "description": "Minimum number of concurrent requests (or browsers) the plan must allow.", "minimum": 1, "type": "integer" }, "min_pages_per_crawl": { "description": "Pages one crawl job (from one start URL, following links) must be able to reach. A plan whose crawl has no page cap meets any number; give the size of the largest site to crawl. Different from the monthly page total.", "minimum": 1, "type": "integer" }, "min_requests_per_minute": { "description": "Minimum request rate the plan must allow, per minute.", "exclusiveMinimum": 0, "type": "number" }, "monthly_pages": { "additionalProperties": false, "description": "Pages per month by type: plain_html (static pages), javascript (needs rendering), premium_proxy (blocked sites that need residential/premium proxies), javascript_premium_proxy (both).", "minProperties": 1, "properties": { "javascript": { "minimum": 0, "type": "integer" }, "javascript_premium_proxy": { "minimum": 0, "type": "integer" }, "plain_html": { "minimum": 0, "type": "integer" }, "premium_proxy": { "minimum": 0, "type": "integer" } }, "type": "object" }, "monthly_pages_total": { "description": "Total pages per month when the split by type is not known yet. Costs and verdicts then cover every share of JavaScript-rendered pages from 0% to 100% of the total (no premium proxies), and the result lists monthly_pages under needs_input.", "minimum": 0, "type": "integer" }, "monthly_searches": { "description": "Search requests per month (one results page each).", "minimum": 0, "type": "integer" }, "needs_recurring_free_tier": { "description": "The plan must be usable every month without paying (a free plan with a monthly allowance or a monthly free credit).", "type": "boolean" }, "negotiable": { "description": "Conditions the user said can change: monthly_volume, concurrency, rate_limit, monthly_budget, billing_type, free_allowance, failed_request_billing, success_billing, target_error_billing, geo_targeting, data_region, serp_response_mode, serp_localization, serp_result_types, serp_engines, crawl_page_limit. Default: every required condition, each marked ask_user because the user has not said it can change.", "items": { "enum": [ "monthly_volume", "concurrency", "rate_limit", "monthly_budget", "billing_type", "free_allowance", "failed_request_billing", "success_billing", "target_error_billing", "geo_targeting", "data_region", "serp_response_mode", "serp_localization", "serp_result_types", "serp_engines", "crawl_page_limit" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "only_successful_requests_billed": { "description": "Billing must count successful requests only: each successful request is charged (or draws credits) and failed ones cost nothing. A flat monthly price for unlimited requests does not meet it, since the price is the same whatever succeeds.", "type": "boolean" }, "preferred": { "additionalProperties": false, "description": "Nice-to-have conditions; they do not filter, they break ties.", "properties": { "billing_types": { "description": "Acceptable billing: monthly_subscription (A plan with a fixed fee (or minimum commitment) billed every month.) annual_subscription (A plan paid for a year at a time.) pay_as_you_go (No plan fee; a price per unit of use, billed after use or drawn from a balance topped up with any amount.) prepaid_credits (A fixed-size credit pack bought before use, usually with an expiry.) Free plans always qualify.", "items": { "enum": [ "monthly_subscription", "annual_subscription", "pay_as_you_go", "prepaid_credits" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "data_regions": { "description": "Regions where data must be stored or processed, e.g. [\"EU\"]. Different from exit-IP countries.", "items": { "maxLength": 20, "minLength": 2, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "exit_ip_countries": { "description": "ISO 3166-1 alpha-2 codes of countries the page requests must exit from, e.g. [\"US\",\"DE\"]. For search results of a country use search_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "failed_requests_not_billed": { "description": "Requests that fail on the provider side (timeouts, blocks, 5xx) must not be billed. A flat monthly price for unlimited requests meets it, since no request is billed on its own; when only success-based billing will do, use only_successful_requests_billed.", "type": "boolean" }, "max_monthly_cost_usd": { "description": "Monthly budget in USD before tax. Compared with listed prices; annual plans use their per-month equivalent.", "minimum": 0, "type": "number" }, "min_concurrency": { "description": "Minimum number of concurrent requests (or browsers) the plan must allow.", "minimum": 1, "type": "integer" }, "min_pages_per_crawl": { "description": "Pages one crawl job (from one start URL, following links) must be able to reach. A plan whose crawl has no page cap meets any number; give the size of the largest site to crawl. Different from the monthly page total.", "minimum": 1, "type": "integer" }, "min_requests_per_minute": { "description": "Minimum request rate the plan must allow, per minute.", "exclusiveMinimum": 0, "type": "number" }, "needs_recurring_free_tier": { "description": "The plan must be usable every month without paying (a free plan with a monthly allowance or a monthly free credit).", "type": "boolean" }, "only_successful_requests_billed": { "description": "Billing must count successful requests only: each successful request is charged (or draws credits) and failed ones cost nothing. A flat monthly price for unlimited requests does not meet it, since the price is the same whatever succeeds.", "type": "boolean" }, "realtime_search_required": { "description": "Search results must be returned in real time (not through a queue).", "type": "boolean" }, "search_countries": { "description": "ISO 3166-1 alpha-2 codes of the countries whose search results the searches must return (the search engine's country setting, e.g. Google gl), e.g. [\"GB\",\"CA\"]. Different from exit_ip_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_engines": { "description": "Search engines whose results the plan must return, each at the plan's search price: google, bing, yahoo, yandex, baidu, duckduckgo, naver, brave (brave is Brave's own index). monthly_searches is the total over all of them.", "items": { "enum": [ "google", "bing", "yahoo", "yandex", "baidu", "duckduckgo", "naver", "brave" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_result_types": { "description": "Result types the parsed search response must contain: organic, ads, local_pack, knowledge_graph, people_also_ask, related_searches, shopping, news, images, videos, ai_overview.", "items": { "enum": [ "organic", "ads", "local_pack", "knowledge_graph", "people_also_ask", "related_searches", "shopping", "news", "images", "videos", "ai_overview" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "target_errors_not_billed": { "description": "Error responses from the target site (e.g. 404) must not be billed.", "type": "boolean" } }, "type": "object" }, "product_types": { "description": "Limit to these product types. Default: every type that can serve the workload.", "items": { "enum": [ "scraping_api", "serp_api", "headless_browser", "platform" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "realtime_search_required": { "description": "Search results must be returned in real time (not through a queue).", "type": "boolean" }, "search_countries": { "description": "ISO 3166-1 alpha-2 codes of the countries whose search results the searches must return (the search engine's country setting, e.g. Google gl), e.g. [\"GB\",\"CA\"]. Different from exit_ip_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_engines": { "description": "Search engines whose results the plan must return, each at the plan's search price: google, bing, yahoo, yandex, baidu, duckduckgo, naver, brave (brave is Brave's own index). monthly_searches is the total over all of them.", "items": { "enum": [ "google", "bing", "yahoo", "yandex", "baidu", "duckduckgo", "naver", "brave" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_result_types": { "description": "Result types the parsed search response must contain: organic, ads, local_pack, knowledge_graph, people_also_ask, related_searches, shopping, news, images, videos, ai_overview.", "items": { "enum": [ "organic", "ads", "local_pack", "knowledge_graph", "people_also_ask", "related_searches", "shopping", "news", "images", "videos", "ai_overview" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "structured_extraction_pages": { "description": "How many of the pages must come back as JSON fields rather than HTML or text, by any method the plan offers (CSS or XPath selectors, a schema, or AI). When the fields must be found without writing selectors, use ai_extraction_pages instead; each page counts in one of the two.", "minimum": 0, "type": "integer" }, "target_errors_not_billed": { "description": "Error responses from the target site (e.g. 404) must not be billed.", "type": "boolean" } }, "type": "object" }, "name": "relax_conditions", "outputSchema": { "properties": { "as_of": { "type": "string" }, "assumptions": { "items": { "type": "string" }, "type": "array" }, "changes": { "items": { "properties": { "ask_user": { "description": "True when negotiable was not given: ask the user before changing this condition.", "type": "boolean" }, "blocked_by": { "description": "When no change of this condition alone is enough: other conditions not met by the plans that fail this one.", "items": { "properties": { "condition": { "type": "string" }, "label": { "type": "string" }, "plans": { "type": "integer" } }, "required": [ "condition", "plans" ], "type": "object" }, "type": "array" }, "condition": { "type": "string" }, "current": {}, "field": { "description": "Request field of the condition; null for monthly_volume, which changes the workload fields.", "type": [ "string", "null" ] }, "label": { "type": "string" }, "note": { "type": [ "string", "null" ] }, "options": { "items": { "properties": { "admitted": { "items": { "properties": { "billing": { "type": "string" }, "facts": { "description": "Official facts behind those verdicts (price facts are under monthly_cost).", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "link": { "properties": { "affiliate": { "properties": { "disclosure": { "type": [ "string", "null" ] }, "program": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "status" ], "type": "object" }, "landing": { "type": "string" }, "link_level": { "type": "string" }, "note": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "required": [ "url", "landing", "link_level", "affiliate" ], "type": "object" }, "listed": { "type": "boolean" }, "meets_all": { "description": "Against the request as given, before the change: false or \"unknown\".", "enum": [ true, false, "unknown" ] }, "meets_all_after_change": { "description": "Against the request with this change applied: always true, because only plans that then meet every required condition are listed.", "enum": [ true ], "type": "boolean" }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "page_url": { "type": "string" }, "product_name": { "type": "string" }, "provider_name": { "type": "string" }, "was": { "description": "Required conditions this plan did not meet before the change.", "items": { "properties": { "condition": { "type": "string" }, "reason": { "type": "string" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] } }, "required": [ "condition", "verdict", "reason" ], "type": "object" }, "type": "array" } }, "required": [ "offer_id", "offer_name", "provider_name", "billing", "monthly_cost", "meets_all", "meets_all_after_change", "was", "facts", "link" ], "type": "object" }, "type": "array" }, "admitted_total": { "type": "integer" }, "change": { "description": "Request fields to set; null removes the field.", "type": "object" }, "summary": { "type": "string" } }, "required": [ "change", "summary", "admitted_total", "admitted" ], "type": "object" }, "type": "array" } }, "required": [ "condition", "label", "field", "current", "ask_user", "options", "blocked_by", "note" ], "type": "object" }, "type": "array" }, "confirm_with_provider": { "properties": { "plans": { "items": { "properties": { "billing": { "type": "string" }, "link": { "properties": { "affiliate": { "properties": { "disclosure": { "type": [ "string", "null" ] }, "program": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "status" ], "type": "object" }, "landing": { "type": "string" }, "link_level": { "type": "string" }, "note": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "required": [ "url", "landing", "link_level", "affiliate" ], "type": "object" }, "listed": { "type": "boolean" }, "meets_all": { "description": "Judged against the required conditions of this call only: true when every one is met, false when one is not met, \"unknown\" when none fails and one is not stated on the official pages.", "enum": [ true, false, "unknown" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "page_url": { "type": "string" }, "pages_checked": { "description": "Official pages read for this provider.", "items": { "type": "string" }, "type": "array" }, "product_name": { "type": "string" }, "provider_name": { "type": "string" }, "unknown": { "items": { "properties": { "checked_at": { "type": "string" }, "condition": { "type": "string" }, "label": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "condition", "reason", "checked_at" ], "type": "object" }, "type": "array" } }, "required": [ "offer_id", "offer_name", "provider_name", "monthly_cost", "meets_all", "unknown", "pages_checked", "link" ], "type": "object" }, "type": "array" }, "total": { "type": "integer" } }, "required": [ "total", "plans" ], "type": "object" }, "counts": { "properties": { "candidates": { "type": "integer" }, "full": { "type": "integer" }, "no_match": { "type": "integer" }, "partial": { "type": "integer" } }, "required": [ "candidates", "full", "partial", "no_match" ], "type": "object" }, "needs_input": { "items": { "properties": { "field": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "field", "reason" ], "type": "object" }, "type": "array" }, "notes": { "items": { "type": "string" }, "type": "array" }, "request": { "type": "object" } }, "required": [ "as_of", "needs_input", "counts", "changes", "confirm_with_provider", "assumptions", "notes" ], "type": "object" } }, { "description": "Use this when: the user wants to know which web data API plans (web scraping, crawling, SERP search result APIs) fit a monthly workload, budget or required conditions, or what one would cost per month at that workload. Do not use this when: the user wants to scrape or search the web itself (this tool reads no pages), needs proxies only, or asks about other kinds of software. Find web data API plans (scraping, crawling, SERP search, headless browser) that meet required conditions: monthly pages by type (plain HTML, JavaScript rendering, blocked sites that need premium proxies), monthly searches, concurrency, requests per minute, monthly budget before tax, billing type, exit-IP countries, search engines, search-result countries and parsed result types, pages per crawl, data storage region and structured (JSON) or AI extraction. Returns each plan's monthly cost, whether it meets every required condition, and for every condition met / not met / unknown with the official source sentence and check date, plus a purchase link. Plans with an unknown required condition are listed separately as partial matches. If nothing matches, returns how many plans each condition excluded and the cheapest plan that meets all the other conditions.", "inputSchema": { "additionalProperties": false, "properties": { "ai_extraction_pages": { "description": "How many of the pages need their fields extracted by an AI model (from a prompt or a schema, or automatically) without writing selectors. Each page counts in one of the two extraction fields.", "minimum": 0, "type": "integer" }, "billing_types": { "description": "Acceptable billing: monthly_subscription (A plan with a fixed fee (or minimum commitment) billed every month.) annual_subscription (A plan paid for a year at a time.) pay_as_you_go (No plan fee; a price per unit of use, billed after use or drawn from a balance topped up with any amount.) prepaid_credits (A fixed-size credit pack bought before use, usually with an expiry.) Free plans always qualify.", "items": { "enum": [ "monthly_subscription", "annual_subscription", "pay_as_you_go", "prepaid_credits" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "browser_seconds_per_page": { "description": "Browser time per page in seconds, for headless-browser products billed by time. Every plan must then serve pages that take this long: a hosted browser does, a request-based API only when one request may run that long.", "exclusiveMinimum": 0, "type": "number" }, "data_regions": { "description": "Regions where data must be stored or processed, e.g. [\"EU\"]. Different from exit-IP countries.", "items": { "maxLength": 20, "minLength": 2, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "detail": { "default": "summary", "description": "summary returns one source sentence per fact; full returns every recorded fact and sentence.", "enum": [ "summary", "full" ], "type": "string" }, "exit_ip_countries": { "description": "ISO 3166-1 alpha-2 codes of countries the page requests must exit from, e.g. [\"US\",\"DE\"]. For search results of a country use search_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "failed_requests_not_billed": { "description": "Requests that fail on the provider side (timeouts, blocks, 5xx) must not be billed. A flat monthly price for unlimited requests meets it, since no request is billed on its own; when only success-based billing will do, use only_successful_requests_billed.", "type": "boolean" }, "limit": { "default": 5, "description": "Maximum plans returned in each list (default and maximum 5).", "maximum": 5, "minimum": 1, "type": "integer" }, "max_monthly_cost_usd": { "description": "Monthly budget in USD before tax. Compared with listed prices; annual plans use their per-month equivalent.", "minimum": 0, "type": "number" }, "min_concurrency": { "description": "Minimum number of concurrent requests (or browsers) the plan must allow.", "minimum": 1, "type": "integer" }, "min_pages_per_crawl": { "description": "Pages one crawl job (from one start URL, following links) must be able to reach. A plan whose crawl has no page cap meets any number; give the size of the largest site to crawl. Different from the monthly page total.", "minimum": 1, "type": "integer" }, "min_requests_per_minute": { "description": "Minimum request rate the plan must allow, per minute.", "exclusiveMinimum": 0, "type": "number" }, "monthly_pages": { "additionalProperties": false, "description": "Pages per month by type: plain_html (static pages), javascript (needs rendering), premium_proxy (blocked sites that need residential/premium proxies), javascript_premium_proxy (both).", "minProperties": 1, "properties": { "javascript": { "minimum": 0, "type": "integer" }, "javascript_premium_proxy": { "minimum": 0, "type": "integer" }, "plain_html": { "minimum": 0, "type": "integer" }, "premium_proxy": { "minimum": 0, "type": "integer" } }, "type": "object" }, "monthly_pages_total": { "description": "Total pages per month when the split by type is not known yet. Costs and verdicts then cover every share of JavaScript-rendered pages from 0% to 100% of the total (no premium proxies), and the result lists monthly_pages under needs_input.", "minimum": 0, "type": "integer" }, "monthly_searches": { "description": "Search requests per month (one results page each).", "minimum": 0, "type": "integer" }, "needs_recurring_free_tier": { "description": "The plan must be usable every month without paying (a free plan with a monthly allowance or a monthly free credit).", "type": "boolean" }, "only_successful_requests_billed": { "description": "Billing must count successful requests only: each successful request is charged (or draws credits) and failed ones cost nothing. A flat monthly price for unlimited requests does not meet it, since the price is the same whatever succeeds.", "type": "boolean" }, "preferred": { "additionalProperties": false, "description": "Nice-to-have conditions; they do not filter, they break ties.", "properties": { "billing_types": { "description": "Acceptable billing: monthly_subscription (A plan with a fixed fee (or minimum commitment) billed every month.) annual_subscription (A plan paid for a year at a time.) pay_as_you_go (No plan fee; a price per unit of use, billed after use or drawn from a balance topped up with any amount.) prepaid_credits (A fixed-size credit pack bought before use, usually with an expiry.) Free plans always qualify.", "items": { "enum": [ "monthly_subscription", "annual_subscription", "pay_as_you_go", "prepaid_credits" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "data_regions": { "description": "Regions where data must be stored or processed, e.g. [\"EU\"]. Different from exit-IP countries.", "items": { "maxLength": 20, "minLength": 2, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "exit_ip_countries": { "description": "ISO 3166-1 alpha-2 codes of countries the page requests must exit from, e.g. [\"US\",\"DE\"]. For search results of a country use search_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "failed_requests_not_billed": { "description": "Requests that fail on the provider side (timeouts, blocks, 5xx) must not be billed. A flat monthly price for unlimited requests meets it, since no request is billed on its own; when only success-based billing will do, use only_successful_requests_billed.", "type": "boolean" }, "max_monthly_cost_usd": { "description": "Monthly budget in USD before tax. Compared with listed prices; annual plans use their per-month equivalent.", "minimum": 0, "type": "number" }, "min_concurrency": { "description": "Minimum number of concurrent requests (or browsers) the plan must allow.", "minimum": 1, "type": "integer" }, "min_pages_per_crawl": { "description": "Pages one crawl job (from one start URL, following links) must be able to reach. A plan whose crawl has no page cap meets any number; give the size of the largest site to crawl. Different from the monthly page total.", "minimum": 1, "type": "integer" }, "min_requests_per_minute": { "description": "Minimum request rate the plan must allow, per minute.", "exclusiveMinimum": 0, "type": "number" }, "needs_recurring_free_tier": { "description": "The plan must be usable every month without paying (a free plan with a monthly allowance or a monthly free credit).", "type": "boolean" }, "only_successful_requests_billed": { "description": "Billing must count successful requests only: each successful request is charged (or draws credits) and failed ones cost nothing. A flat monthly price for unlimited requests does not meet it, since the price is the same whatever succeeds.", "type": "boolean" }, "realtime_search_required": { "description": "Search results must be returned in real time (not through a queue).", "type": "boolean" }, "search_countries": { "description": "ISO 3166-1 alpha-2 codes of the countries whose search results the searches must return (the search engine's country setting, e.g. Google gl), e.g. [\"GB\",\"CA\"]. Different from exit_ip_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_engines": { "description": "Search engines whose results the plan must return, each at the plan's search price: google, bing, yahoo, yandex, baidu, duckduckgo, naver, brave (brave is Brave's own index). monthly_searches is the total over all of them.", "items": { "enum": [ "google", "bing", "yahoo", "yandex", "baidu", "duckduckgo", "naver", "brave" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_result_types": { "description": "Result types the parsed search response must contain: organic, ads, local_pack, knowledge_graph, people_also_ask, related_searches, shopping, news, images, videos, ai_overview.", "items": { "enum": [ "organic", "ads", "local_pack", "knowledge_graph", "people_also_ask", "related_searches", "shopping", "news", "images", "videos", "ai_overview" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "target_errors_not_billed": { "description": "Error responses from the target site (e.g. 404) must not be billed.", "type": "boolean" } }, "type": "object" }, "product_types": { "description": "Limit to these product types. Default: every type that can serve the workload.", "items": { "enum": [ "scraping_api", "serp_api", "headless_browser", "platform" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "realtime_search_required": { "description": "Search results must be returned in real time (not through a queue).", "type": "boolean" }, "search_countries": { "description": "ISO 3166-1 alpha-2 codes of the countries whose search results the searches must return (the search engine's country setting, e.g. Google gl), e.g. [\"GB\",\"CA\"]. Different from exit_ip_countries.", "items": { "pattern": "^[A-Z]{2}$", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_engines": { "description": "Search engines whose results the plan must return, each at the plan's search price: google, bing, yahoo, yandex, baidu, duckduckgo, naver, brave (brave is Brave's own index). monthly_searches is the total over all of them.", "items": { "enum": [ "google", "bing", "yahoo", "yandex", "baidu", "duckduckgo", "naver", "brave" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "search_result_types": { "description": "Result types the parsed search response must contain: organic, ads, local_pack, knowledge_graph, people_also_ask, related_searches, shopping, news, images, videos, ai_overview.", "items": { "enum": [ "organic", "ads", "local_pack", "knowledge_graph", "people_also_ask", "related_searches", "shopping", "news", "images", "videos", "ai_overview" ], "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true }, "structured_extraction_pages": { "description": "How many of the pages must come back as JSON fields rather than HTML or text, by any method the plan offers (CSS or XPath selectors, a schema, or AI). When the fields must be found without writing selectors, use ai_extraction_pages instead; each page counts in one of the two.", "minimum": 0, "type": "integer" }, "target_errors_not_billed": { "description": "Error responses from the target site (e.g. 404) must not be billed.", "type": "boolean" } }, "type": "object" }, "name": "search", "outputSchema": { "properties": { "as_of": { "type": "string" }, "assumptions": { "items": { "type": "string" }, "type": "array" }, "counts": { "properties": { "candidates": { "type": "integer" }, "full": { "type": "integer" }, "no_match": { "type": "integer" }, "partial": { "type": "integer" } }, "required": [ "candidates", "full", "partial", "no_match" ], "type": "object" }, "full_matches": { "items": { "properties": { "assumptions": { "items": { "type": "string" }, "type": "array" }, "billing": { "type": "string" }, "billing_options": { "items": { "type": "string" }, "type": "array" }, "checked_at": { "type": [ "string", "null" ] }, "conditions": { "items": { "properties": { "condition": { "type": "string" }, "facts": { "description": "Facts the verdict was judged from. The monthly budget is judged from monthly_cost; its price facts are listed there only.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "label": { "type": "string" }, "reason": { "type": "string" }, "required": { "type": "boolean" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] } }, "required": [ "condition", "label", "required", "verdict", "reason", "facts" ], "type": "object" }, "type": "array" }, "link": { "properties": { "affiliate": { "properties": { "disclosure": { "type": [ "string", "null" ] }, "program": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "status" ], "type": "object" }, "landing": { "type": "string" }, "link_level": { "type": "string" }, "note": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "required": [ "url", "landing", "link_level", "affiliate" ], "type": "object" }, "listed": { "type": "boolean" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "meets_all": { "description": "Judged against the required conditions of this call only: true when every one is met, false when one is not met, \"unknown\" when none fails and one is not stated on the official pages.", "enum": [ true, false, "unknown" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "page_url": { "type": "string" }, "preferred_met": { "type": "integer" }, "prices_exclude_tax": { "type": [ "boolean", "null" ] }, "product_id": { "type": "string" }, "product_name": { "type": "string" }, "provider_id": { "type": "string" }, "provider_name": { "type": "string" }, "unknown_conditions": { "items": { "type": "string" }, "type": "array" }, "unmet_conditions": { "items": { "type": "string" }, "type": "array" }, "verdict": { "description": "One sentence: the conditions met, or the ones not met or not stated, with the reason.", "type": "string" } }, "required": [ "offer_id", "offer_name", "product_id", "provider_name", "match", "meets_all", "verdict", "billing", "monthly_cost", "conditions", "unmet_conditions", "unknown_conditions", "link", "checked_at" ], "type": "object" }, "type": "array" }, "needs_input": { "items": { "properties": { "field": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "field", "reason" ], "type": "object" }, "type": "array" }, "notes": { "items": { "type": "string" }, "type": "array" }, "partial_matches": { "items": { "properties": { "assumptions": { "items": { "type": "string" }, "type": "array" }, "billing": { "type": "string" }, "billing_options": { "items": { "type": "string" }, "type": "array" }, "checked_at": { "type": [ "string", "null" ] }, "conditions": { "items": { "properties": { "condition": { "type": "string" }, "facts": { "description": "Facts the verdict was judged from. The monthly budget is judged from monthly_cost; its price facts are listed there only.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "label": { "type": "string" }, "reason": { "type": "string" }, "required": { "type": "boolean" }, "verdict": { "enum": [ "MET", "UNMET", "UNKNOWN" ] } }, "required": [ "condition", "label", "required", "verdict", "reason", "facts" ], "type": "object" }, "type": "array" }, "link": { "properties": { "affiliate": { "properties": { "disclosure": { "type": [ "string", "null" ] }, "program": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "status" ], "type": "object" }, "landing": { "type": "string" }, "link_level": { "type": "string" }, "note": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "required": [ "url", "landing", "link_level", "affiliate" ], "type": "object" }, "listed": { "type": "boolean" }, "match": { "enum": [ "FULL_MATCH", "PARTIAL_MATCH", "NO_MATCH" ] }, "meets_all": { "description": "Judged against the required conditions of this call only: true when every one is met, false when one is not met, \"unknown\" when none fails and one is not stated on the official pages.", "enum": [ true, false, "unknown" ] }, "monthly_cost": { "properties": { "explanation": { "type": "string" }, "facts": { "description": "Price facts the cost was computed from.", "items": { "properties": { "also_stated_in": { "description": "get_details only: other official machine-readable documents of the provider (llms.txt, llms-full.txt, OpenAPI files, MCP tool listings) that contain the same quoted sentences.", "items": { "type": "string" }, "type": "array" }, "applies_to": { "description": "get_details only: billing options (billing) or search engines (search_engines) the fact is limited to.", "type": [ "object", "null" ] }, "checked_at": { "type": [ "string", "null" ] }, "derived": { "description": "How the value follows from the quoted sentence when it is not literal.", "type": "string" }, "evidence": { "items": { "properties": { "quote": { "description": "The sentence as it appears on that page.", "type": "string" }, "retrieved_at": { "description": "Date the page was read (YYYY-MM-DD). Only with detail=full.", "type": "string" }, "source_type": { "description": "Only with detail=full.", "enum": [ "official_pricing", "official_docs", "third_party" ] }, "url": { "description": "Official page the sentence was found on.", "type": "string" } }, "required": [ "url", "quote" ], "type": "object" }, "type": "array" }, "exceptions": { "description": "get_details only: plans with a different value.", "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "level": { "description": "Where the fact is recorded: offer (the plan), product or provider.", "type": [ "string", "null" ] }, "note": { "type": "string" }, "stale": { "type": "boolean" }, "status": { "description": "TRUE: stated with the value; FALSE / NOT_SUPPORTED: stated as unavailable; UNKNOWN: not stated; CONFLICT: official pages disagree (value lists each version); STALE: past its recheck date; MISSING: not recorded.", "enum": [ "TRUE", "FALSE", "NOT_SUPPORTED", "UNKNOWN", "CONFLICT", "STALE", "MISSING" ] }, "value": {}, "via_exception": { "description": "Present and true when a plan-specific exception replaced the general value.", "type": "boolean" } }, "required": [ "key", "status", "value", "level", "evidence", "checked_at" ], "type": "object" }, "type": "array" }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "lower_bound": { "type": [ "number", "null" ] }, "status": { "enum": [ "exact", "range", "lower_bound", "unknown" ] }, "upfront_usd": { "type": [ "number", "null" ] }, "usd": { "type": [ "number", "null" ] } }, "required": [ "status", "usd", "explanation" ], "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "page_url": { "type": "string" }, "preferred_met": { "type": "integer" }, "prices_exclude_tax": { "type": [ "boolean", "null" ] }, "product_id": { "type": "string" }, "product_name": { "type": "string" }, "provider_id": { "type": "string" }, "provider_name": { "type": "string" }, "unknown_conditions": { "items": { "type": "string" }, "type": "array" }, "unmet_conditions": { "items": { "type": "string" }, "type": "array" }, "verdict": { "description": "One sentence: the conditions met, or the ones not met or not stated, with the reason.", "type": "string" } }, "required": [ "offer_id", "offer_name", "product_id", "provider_name", "match", "meets_all", "verdict", "billing", "monthly_cost", "conditions", "unmet_conditions", "unknown_conditions", "link", "checked_at" ], "type": "object" }, "type": "array" }, "request": { "type": "object" }, "zero_result": { "properties": { "conditions": { "items": { "properties": { "closest": { "description": "The cheapest plan that meets every other required condition but not this one. It does not meet the request (meets_all false or \"unknown\").", "properties": { "billing": { "type": "string" }, "fails": { "type": "string" }, "meets_all": { "description": "Judged against the required conditions of this call only: true when every one is met, false when one is not met, \"unknown\" when none fails and one is not stated on the official pages.", "enum": [ true, false, "unknown" ] }, "monthly_cost": { "type": "object" }, "offer_id": { "type": "string" }, "offer_name": { "type": "string" }, "page_url": { "type": "string" }, "provider_name": { "type": "string" } }, "required": [ "offer_id", "offer_name", "provider_name", "billing", "monthly_cost", "meets_all", "fails" ], "type": [ "object", "null" ] }, "condition": { "type": "string" }, "excluded": { "type": "integer" }, "label": { "type": "string" }, "unknown": { "type": "integer" }, "would_match_if_relaxed": { "type": "integer" } }, "required": [ "condition", "label", "excluded", "would_match_if_relaxed", "closest" ], "type": "object" }, "type": "array" }, "note": { "type": "string" } }, "type": [ "object", "null" ] } }, "required": [ "as_of", "needs_input", "counts", "full_matches", "partial_matches", "zero_result", "assumptions", "notes" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:4973c3e4376c2629e350fc31d4f74c07c394fed2fc871ea599adb2abe8200edc | sha256sum