Skip to main content
Glama

Fetch a URL behind an ASP circuit breaker

asp_guarded_fetch

Fetches public HTTP(S) URLs via GET under redirect and size limits; on ASP terminal signals, redeems the ticket, verifies the Ed25519 receipt, and returns cached receipt-backed responses.

Instructions

Fetches an http(s) URL with GET (public hosts only, at most 5 redirects, each hop checked, at most 256 KiB). An answer without an ASP signal is returned as data, its text cut at 20 000 characters. An ASP terminal-state signal (HTTP 429, or HTTP 200 with transport_envelope, header Agent-Ticket) states that the resource cannot be obtained through that host; the tool then redeems the single-use ticket at the origin that sent the signal (POST, out of band), reads that host's manifest (/.well-known/agent-shelter.json, a discovery request) and verifies the Ed25519 receipt against the public key published there. From then on, for the lifetime of this server process, every call for the same resource - the requested URL, each redirect hop and the URL the signal names - is answered from that receipt without a request. The redemption is recorded by the node like any receipt (on the reference node pseudonymised, see https://agent-shelter.org/privacy); the receipt documents a terminal state on that host, never that the original task was done.

Input Schema

NameRequiredDescriptionDefault
urlYesThe http(s) URL to fetch

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4/5.0
Behavior5/5

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

The description discloses behavior far beyond the annotations: GET-only, public hosts, max 5 redirects with per-hop checks, 256 KiB cap, 20 000-char truncation, ASP terminal-state detection, out-of-band POST ticket redemption, manifest read and Ed25519 receipt verification, and process-lifetime caching. These details are consistent with the annotations (readOnlyHint=false matches the redemption POST; idempotentHint=false matches single-use tickets).

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 core action is front-loaded and every sentence carries real behavioral content. It is dense and long, but the complexity of the fetch-plus-redemption flow justifies most of the length; a slightly tighter phrasing would reach a 5.

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 complex tool with no output schema, it covers return handling (truncated text as data, or a verified receipt), caching semantics, and privacy of the redemption record. Response shape beyond 'receipt' or 'data' is left implicit, which keeps it from a 5.

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 url parameter is documented, but the description adds constraints not in the schema, notably 'public hosts only' and the redirect-hop treatment of the URL. That is meaningful added meaning for the single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (fetches an http(s) URL with GET) plus a distinct scope (public hosts, redirect and size limits). It is clearly a fetch tool with ASP-aware behavior, distinguishable from the more diagnostic-sounding siblings. It stops short of naming a sibling it is not, so it falls just short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by the described behavior but there is no explicit 'use this when / instead of check_asp_manifest or query_reader_disposition' routing. An agent must infer when to reach for this fetch versus the manifest-check or disposition tools.

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