Skip to main content
Glama
BackpowCom

BackPow MCP Server

Official
by BackpowCom

Solo mining odds

calculate_solo_mining_odds
Read-onlyIdempotent

Calculate the probability of solo-mining a block with your hashrate. Returns mean time, chance over 1-365 days, and realistic wait-time percentiles, plus electricity cost.

Instructions

Probability of a solo miner finding a block, computed as a Poisson process over live network difficulty and hashrate, plus the electricity cost of the attempt. Returns mean time to a block, the chance of at least one block over 1/7/30/90/365 days, and lucky-vs-unlucky waiting times (5th, 50th and 95th percentile) — variance dominates at small hashrates, so the average alone is misleading. Use for questions like "how long would it take to solo mine a Bitcoin block with 100 TH/s", "what are my odds solo mining Kaspa", or "is solo mining worth it with this rig". For pooled mining economics or whether a coin is profitable at all, use get_cost_of_production. For raw network state without a miner, use get_coin_oracle.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
coin_idYesCoin name or ticker, e.g. "Bitcoin", "BTC", "Kaspa", "bitcoin cash", "Monero". Ambiguous input is rejected with the list of matching networks rather than resolved to a guess, because several tickers are shared by more than one tracked chain (DGB, XVG and TARI among them).
hashrateYesThe miner's rate, as a number. The unit goes in hashrate_unit.
power_wattsNoMiner power draw in watts, e.g. 3500 for an ASIC or 320 for a GPU. Optional.
hashrate_unitYesUnit for hashrate. Most networks measure in hashes per second (H/s…EH/s). Cuckoo-family chains measure graphs per second (gps) and Aleo measures proofs per second — an unrecognised unit is rejected rather than assumed, because assuming H/s can be wrong by a factor of 10^12.
electricity_cost_usd_kwhNoElectricity price in USD per kWh. Defaults to 0.069, an industrial hosting tariff; residential rates are commonly 3-5x higher and change profitability conclusions.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description correctly does not waste space repeating them. It adds genuinely useful behavioral context beyond the annotations: the Poisson-process model, the warning that 'variance dominates at small hashrates, so the average alone is misleading', and that electricity cost is included in the calculation. This informs how the agent should interpret results. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence earns its place: definition, output list, variance caveat, usage examples, and sibling routing. The core purpose is front-loaded and the alternatives come last. Slightly dense in places, which keeps it from a 5, but there is no redundant filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description explicitly enumerates what the tool returns (mean time to a block, at-least-one-block chances over five horizons, and 5th/50th/95th percentile waiting times), so the agent knows what to expect. All five parameters are documented in the schema, usage conditions and alternatives are stated, and the behavioral caveat is included. For a calculation tool of this complexity, everything needed to select and invoke it correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter, including subtle behavior like ambiguous coin_id rejection and hashrate_unit unit-family disambiguation. The description's first sentence mentions 'electricity cost of the attempt' which maps to the electricity_cost_usd_kwh parameter, but it adds little beyond the schema's own parameter descriptions. Baseline 3 is appropriate when the schema carries the weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a very specific verb+resource ('Probability of a solo miner finding a block') and the computational model (Poisson process over live difficulty and hashrate). It enumerates the outputs (mean time, 1/7/30/90/365-day probabilities, 5th/50th/95th percentile waiting times) and explicitly distinguishes itself from get_cost_of_production and get_coin_oracle, so an agent can differentiate it from siblings without opening any other schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides hard-to-misuse usage guidance: three concrete example queries ('how long would it take to solo mine a Bitcoin block with 100 TH/s', 'what are my odds solo mining Kaspa', 'is solo mining worth it with this rig'). It also states explicit exclusions and alternatives: pooled mining economics or profitability should use get_cost_of_production, and raw network state should use get_coin_oracle. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.