Skip to main content
Glama

Signal Desk

monitor

Pay-per-call tools for AI agents, paid in USDC on Base through x402. No account and no API key: the first call answers 402 Payment Required with the price, the agent's wallet signs a transfer for exactly that amount, and the second call gets the result plus a receipt. Settlement happens only after the work succeeded, so a call the service refuses is never charged.

tool

HTTP route

price

what the agent gets

render_page

POST /render

$0.01

a public page opened in a real headless Chrome, returned as clean Markdown, a PNG screenshot or a PDF

host_file

POST /files

$0.01

up to 10 MB stored at a public link for 1 to 168 hours, free to download

schedule_callback

POST /later

$0.005

a URL called 60 seconds to 7 days from now (GET, or POST with a JSON body), plus a free status page

recent_launches

POST /launches

$0.005

every pump.fun token created in the last N minutes, with its creator, the creator's 7-day launch count, and the live Google Trends or Polymarket topic its name matches

trending_topics

POST /trends

$0.01

what is trending now across Google Trends (US) and Polymarket, merged by topic, strongest first, with score, velocity, a type label and the headlines behind it

endpoint

URL

HTTP routes

https://x402-paywall.huntercarver24.workers.dev

MCP, all five tools

https://x402-mcp.huntercarver24.workers.dev/mcp (registry: io.github.huntercarver24/signal-desk)

MCP, the two feeds only

https://x402-mcp.huntercarver24.workers.dev/feeds/mcp (registry: io.github.huntercarver24/pumpfun-trends)

Every route's fields, limits and an example are in its 402 answer and in GET / on the HTTP host. Every refusal (bad input, private address, executable upload) carries the same usage object, free.

Use it

Use a throwaway wallet holding a few cents of USDC on Base, never a main wallet.

Any HTTP client

import { x402Client } from "@x402/core/client";
import { toClientEvmSigner } from "@x402/evm";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
registerExactEvmScheme(client, {
  signer: toClientEvmSigner(privateKeyToAccount(process.env.X402_PRIVATE_KEY)),
});
const payingFetch = wrapFetchWithPayment(fetch, client);

const res = await payingFetch("https://x402-paywall.huntercarver24.workers.dev/render", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ url: "https://example.com", format: "markdown" }),
});
console.log(res.status, await res.text());

npm install @x402/core @x402/evm @x402/fetch viem, Node 20 or later, saved as an .mjs file.

Claude Code

claude plugin marketplace add huntercarver24/signal-desk
claude plugin install x402-pay@signal-desk
export X402_PRIVATE_KEY=0x...

The x402-pay skill teaches Claude the five routes and pays them with scripts/pay.mjs. Claude says the price before the first paid call, and each payment runs as a command you approve.

MCP clients that pay x402

An MCP client needs x402 support to pay; any other client still lists the tools and sees each price in a payment-required result. With @x402/mcp:

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import { x402Client } from "@x402/core/client";
import { toClientEvmSigner } from "@x402/evm";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapMCPClientWithPayment } from "@x402/mcp";
import { privateKeyToAccount } from "viem/accounts";

const mcp = new Client({ name: "my-agent", version: "1.0.0" });
await mcp.connect(
  new StreamableHTTPClientTransport(new URL("https://x402-mcp.huntercarver24.workers.dev/feeds/mcp"))
);
const payment = new x402Client();
registerExactEvmScheme(payment, {
  signer: toClientEvmSigner(privateKeyToAccount(process.env.X402_PRIVATE_KEY)),
});
const paying = wrapMCPClientWithPayment(mcp, payment);

const result = await paying.callTool("trending_topics", { hours: 6, limit: 10 });
console.log(result.content[0].text);

npm install @modelcontextprotocol/sdk @x402/core @x402/evm @x402/mcp viem.

OpenCode

mkdir -p .opencode/plugins && curl -fsSL https://raw.githubusercontent.com/huntercarver24/signal-desk/main/opencode/x402-tools.ts -o .opencode/plugins/x402-tools.ts

Then add the dependencies listed in opencode/package.json to .opencode/package.json; OpenCode installs them at startup. The agent gets the five tools.

Related MCP server: Ausca

House rules

  • A refused call costs nothing. Neither does a feed that has fallen behind its source: it answers 503 with retry-after instead of charging for stale data.

  • The launch feed and the trend radar are data only. Nothing in them rates, recommends or trades a token. Sports topics and markets are filtered out, by keywords and by a model check on each topic before it is shown.

  • No caller has an account, so nothing is stored about you beyond the payment on chain. Hosted files expire at the time you choose.

Status

monitor/check.mjs probes every surface a paying agent touches, for free, every 15 minutes: the paywall's health and configuration, a live 402 with its terms, the trend sources' freshness, the launch feed's lag, and both MCP endpoints. The badge above is its latest result.

Known issue: the launch feed's Solana data provider has blocked the project since October 29, 2026. Until that clears, POST /launches and recent_launches refuse with a free 503; the other four tools are unaffected.

License

MIT. The services themselves are run by Hunter Carver; this repository holds the clients, the uptime check and these docs.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to discover, pay for, and invoke x402-priced services such as document OCR, document analysis, media transcription, remote browser sessions, and receive-only email inboxes using USDC on Base, with no API keys and receipt-backed results.
    40
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to call pay-per-request AI and web tools—including web-to-Markdown reading, PDF extraction, translation, compliance lookups, domain/email/Solana data, and prediction-market intelligence—without accounts or API keys, settling each call in USDC via x402 on Base, Solana, or Arc.
    MIT