Skip to main content
Glama

Contrie

Extract structured data from a web page

contrie_extract

Extract structured data from one public web page. Describe the fields you want in natural language and/or pass a JSON Schema for the exact shape. Returns JSON plus metadata you can branch on: qualityScore (0-100; structured acceptance also requires success and valid), grounding (value presence, not field attribution), high-level progress and credits charged. Also returns groundingFields, a per-field grounding verdict with page excerpts, so you can see which extracted values have matching source text; this does not establish factual truth or correct field association. Requires an API key in the Authorization header; exact recorded URL-and-prompt requests listed in /llms.txt work without one. Not a crawler or a search engine: one page per call. Eligible JavaScript shells can use bounded browser rendering; successful rendered answers add 2 credits.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesThe public web page to extract from
maxAgeNoAccept page bytes from your account fetched up to this many seconds ago; origin expiry may be shorter. Default 0 bypasses cache reads/writes. Query/fragment/user-info URLs and restricted origin responses are never cached.
renderNoauto (default): render in a browser only if the page is a JavaScript shell; always: render first; never: plain fetch only. Rendering adds 2 credits.
schemaNoJSON Schema subset, max 10,000 serialized UTF-8 bytes: object/array/string/number/integer/boolean, properties, required, items, enum
extractNoWhat to extract, in natural language (e.g. "product name, price, and stock status")
idempotencyKeyNoStable request ID, 8–200 visible ASCII characters. Reuse the same ID and inputs to recover a completed response for 24 hours without another extraction or charge. Use a new ID for deliberately new work. Requires authentication.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden, and it does so thoroughly. It discloses the return metadata (qualityScore, grounding, progress, credits), clarifies the limits of grounding ('does not establish factual truth or correct field association'), states authentication requirements, explains rendering behavior and its credit cost, and notes caching nuances (via the maxAge parameter). This is a model of transparent disclosure.

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 dense but well-structured: it leads with the core action, then lists return fields, then covers auth and exceptions, and finally notes limitations and costs. Every sentence adds information; there is no fluff. It is longer than typical because the tool is complex, but it earns its length. A minor deduction for density, but it remains efficient.

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?

For a tool with six parameters, one nested object, and no output schema, the description covers almost everything an agent needs: how to specify extraction, what is returned, grounding limitations, authentication, rendering options, caching, and credit charges. It even mentions the /llms.txt special case. The only minor gap is error handling, but that is not essential for correct invocation. It is effectively complete.

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%, so the baseline is 3. The description adds value beyond the schema by explaining the two complementary ways to specify extraction: natural language (extract) and JSON Schema (schema), and how they can be combined ('and/or'). It also adds auth context not present in the schema. This exceeds the baseline but doesn't dive into each parameter's format since the schema already handles that.

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 opens with a precise verb and resource: 'Extract structured data from one public web page.' It also explicitly disambiguates from related tools by stating 'Not a crawler or a search engine: one page per call,' which clearly separates this extraction tool from any sibling that might handle crawling or broad searching. The purpose is unmistakable.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: it is for single-page extraction, not crawling or searching. It also specifies a conditional usage: 'Eligible JavaScript shells can use bounded browser rendering,' and notes that exact recorded requests from /llms.txt work without an API key. However, it does not explicitly name sibling tools or contrast with contrie_read or contrie_verify, so the guidance is strong but not fully explicit about alternatives.

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