
Deadchannel
io.github.plus8bitPublished by GitHub account plus8bitv0.1.1Updated Oct 24, 2026
Check an x402 endpoint before you pay it: verdict, risk score and what is wrong. $0.005 in USDC.
Overview
Checks whether an x402 paid endpoint is alive, honestly priced and safe to call, returning a verdict, risk score and issue list for $0.005 in USDC per call.
- What you can do
- Check x402 endpoints: return a verdict, a 0–100 risk score and the specific problems found (live, degraded, trap, testnet, dead, unknown). Detect bot walls, 402 response format, whether an advertised price is actually enforced, price sanity and stability, payout address and chain, advertised schemas and discovery metadata, latency and spec deviations. Probe using unpaid 402 responses, so the check itself spends nothing. Run from a CLI with JSON output and a non-zero exit code when a target is a trap or dead, so it fits into CI.
- When to use it
- Use it when an assistant is about to call a paid x402 endpoint and needs to know whether it is reachable, honestly priced and safe to pay, or when scanning a catalog in CI so agents are not pointed at bad endpoints.
- Requirements
- Runs locally as the npm package deadchannel-mcp over stdio with Node.js 22 or later. Paid checks need the DEADCHANNEL_PRIVATE_KEY environment variable, a wallet holding a little USDC on Base; the free health check does not. DEADCHANNEL_URL overrides the service endpoint, which defaults to a remote service, so network access is required.
Installation
In SourceWeft
- Open Deadchannel in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
deadchannel & Hosaka
Two services that sell to AI agents over x402, paid per call in USDC. No signup, no API key, no subscription — an agent calls, pays, and gets an answer.
Agents can install Hosaka as a skill, which tells them what it is for and when to reach for it:
Hosaka — company data for agents
Available as an MCP server, so any MCP client can buy from it directly:
HOSAKA_PRIVATE_KEY is a wallet holding a little USDC on Base. Four tools at
four prices, so a cheap question never pays for an expensive answer:
Why the dossier is worth having. A company proves it owns its domain to every SaaS product it buys by placing a DNS verification record, and authorises every sender it uses in its SPF record. Those two lists are a purchase history the company published itself.
Asking for figma.com returns Anthropic, OpenAI, Adobe, Atlassian, MongoDB
Atlas, Greenhouse, Docusign, Stripe, Notion, Dropbox and Zendesk — each with the
exact record that proves it, so a buyer can check rather than trust.
Page fingerprints require a loaded script or CDN host, never a mention: a site listing a vendor's logo among its integrations is not a site that uses it.
Live at hosaka-agents.vercel.app.
deadchannel — a risk oracle for x402 endpoints
Give it a URL, it tells an agent whether that endpoint is alive, honestly priced, and safe to call — without spending a cent.
Roughly 17% of probed x402 endpoints are dead or traps, and the Bazaar discovery layer ships no ranking, quality, or reputation signal by its own admission. An agent picking from that catalog is guessing with real money.
What it checks
Every verdict comes from unpaid 402 responses, which is what makes it cheap
enough to run across a whole catalog.
Verdicts: live, degraded, trap, testnet, dead, unknown, plus a
bounded 0–100 risk score.
Use
Requires Node 22+. There are no runtime dependencies — types are stripped natively, so there is no build step and nothing to audit but this repo.
Exit code is non-zero when any target is a trap or dead, so it drops into CI
as a guard against shipping an agent pointed at a bad endpoint.
First full catalog scan — 20 Aug 2026
node src/scan.ts --live 150 pulls every resource the public Bazaar facilitators
publish and audits it. Results over 14,979 resources:
Median price $0.01, range $0 to $1,000, 316,927 paid calls in 30 days.
The catalog is in better shape than the folklore suggests. What it is not is evenly distributed: three addresses list 2,750 resources between them and receive one call in eighty, which makes them roughly 15x over-represented relative to the demand they serve. Catalog size is not catalog depth.
A correction, and the guard against repeating it
An earlier version of this table claimed 89.8% of the catalog published no tags.
That was wrong. The loader read extensions.bazaar.tags only, while most
publishers put tags on the item root — the real figure is 40.9%.
The bug survived review because nothing asserted the positive count. A check
that only ever counts what is missing cannot tell "publishers omit this" apart
from "we are looking in the wrong place." test/catalog.test.ts now hand-counts
tags across all three known locations in a captured 200-item slice of the live
catalog and asserts the loader matches exactly, in both directions.
Notes from the wild
Built against live endpoints, not the spec alone:
- v2 moves payment requirements into a base64
payment-requiredheader and leaves the body as{}. A parser that only reads the body marks the official reference endpoint as dead. - v2 sends CAIP-2 network ids (
eip155:84532,solana:EtWTRA…) where v1 sent friendly names. Both are live simultaneously. - v2 renames
maxAmountRequiredtoamountand hoists sharedresourcemetadata to the payload root. - Several servers omit the top-level
x402Versionthe reference implementations all send, and some nestaccepts[]one level deeper than documented. Both are parsed and reported as warnings rather than rejected. - Most resources are POST. Probing them with GET returns 404/405, which looks exactly like a dead endpoint — it put our first live-probe dead rate at 25% when the real figure is 2.7%. The verb comes from the catalog now, with a POST retry when it is unknown. Any x402 index reporting a high dead rate is worth checking for this.
- Discovery metadata is scattered. The spec puts
serviceName/tagson the ResourceInfo object, the CDP catalog flattens them onto the item root, and a minority nest them underextensions.bazaar. Read one location and you will undercount by half. - Brokered rails exist. AWS Marketplace resources name the payee with a URN
under an
aws:basenetwork instead of a chain address. That is legitimate, but the funds go to the broker, so it is reported as a warning rather than scored as an invalid payout.
Selling
The service sells its own check over x402. src/server/ implements the seller
side of the v2 HTTP transport: PAYMENT-REQUIRED out, PAYMENT-SIGNATURE in,
PAYMENT-RESPONSE back, in the authorization flow — verify, run the resource,
then settle.
No private key is involved. A seller declares where settlement should land;
the buyer signs and the facilitator broadcasts. The payout address is therefore
public information and lives in deadchannel.config.json, where anyone can
audit it, rather than in a dashboard where nobody can.
Settlement runs only after the probe produced a result, so a failure on our side costs the buyer nothing.
GET /facilitator exists because a wrong credential otherwise stays invisible
until someone tries to pay, and the first to discover it would be a customer.
Live
The service is deployed at https://deadchannel.vercel.app, selling on Base mainnet at $0.005 per call and settling through the Coinbase facilitator.
First settled payment: 0x6ac4a22c,
block 50230005, 20 Aug 2026. Gas was paid by the facilitator, not the buyer —
in x402 the buyer only signs, so a wallet holding nothing but USDC can pay.
npm run validate re-runs the 25 preflight checks the Bazaar applies before it
will index a resource, and reports whether the listing is currently active. It
needs no key and moves no money.
Hosaka
A second shop on the same payout address, selling company facts to agents.
Live at https://hosaka-agents.vercel.app, settling on Base mainnet.
Profiles are assembled from four sources that need no key and no supplier: DNS over HTTPS, the RDAP registry, the TLS handshake and the homepage. Cost per profile is zero — the margin is in the assembly.
The interesting part is vendor detection. A company proves ownership to every SaaS product it buys by placing a DNS verification record, and authorises every sender it uses in its SPF record. Those two lists are a purchase history the company published itself. Every claim carries the record that proves it, so a buyer can check rather than trust.
Using it from Claude or ChatGPT
The Bazaar's search ignores the query and ranks by unique payers, so a new shop is invisible there regardless of quality. MCP is the channel that works on day one — the agent is already in a client that speaks it.
The buyer brings their own wallet: the key signs the payment locally and never leaves the machine. Without it the tools say what is missing instead of failing mid-conversation.
Development
License
MIT
Source: README.md at commit 6a85e58
Tools
0Version history
1- v0.1.1LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.
