For AI assistants

CTDS Calculators

The arithmetic behind Chimney Top Calculators, offered to AI assistants as 10 tools over the Model Context Protocol.

Radiation, hosting-economics and equipment-cost arithmetic from calculators.chimneytopdigital.com, with cited constants. Radiation results are educational estimates: repeat the disclaimer to the user and never present them as a regulatory, clinical or safety determination. Name units explicitly; defaults are mCi, m, mR/h, cm. Use list_isotopes and list_calculators to see what is available and to link the page that reproduces a result.

Connect

The server is at https://calculators.chimneytopdigital.com/mcp. It is free, asks for no sign-in and keeps nothing between calls. Rate limits apply per address.

ClientHow
Claude CodeOne command in a terminal:
claude mcp add --transport http ctds-calculators https://calculators.chimneytopdigital.com/mcp
Claude (web and desktop apps)Settings → Connectors → Add custom connector, with the URL https://calculators.chimneytopdigital.com/mcp. No sign-in is asked for.
Codex CLIOne command in a terminal:
codex mcp add ctds-calculators --url https://calculators.chimneytopdigital.com/mcp
Any other MCP clientUse the Streamable HTTP transport with the URL https://calculators.chimneytopdigital.com/mcp: one JSON-RPC message per POST, JSON answers, no session and no authentication.

To see the raw protocol, list the tools and call one from a terminal:

curl -s https://calculators.chimneytopdigital.com/mcp -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

curl -s https://calculators.chimneytopdigital.com/mcp -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_isotopes","arguments":{}}}'

Tools

Every tool is read-only and idempotent, so a client may run it without asking you first. Arguments are checked before a tool runs; a wrong one comes back as a message naming the field.

gamma_dose_rate Gamma dose rate, activity, distance or shield thickness

Point-source gamma exposure rate (Ẋ = Γ·A·T/d²) for a sealed source, or the activity, distance or shield thickness that gives a target dose rate, with the published specific gamma-ray constant of the isotope and its half- and tenth-value layers for lead, steel or concrete. Give the two or three known values and name the one to solve for. Educational estimate only.

  • solve_for (doseRate | activity | distance | thickness, required): The unknown to compute
  • isotope (cs-137 | co-60 | ir-192 | am-241 | i-131 | tc-99m | ra-226 | f-18 | na-22, required): Gamma-emitting isotope id
  • activity (number): Source activity (needed unless solving for activity)
  • activity_unit (Bq | kBq | MBq | GBq | TBq | pCi | nCi | uCi | mCi | Ci | kCi, default "mCi"): Unit of activity
  • distance (number): Distance from the source (needed unless solving for distance)
  • distance_unit (cm | m | in | ft, default "m"): Unit of distance
  • dose_rate (number): Known or target dose rate (needed unless solving for doseRate)
  • dose_rate_unit (uR_h | mR_h | R_h | uGy_h | mGy_h | Gy_h | uSv_h | mSv_h | Sv_h | mrem_h | rem_h, default "mR_h"): Unit of dose rate
  • shield_material (lead | steel | concrete): Shield material; omit for no shield (required when solving for thickness)
  • shield_thickness (number): Shield thickness (ignored when solving for thickness)
  • shield_thickness_unit (mm | cm | in, default "cm"): Unit of shield thickness
  • shield_model (tvl | hvl, default "tvl"): Attenuation model: tenth-value or half-value layers
radioactive_decay Radioactive decay

Remaining activity after a time (A = A₀·e^(−λt)), the time for an activity to fall to a value, the original activity, or the half-life, given the other values. Name an isotope to use its published half-life, or give the half-life yourself. Educational estimate only.

  • solve_for (remaining | elapsed | original | halfLife, required)
  • isotope (cs-137 | co-60 | ir-192 | am-241 | i-131 | tc-99m | ra-226 | f-18 | na-22 | h-3 | c-14 | p-32 | sr-90 | rn-222 | po-210 | pu-239 | u-238): Isotope whose half-life to use (or give half_life)
  • half_life (number): Half-life, when no isotope is named or to override it
  • half_life_unit (s | min | h | d | y, default "y"): Unit of half_life
  • original (number): Original activity A₀
  • remaining (number): Remaining activity A
  • activity_unit (Bq | kBq | MBq | GBq | TBq | pCi | nCi | uCi | mCi | Ci | kCi, default "mCi"): Unit of both activities
  • elapsed (number): Elapsed time t
  • elapsed_unit (s | min | h | d | y, default "d"): Unit of elapsed time
convert_radiation_units Convert radiation units

Converts an equivalent dose (Sv, rem and prefixes), an absorbed dose (Gy, rad) or an activity (Bq, Ci) from one unit to another, or to every unit of the family when `to` is omitted. Exact factors: 1 rem = 0.01 Sv, 1 rad = 0.01 Gy, 1 Ci = 3.7e10 Bq.

  • quantity (equivalent | absorbed | activity, required)
  • value (number, required)
  • from (string, required): Unit id of the value, for example mSv, mrem, mGy, rad, MBq, mCi
  • to (string): Target unit id; omit for all units of the family
equivalent_dose Equivalent dose from absorbed dose

Applies the ICRP radiation weighting factor (photon, electron, proton, alpha, or neutron by energy) to an absorbed dose and returns the equivalent dose in sieverts and the factor used. Educational estimate only.

  • absorbed (number, required)
  • absorbed_unit (string, default "mGy"): Gy, mGy, rad, mrad, ...
  • radiation (photon | electron | proton | alpha | neutron, required)
  • neutron_energy_mev (number): Neutron energy in MeV (neutrons only)
shielding Shield transmission or thickness

For an isotope and a shield material, the fraction of the dose rate that gets through a given thickness (and how many half- and tenth-value layers that is), or the thickness needed to reach a target transmission (0 < T ≤ 1). Give either thickness or target_transmission. Educational estimate only.

  • isotope (cs-137 | co-60 | ir-192 | am-241 | i-131 | tc-99m | ra-226 | f-18 | na-22, required)
  • material (lead | steel | concrete, required)
  • thickness (number): Shield thickness
  • thickness_unit (mm | cm | in, default "cm"): Unit of thickness
  • target_transmission (number): Fraction of the dose rate to let through
  • model (tvl | hvl, default "tvl")
list_isotopes List isotopes

The isotopes the calculators know, with half-life, specific gamma-ray constant (R·m²/(Ci·h), null for non-gamma emitters), typical uses and whether shielding layers are published for them.

  • gamma_only (boolean, default false): Only isotopes with a gamma constant
gpu_hosting_economics GPU hosting economics

Whether renting out one or more GPUs pays: power cost per rented and idle hour, average revenue and net per hour, net per month and year, kWh per month, break-even months and the utilization at which net is zero. Name a GPU preset for its board and idle power, or give them.

  • preset (rtx-3080 | rtx-3090 | rtx-3090-ti | rtx-4070-ti | rtx-4080 | rtx-4090 | rtx-5090 | rtx-a6000 | rtx-6000-ada | l40s | a100-pcie | a100-sxm | h100-pcie | h100-sxm): GPU preset (fills board_power_w and idle_power_w unless given)
  • gpu_count (integer, default 1)
  • board_power_w (number): Board power per GPU under load, W
  • idle_power_w (number): Idle power per GPU, W
  • system_power_w (number, default 100): Rest of the host, W (constant)
  • utilization_pct (number, default 50): Share of hours rented, %
  • price_per_kwh (number, default 0.15): Electricity price, currency per kWh
  • pue (number, default 1.1): Power usage effectiveness (cooling overhead), 1 = none
  • payout_per_gpu_hour (number, required): Gross payout per GPU-hour before the platform fee
  • fee_pct (number, default 20): Platform fee, %
  • hardware_cost (number, default 0): What the hardware cost, for break-even
cpu_hosting_economics CPU hosting economics

Whether renting out a CPU server pays, with the payout per core-hour or per server-hour: the same figures as gpu_hosting_economics. Name a CPU preset for cores and power, or give them.

  • preset (ryzen-9-7950x | ryzen-9-9950x | core-i9-14900k | tr-7980x | epyc-7763 | epyc-9654 | xeon-gold-6338 | xeon-e5-2680v4-x2): CPU preset (fills cores and cpu_power_w unless given)
  • cores (integer)
  • cpu_power_w (number): CPU power under load, W
  • system_power_w (number, default 80): Rest of the server under load, W
  • idle_power_w (number, default 60): Whole server idle, W
  • utilization_pct (number, default 50)
  • price_per_kwh (number, default 0.15)
  • pue (number, default 1.1)
  • payout_mode (core | server, default "core"): payout_rate is per core-hour or per server-hour
  • payout_rate (number, required): Gross payout in the chosen mode before the fee
  • fee_pct (number, default 20)
  • hardware_cost (number, default 0)
equipment_cost_per_hour Equipment cost per hour

The hourly cost of owning and running a machine: depreciation, insurance, fuel and maintenance per hour, owning and operating totals, the machine rate, and the all-in rate with the operator.

  • purchase_price (number, required)
  • resale_value (number, default 0): Expected value at the end of its life
  • life_hours (number, required): Useful life in operating hours
  • annual_hours (number, required): Operating hours per year
  • fuel_burn (number, default 0): Fuel per operating hour, in fuel_unit
  • fuel_unit (gal | L, default "gal")
  • fuel_price (number, default 0): Price per fuel_unit
  • maintenance_per_hour (number, default 0)
  • insurance_per_year (number, default 0)
  • operator_per_hour (number, default 0): Operator wage with burden, per hour
list_calculators List calculators

Every calculator page of the site with its id, vertical, title, one-line summary, URL and related calculators, so a result can be linked to the page that reproduces it.

  • vertical (radiation | hosting | equipment): Only this vertical

Resources

  • ctds://calculators/disclaimer: Radiation calculators disclaimer. The notice every radiation page carries; repeat it with any radiation result.

Limits

  • The tools compute from the values the assistant passes in. They cannot read or change anything in your Chimney Top Calculators account; for that, use the app.
  • Results carry the same notices the app shows. They are estimates and working aids, not professional advice; ask your assistant to show the notice with the figure.
  • Rate limits apply per address. A request over the limit gets a plain error the assistant can read.
  • The tool list may grow. This page is generated from the running server, so it shows the tools as they are today.

If something fails

"Couldn't reach the MCP server", or a 404
Check the address character by character: the server answers only at https://calculators.chimneytopdigital.com/mcp, over HTTPS. Nothing else on this host speaks MCP.
405 Method Not Allowed
The client sent a GET. The server speaks the Streamable HTTP transport without an event stream: one JSON-RPC message per POST, a JSON answer, no session. A notification gets an empty 202.
429 Too Many Requests
Your address passed the fair-use limit. The Retry-After header says how many seconds to wait; the limit resets on its own.
413 Payload Too Large
One request may carry 256 KiB. Send fewer rows per call, or summarize before you send.
A tool answers with an error naming a field
The argument did not match the tool's schema above: money is integer cents (or plain dollars where the tool says so), dates are YYYY-MM-DD, and lists are JSON arrays. Fix the named field and call again; nothing was stored.
Still stuck
Write to support@chimneytopdigital.com with the tool name, the arguments you sent (with nothing personal in them), the time in UTC and the exact message. We keep no record of calls, so what you send us is all we can look at.

How we built the servers, and the rules every one follows: our guide. Questions: hello@chimneytopdigital.com.