Skip to main content
Glama

extract_page_markdown

Read-onlyIdempotent

PAID CAPABILITY ($0.005 USDC per successful extraction via x402 v2). Fetches one public page and returns its main content as clean Markdown plus title, description, outbound links, and word count. Single page only — no crawling or JavaScript rendering. This MCP call validates the target and returns the canonical x402 HTTP handoff; payment and the result are exchanged at GET https://api.santosautomation.com/v1/extract?url=... (or POST {"url": "…"}). No account or API key is required.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesA publicly reachable HTTP or HTTPS page.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesExact URL to request, then pay for and retry.
methodYesHTTP method to use for the paid request.
networkYesCAIP-2 chain id, eip155:8453 (Base mainnet).
settlesNoWhen funds move.
protocolYesx402-v2
price_usdcYesPrice in USDC for one successful call.
payment_requiredYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changed
    • removedInput schema / properties / token
      Removed value: -{
      -  "description": "Optional verified-email token. Without it the daily free quota is keyed on the caller IP, which every caller behind that address shares — hosted agents should pass a token so each user gets their own allowance. Obtain one via POST /api/leads/verify/request then /confirm; valid 30 days.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / byline
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / canonical_url
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / description
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / fetched_at
      Removed value: -{
      -  "format": "date-time",
      -  "type": "string"
      -}
    • removedOutput schema / properties / final_url
      Removed value: -{
      -  "format": "uri",
      -  "type": "string"
      -}
    • removedOutput schema / properties / http_status
      Removed value: -{
      -  "type": "integer"
      -}
    • removedOutput schema / properties / links
      Removed value: -{
      -  "items": {
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / markdown
      Removed value: -{
      -  "description": "Readability-isolated main content.",
      -  "type": "string"
      -}
    • addedOutput schema / properties / method
      Added value: +{
      +  "description": "HTTP method to use for the paid request.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / network
      Added value: +{
      +  "description": "CAIP-2 chain id, eip155:8453 (Base mainnet).",
      +  "type": "string"
      +}
    • addedOutput schema / properties / payment_required
      Added value: +{
      +  "const": true,
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / price_usdc
      Added value: +{
      +  "description": "Price in USDC for one successful call.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / protocol
      Added value: +{
      +  "description": "x402-v2",
      +  "type": "string"
      +}
    • removedOutput schema / properties / schema_version
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / settles
      Added value: +{
      +  "description": "When funds move.",
      +  "type": "string"
      +}
    • removedOutput schema / properties / title
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • addedOutput schema / properties / url / description
      Added value: +"Exact URL to request, then pay for and retry."
    • removedOutput schema / properties / word_count
      Removed value: -{
      -  "type": "integer"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "schema_version",
      -  "url",
      -  "markdown",
      -  "word_count"
      -]New value: +[
      +  "payment_required",
      +  "protocol",
      +  "method",
      +  "url",
      +  "price_usdc",
      +  "network"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "byline": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "canonical_url": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "description": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "fetched_at": {
      +      "format": "date-time",
      +      "type": "string"
      +    },
      +    "final_url": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "http_status": {
      +      "type": "integer"
      +    },
      +    "links": {
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "markdown": {
      +      "description": "Readability-isolated main content.",
      +      "type": "string"
      +    },
      +    "schema_version": {
      +      "type": "string"
      +    },
      +    "title": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "url": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "word_count": {
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "schema_version",
      +    "url",
      +    "markdown",
      +    "word_count"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / token
      Added value: +{
      +  "description": "Optional verified-email token. Without it the daily free quota is keyed on the caller IP, which every caller behind that address shares — hosted agents should pass a token so each user gets their own allowance. Obtain one via POST /api/leads/verify/request then /confirm; valid 30 days.",
      +  "type": "string"
      +}
  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 readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it is a paid capability with a specific cost, it validates the target and returns a canonical x402 handoff, and the actual payment/result exchange happens at a separate endpoint. This goes beyond what annotations provide.

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?

The description is compact and front-loaded with the most critical information (paid capability, cost, and what it does). Every sentence adds value, though the x402 handoff explanation is somewhat dense and could be clearer for an agent unfamiliar with the protocol.

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?

The description covers the tool's purpose, scope, payment model, and handoff flow. The output schema exists, so return values don't need to be explained. The only minor gap is that it doesn't explicitly state when to prefer this over extract_structured_data or link_map, but the single-page Markdown scope is clear enough.

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 the url parameter as 'A publicly reachable HTTP or HTTPS page.' The description adds the requirement that the page be public and single, but doesn't add much beyond the schema. Baseline 3 is appropriate.

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 states a specific verb ('Fetches'), a resource ('one public page'), and the output ('main content as clean Markdown plus title, description, outbound links, and word count'). It also explicitly distinguishes itself from crawling and JavaScript rendering, which helps differentiate it from sibling tools like link_map and extract_structured_data.

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 'Single page only — no crawling or JavaScript rendering' and explains the x402 HTTP handoff flow. It also notes that no account or API key is required, which helps an agent decide when to use it. It doesn't name sibling alternatives explicitly, but the single-page scope and payment model provide clear usage context.

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