x402lint
Server Details
Free x402 endpoint linter: unpaid 402 challenge, payTo/asset/amount, CORS, directory readiness.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- something-agent/x402lint
- GitHub Stars
- 0
- Server Listing
- x402lint
TDQS
Scored across 2 tools
Both tools perform x402 linting, but the descriptions draw a sharp line: one lints a PaymentRequired object you already possess with no network access, the other fetches the live 402 from an endpoint. An agent choosing between them has the decisive criterion (do I have the object, or a URL?) stated explicitly.
Both tools follow the same verb_noun snake_case convention (lint_payment_required, lint_x402_endpoint) with a shared 'lint_' prefix that groups them cleanly. Fully predictable pattern.
Two tools is thin in absolute terms, but the server has a deliberately narrow purpose (x402 payment-challenge linting). It sits at the borderline where the surface feels minimal rather than obviously wrong-sized.
Together the pair covers the two realistic inputs — an endpoint URL (live fetch, transport, discovery) and an offline header/JSON blob — which is essentially the full lifecycle for a linter. Minor gaps like batch linting of multiple endpoints or re-checking a saved report are absent but not blocking.
Available Tools
2 toolslint_payment_requiredAInspect
Lint a PaymentRequired object you already have (decoded JSON, a JSON string, or the raw base64 PAYMENT-REQUIRED header). Same field/value checks as lint_x402_endpoint, no network access. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Optional: the URL it was served from, to check resource.url | |
| payment_required | Yes | Object, JSON string, or base64 header value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses that there is no network access, that the checks are identical to lint_x402_endpoint, and that it is free, but it says nothing about the shape of the lint results (findings, severities, pass/fail) and there is no output schema to fall back on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what is linted, then the accepted formats, then the differentiators (no network, free). No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers input formats, the network-free contract, parity with the sibling, and cost — enough to invoke correctly for a simple validator with two params and no side effects. The one real gap is the return value, since no output schema exists to describe the lint findings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented. The description restates the accepted forms of payment_required (JSON object, JSON string, raw base64 header) and never mentions the optional url parameter, which only the schema explains. Baseline 3 is appropriate when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (lint) and a specific resource (a PaymentRequired object you already hold), and enumerates the three accepted input encodings. It also names the sibling lint_x402_endpoint and the axis that separates them (no network access), so an agent can pick without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"A PaymentRequired object you already have" plus "no network access" clearly signals the condition that selects this tool over lint_x402_endpoint, which presumably fetches a URL itself. It stops short of an explicit "use lint_x402_endpoint when you only have a URL" statement, so the routing is inferred rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lint_x402_endpointAInspect
Unpaid lint of an x402 endpoint: fetches the 402 (GET and POST), then checks the challenge (version, accepts[] fields, CAIP-2 network, payTo/asset/amount sanity, EIP-712 name/version, timeouts, resource), transport (redirects, cache headers, CORS) and discovery files. Returns findings with ids, severities and fixes. Never pays. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The paid x402 URL | |
| method | No | Default auto: tries both |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the no-payment guarantee, that both GET and POST are exercised, and what the response contains (ids, severities, fixes). It stops short of mentioning auth requirements, rate limits, or side effects on the target server, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and the no-payment guarantee are front-loaded, and the parenthetical enumeration is dense but informative. It is one long sentence with a checklist, which is efficient though slightly hard to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing the return shape (findings with ids, severities, fixes). For a two-parameter, read-only diagnostic, the remaining gaps — auth expectations and target-side effects — are minor but real.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, including the 'auto: tries both' enum meaning. The description restates that GET and POST are both fetched but adds no syntax or format meaning beyond the schema, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource — 'Unpaid lint of an x402 endpoint' — and enumerates exactly what is checked (challenge, transport, discovery files), so an agent knows precisely what the tool does. It never mentions the sibling lint_payment_required, so there is no explicit differentiation, which keeps it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Unpaid' and 'Never pays. Free.' clearly establish this as a safe pre-flight check that can run without spending funds, which is a real usage signal. However, it gives no explicit when-not conditions and never routes the agent to or away from lint_payment_required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
lint_payment_required - First observed
lint_x402_endpoint
Related MCP Connectors
Diagnose x402 seller endpoints: what is wrong with your 402 challenge, and how to fix it.
Lints whether a paid API's 402 response speaks the x402 protocol correctly.
Test any x402 paid URL without paying: 402, PAYMENT-REQUIRED, USDC, amounts, payTo, EIP-712, CORS.
Audits any URL for HTTP 402 x402 V2 compliance, PAYMENT-REQUIRED headers, Bazaar schema, and MCP.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables agents and IDE assistants to validate x402 payment endpoints without shelling out: it fetches a URL unpaid and returns a conformance report on the returned 402 challenge, decodes and classifies base64 payment blobs, and summarises which scheme/network pairs a facilitator can settle.52 PyPIMIT
- AlicenseAqualityBmaintenanceMCP server that checks an x402 paid endpoint before an agent pays it, and checks afterwards that the receipt opens to exactly one real on-chain settlement. Two tools, no account, no API key.20Apache 2.0
- FlicenseAqualityBmaintenanceEnables MCP-capable agents to search the curated gold-402 directory of x402 services, probe any endpoint for valid 402 payment terms, and optionally purchase a human editorial verdict for a resource.5-
- AlicenseNot gradedqualityAmaintenanceEnables HTTP 402 payment protocol interactions on Stellar, allowing payment intent probing, guarded paid fetches, and budget status queries.8 npmApache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.