Skip to main content
Glama

Extract structured data from a web page

skim_extract
Read-only

Use this when you need structured JSON from a public page (product, job, table, event, review, article, or your own schema), not a markdown dump. Prefer it over reading the page then parsing it yourself. Pass a preset or a JSON Schema. Values come only from the page, never invented. Empty extracts are not charged. Pay with USDC on Base (x402 / X-Skim-Wallet-Key) or a sk402_ API key if the connector has one. Do not use for a full-page read (skim_read) or login-walled pages.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesFully-qualified URL to read and extract from.
presetNoNamed extraction preset. Provide either this or `schema`.
schemaNoJSON Schema object (top-level {"type":"object", ...}) describing the desired output. Provide either this or `preset`.
instructionsNoOptional natural-language hint to bias the extraction.

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, openWorldHint=true, destructiveHint=false. The description adds genuinely novel behavioral context beyond this: 'Values come only from the page, never invented' (hallucination guarantee), 'Empty extracts are not charged' (pricing behavior), and payment requirements (USDC on Base x402 / X-Skim-Wallet-Key or sk402_ API key). This is meaningful value beyond annotations, though it stops short of describing return format details.

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?

Purpose is front-loaded in the first sentence, then routing guidance, then behavioral/payment details, then exclusions last. Every sentence earns its place and no filler exists. Slightly long, but the payment and hallucination-avoidance details are necessary operational information that justifies the length.

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?

For a 4-param tool with full schema coverage and no output schema, the description covers when to use, when not to use, payment requirements, and behavioral guarantees. The only notable gap is that no output format is described, but the tool's purpose (returning structured JSON matching the given preset/schema) makes this largely self-evident.

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 all four parameters (url, preset with enum, schema, instructions). The description reinforces the preset/schema mutual exclusivity ('Provide either this or schema') which mirrors the schema but adds emphasis. Baseline 3 is appropriate since the schema carries the load.

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?

States a specific verb (extract) and resource (public web page → structured JSON), enumerates concrete content types (product, job, table, event, review, article), and explicitly distinguishes itself from skim_read (full-page markdown read) and skim_signals. An agent can unambiguously tell what this tool does and which sibling it isn't.

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?

Gives explicit when-to-use ('when you need structured JSON from a public page'), a preference directive ('Prefer it over reading the page then parsing it yourself'), and explicit exclusions ('Do not use for a full-page read (skim_read) or login-walled pages'). Sibling is named with the exact routing condition.

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.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: skim_read returns clean markdown, skim_extract returns structured JSON, and skim_signals returns curated feed items. The descriptions explicitly warn against cross-use, which removes ambiguity for an agent.

Naming Consistency4/5

All tools share the skim_ prefix and use lowercase snake_case, which is predictable. skim_extract and skim_read use verb-style names, while skim_signals is a noun-style name, a minor deviation from a strict verb pattern.

Tool Count5/5

Three tools is a lean but well-scoped set for a web-reader/extractor/feed service. Each tool covers a meaningful, non-redundant capability and earns its place.

Completeness4/5

The core workflows of reading a page, extracting structured data, and polling curated feeds are covered. Minor gaps exist: there is no discovery tool for available extraction presets or named signal feeds, but agents can likely work around this with prior knowledge.