Skip to main content
Glama

Check an answer's plan claims against the recorded facts

verify_answer
Read-onlyIdempotent

Use this when: you have drafted an answer that names API plans, costs or whether they meet the user's conditions, before you give it. Do not use this when: you have not looked up any plan yet (use search). Check what a drafted answer says about API plans against the recorded official facts, using the user's conditions as given in request. For each plan claim (plan id, name or pricing-page URL, with the stated billing, monthly cost, whether it meets every condition, single condition verdicts and recorded values) it returns conflicts with the official source sentences, the check date and a one-line fix: a plan not in the catalog, unmet or unknown conditions stated as met, met stated as unmet, a condition verdict, a cost outside the computed cost or range, or a value that differs. It also lists verdicts that rest on a derived value, official pages that disagree or a two-value price range (state the condition), plans it could not check (an ambiguous name returns the candidates), the cheapest plan that meets every condition when the answer does not name it, and words of the question that suggest a condition the request does not carry. Example: a drafted answer says 1 plan costs $49 a month for 100,000 emails.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
claimsYesOne entry per plan the answer names, with what the answer says about it.
requestYesThe user's workload and required conditions as you understood them, in the search input format. Each claim is judged against these, not against earlier calls.
questionNoThe user's words, if available. Read only for words that suggest a condition the request does not carry.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitsYesKnown gaps of the record that the request touches. They are not conflicts.
omittedYesThe cheapest plan that meets every required condition of the request, when the answer does not name it.
evidenceYesThe official sentences ({source, quote}) of each fact id that conflicts and conditional refer to, once per fact.
conflictsYesClaims the record contradicts or does not back. Correct each before giving the answer. facts are keys of evidence.
uncheckedYesClaims that could not be checked: an ambiguous name (candidates listed), a plan not in this catalog, a condition the request does not carry, a key with no recorded field, or claims past the result size limit (call again with them).
consistentYesTrue when no claim conflicts with the record (all claims are judged, also those left out of this result for its size).
conditionalYesVerdicts or costs of the answer that rest on a derived value, official pages that disagree, or a price range of two official values. State the condition with the claim.
request_usedYesThe request the claims were judged against.
checked_scopeYesWhat this call checked and what it did not.
request_may_omitYesWords of the question that suggest a condition the request does not carry.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changed
    • addedInput schema / properties / claims / items / properties / conditions / properties / min_pages_per_doc
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_batch_discount
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_table_extraction
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / batch_discount
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / max_pages_per_doc
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / table_extraction
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / request / properties / min_pages_per_doc
      Added value: +{
      +  "description": "Pages one document may have at the most the plan allows, for document parsing. Met when the stated limit is at least this many (or the pages say there is no page limit); a plan whose pages do not state a limit is unknown. The limit of the largest way of sending (batch or asynchronous) counts.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / request / properties / monthly_document_pages
      Added value: +{
      +  "description": "Pages of documents parsed per month, for document-parsing APIs (LlamaParse, Reducto, Unstructured, Mistral OCR, LandingAI, Amazon Textract, Google Document AI, Azure Document Intelligence, Datalab, Mathpix, Mindee, Nanonets, Upstage). A price given per credit is multiplied by the credits one page costs. It is the whole workload: give it instead of monthly_pages, monthly_searches, monthly_browser_hours, monthly_emails, monthly_characters and monthly_audio_hours, not with them. Only document-parsing products can serve it; other products are out of scope.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / request / properties / needs_batch_discount
      Added value: +{
      +  "description": "An official page must say a batch or asynchronous way of sending documents costs less than the list price on the plan, for document parsing. The budget and the cost are judged at the list price, not at the batch price.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / request / properties / needs_no_training / description
      Previous value: -"An official page must say the vendor does not use the buyer's text and audio to train its models without the buyer opting in. A use that is on by default with an opt-out to ask for does not count."New value: +"An official page must say the vendor does not use the buyer's text, audio or documents to train its models without the buyer opting in. A use that is on by default with an opt-out to ask for does not count."
    • addedInput schema / properties / request / properties / needs_table_extraction
      Added value: +{
      +  "description": "The service must return the tables of a page as structure (rows and cells), not only the text, for document parsing.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / min_pages_per_doc
      Added value: +{
      +  "description": "Pages one document may have at the most the plan allows, for document parsing. Met when the stated limit is at least this many (or the pages say there is no page limit); a plan whose pages do not state a limit is unknown. The limit of the largest way of sending (batch or asynchronous) counts.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / needs_batch_discount
      Added value: +{
      +  "description": "An official page must say a batch or asynchronous way of sending documents costs less than the list price on the plan, for document parsing. The budget and the cost are judged at the list price, not at the batch price.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / request / properties / preferred / properties / needs_no_training / description
      Previous value: -"An official page must say the vendor does not use the buyer's text and audio to train its models without the buyer opting in. A use that is on by default with an opt-out to ask for does not count."New value: +"An official page must say the vendor does not use the buyer's text, audio or documents to train its models without the buyer opting in. A use that is on by default with an opt-out to ask for does not count."
    • addedInput schema / properties / request / properties / preferred / properties / needs_table_extraction
      Added value: +{
      +  "description": "The service must return the tables of a page as structure (rows and cells), not only the text, for document parsing.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / request / properties / product_types / items / enum
      Previous value: -[
      -  "scraping_api",
      -  "serp_api",
      -  "headless_browser",
      -  "platform",
      -  "email_api",
      -  "tts_api",
      -  "stt_api"
      -]New value: +[
      +  "scraping_api",
      +  "serp_api",
      +  "headless_browser",
      +  "platform",
      +  "email_api",
      +  "tts_api",
      +  "stt_api",
      +  "docparse_api"
      +]
  2. Changed56 schema fields changed
    • addedInput schema / properties / claims / items / properties / conditions / properties / max_overage_usd_per_1k
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / min_log_retention_days
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / min_sending_domains
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_batch
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_commercial_use
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_dedicated_ip
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_diarization
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_inbound
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_korean
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_no_min_billing
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_no_training
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_streaming
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / needs_voice_cloning
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / batch
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / commercial_use
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / data_not_used_for_training
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / dedicated_ip
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / diarization
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / diarization_addon
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / inbound_parse
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / languages_ko
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / log_retention_days
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / no_min_billing
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / sending_domains
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / streaming
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / voice_cloning
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / request / properties / max_overage_usd_per_1k
      Added value: +{
      +  "description": "The most the plan may charge for each 1,000 emails beyond its included volume, in USD, for transactional email. A plan whose extra price is not published as a per-1,000 figure is unknown.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / request / properties / min_log_retention_days
      Added value: +{
      +  "description": "Days the plan must keep the logs or events of sent email where the account can read them, for transactional email. Longer retention sold as an add-on does not count.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / request / properties / min_sending_domains
      Added value: +{
      +  "description": "Sending domains the plan must let one account authenticate, for transactional email. Met when the stated limit is at least this many (or the pages say it is unlimited); a plan whose pages do not state a limit is unknown.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / request / properties / monthly_audio_hours
      Added value: +{
      +  "description": "Hours of audio transcribed per month, for speech-to-text APIs (Deepgram, AssemblyAI, Speechmatics, Amazon Transcribe, Google Cloud, OpenAI). A price given per minute is multiplied by 60. It is the whole workload: give it instead of monthly_pages, monthly_searches, monthly_browser_hours, monthly_emails and monthly_characters, not with them. Only speech-to-text products can serve it; other products are out of scope.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / request / properties / monthly_characters
      Added value: +{
      +  "description": "Characters of text voiced per month, for text-to-speech APIs (ElevenLabs, Cartesia, Deepgram Aura, OpenAI, Google Cloud, Amazon Polly, Azure, Gradium, Rime, Inworld, MiniMax, Murf, Hume). It is the whole workload: give it instead of monthly_pages, monthly_searches, monthly_browser_hours and monthly_emails, not with them. Only text-to-speech products can serve it; other products are out of scope.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / request / properties / monthly_emails
      Added value: +{
      +  "description": "Emails sent per month, for transactional email APIs (SendGrid, Mailgun, Postmark, Resend, Amazon SES, Brevo, Mailtrap, Loops). It is the whole workload: give it instead of monthly_pages, monthly_searches and monthly_browser_hours, not with them. Only email products can serve it; other products are out of scope.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / request / properties / needs_batch
      Added value: +{
      +  "description": "The plan must transcribe recorded audio (a file or a stored recording), for speech-to-text. A plan priced for live audio only is not met.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / needs_commercial_use
      Added value: +{
      +  "description": "The plan must allow commercial use of the generated audio, for text-to-speech. A free plan limited to non-commercial use does not count; a plan whose pages do not say is unknown.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / needs_dedicated_ip
      Added value: +{
      +  "description": "The plan must come with a dedicated sending IP address, for transactional email. A dedicated IP sold only as an add-on on top of the plan, or only on another plan, does not count.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / needs_diarization
      Added value: +{
      +  "description": "The plan must label who spoke (speaker diarization), for speech-to-text. Where the vendor charges extra for it, the extra price is added to the monthly cost; where the pages state no price or no inclusion the plan is unknown.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / needs_inbound
      Added value: +{
      +  "description": "The service must receive email for the buyer and hand it on (inbound parsing, routes), for transactional email.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / needs_korean
      Added value: +{
      +  "description": "The service must voice Korean text (text-to-speech) or transcribe Korean speech (speech-to-text).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / needs_no_min_billing
      Added value: +{
      +  "description": "An official page must say audio is billed by the second (or an increment of seconds) with no minimum billed duration per request, for speech-to-text. A page that says nothing about rounding is unknown.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / needs_no_training
      Added value: +{
      +  "description": "An official page must say the vendor does not use the buyer's text and audio to train its models without the buyer opting in. A use that is on by default with an opt-out to ask for does not count.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / needs_streaming
      Added value: +{
      +  "description": "The service must return audio in real time as it is made (streaming or a WebSocket), for text-to-speech; for speech-to-text, it must transcribe live audio as it arrives. A speech-to-text price line is per mode, so a plan priced for recorded audio only is not met.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / needs_voice_cloning
      Added value: +{
      +  "description": "The plan must let the account clone a voice from its own recording, for text-to-speech. Cloning limited to eligible customers, a request form or an enterprise plan does not count for a plan that is not that plan.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / max_overage_usd_per_1k
      Added value: +{
      +  "description": "The most the plan may charge for each 1,000 emails beyond its included volume, in USD, for transactional email. A plan whose extra price is not published as a per-1,000 figure is unknown.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / min_log_retention_days
      Added value: +{
      +  "description": "Days the plan must keep the logs or events of sent email where the account can read them, for transactional email. Longer retention sold as an add-on does not count.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / min_sending_domains
      Added value: +{
      +  "description": "Sending domains the plan must let one account authenticate, for transactional email. Met when the stated limit is at least this many (or the pages say it is unlimited); a plan whose pages do not state a limit is unknown.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / needs_batch
      Added value: +{
      +  "description": "The plan must transcribe recorded audio (a file or a stored recording), for speech-to-text. A plan priced for live audio only is not met.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / needs_commercial_use
      Added value: +{
      +  "description": "The plan must allow commercial use of the generated audio, for text-to-speech. A free plan limited to non-commercial use does not count; a plan whose pages do not say is unknown.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / needs_dedicated_ip
      Added value: +{
      +  "description": "The plan must come with a dedicated sending IP address, for transactional email. A dedicated IP sold only as an add-on on top of the plan, or only on another plan, does not count.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / needs_diarization
      Added value: +{
      +  "description": "The plan must label who spoke (speaker diarization), for speech-to-text. Where the vendor charges extra for it, the extra price is added to the monthly cost; where the pages state no price or no inclusion the plan is unknown.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / needs_inbound
      Added value: +{
      +  "description": "The service must receive email for the buyer and hand it on (inbound parsing, routes), for transactional email.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / needs_korean
      Added value: +{
      +  "description": "The service must voice Korean text (text-to-speech) or transcribe Korean speech (speech-to-text).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / needs_no_min_billing
      Added value: +{
      +  "description": "An official page must say audio is billed by the second (or an increment of seconds) with no minimum billed duration per request, for speech-to-text. A page that says nothing about rounding is unknown.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / needs_no_training
      Added value: +{
      +  "description": "An official page must say the vendor does not use the buyer's text and audio to train its models without the buyer opting in. A use that is on by default with an opt-out to ask for does not count.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / needs_streaming
      Added value: +{
      +  "description": "The service must return audio in real time as it is made (streaming or a WebSocket), for text-to-speech; for speech-to-text, it must transcribe live audio as it arrives. A speech-to-text price line is per mode, so a plan priced for recorded audio only is not met.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / needs_voice_cloning
      Added value: +{
      +  "description": "The plan must let the account clone a voice from its own recording, for text-to-speech. Cloning limited to eligible customers, a request form or an enterprise plan does not count for a plan that is not that plan.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / request / properties / product_types / items / enum
      Previous value: -[
      -  "scraping_api",
      -  "serp_api",
      -  "headless_browser",
      -  "platform"
      -]New value: +[
      +  "scraping_api",
      +  "serp_api",
      +  "headless_browser",
      +  "platform",
      +  "email_api",
      +  "tts_api",
      +  "stt_api"
      +]
  3. Changed21 schema fields changed
    • addedInput schema / properties / claims / items / properties / conditions / properties / captcha_solving
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / min_session_minutes
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / persistent_profiles
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / proxies_included
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / conditions / properties / session_recording
      Added value: +{
      +  "enum": [
      +    "met",
      +    "not_met",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / captcha_solving
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / max_session_minutes
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / persistent_profiles
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / proxies
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / claims / items / properties / values / properties / session_recording
      Added value: +{
      +  "type": [
      +    "number",
      +    "string",
      +    "boolean",
      +    "object",
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / request / properties / captcha_solving
      Added value: +{
      +  "description": "The plan must solve CAPTCHAs for the browser sessions (the vendor does it, not the buyer own service).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / min_session_minutes
      Added value: +{
      +  "description": "Minutes one browser session must be able to run on this plan, for hosted browsers. Met when the stated longest session of the plan is at least this long; a plan whose pages do not state a session limit is unknown, and a limit the page gives only for another plan is not met.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / request / properties / monthly_browser_hours
      Added value: +{
      +  "description": "Browser time per month in hours, for hosted browsers (Browserbase, Browserless) billed by browser time. It is the whole workload: give it instead of monthly_pages, monthly_searches and browser_seconds_per_page, not with them. Only browser products can serve it; other products are out of scope.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / request / properties / persistent_profiles
      Added value: +{
      +  "description": "The plan must keep browser profiles (login state, cookies) between sessions.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / captcha_solving
      Added value: +{
      +  "description": "The plan must solve CAPTCHAs for the browser sessions (the vendor does it, not the buyer own service).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / min_session_minutes
      Added value: +{
      +  "description": "Minutes one browser session must be able to run on this plan, for hosted browsers. Met when the stated longest session of the plan is at least this long; a plan whose pages do not state a session limit is unknown, and a limit the page gives only for another plan is not met.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / persistent_profiles
      Added value: +{
      +  "description": "The plan must keep browser profiles (login state, cookies) between sessions.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / proxies_included
      Added value: +{
      +  "description": "The plan must include proxy traffic of the vendor (some gigabytes in the plan fee). Proxy traffic sold only per gigabyte on top of the fee, or only on another plan, does not count.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / preferred / properties / session_recording
      Added value: +{
      +  "description": "The plan must record browser sessions (video or replay) that the buyer can watch afterwards.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / proxies_included
      Added value: +{
      +  "description": "The plan must include proxy traffic of the vendor (some gigabytes in the plan fee). Proxy traffic sold only per gigabyte on top of the fee, or only on another plan, does not count.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / request / properties / session_recording
      Added value: +{
      +  "description": "The plan must record browser sessions (video or replay) that the buyer can watch afterwards.",
      +  "type": "boolean"
      +}
  4. Added

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description goes further by disclosing edge-case behavior the annotations do not: ambiguous plan names return candidates, some plans land in an unchecked bucket, derived-value verdicts and two-value price ranges are flagged, and the check date is returned. It leans heavily on enumerating outputs, which the output schema already carries, but the edge-case handling is real added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly: trigger, anti-trigger, core action, then outcomes. The long middle 'For each plan claim (...)' enumeration is dense and partly duplicates the output schema, but the structure keeps the routing decision first and the detail after.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description need not explain return values, and it still covers the tricky behaviors an agent needs: what counts as a conflict, unverifiable plans, ambiguous-name handling, and the extra cheapest-plan and question-wording signals. Complete for a verification tool of this complexity, with only minor redundancy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents request, claims, question and every claim field (plan, values, billing, meets_all, conditions, monthly_cost_usd). The description only restates that the user's conditions are used 'as given in request' and that claims carry 'stated billing, monthly cost, whether it meets every condition, single condition verdicts and recorded values' — a mild restatement of the schema, not new syntax or format detail. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a precise trigger and a specific verb+resource: 'Check what a drafted answer says about API plans against the recorded official facts.' It also names the sibling it is not ('use search' when no plan has been looked up), so an agent can separate it from check_conditions and search without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when ('you have drafted an answer that names API plans, costs or whether they meet the user's conditions, before you give it') and when-not ('you have not looked up any plan yet (use search)'), with the alternative tool named. Nothing is left to inference for the core decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources