Skip to main content
Glama

Fresh402 Agent Intelligence

fresh402_extract

Extract readable text, metadata, headings, public links and embedded JSON-LD from one public HTTPS document. Use to read static HTML, JSON or plain text; no watch or prior registration is needed. Optional feed_mode:entries projects bounded RSS2/Atom IDs, declared links, timestamps, content fingerprints and indexed source evidence; omit for original XML-as-text behavior. No feed crawling or background subscription. Optional CSS scope, noise exclusions and exact JSON Pointer selection via json_pointer, or an ordered projection of up to8 fields via json_pointers (mutually exclusive; JSON only, any missing field returns422). One fetch/JSON parse with aggregate work/output limits. Omit json_pointer to retain full-document extraction. max_chars defaults to 20000 and limits returned text, not fetch size. Does not render JavaScript, crawl links or compare versions. $0.010 USDC per call on Base mainnet (eip155:8453), requiring an x402-capable MCP payment client and funded native-USDC payer. An ordinary MCP client receives a payment challenge. Alternatively use prepaid credits through REST or this MCP tool: X-Fresh402-API-Key in HTTP, with params._meta["fresh402/prepaid"] containing idempotency_key, tariff_version and max_credits. When root mpp_payments.enabled is true, native MPP EVM charge is another option at the same USDC price: use an authorized Base EIP-712 signer and official mppx client, org.paymentauth/credential metadata and a persisted private recovery token. MPP receipt: org.paymentauth/receipt; see docs/MPP.md. Never combine MPP, prepaid and x402. Discover packages at /v2/prepaid/plans; see docs/AGENT_PREPAID.md for browserless wallet enrollment, bounded early credits and recovery. Optional Circle Gateway x402 is available only when root circle_gateway.enabled is true. Use the GatewayWalletBatched quote, a funded Base Gateway EOA and a persisted private recovery token. Pending batches return 409; replay the original proof/input/token after 60 seconds. Results require Gateway confirmed/completed evidence; never mix providers. No Circle prepaid funding. See docs/CIRCLE_GATEWAY.md. Optional free evaluation: inspect GET /v3/agent-trial for the CAPTCHA-free machine trial (unfunded EOA ownership signing required). Web tools may also use the separate human trial at /v2/trial. Only enabled, eligible allowances authorize free execution; shared capacity can return 429 earlier. Send X-Fresh402-Trial-Key and a distinct persisted Idempotency-Key per logical REST or MCP call. Reuse the same tool/input/key for retained recovery. Never mix trial and payment/prepaid credentials. Exhaustion never authorizes a charge; ordinary requests without trial credentials retain the paid challenge.

Input Schema

NameRequiredDescriptionDefault
urlYesRequired absolute public HTTPS document URL, at most 4096 characters, e.g. 'https://example.com/docs'. Only port 443; no embedded credentials, private/local targets or authenticated pages. Fresh402's own service URLs, including its discovery /openapi.json, cannot be targets; choose an external public document. HTML, JSON and plain text are supported; JavaScript is not executed. DNS, redirect and size limits also apply.
selectorNoOptional HTML CSS scope, 1-256 characters, e.g. 'article'. If omitted, choose main, then article, then body, then the document. Explicit scope must match (otherwise 422). Built-in noise and ignore_selectors are removed. Not supported for JSON/plain text.
feed_modeNoOptional RSS2/Atom projection: 'entries'. Omit for unchanged XML-as-text extraction and existing hashes. Accepts XML/+xml/text/plain with an RSS2 root or namespaced Atom feed; no RSS1/RDF, HTML repair, DTD or external entity/content fetching. Cannot combine with CSS/JSON selection or exclusions. Limits:262144 UTF-8 source bytes,4096 XML elements,depth32,100 entries,16384 characters/field,131072 projected bytes; excess fails explicitly. Returns feed identity, inert declared links, entry IDs/timestamps/content fingerprints and indexed source evidence. Identical duplicate entries deduplicate; conflicting IDs fail422. Feed text/hash cover the canonical projection; max_chars clips text and omits structured feed when clipped. Existing registration/watch semantics remain unchanged.
max_charsNoOptional integer limit on returned normalized text: 100-50000 characters, default 20000. Does not raise fetch/parser limits; the hash covers full normalized text before truncation. If JSON text is truncated, parsed data is omitted (data:null, data_omitted:true).
json_pointerNoOptional exact RFC 6901 JSON Pointer, at most 256 characters, e.g. '/product/price' or '/items/0/name'. JSON documents only; '~0' means '~' and '~1' means '/'. Empty string selects the whole document. Omit to extract the entire normalized document. Selection runs after ignore_json_paths; a missing or excluded target returns 422. Array indices are zero-based canonical integers; '*' is a literal key, not a wildcard. Returned text/data/hash cover the selected value; max_chars and data_omitted still apply.
include_linksNoOptional boolean, default true. Include bounded public links extracted from HTML. False returns an empty links array without changing normalized text or its hash. Does not crawl linked pages; JSON/plain text do not provide HTML links.
json_pointersNoOptional ordered1-8 unique exact JSON Pointers; mutually exclusive with json_pointer, JSON only. One fetch and JSON parse; exclusions run first. Any missing/excluded field fails the whole operation with422; null is a valid value. Returns data:[{pointer,value},...] and canonical aggregate text/hash. max_chars clips the aggregate; clipped data is omitted. Combined projection limited to200000 UTF-8 bytes and20000 nodes. Example:['/product/price','/product/stock'].
ignore_selectorsNoOptional array of up to 20 CSS selectors (each 1-256 characters) to remove from HTML in addition to built-in noise filtering. Default: no extra exclusions ([]). HTML only; use ignore_json_paths for JSON. Example: ['.timestamp', '.ad'].
ignore_json_pathsNoOptional array of up to 20 JSON Pointer-style paths to remove before JSON normalization and hashing. Each must start with '/' and be 1-256 characters; supports '*' segments. Default: [] (no exclusions). JSON only. Example: ['/updated_at', '/items/*/request_id'].
include_structured_dataNoOptional boolean, default true. Include embedded JSON-LD extracted from HTML in structured_data. False returns an empty structured_data array. This does not control the parsed data field for a JSON document, and does not fetch external linked data.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / allOf
      Added value: +[
      +  {
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "selector"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "ignore_selectors"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "ignore_json_paths"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "json_pointer"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "json_pointers"
      +          ]
      +        }
      +      ],
      +      "required": [
      +        "feed_mode"
      +      ]
      +    }
      +  }
      +]
    • changedInput schema / description
      Previous value: -"Extract a required public URL without creating or requiring a watch. Optional content rules scope/remove noise; max_chars limits returned text and the two include flags control supplementary HTML data. Unknown fields are rejected."New value: +"Extract a required public URL without creating or requiring a watch. Optional content rules scope/remove noise; max_chars limits returned text and the two include flags control supplementary HTML data. Opt-in feed_mode:'entries' projects bounded RSS2/Atom; omit to preserve original extraction. Unknown fields are rejected."
    • addedInput schema / properties / feed_mode
      Added value: +{
      +  "const": "entries",
      +  "description": "Optional RSS2/Atom projection: 'entries'. Omit for unchanged XML-as-text extraction and existing hashes. Accepts XML/+xml/text/plain with an RSS2 root or namespaced Atom feed; no RSS1/RDF, HTML repair, DTD or external entity/content fetching. Cannot combine with CSS/JSON selection or exclusions. Limits:262144 UTF-8 source bytes,4096 XML elements,depth32,100 entries,16384 characters/field,131072 projected bytes; excess fails explicitly. Returns feed identity, inert declared links, entry IDs/timestamps/content fingerprints and indexed source evidence. Identical duplicate entries deduplicate; conflicting IDs fail422. Feed text/hash cover the canonical projection; max_chars clips text and omits structured feed when clipped. Existing registration/watch semantics remain unchanged.",
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • addedInput schema / not
      Added value: +{
      +  "required": [
      +    "json_pointer",
      +    "json_pointers"
      +  ]
      +}
    • addedInput schema / properties / json_pointers
      Added value: +{
      +  "description": "Optional ordered1-8 unique exact JSON Pointers; mutually exclusive with json_pointer, JSON only. One fetch and JSON parse; exclusions run first. Any missing/excluded field fails the whole operation with422; null is a valid value. Returns data:[{pointer,value},...] and canonical aggregate text/hash. max_chars clips the aggregate; clipped data is omitted. Combined projection limited to200000 UTF-8 bytes and20000 nodes. Example:['/product/price','/product/stock'].",
      +  "items": {
      +    "description": "One exact RFC6901 pointer: up to256 characters/64 segments; '' selects root, '/' the empty key, '~0'/'~1' escape '~'/'/'. Example:'/product/price'; '*' is literal.",
      +    "maxLength": 256,
      +    "pattern": "^(?:\\/(?:[^~]|~[01])*)?$",
      +    "type": "string"
      +  },
      +  "maxItems": 8,
      +  "minItems": 1,
      +  "type": "array",
      +  "uniqueItems": true
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / json_pointer
      Added value: +{
      +  "description": "Optional exact RFC 6901 JSON Pointer, at most 256 characters, e.g. '/product/price' or '/items/0/name'. JSON documents only; '~0' means '~' and '~1' means '/'. Empty string selects the whole document. Omit to extract the entire normalized document. Selection runs after ignore_json_paths; a missing or excluded target returns 422. Array indices are zero-based canonical integers; '*' is a literal key, not a wildcard. Returned text/data/hash cover the selected value; max_chars and data_omitted still apply.",
      +  "maxLength": 256,
      +  "pattern": "^(?:\\/(?:[^~]|~[01])*)?$",
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / url / description
      Previous value: -"Required absolute public HTTPS document URL, at most 4096 characters, e.g. 'https://example.com/docs'. Only port 443; no embedded credentials, private/local targets or authenticated pages. HTML, JSON and plain text are supported; JavaScript is not executed. DNS, redirect and size limits also apply."New value: +"Required absolute public HTTPS document URL, at most 4096 characters, e.g. 'https://example.com/docs'. Only port 443; no embedded credentials, private/local targets or authenticated pages. Fresh402's own service URLs, including its discovery /openapi.json, cannot be targets; choose an external public document. HTML, JSON and plain text are supported; JavaScript is not executed. DNS, redirect and size limits also apply."
  5. Changed11 schema fields changed
    • addedInput schema / description
      Added value: +"Extract a required public URL without creating or requiring a watch. Optional content rules scope/remove noise; max_chars limits returned text and the two include flags control supplementary HTML data. Unknown fields are rejected."
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "include_links": true,
      +    "include_structured_data": false,
      +    "max_chars": 20000,
      +    "selector": "main",
      +    "url": "https://example.com/docs"
      +  }
      +]
    • addedInput schema / properties / ignore_json_paths / description
      Added value: +"Optional array of up to 20 JSON Pointer-style paths to remove before JSON normalization and hashing. Each must start with '/' and be 1-256 characters; supports '*' segments. Default: [] (no exclusions). JSON only. Example: ['/updated_at', '/items/*/request_id']."
    • addedInput schema / properties / ignore_json_paths / items / description
      Added value: +"JSON Pointer-style path, 1-256 characters, starting with '/'. Decode '~0' as '~' and '~1' as '/'; '*' matches all object keys or array elements. Example: '/items/*/updated_at'."
    • addedInput schema / properties / ignore_selectors / description
      Added value: +"Optional array of up to 20 CSS selectors (each 1-256 characters) to remove from HTML in addition to built-in noise filtering. Default: no extra exclusions ([]). HTML only; use ignore_json_paths for JSON. Example: ['.timestamp', '.ad']."
    • addedInput schema / properties / ignore_selectors / items / description
      Added value: +"HTML element(s) to remove before normalization: a supported CSS selector, 1-256 characters, e.g. '.timestamp' or 'nav'."
    • addedInput schema / properties / include_links / description
      Added value: +"Optional boolean, default true. Include bounded public links extracted from HTML. False returns an empty links array without changing normalized text or its hash. Does not crawl linked pages; JSON/plain text do not provide HTML links."
    • addedInput schema / properties / include_structured_data / description
      Added value: +"Optional boolean, default true. Include embedded JSON-LD extracted from HTML in structured_data. False returns an empty structured_data array. This does not control the parsed data field for a JSON document, and does not fetch external linked data."
    • addedInput schema / properties / max_chars / description
      Added value: +"Optional integer limit on returned normalized text: 100-50000 characters, default 20000. Does not raise fetch/parser limits; the hash covers full normalized text before truncation. If JSON text is truncated, parsed data is omitted (data:null, data_omitted:true)."
    • addedInput schema / properties / selector / description
      Added value: +"Optional HTML CSS scope, 1-256 characters, e.g. 'article'. If omitted, choose main, then article, then body, then the document. Explicit scope must match (otherwise 422). Built-in noise and ignore_selectors are removed. Not supported for JSON/plain text."
    • addedInput schema / properties / url / description
      Added value: +"Required absolute public HTTPS document URL, at most 4096 characters, e.g. 'https://example.com/docs'. Only port 443; no embedded credentials, private/local targets or authenticated pages. HTML, JSON and plain text are supported; JavaScript is not executed. DNS, redirect and size limits also apply."
  6. Added

TDQS

A4.1/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 does so extensively: it discloses one-fetch/JSON-parse behavior, output and work limits, 422 failures for missing JSON fields, 409 batch replay behavior, payment/auth requirements, prepaid and trial constraints, and prohibited credential combinations.

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

Conciseness2/5

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

The first sentence is well front-loaded, but the description then balloons into long payment, prepaid, MPP, Circle Gateway, trial and documentation instructions. Much of this is operational payment material rather than extraction-tool selection or invocation guidance, making the definition poorly sized.

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?

There is no output schema, but the description names the returned artifacts such as text, metadata, headings, links, structured_data and feed projection fields, and it explains major constraints and payment paths. It could still specify the exact response shape more precisely, but it is complete enough for correct invocation.

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 all 10 parameters are already well documented in the input schema. The description restates some semantics such as feed_mode, json_pointer/json_pointers mutual exclusion, max_chars clipping and CSS noise exclusions, but adds little beyond the detailed 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 opening sentence states a specific verb and resources: extracting readable text, metadata, headings, links and JSON-LD from one public HTTPS document. It also distinguishes this tool from watch/registration workflows and from JavaScript rendering, crawling or version comparison.

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 clearly says to use this tool for static HTML, JSON or plain text, and notes that no watch or prior registration is needed. It also rules out feed crawling, background subscriptions, JavaScript rendering and version comparison, though it does not explicitly name sibling alternatives such as the diff or watch tools.

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.