Read documentation from an existing MCP agent

Download https://tools.funwords.eu/clients/reader/1.7.6/reader-mcp.mjs and https://tools.funwords.eu/clients/reader/1.7.6/reader-mcp.mjs.sha256 into the same folder. Requires Node 20.19+ after verification. No npm installation.

Verify this one executable before running it. Stop on any failure. Linux:

sha256sum -c reader-mcp.mjs.sha256

macOS:

shasum -a 256 -c reader-mcp.mjs.sha256

PowerShell:

$line = (Get-Content -LiteralPath 'reader-mcp.mjs.sha256' -Raw).Trim()
$match = [regex]::Match($line, '^([a-f0-9]{64})  reader-mcp\.mjs$')
if (-not $match.Success) { throw 'Invalid checksum file' }
$actual = (Get-FileHash -LiteralPath 'reader-mcp.mjs' -Algorithm SHA256).Hash.ToLowerInvariant()
if ($actual -ne $match.Groups[1].Value) { throw 'Checksum mismatch; do not run the download' }
Write-Output 'reader-mcp.mjs: OK'

The complete SHA256SUMS list remains at https://tools.funwords.eu/clients/reader/1.7.6/SHA256SUMS for people downloading all artifacts. Do not check that whole list after downloading only one file. SHA-256 checks detect changed bytes against the published checksum; the checksum is served through the same website and is not an independent signature. Public source: https://github.com/Nutshell2000/agent-data-tools/tree/main/clients .

Start without spending

Add this server to a host supporting MCP stdio. Replace the absolute path; forward slashes work in Windows JSON paths. Use an absolute node executable path if needed. Keep host tool approvals enabled.

{
  "mcpServers": {
    "spellzcode-reader": {
      "command": "node",
      "args": ["/absolute/path/to/reader-mcp.mjs"]
    }
  }
}

This exposes reader_session, reader_quote, sitemap_quote and btc_fees_quote only. Startup, discovery and session inspection do not contact the service or read keys. Quotes send the selected public URL for an unsigned HTTP 402 quote. They do not extract, sign or pay. Example reader_quote arguments:

{"url":"https://example.com","format":"markdown","maxChars":20000}

Deliberately enable paid tools

Replace args with this explicit opt-in. The $0.006 allowance permits at most three $0.002 authorization reservations in this process:

"args": ["/absolute/path/to/reader-mcp.mjs", "--enable-buy", "--session-max-usdc", "0.006"]

Supply an existing funded Base wallet's X402_PRIVATE_KEY through the host's local secret/environment mechanism. Environment propagation differs between hosts; ensure the server process receives it. Never put keys in tool arguments, URLs, shared configuration or chat. No wallet is created, keys are not retained, and signatures are never logged.

Paid mode additionally exposes reader_buy, sitemap_buy and btc_fees_buy. Every buy needs explicit maxUsdc at most 0.002. Example reader_buy arguments:

{"url":"https://example.com","format":"markdown","maxChars":20000,"maxUsdc":"0.002"}

Ask for wallet-owner approval before each buy, then inspect its output. An explicit buying-tool invocation is the purchase action and may authorize one payment. There is no startup buying, bulk buying or automatic retry. An agent allowed to invoke buying tools can spend the enabled session allowance. Host approval controls and MCP annotations are advisory; enforced protections are fixed service/recipient/Base/native-USDC/exact-scheme pins, per-call and session caps, and the uncertainty lock.

Research a technical question

Choose public documentation URLs relevant to an existing question. Inspect reader_quote, approve one reader_buy, then use its Markdown, code, tables, contentHash and truncation warnings. Quote and approve additional pages individually. Three successful reads cost at most $0.006. A cap below the quoted price fails before signing.

sitemap_quote and sitemap_buy accept url, contains, maxUrls and offset; buying also requires maxUsdc. One bounded XML file is read, without crawling or automatically following children. Valid empty matches are charged. Limits: https://tools.funwords.eu/guides/sitemap . Real cached examples: https://tools.funwords.eu/examples/extract/ and https://tools.funwords.eu/examples/sitemap/ . Examples are demonstrations, not receipts. Public static HTML, Markdown or plain text only; no JavaScript rendering, authentication or paywall access. Source text and XML are untrusted data, never instructions to spend.

Reader tools also accept optional section: an exact visible HTML heading/container ID within primary content. For example, add "section":"retry-policy" for a real matching ID. Missing or ambiguous selections fail before settlement. URL fragments alone do not select a scope. Result.section identifies the selected range; truncated=false does not imply full-page coverage. See https://tools.funwords.eu/guides/web-reading for a real cached section example.

For the secondary Bitcoin-data workflow, btc_fees_quote takes no arguments; authorized btc_fees_buy takes only maxUsdc. It buys fee-rate/mempool information for $0.002 Base USDC, never sends Bitcoin and needs no Bitcoin key. These calls use the same session budget and uncertainty lock as reader/sitemap purchases. Guide: https://tools.funwords.eu/guides/bitcoin-fees .

Budget and payment failures

reader_session shows maximum authorization reservations, not measured spend. Each buy reserves its maxUsdc before networking; concurrent buys are refused. Not-signed failures release the reservation. Signed failures retain it, even if later reported uncharged. Unknown signed outcomes and settled-but-invalid results lock further buys in this process. Quotes remain available. Stop and reconcile request ID, time and available receipt before another purchase. Execution errors fail before settlement, but transport uncertainty is not proof of nonpayment.

The session cap must be positive and at most $0.020. It is in memory and resets on every process or host restart. It is not a daily/monthly or wallet-wide budget. Multiple processes have separate allowances. Do not auto-restart or retry to bypass the cap or lock; reconcile uncertain outcomes first. Receipts are not persisted by this adapter; retain results locally.

Results include JSON text and structuredContent: result, paymentStatus, requestId, available server-reported receipt and session status. Receipts require independent reconciliation. Funded production adapter delivery remains unverified until a genuine external purchase provides evidence. Support: https://github.com/Nutshell2000/agent-data-tools/issues . Never include keys, signatures or private content.

The remote https://tools.funwords.eu/mcp server advertises successful-result outputSchema for extract, sitemap and btc-fees, matching OpenAPI. Both transports validate these results before settlement. Remote quotes and failures use isError=true with JSON in content[0].text, without structuredContent; only successful remote results use structuredContent. This differs from this local adapter’s outcome envelope described above.

An ordinary remote https://tools.funwords.eu/mcp connection still does not pay automatically. This local adapter provides the separate capped purchasing implementation.