changedOutput schema / anyOf
Previous value: -[
- {
- "properties": {
- "answer": {
- "description": "One sentence that opens the answer: the lowest-cost plan that meets every required condition with its link, or, when none does, the closest plan with what it does not meet or what is unknown, and its link. The plan is written as a markdown link, [Provider Plan](visit link), at the end of the sentence.",
- "type": "string"
- },
- "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"
- },
- "at_limit": {
- "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
- "properties": {
- "evidence": {
- "properties": {
- "quote": {
- "type": "string"
- },
- "source": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "kind": {
- "enum": [
- "no_extra_usage",
- "restart_by_hand"
- ]
- },
- "restarts": {
- "properties": {
- "count": {
- "properties": {
- "high": {
- "type": "integer"
- },
- "low": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "total_usd": {
- "properties": {
- "high": {
- "type": "number"
- },
- "low": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "usd_each": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "text": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text",
- "evidence"
- ],
- "type": "object"
- },
- "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"
- ]
- },
- "at_limit": {
- "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
- "properties": {
- "evidence": {
- "properties": {
- "quote": {
- "type": "string"
- },
- "source": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "kind": {
- "enum": [
- "no_extra_usage",
- "restart_by_hand"
- ]
- },
- "restarts": {
- "properties": {
- "count": {
- "properties": {
- "high": {
- "type": "integer"
- },
- "low": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "total_usd": {
- "properties": {
- "high": {
- "type": "number"
- },
- "low": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "usd_each": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "text": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text",
- "evidence"
- ],
- "type": "object"
- },
- "checked_at": {
- "type": [
- "string",
- "null"
- ]
- },
- "concurrency_unit": {
- "description": "get_details, concurrency only: the unit the page states the value in (unit, text such as \"100 threads\"). Against concurrent requests: equals_requests (value, text and the official line of the unit rule) when the unit rule counts this unit as requests, else note \"not the same unit as concurrent requests\"; \"unit not stated\" when the page names none.",
- "type": "object"
- },
- "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": {
- "description": "Official page the sentence was found on.",
- "type": "string"
- },
- "source_type": {
- "description": "Only with detail=full.",
- "enum": [
- "official_pricing",
- "official_docs",
- "third_party"
- ]
- }
- },
- "required": [
- "source",
- "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",
- "UNIT_MISMATCH",
- "UNIT_UNKNOWN"
- ]
- }
- },
- "required": [
- "condition",
- "label",
- "required",
- "verdict",
- "reason",
- "facts"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "facts_omitted": {
- "description": "search only: present and true when the source sentences under the conditions were left out so that the response fits one response; the verdicts, reasons and costs are unchanged. Ask check_conditions with the offer_id or get_details for the sentences.",
- "type": "boolean"
- },
- "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"
- },
- "provider_url": {
- "description": "The provider page itself. Only in a page made for a browser, where url is this service's address that forwards to it; MCP and REST results do not carry it.",
- "type": "string"
- },
- "url": {
- "description": "The only address to visit the plan: this service's /go/<offer_id>?r=<token> address, which forwards to the provider page. The token is made for this response and holds nothing about you.",
- "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"
- ]
- },
- "at_limit": {
- "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
- "properties": {
- "evidence": {
- "properties": {
- "quote": {
- "type": "string"
- },
- "source": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "kind": {
- "enum": [
- "no_extra_usage",
- "restart_by_hand"
- ]
- },
- "restarts": {
- "properties": {
- "count": {
- "properties": {
- "high": {
- "type": "integer"
- },
- "low": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "total_usd": {
- "properties": {
- "high": {
- "type": "number"
- },
- "low": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "usd_each": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "text": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text",
- "evidence"
- ],
- "type": "object"
- },
- "checked_at": {
- "type": [
- "string",
- "null"
- ]
- },
- "concurrency_unit": {
- "description": "get_details, concurrency only: the unit the page states the value in (unit, text such as \"100 threads\"). Against concurrent requests: equals_requests (value, text and the official line of the unit rule) when the unit rule counts this unit as requests, else note \"not the same unit as concurrent requests\"; \"unit not stated\" when the page names none.",
- "type": "object"
- },
- "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": {
- "description": "Official page the sentence was found on.",
- "type": "string"
- },
- "source_type": {
- "description": "Only with detail=full.",
- "enum": [
- "official_pricing",
- "official_docs",
- "third_party"
- ]
- }
- },
- "required": [
- "source",
- "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"
- },
- "link_notes": {
- "additionalProperties": {
- "type": "string"
- },
- "description": "The note of each link level (link.link_level) of the plans in this result, stated once.",
- "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"
- },
- "partial_matches": {
- "items": {
- "properties": {
- "assumptions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "at_limit": {
- "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
- "properties": {
- "evidence": {
- "properties": {
- "quote": {
- "type": "string"
- },
- "source": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "kind": {
- "enum": [
- "no_extra_usage",
- "restart_by_hand"
- ]
- },
- "restarts": {
- "properties": {
- "count": {
- "properties": {
- "high": {
- "type": "integer"
- },
- "low": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "total_usd": {
- "properties": {
- "high": {
- "type": "number"
- },
- "low": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "usd_each": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "text": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text",
- "evidence"
- ],
- "type": "object"
- },
- "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"
- ]
- },
- "at_limit": {
- "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
- "properties": {
- "evidence": {
- "properties": {
- "quote": {
- "type": "string"
- },
- "source": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "kind": {
- "enum": [
- "no_extra_usage",
- "restart_by_hand"
- ]
- },
- "restarts": {
- "properties": {
- "count": {
- "properties": {
- "high": {
- "type": "integer"
- },
- "low": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "total_usd": {
- "properties": {
- "high": {
- "type": "number"
- },
- "low": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "usd_each": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "text": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text",
- "evidence"
- ],
- "type": "object"
- },
- "checked_at": {
- "type": [
- "string",
- "null"
- ]
- },
- "concurrency_unit": {
- "description": "get_details, concurrency only: the unit the page states the value in (unit, text such as \"100 threads\"). Against concurrent requests: equals_requests (value, text and the official line of the unit rule) when the unit rule counts this unit as requests, else note \"not the same unit as concurrent requests\"; \"unit not stated\" when the page names none.",
- "type": "object"
- },
- "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": {
- "description": "Official page the sentence was found on.",
- "type": "string"
- },
- "source_type": {
- "description": "Only with detail=full.",
- "enum": [
- "official_pricing",
- "official_docs",
- "third_party"
- ]
- }
- },
- "required": [
- "source",
- "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",
- "UNIT_MISMATCH",
- "UNIT_UNKNOWN"
- ]
- }
- },
- "required": [
- "condition",
- "label",
- "required",
- "verdict",
- "reason",
- "facts"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "facts_omitted": {
- "description": "search only: present and true when the source sentences under the conditions were left out so that the response fits one response; the verdicts, reasons and costs are unchanged. Ask check_conditions with the offer_id or get_details for the sentences.",
- "type": "boolean"
- },
- "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"
- },
- "provider_url": {
- "description": "The provider page itself. Only in a page made for a browser, where url is this service's address that forwards to it; MCP and REST results do not carry it.",
- "type": "string"
- },
- "url": {
- "description": "The only address to visit the plan: this service's /go/<offer_id>?r=<token> address, which forwards to the provider page. The token is made for this response and holds nothing about you.",
- "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"
- ]
- },
- "at_limit": {
- "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
- "properties": {
- "evidence": {
- "properties": {
- "quote": {
- "type": "string"
- },
- "source": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "kind": {
- "enum": [
- "no_extra_usage",
- "restart_by_hand"
- ]
- },
- "restarts": {
- "properties": {
- "count": {
- "properties": {
- "high": {
- "type": "integer"
- },
- "low": {
- "type": "integer"
- }
- },
- "type": "object"
- },
- "total_usd": {
- "properties": {
- "high": {
- "type": "number"
- },
- "low": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "usd_each": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "text": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text",
- "evidence"
- ],
- "type": "object"
- },
- "checked_at": {
- "type": [
- "string",
- "null"
- ]
- },
- "concurrency_unit": {
- "description": "get_details, concurrency only: the unit the page states the value in (unit, text such as \"100 threads\"). Against concurrent requests: equals_requests (value, text and the official line of the unit rule) when the unit rule counts this unit as requests, else note \"not the same unit as concurrent requests\"; \"unit not stated\" when the page names none.",
- "type": "object"
- },
- "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": {
- "description": "Official page the sentence was found on.",
- "type": "string"
- },
- "source_type": {
- "description": "Only with detail=full.",
- "enum": [
- "official_pricing",
- "official_docs",
- "third_party"
- ]
- }
- },
- "required": [
- "source",
- "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"
- },
- "show_text": {
- "description": "Ready to show: one line per listed plan, in list order, \"Meets all N: [Provider Plan](visit link)\" for a plan that meets every required condition of the call, \"Closest: [Provider Plan](visit link)\" for any other. The plan is a markdown link to its visit link, which carries the token of this response. Absent when no plan is listed.",
- "type": "string"
- },
- "unknown_providers": {
- "description": "Only when providers was given: the names that are not a provider id or name in this catalog.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "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": [
- "answer",
- "as_of",
- "needs_input",
- "counts",
- "full_matches",
- "partial_matches",
- "zero_result",
- "assumptions",
- "notes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "answer": {
- "type": "string"
- },
- "as_of": {
- "type": "string"
- },
- "counts": {
- "properties": {
- "candidates": {
- "type": "integer"
- },
- "full": {
- "type": "integer"
- },
- "no_match": {
- "type": "integer"
- },
- "partial": {
- "type": "integer"
- }
- },
- "required": [
- "candidates",
- "full",
- "partial",
- "no_match"
- ],
- "type": "object"
- },
- "format": {
- "enum": [
- "brief"
- ]
- },
- "full_matches": {
- "items": {
- "properties": {
- "conditions": {
- "items": {
- "properties": {
- "condition": {
- "type": "string"
- },
- "quote": {
- "description": "One official source sentence, 200 characters at most.",
- "type": "string"
- },
- "reason": {
- "description": "One line, 120 characters at most.",
- "type": "string"
- },
- "required": {
- "description": "Present only on a preferred (nice-to-have) condition.",
- "enum": [
- false
- ]
- },
- "source": {
- "description": "Official page the sentence was found on.",
- "type": [
- "string",
- "null"
- ]
- },
- "verdict": {
- "enum": [
- "MET",
- "UNMET",
- "UNKNOWN",
- "UNIT_MISMATCH",
- "UNIT_UNKNOWN"
- ]
- }
- },
- "required": [
- "condition",
- "verdict",
- "reason"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "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": {
- "description": "status, usd, and low, high or lower_bound when they differ; as in the full result.",
- "type": "object"
- },
- "offer_id": {
- "type": "string"
- },
- "offer_name": {
- "type": "string"
- },
- "provider": {
- "type": "string"
- }
- },
- "required": [
- "offer_id",
- "offer_name",
- "provider",
- "meets_all",
- "monthly_cost",
- "conditions"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "more_note": {
- "type": "string"
- },
- "more_plans": {
- "description": "Matching plans left out of the short list: limit is the number of plans in all, fully matching first.",
- "type": "integer"
- },
- "needs_input": {
- "items": {
- "properties": {
- "field": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- }
- },
- "required": [
- "field",
- "reason"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "partial_matches": {
- "items": {
- "properties": {
- "conditions": {
- "items": {
- "properties": {
- "condition": {
- "type": "string"
- },
- "quote": {
- "description": "One official source sentence, 200 characters at most.",
- "type": "string"
- },
- "reason": {
- "description": "One line, 120 characters at most.",
- "type": "string"
- },
- "required": {
- "description": "Present only on a preferred (nice-to-have) condition.",
- "enum": [
- false
- ]
- },
- "source": {
- "description": "Official page the sentence was found on.",
- "type": [
- "string",
- "null"
- ]
- },
- "verdict": {
- "enum": [
- "MET",
- "UNMET",
- "UNKNOWN",
- "UNIT_MISMATCH",
- "UNIT_UNKNOWN"
- ]
- }
- },
- "required": [
- "condition",
- "verdict",
- "reason"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "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": {
- "description": "status, usd, and low, high or lower_bound when they differ; as in the full result.",
- "type": "object"
- },
- "offer_id": {
- "type": "string"
- },
- "offer_name": {
- "type": "string"
- },
- "provider": {
- "type": "string"
- }
- },
- "required": [
- "offer_id",
- "offer_name",
- "provider",
- "meets_all",
- "monthly_cost",
- "conditions"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "show_text": {
- "description": "Ready to show: one line per listed plan, in list order, \"Meets all N: [Provider Plan](visit link)\" for a plan that meets every required condition of the call, \"Closest: [Provider Plan](visit link)\" for any other. The plan is a markdown link to its visit link, which carries the token of this response. Absent when no plan is listed.",
- "type": "string"
- },
- "unknown_providers": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "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": [
- "format",
- "answer",
- "as_of",
- "needs_input",
- "counts",
- "full_matches",
- "partial_matches"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "properties": {
+ "answer": {
+ "description": "One sentence that opens the answer: the lowest-cost plan that meets every required condition with its link, or, when none does, the closest plan with what it does not meet or what is unknown, and its link. The plan is written as a markdown link, [Provider Plan](visit link), at the end of the sentence.",
+ "type": "string"
+ },
+ "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"
+ },
+ "at_limit": {
+ "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
+ "properties": {
+ "evidence": {
+ "properties": {
+ "quote": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "kind": {
+ "enum": [
+ "no_extra_usage",
+ "restart_by_hand"
+ ]
+ },
+ "restarts": {
+ "properties": {
+ "count": {
+ "properties": {
+ "high": {
+ "type": "integer"
+ },
+ "low": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "total_usd": {
+ "properties": {
+ "high": {
+ "type": "number"
+ },
+ "low": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "usd_each": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text",
+ "evidence"
+ ],
+ "type": "object"
+ },
+ "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"
+ ]
+ },
+ "at_limit": {
+ "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
+ "properties": {
+ "evidence": {
+ "properties": {
+ "quote": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "kind": {
+ "enum": [
+ "no_extra_usage",
+ "restart_by_hand"
+ ]
+ },
+ "restarts": {
+ "properties": {
+ "count": {
+ "properties": {
+ "high": {
+ "type": "integer"
+ },
+ "low": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "total_usd": {
+ "properties": {
+ "high": {
+ "type": "number"
+ },
+ "low": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "usd_each": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text",
+ "evidence"
+ ],
+ "type": "object"
+ },
+ "checked_at": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "concurrency_unit": {
+ "description": "get_details, concurrency only: the unit the page states the value in (unit, text such as \"100 threads\"). Against concurrent requests: equals_requests (value, text and the official line of the unit rule) when the unit rule counts this unit as requests, else note \"not the same unit as concurrent requests\"; \"unit not stated\" when the page names none.",
+ "type": "object"
+ },
+ "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": {
+ "description": "Official page the sentence was found on.",
+ "type": "string"
+ },
+ "source_type": {
+ "description": "Only with detail=full.",
+ "enum": [
+ "official_pricing",
+ "official_docs",
+ "third_party"
+ ]
+ }
+ },
+ "required": [
+ "source",
+ "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",
+ "UNIT_MISMATCH",
+ "UNIT_UNKNOWN"
+ ]
+ }
+ },
+ "required": [
+ "condition",
+ "label",
+ "required",
+ "verdict",
+ "reason",
+ "facts"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "facts_omitted": {
+ "description": "search only: present and true when the source sentences under the conditions were left out so that the response fits one response; the verdicts, reasons and costs are unchanged. Ask check_conditions with the offer_id or get_details for the sentences.",
+ "type": "boolean"
+ },
+ "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"
+ },
+ "provider_url": {
+ "description": "The provider page itself. Only in a page made for a browser, where url is this service's address that forwards to it; MCP and REST results do not carry it.",
+ "type": "string"
+ },
+ "url": {
+ "description": "The only address to visit the plan: this service's /go/<offer_id>?r=<token> address, which forwards to the provider page. The token is made for this response and holds nothing about you.",
+ "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"
+ ]
+ },
+ "at_limit": {
+ "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
+ "properties": {
+ "evidence": {
+ "properties": {
+ "quote": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "kind": {
+ "enum": [
+ "no_extra_usage",
+ "restart_by_hand"
+ ]
+ },
+ "restarts": {
+ "properties": {
+ "count": {
+ "properties": {
+ "high": {
+ "type": "integer"
+ },
+ "low": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "total_usd": {
+ "properties": {
+ "high": {
+ "type": "number"
+ },
+ "low": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "usd_each": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text",
+ "evidence"
+ ],
+ "type": "object"
+ },
+ "checked_at": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "concurrency_unit": {
+ "description": "get_details, concurrency only: the unit the page states the value in (unit, text such as \"100 threads\"). Against concurrent requests: equals_requests (value, text and the official line of the unit rule) when the unit rule counts this unit as requests, else note \"not the same unit as concurrent requests\"; \"unit not stated\" when the page names none.",
+ "type": "object"
+ },
+ "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": {
+ "description": "Official page the sentence was found on.",
+ "type": "string"
+ },
+ "source_type": {
+ "description": "Only with detail=full.",
+ "enum": [
+ "official_pricing",
+ "official_docs",
+ "third_party"
+ ]
+ }
+ },
+ "required": [
+ "source",
+ "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"
+ },
+ "plan_page": {
+ "description": "The link to give the user with this plan, as a markdown link named \"<provider> <plan> — plan page\" (its pricing and sign-up page). The evidence sources under the conditions are for citing a condition.",
+ "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"
+ },
+ "link_notes": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "The note of each link level (link.link_level) of the plans in this result, stated once.",
+ "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"
+ },
+ "partial_matches": {
+ "items": {
+ "properties": {
+ "assumptions": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "at_limit": {
+ "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
+ "properties": {
+ "evidence": {
+ "properties": {
+ "quote": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "kind": {
+ "enum": [
+ "no_extra_usage",
+ "restart_by_hand"
+ ]
+ },
+ "restarts": {
+ "properties": {
+ "count": {
+ "properties": {
+ "high": {
+ "type": "integer"
+ },
+ "low": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "total_usd": {
+ "properties": {
+ "high": {
+ "type": "number"
+ },
+ "low": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "usd_each": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text",
+ "evidence"
+ ],
+ "type": "object"
+ },
+ "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"
+ ]
+ },
+ "at_limit": {
+ "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
+ "properties": {
+ "evidence": {
+ "properties": {
+ "quote": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "kind": {
+ "enum": [
+ "no_extra_usage",
+ "restart_by_hand"
+ ]
+ },
+ "restarts": {
+ "properties": {
+ "count": {
+ "properties": {
+ "high": {
+ "type": "integer"
+ },
+ "low": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "total_usd": {
+ "properties": {
+ "high": {
+ "type": "number"
+ },
+ "low": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "usd_each": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text",
+ "evidence"
+ ],
+ "type": "object"
+ },
+ "checked_at": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "concurrency_unit": {
+ "description": "get_details, concurrency only: the unit the page states the value in (unit, text such as \"100 threads\"). Against concurrent requests: equals_requests (value, text and the official line of the unit rule) when the unit rule counts this unit as requests, else note \"not the same unit as concurrent requests\"; \"unit not stated\" when the page names none.",
+ "type": "object"
+ },
+ "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": {
+ "description": "Official page the sentence was found on.",
+ "type": "string"
+ },
+ "source_type": {
+ "description": "Only with detail=full.",
+ "enum": [
+ "official_pricing",
+ "official_docs",
+ "third_party"
+ ]
+ }
+ },
+ "required": [
+ "source",
+ "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",
+ "UNIT_MISMATCH",
+ "UNIT_UNKNOWN"
+ ]
+ }
+ },
+ "required": [
+ "condition",
+ "label",
+ "required",
+ "verdict",
+ "reason",
+ "facts"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "facts_omitted": {
+ "description": "search only: present and true when the source sentences under the conditions were left out so that the response fits one response; the verdicts, reasons and costs are unchanged. Ask check_conditions with the offer_id or get_details for the sentences.",
+ "type": "boolean"
+ },
+ "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"
+ },
+ "provider_url": {
+ "description": "The provider page itself. Only in a page made for a browser, where url is this service's address that forwards to it; MCP and REST results do not carry it.",
+ "type": "string"
+ },
+ "url": {
+ "description": "The only address to visit the plan: this service's /go/<offer_id>?r=<token> address, which forwards to the provider page. The token is made for this response and holds nothing about you.",
+ "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"
+ ]
+ },
+ "at_limit": {
+ "description": "Present for a plan with no automatic extra usage: what the official page says happens at the limit (kind no_extra_usage or restart_by_hand), with its sentence. With a workload that needs restarts, restarts gives their count, the price of each and the total, the numbers of monthly_cost.explanation.",
+ "properties": {
+ "evidence": {
+ "properties": {
+ "quote": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "kind": {
+ "enum": [
+ "no_extra_usage",
+ "restart_by_hand"
+ ]
+ },
+ "restarts": {
+ "properties": {
+ "count": {
+ "properties": {
+ "high": {
+ "type": "integer"
+ },
+ "low": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "total_usd": {
+ "properties": {
+ "high": {
+ "type": "number"
+ },
+ "low": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "usd_each": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text",
+ "evidence"
+ ],
+ "type": "object"
+ },
+ "checked_at": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "concurrency_unit": {
+ "description": "get_details, concurrency only: the unit the page states the value in (unit, text such as \"100 threads\"). Against concurrent requests: equals_requests (value, text and the official line of the unit rule) when the unit rule counts this unit as requests, else note \"not the same unit as concurrent requests\"; \"unit not stated\" when the page names none.",
+ "type": "object"
+ },
+ "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": {
+ "description": "Official page the sentence was found on.",
+ "type": "string"
+ },
+ "source_type": {
+ "description": "Only with detail=full.",
+ "enum": [
+ "official_pricing",
+ "official_docs",
+ "third_party"
+ ]
+ }
+ },
+ "required": [
+ "source",
+ "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"
+ },
+ "plan_page": {
+ "description": "The link to give the user with this plan, as a markdown link named \"<provider> <plan> — plan page\" (its pricing and sign-up page). The evidence sources under the conditions are for citing a condition.",
+ "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"
+ },
+ "show_text": {
+ "description": "Ready to show: one line per listed plan, in list order, \"Meets all N: [Provider Plan](visit link)\" for a plan that meets every required condition of the call, \"Closest: [Provider Plan](visit link)\" for any other. The plan is a markdown link to its visit link, which carries the token of this response. Absent when no plan is listed.",
+ "type": "string"
+ },
+ "unknown_providers": {
+ "description": "Only when providers was given: the names that are not a provider id or name in this catalog.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "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": [
+ "answer",
+ "as_of",
+ "needs_input",
+ "counts",
+ "full_matches",
+ "partial_matches",
+ "zero_result",
+ "assumptions",
+ "notes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "answer": {
+ "type": "string"
+ },
+ "as_of": {
+ "type": "string"
+ },
+ "counts": {
+ "properties": {
+ "candidates": {
+ "type": "integer"
+ },
+ "full": {
+ "type": "integer"
+ },
+ "no_match": {
+ "type": "integer"
+ },
+ "partial": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "candidates",
+ "full",
+ "partial",
+ "no_match"
+ ],
+ "type": "object"
+ },
+ "format": {
+ "enum": [
+ "brief"
+ ]
+ },
+ "full_matches": {
+ "items": {
+ "properties": {
+ "conditions": {
+ "items": {
+ "properties": {
+ "condition": {
+ "type": "string"
+ },
+ "quote": {
+ "description": "One official source sentence, 200 characters at most.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "One line, 120 characters at most.",
+ "type": "string"
+ },
+ "required": {
+ "description": "Present only on a preferred (nice-to-have) condition.",
+ "enum": [
+ false
+ ]
+ },
+ "source": {
+ "description": "Official page the sentence was found on.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "verdict": {
+ "enum": [
+ "MET",
+ "UNMET",
+ "UNKNOWN",
+ "UNIT_MISMATCH",
+ "UNIT_UNKNOWN"
+ ]
+ }
+ },
+ "required": [
+ "condition",
+ "verdict",
+ "reason"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "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": {
+ "description": "status, usd, and low, high or lower_bound when they differ; as in the full result.",
+ "type": "object"
+ },
+ "offer_id": {
+ "type": "string"
+ },
+ "offer_name": {
+ "type": "string"
+ },
+ "plan_page": {
+ "description": "The link to give the user with this plan, as a markdown link named \"<provider> <plan> — plan page\" (its pricing and sign-up page). The evidence sources under the conditions are for citing a condition.",
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "offer_id",
+ "offer_name",
+ "provider",
+ "meets_all",
+ "monthly_cost",
+ "conditions"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "more_note": {
+ "type": "string"
+ },
+ "more_plans": {
+ "description": "Matching plans left out of the short list: limit is the number of plans in all, fully matching first.",
+ "type": "integer"
+ },
+ "needs_input": {
+ "items": {
+ "properties": {
+ "field": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "field",
+ "reason"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "partial_matches": {
+ "items": {
+ "properties": {
+ "conditions": {
+ "items": {
+ "properties": {
+ "condition": {
+ "type": "string"
+ },
+ "quote": {
+ "description": "One official source sentence, 200 characters at most.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "One line, 120 characters at most.",
+ "type": "string"
+ },
+ "required": {
+ "description": "Present only on a preferred (nice-to-have) condition.",
+ "enum": [
+ false
+ ]
+ },
+ "source": {
+ "description": "Official page the sentence was found on.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "verdict": {
+ "enum": [
+ "MET",
+ "UNMET",
+ "UNKNOWN",
+ "UNIT_MISMATCH",
+ "UNIT_UNKNOWN"
+ ]
+ }
+ },
+ "required": [
+ "condition",
+ "verdict",
+ "reason"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "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": {
+ "description": "status, usd, and low, high or lower_bound when they differ; as in the full result.",
+ "type": "object"
+ },
+ "offer_id": {
+ "type": "string"
+ },
+ "offer_name": {
+ "type": "string"
+ },
+ "plan_page": {
+ "description": "The link to give the user with this plan, as a markdown link named \"<provider> <plan> — plan page\" (its pricing and sign-up page). The evidence sources under the conditions are for citing a condition.",
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "offer_id",
+ "offer_name",
+ "provider",
+ "meets_all",
+ "monthly_cost",
+ "conditions"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "show_text": {
+ "description": "Ready to show: one line per listed plan, in list order, \"Meets all N: [Provider Plan](visit link)\" for a plan that meets every required condition of the call, \"Closest: [Provider Plan](visit link)\" for any other. The plan is a markdown link to its visit link, which carries the token of this response. Absent when no plan is listed.",
+ "type": "string"
+ },
+ "unknown_providers": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "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": [
+ "format",
+ "answer",
+ "as_of",
+ "needs_input",
+ "counts",
+ "full_matches",
+ "partial_matches"
+ ],
+ "type": "object"
+ }
+]