Skip to main content
Glama

Pricing Page Scan

check_pricing
Read-onlyIdempotent

Fetch a pricing page and extract price strings, plan labels, and free trial signals to quickly scan visible pricing before quoting costs.

Instructions

Fetch a public pricing page and extract first-pass pricing signals before you quote plan costs, free tiers, or plan names. Use this when you already have a likely pricing URL and need a quick live scan of visible page text. It returns price-like strings, heuristic plan labels, free or free-trial signals, and cache information. It does not map prices to exact plans, normalize currencies, execute checkout flows, or guarantee that a price applies to a specific region or customer type. JavaScript-rendered, logged-in, or heavily obfuscated pricing details can be missed. Results are cached for 5 minutes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesPublic pricing or plans URL to analyze. Prefer the specific pricing page, for example https://stripe.com/pricing, rather than a generic homepage.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesPricing page that was analyzed.
cachedNoTrue when the page body came from the 5-minute cache instead of a new fetch.
pricesFoundNoDistinct price-like strings extracted from the page text. These are not linked back to specific plans or billing conditions.
plansDetectedNoLowercased heuristic plan labels detected from the page text. They are useful hints, not authoritative plan identifiers.
hasFreeOptionNoTrue when the page contains signals that a free plan or $0 option exists somewhere on the page. This is a page-level signal, not proof that the offer is currently self-serve or globally available.
hasFreeTrialNoTrue when the page contains signals that a free trial exists somewhere on the page.
pageLengthNoSize of the fetched page body in characters.
errorNoFetch or parsing error when the pricing page could not be analyzed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.4.0
    • changedInput schema / properties / url / description
      Previous value: -"Public pricing-page URL to analyze, for example https://stripe.com/pricing."New value: +"Public pricing or plans URL to analyze. Prefer the specific pricing page, for example https://stripe.com/pricing, rather than a generic homepage."
    • changedOutput schema / properties / hasFreeOption / description
      Previous value: -"True when the page contains signals that a free plan or $0 option exists."New value: +"True when the page contains signals that a free plan or $0 option exists somewhere on the page. This is a page-level signal, not proof that the offer is currently self-serve or globally available."
    • changedOutput schema / properties / hasFreeTrial / description
      Previous value: -"True when the page contains signals that a free trial exists."New value: +"True when the page contains signals that a free trial exists somewhere on the page."
    • changedOutput schema / properties / plansDetected / description
      Previous value: -"Normalized plan labels detected from the page text."New value: +"Lowercased heuristic plan labels detected from the page text. They are useful hints, not authoritative plan identifiers."
    • changedOutput schema / properties / pricesFound / description
      Previous value: -"Distinct price-like strings extracted from the page text."New value: +"Distinct price-like strings extracted from the page text. These are not linked back to specific plans or billing conditions."
  2. Changed2 schema fields changedv0.1.1
    • changedInput schema / properties / url / description
      Previous value: -"URL of the pricing page to analyze"New value: +"Public pricing-page URL to analyze, for example https://stripe.com/pricing."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "cached": {
      +      "description": "True when the page body came from the 5-minute cache instead of a new fetch.",
      +      "type": "boolean"
      +    },
      +    "error": {
      +      "description": "Fetch or parsing error when the pricing page could not be analyzed.",
      +      "type": "string"
      +    },
      +    "hasFreeOption": {
      +      "description": "True when the page contains signals that a free plan or $0 option exists.",
      +      "type": "boolean"
      +    },
      +    "hasFreeTrial": {
      +      "description": "True when the page contains signals that a free trial exists.",
      +      "type": "boolean"
      +    },
      +    "pageLength": {
      +      "description": "Size of the fetched page body in characters.",
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "plansDetected": {
      +      "description": "Normalized plan labels detected from the page text.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "pricesFound": {
      +      "description": "Distinct price-like strings extracted from the page text.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "url": {
      +      "description": "Pricing page that was analyzed.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "url"
      +  ],
      +  "type": "object"
      +}
  3. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive. The description adds valuable behavioral context: results are cached for 5 minutes, and JavaScript-rendered, logged-in, or heavily obfuscated pricing details can be missed. This goes beyond the annotations without contradicting them.

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

Conciseness5/5

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

The description is compact and front-loaded: purpose first, then usage context, then limitations and caching. Every sentence provides meaningful information with no fluff or repetition.

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

Completeness5/5

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

Given the tool's simple scope, the description fully covers what the tool does, its limitations, cache behavior, and return content. With annotations and output schema also present, this is complete for an agent to select and invoke correctly.

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

Parameters4/5

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

Schema coverage is 100% for the single url parameter, with a clear description. The tool description adds extra guidance: 'Prefer the specific pricing page, for example https://stripe.com/pricing, rather than a generic homepage.' This enriches the parameter semantics beyond the schema.

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?

The description clearly states the verb and resource: 'Fetch a public pricing page and extract first-pass pricing signals.' This distinguishes it from siblings like compare_pricing_pages, which likely compares multiple pages, and check_endpoint, which is more generic. The purpose is immediately clear.

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?

The description explicitly says 'Use this when you already have a likely pricing URL and need a quick live scan of visible page text.' It also lists exclusions: 'does not map prices to exact plans, normalize currencies, execute checkout flows, or guarantee that a price applies to a specific region or customer type.' This provides clear when-to-use and when-not-to-use guidance.

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