BackPoW PoW Oracle
Live Proof-of-Work mining data for AI agents: difficulty, hashrate, solo-mining odds, cost of production and hardware profitability across 126+ networks. Read-only, no API key.
Hosted MCP Server
npx add-mcp 'https://mcp.backpow.com/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
BackPow MCP Server
The official Model Context Protocol server for BackPow — The Proof of Work Oracle.
It gives an AI assistant live mining data for 126+ Proof of Work networks and 770+ hardware models: network difficulty and hashrate, Poisson solo-mining probabilities, Cost of Production, and hardware profitability.
Remote endpoint: https://mcp.backpow.com/mcp — Streamable HTTP, no API key,
no account.
Local package: @backpow/mcp-server — the same six tools over stdio.
Install
ChatGPT (Custom GPTs & Actions)
Connect BackPow's live PoW data directly to your ChatGPT:
- In ChatGPT, go to Explore GPTs → + Create (or configure an existing GPT).
- Under Configure, scroll down to Actions → Create new action.
- Click Import from URL and paste:
https://mcp.backpow.com/openapi.json - Click Import. All 6 tools will populate automatically with zero authentication required.
Claude Code
claude mcp add --transport http backpow https://mcp.backpow.com/mcp
Claude Desktop / claude.ai
Settings → Connectors → Add custom connector → https://mcp.backpow.com/mcp
VS Code
{
"servers": {
"backpow": { "type": "http", "url": "https://mcp.backpow.com/mcp" }
}
}
Cursor
Settings → MCP → Add, or in ~/.cursor/mcp.json:
{
"mcpServers": {
"backpow": { "url": "https://mcp.backpow.com/mcp" }
}
}
Local stdio
For clients that run a local process instead of calling a URL. It talks to the same public endpoints as the remote server, so it needs no key either:
{
"mcpServers": {
"backpow": { "command": "npx", "args": ["-y", "@backpow/mcp-server"] }
}
}
Tools
| Tool | Answers |
|---|---|
calculate_solo_mining_odds | "How long to solo mine a Bitcoin block at 100 TH/s?" — mean time, Poisson probability over 1/7/30/90/365 days, the luck spread, and what the electricity costs while you wait |
get_cost_of_production | "Is mining Monero profitable?" — CoP vs spot, gross margin, the reference machine and tariff, 30-day trend |
get_coin_oracle | "What is Kaspa's current difficulty?" — live network state with a confidence block |
list_pow_coins | Browse or filter the tracked networks by algorithm or profitability |
get_hardware_benchmarks | "What should I mine with an RTX 4090 at 0.10 USD/kWh?" — coins ranked by net USD/day |
get_pow_news | Recent mining and network events, quoted as third-party content |
All six are read-only and annotated readOnlyHint, so hosts that support
auto-approval will not prompt on every call.
How results are shaped
Every successful result is an envelope:
{
"warnings": [ /* plain prose caveats that qualify how the figures should be read */ ],
"source": {
"as_of_utc": "2026-09-18T08:12:00Z",
"data_age_seconds": 30,
"served_from": "live",
"url": "https://backpow.com/Bitcoin",
"cite_as": "BackPow — The Proof of Work Oracle, \"BTC solo mining odds\", retrieved 2026-09-18 — https://backpow.com/Bitcoin",
"methodology": "…"
},
"data": { /* the figures */ }
}
Difficulty, hashrate and price move continuously, so a figure only means something alongside the moment it was measured. Every result therefore carries its measurement timestamp and a ready-made citation line.
Two deliberate behaviours worth knowing:
- Ambiguity is refused, not guessed. Several tickers are shared by multiple
tracked chains (DGB by 5, XVG by 5).
get_coin_oracle {"coin_id": "DGB"}returns an error listing the candidates rather than picking one, so an answer is never about a different network than the caller meant. - An unavailable measurement is refused, not substituted. When a network's
current state cannot be measured, the tool returns an error rather than a
placeholder such as
0 H/s, which a caller could not tell apart from a real reading.
Data and licence
Figures derive from BackPow's stratum collector nodes and market data, and are published under CC BY 4.0 — see backpow.com/llms.txt. Citation is requested, permission is not required.
This is a calculator and data source, not financial advice. No tool executes a transaction.
Development
Node 22 or newer is required: the Cloudflare Workers toolchain needs it. The published package itself runs on Node 20 and above.
npm install
npm run typecheck # tsc --noEmit
npm test # unit + integration, no network
npm run dev # wrangler dev on :8787
npm run conformance -- http://127.0.0.1:8787 # protocol probe against a running server
npm run deploy # Cloudflare Workers
scripts/conformance.mjs drives a live endpoint through the transport and
security behaviours that only show up over a real HTTP connection: status codes,
header negotiation, origin checks and protocol-version handling. Point it at a
local wrangler dev instance, or at the deployed endpoint.
Transport
Streamable HTTP on a single endpoint, POST /mcp. The server is stateless: it
mints no session ids, GET and DELETE answer 405, and notifications get
202 with no body. Protocol revisions 2025-11-25 through 2024-11-05 are
negotiated at initialize; server/discover reports the supported set.
/sse and /message, the paths of the deprecated HTTP+SSE transport, answer
410 pointing at /mcp.
Licence
MIT — see LICENSE.