Skip to main content
Glama

ASPERN: counterparty checks for agents

What this address sells

list_x402_endpoints
Read-onlyIdempotent

WHICH ENDPOINTS A PAYEE SELLS, or which ones match some text. The sharpest check a payment can get is the endpoint being bought, and until this a caller had to know its URL by heart. Nearly every catalogued resource names a payee, and the catalogue holds tens of thousands of them. Every field is the SELLER’s own catalogue entry and never our reading of it, and a listing is not evidence that the endpoint answers — test_purchase knocks on it. priceUsd is their published price and priceRaw is the figure in the asset’s own base units; the two are different claims. FREE.

Input Schema

NameRequiredDescriptionDefault
qNoPart of a URL, matched case-insensitively.
limitNoDefault 20, capped at 100.
payeeNoAn address, to list what it sells.

Output Schema

NameRequiredDescriptionDefault
metaNoHow current this answer is and what it was read from: `freshness` and the ages behind it. Present on every answer from this server, whatever the tool.
saysYesWhat the list is and is not: the seller’s own entries, and a listing is not evidence the endpoint answers.
countYesHow many came back, which is at most `limit` and says nothing about how many exist.
itemsYesOne per catalogued endpoint: `resource`, `payTo`, `priceUsd` and `priceRaw`, `asset`, `network`, the seller’s own `description` and when the listing was last seen — every one of those is the SELLER’s claim. `seenByUs` is the only field here that is OURS and the only one they cannot write: `state` (`answering`, `not-answering`, `unconfirmed` — one failure, which is a reason to ask again and not a finding — `seen-once`, or `never-knocked`), `answered` of `knocks`, `lastKnocked`, and an outage as a RANGE in `downAtLeastHours` / `downAtMostHours` rather than as a duration, because a stop happened somewhere between two knocks and that window is as wide as the gap between them. `never-knocked` and `seen-once` are statements about OUR reach, not about the seller, and today they cover most of the catalogue. The full timeline is on `test_purchase`.
cappedNoTRUE where the page came back full, so there are probably more; FALSE means the catalogue holds no further match and the list is everything we have, not just the first slice. This replaced a declared `limit` that the answer never carried — the envelope owns the paging keys — and it answers the question that field was for in one go.
warningsNoAnything the server wants a caller to know about THIS answer before acting on it. Empty is the normal case and is not a guarantee.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / meta
      Added value: +{
      +  "description": "How current this answer is and what it was read from: `freshness` and the ages behind it. Present on every answer from this server, whatever the tool.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "description": "Anything the server wants a caller to know about THIS answer before acting on it. Empty is the normal case and is not a guarantee.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  2. Added

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive. The description adds valuable behavioral context: the catalogue size, that fields are seller claims, that listing is not evidence the endpoint answers, and that it is FREE.

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

Conciseness3/5

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

The description is front-loaded with the core purpose and key caveats, but it is somewhat verbose and mixes several claims in dense prose, which may reduce clarity.

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?

Given an output schema exists, the description need not explain returns. It covers purpose, key caveats, and pricing semantics, making it nearly complete for this listing tool.

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 coverage is 100%, so the schema already documents q, limit, and payee. The description reinforces the payee and text-matching concepts but adds no new syntax or format details beyond the schema.

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?

The description states a specific verb and resource: listing x402 endpoints a payee sells or matching text. It clearly distinguishes from test_purchase by noting that a listing is not proof the endpoint answers.

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?

It implies usage for checking what a payee sells, but does not explicitly state when to use this tool versus alternatives like test_purchase or check_service_endpoint. The mention that test_purchase knocks on the endpoint is helpful context but not a full usage rule.

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