page_delta renders a public page, returns bounded Markdown and exact focus evidence, and compares it with that XRPL payer's prior observation. It uses real XRPL mainnet RLUSD only after you explicitly configure a dedicated wallet and hard spend limits.
Release status: @bitbooth/mcp-fetch@2.3.1 is public on npm and clean-install verified. Official MCP Registry publication is pending separate approval and public readback. Installing it does not spend: without a payment wallet it exposes only free discovery and preflight. page_delta appears only after the operator selects xrpl-rlusd, provides a dedicated seed, and sets a per-call cap of at least 0.010000 plus an explicit daily cap.
The examples below enable real-money PageDelta. Replace the seed placeholder through your MCP client's secret environment facility, use a dedicated low-balance XRPL wallet, and lower the daily cap if one observation is all you intend to authorize.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"bitbooth-fetch": {
"command": "npx",
"args": ["-y", "@bitbooth/mcp-fetch@2.3.1"],
"env": {
"BITBOOTH_PAYMENT_RAIL": "xrpl-rlusd",
"BITBOOTH_XRPL_SEED": "sEdDEDICATED_LOW_BALANCE_AGENT_WALLET",
"BITBOOTH_MAX_PER_CALL_USD": "0.010000",
"BITBOOTH_DAILY_LIMIT_USD": "0.10"
}
}
}
}Restart Claude Desktop. Your agent now has page_delta plus the lower-priced XRPL watch tools.
claude mcp add bitbooth-fetch \
--env BITBOOTH_PAYMENT_RAIL=xrpl-rlusd \
--env BITBOOTH_XRPL_SEED=sEdDEDICATED_LOW_BALANCE_AGENT_WALLET \
--env BITBOOTH_MAX_PER_CALL_USD=0.010000 \
--env BITBOOTH_DAILY_LIMIT_USD=0.10 \
-- npx -y @bitbooth/mcp-fetch@2.3.1Cursor → Settings → MCP → "Edit in settings.json":
{
"mcpServers": {
"bitbooth-fetch": {
"command": "npx",
"args": ["-y", "@bitbooth/mcp-fetch@2.3.1"],
"env": {
"BITBOOTH_PAYMENT_RAIL": "xrpl-rlusd",
"BITBOOTH_XRPL_SEED": "sEdDEDICATED_LOW_BALANCE_AGENT_WALLET",
"BITBOOTH_MAX_PER_CALL_USD": "0.010000",
"BITBOOTH_DAILY_LIMIT_USD": "0.10"
}
}
}
}Edit ~/.continue/config.json:
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@bitbooth/mcp-fetch@2.3.1"],
"env": {
"BITBOOTH_PAYMENT_RAIL": "xrpl-rlusd",
"BITBOOTH_XRPL_SEED": "sEdDEDICATED_LOW_BALANCE_AGENT_WALLET",
"BITBOOTH_MAX_PER_CALL_USD": "0.010000",
"BITBOOTH_DAILY_LIMIT_USD": "0.10"
}
}
}
]
}
}If you're building your own agent client, BitBooth speaks the standard MCP 2025-06-18 protocol over stdio. To verify the package boots:
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}' | \
BITBOOTH_PAYMENT_RAIL=xrpl-rlusd BITBOOTH_XRPL_SEED=sEdDEDICATED_LOW_BALANCE_AGENT_WALLET \
BITBOOTH_MAX_PER_CALL_USD=0.010000 BITBOOTH_DAILY_LIMIT_USD=0.10 \
npx -y @bitbooth/mcp-fetch@2.3.1Returns the standard MCP initialize response without spending. Explicit XRPL RLUSD mode exposes page_delta, watch_page, and watch_xrpl_wallet; Base mode exposes fetch.
Do not use a personal or treasury wallet. Keep only the small RLUSD call budget and XRP fee reserve you intend this agent to control, and inject the seed through the MCP client's secret environment facility.
PageDelta costs exactly 0.010000 RLUSD per delivered observation on this MCP path. The wallet also needs the correct Ripple RLUSD trustline and a small XRP reserve for network fees. The package pins the issuer, merchant, resource, network, source tag, and one-time invoice from the fresh challenge.
The per-call cap must be at least the PageDelta price. The daily cap is your own cumulative ceiling; 0.10 permits at most ten $0.01 observations before fees and only if prior results are acknowledged.
BITBOOTH_PAYMENT_RAIL=xrpl-rlusd
BITBOOTH_XRPL_SEED=sEdDEDICATED_LOW_BALANCE_AGENT_WALLET
BITBOOTH_MAX_PER_CALL_USD=0.010000
BITBOOTH_DAILY_LIMIT_USD=0.10page_delta deliberatelyEach new paid observation needs a fresh UUID requestId. Reuse that UUID only to recover the same attempt after an uncertain delivery. Before starting another observation, explicitly acknowledge the prior completed request with acknowledgeRequestId.
Once the XRPL configuration is active, your agent has access to page_delta. Try a bounded prompt like:
"Use page_delta with a fresh UUID requestId to observe https://example.com. Use article extraction and exact focus text 'Example Domain'. Stop if the challenge is not exactly 0.010000 RLUSD or exceeds my configured limits."The buyer validates the fresh PAYMENT-REQUIRED challenge, signs an invoice-bound XRPL payment as PAYMENT-SIGNATURE, and validates the returned PAYMENT-RESPONSE receipt against the local payment identity. Returned page content is untrusted input.
| Tool | What it does | Best for | Canonical price |
|---|---|---|---|
page_delta | Rendered Markdown, exact focus evidence, payer-scoped diff, optional JPEG | Pricing, release, policy, and status evidence | 0.010000 RLUSD |
watch_page | Fingerprint → payer-scoped change status | Pricing, releases, policies, status pages | 0.001 RLUSD |
watch_xrpl_wallet | Fee buffer + RLUSD runway + new validated activity | Autonomous wallet health and destination policy | 0.001 RLUSD |
fetch (fast or full) | HTML → Markdown on a separate Base payment mode | Simple fetch or article extraction | 0.005 USDC |
page_delta is the primary product and returns the rendered content plus bounded evidence. watch_page returns change status, not page content. watch_xrpl_wallet returns OK, WARN, or CRITICAL plus wallet-health evidence. None is a background scheduler. The MCP package currently automates PageDelta payment only on XRPL RLUSD; use the live HTTP 402 challenge when integrating another advertised rail.
XRPL mode is real money. PageDelta has no testnet mode in this MCP release. The separate Base fetch mode defaults to Sepolia and requires its own explicit mainnet opt-in.
# Real Base mainnet (USDC) — 0.005 USDC per fetch (~$0.005)
export BITBOOTH_CHAIN_ID=8453
export BITBOOTH_API_URL=https://app.heinrichstech.com
export BITBOOTH_RPC_URL=https://base-rpc.publicnode.com
export BITBOOTH_AGENT_KEY=0xWALLET_FUNDED_WITH_REAL_USDC# Real XRPL mainnet (RLUSD) — 0.010000 RLUSD per PageDelta observation
export BITBOOTH_PAYMENT_RAIL=xrpl-rlusd
export BITBOOTH_XRPL_SEED=sEdDEDICATED_LOW_BALANCE_AGENT_WALLET
export BITBOOTH_MAX_PER_CALL_USD=0.010000
export BITBOOTH_DAILY_LIMIT_USD=0.10XRPL mode is pinned to BitBooth's HTTPS origin, merchant address, RLUSD issuer, exact resource, source tag, and one-time invoice. Its encrypted per-wallet journal persists reservations, completed proofs, and UTC-day spend across restarts. A deliberately low wallet balance remains the hard loss ceiling.
| Env var | Default | Purpose |
|---|---|---|
BITBOOTH_AGENT_KEY | Base only | 0x-prefixed EVM wallet private key. Use a dedicated wallet. |
BITBOOTH_PAYMENT_RAIL | base | base or the explicit real-money opt-in xrpl-rlusd. |
BITBOOTH_XRPL_SEED | XRPL only | Dedicated XRPL agent-wallet seed. Never print, commit, or paste it into a prompt. |
BITBOOTH_MAX_PER_CALL_USD | 0.10 Base / 0.001 XRPL | Reject a challenge above this stablecoin amount. PageDelta stays hidden unless this is explicitly set to at least 0.010000. |
BITBOOTH_DAILY_LIMIT_USD | 1.00 Base / 0.10 XRPL | Per-wallet, per-UTC-day reservation limit. XRPL accounting is persisted in the encrypted wallet journal across restarts. |
BITBOOTH_CHAIN_ID | 84532 | 84532 = Base Sepolia (testnet). 8453 = Base Mainnet (real money). |
BITBOOTH_API_URL | https://app.heinrichstech.com | BitBooth gateway endpoint. |
BITBOOTH_RPC_URL | chain default | EVM RPC node URL. |
BITBOOTH_CONFIRMATIONS | 2 | Minimum Base transaction confirmations before retrying with PAYMENT-SIGNATURE. |
BITBOOTH_XRPL_MAX_FEE_DROPS | 100 | Reject an autofilled XRPL transaction whose network fee exceeds this many drops. |
BITBOOTH_API_KEY | none | Optional tenant API key for higher rate limits. PageDelta buyer calls do not require an account or API key. |
| Symptom | Fix |
|---|---|
page_delta is missing | Select xrpl-rlusd, provide the dedicated seed, and explicitly set BITBOOTH_MAX_PER_CALL_USD to at least 0.010000. |
Agent wallet key required | The separate Base fetch mode needs BITBOOTH_AGENT_KEY. It is not the PageDelta credential. |
XRPL mode requires a dedicated seed | Set BITBOOTH_XRPL_SEED through your MCP client's secret environment facility after explicitly selecting xrpl-rlusd. |
Payment exceeds the configured daily limit | The client stopped before authorizing another payment. Wait for the next UTC day or deliberately approve a cap change; do not delete the journal to bypass it. |
| Prior PageDelta result is unacknowledged | Recover the prior result with its original requestId, inspect it, then pass that UUID as acknowledgeRequestId with a fresh UUID for the next call. |
Wallet 0x... has no ETH for gas | Hit alchemy.com/faucets/base-sepolia with your wallet address. |
Wallet 0x... has no USDC | Hit faucet.circle.com → Base Sepolia → 10 USDC. |
Unexpected HTTP 502 | Gateway upstream is briefly down. Retry in ~30s. File an issue if persistent. |
| Tool doesn't appear in agent | Restart your MCP client. Check the client's MCP server logs for boot errors. |