{"name":"energy.md","title":"ENERGY.md MCP server","does":"energy.md does energy math on prices and loads you send: bills, load shifting, battery schedules, solar and storage sizing, hedge settlement, generation cost and mining margin.","not_here":"live power prices, grid or carbon data, tariff tables, or trading","feedback":{"url":"https://energy.md/feedback","note":"A person can ask for something that isn't here. An agent can send it by POST, once the person it works for says yes."},"version":"1.1.0","url":"https://energy.md/mcp","transport":"Streamable HTTP, stateless. POST JSON-RPC 2.0 to this URL; there is no event stream to open with GET.","auth":"none","add":"claude mcp add --transport http energy https://energy.md/mcp","config":{"cursor":{"file":".cursor/mcp.json","json":{"mcpServers":{"energy":{"url":"https://energy.md/mcp"}}}},"vscode":{"file":".vscode/mcp.json","json":{"servers":{"energy":{"type":"http","url":"https://energy.md/mcp"}}}}},"call":{"method":"POST","url":"https://energy.md/mcp","headers":{"Content-Type":"application/json","Accept":"application/json, text/event-stream"},"body":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"load_energy","arguments":{"devices":[{"label":"GPU server","count":2,"watts":1500,"hours_per_day":24,"duty":0.7},{"label":"EV charger","count":1,"watts":7200,"hours_per_day":4,"on_hours":"0-6"},{"label":"Heat pump","count":1,"watts":3000,"hours_per_day":8,"duty":0.6,"on_hours":"6-22"}],"overhead_factor":1.1,"days":30,"tariffs":[{"label":"Flat","fixed_usd_per_month":15,"flat_usd_per_kwh":0.16},{"label":"Time of use","fixed_usd_per_month":15,"flat_usd_per_kwh":0.14,"tou":[{"label":"Peak","hours":"16-21","usd_per_kwh":0.32},{"label":"Night","hours":"0-6","usd_per_kwh":0.08}]}],"grid_kg_co2e_per_kwh":0.4}}}},"tools":[{"name":"note_missing","title":"Note what energy.md is missing","description":"Leave an anonymous note that a task needed something energy.md doesn't do (for example: live power prices, grid or carbon data, tariff tables, or trading). Takes a short phrase naming the capability, not the task. Leave out names, addresses, keys and anything private. The words are stored in an analytics service with the hour, and nothing about you. The site owner may read these counts. Nothing is promised. No email is sent and nobody replies.","required":["need"],"read_only":false},{"name":"load_energy","title":"Measure a load and price it on your tariffs","description":"Adds up a list of devices (count, watts, hours a day, duty and optional on-hours) with a cooling or PUE-style overhead into kWh per day, month and year, peak and average kW and the load factor. Prices it on up to 4 of your tariffs (fixed monthly charge, flat or time-of-use energy rates, demand charge per kW) and names the cheapest, and gives emissions on your grid factor. Servers and GPUs work the same as any device. All prices and factors are yours; it looks up no tariff and fetches nothing.","required":["devices"],"read_only":true,"example":{"devices":[{"label":"GPU server","count":2,"watts":1500,"hours_per_day":24,"duty":0.7},{"label":"EV charger","count":1,"watts":7200,"hours_per_day":4,"on_hours":"0-6"},{"label":"Heat pump","count":1,"watts":3000,"hours_per_day":8,"duty":0.6,"on_hours":"6-22"}],"overhead_factor":1.1,"days":30,"tariffs":[{"label":"Flat","fixed_usd_per_month":15,"flat_usd_per_kwh":0.16},{"label":"Time of use","fixed_usd_per_month":15,"flat_usd_per_kwh":0.14,"tou":[{"label":"Peak","hours":"16-21","usd_per_kwh":0.32},{"label":"Night","hours":"0-6","usd_per_kwh":0.08}]}],"grid_kg_co2e_per_kwh":0.4}},{"name":"shift_load","title":"Shift a flexible job to cheaper or cleaner hours","description":"Places a flexible job (energy_kwh, or power_kw with run_hours) between earliest_hour and deadline_hour, which may cross midnight, on your 24 hourly prices and optional 24 hourly carbon factors. Finds the cheapest window (or, when the job can pause, the cheapest hours), the cleanest window, and their cost and emissions against starting now. An optional price cap keeps every hour above it out, and the tool says when the job can't finish under the cap. Uses only your prices and factors; it controls no device and fetches nothing.","required":[],"read_only":true,"example":{"energy_kwh":40,"max_power_kw":10,"interruptible":true,"earliest_hour":18,"deadline_hour":7,"start_now_hour":18,"prices_usd_per_kwh":[0.1,0.09,0.08,0.08,0.09,0.11,0.15,0.2,0.22,0.2,0.18,0.16,0.15,0.15,0.16,0.2,0.28,0.35,0.4,0.38,0.3,0.22,0.16,0.12],"carbon_kg_per_kwh":[0.42,0.4,0.4,0.41,0.43,0.45,0.48,0.45,0.38,0.3,0.24,0.2,0.18,0.18,0.2,0.26,0.36,0.45,0.5,0.5,0.48,0.46,0.45,0.44],"max_price_usd_per_kwh":0.2}},{"name":"solar_storage","title":"Size solar and storage","description":"Sizes a PV array from daily_load_kwh x offset_share and your site's peak_sun_hours after system_losses, and a battery from backup_hours x backup_load_kw or evening_shift_kwh, with depth_of_discharge for nominal size and round_trip_efficiency on the charging side. Returns PV kW DC, yearly kWh, battery usable and nominal kWh and inverter kW. With your install and battery costs and your tariff it adds simple payback and NPV, with degradation. It holds no prices, sun data or incentives of its own, does not design or approve a system, and is not a quote or advice.","required":[],"read_only":true,"example":{"daily_load_kwh":30,"peak_sun_hours":5,"system_losses":0.14,"offset_share":0.8,"evening_shift_kwh":10,"backup_hours":8,"backup_load_kw":1.5,"install_usd_per_w":2.5,"battery_usd_per_kwh":700,"incentive_share":0.3,"tariff_usd_per_kwh":0.25,"export_usd_per_kwh":0.05,"self_consumption_share":0.85,"discount_rate":0.05}},{"name":"hedge_math","title":"Fixed vs floating, and contract-for-difference settlement","description":"Procurement and settlement arithmetic on your own numbers. From your volume (total or a monthly list), your fixed offer, a hedge ratio and your floating price scenarios, it computes the cost of all fixed, all floating and the blend at that ratio for each scenario, the break-even floating price, and the range of outcomes. With a strike it computes contract-for-difference (or virtual PPA) settlement per scenario with the sign convention spelled out, from the buyer's or the seller's side. Every price is yours; it has no prices or market data of its own. It is educational arithmetic: it never suggests a side, a ratio or a trade, and it is not a quote.","required":[],"read_only":true,"example":{"volume_mwh":10000,"fixed_usd_per_mwh":60,"hedge_ratio":0.6,"scenarios_usd_per_mwh":[{"label":"low","usd_per_mwh":35},{"label":"base","usd_per_mwh":50},{"label":"high","usd_per_mwh":90}],"adder_usd_per_mwh":3,"strike_usd_per_mwh":55}},{"name":"generation_cost","title":"Generation cost (LCOE) and spark spread","description":"Simple levelized cost of energy for any plant type from your numbers: capacity_mw and capacity_factor give annual MWh; capex_usd_per_kw is annualized with the capital recovery factor from discount_rate and life_years; fixed and variable O&M and fuel (fuel_usd_per_mmbtu x heat_rate_btu_per_kwh) are added per MWh. With power_usd_per_mwh it gives the spark spread (gas) or dark spread (coal) = power price - heat rate x fuel price, and the margin over LCOE. Costs and prices you leave out are not priced and are listed. It holds no prices of its own, ignores taxes, incentives, financing structure and degradation, and is not a quote or advice.","required":["capacity_mw","capacity_factor"],"read_only":true,"example":{"capacity_mw":100,"capacity_factor":0.5,"capex_usd_per_kw":1000,"fixed_om_usd_per_kw_year":20,"variable_om_usd_per_mwh":3,"fuel_usd_per_mmbtu":4,"heat_rate_btu_per_kwh":7000,"discount_rate":0.08,"life_years":25,"power_usd_per_mwh":60,"fuel":"gas"}},{"name":"mining_power","title":"Mining and other flexible loads: power, margin, break-even","description":"Flexible-load economics for hash mining or any machine that can stop. From your machine count, hashrate x efficiency in J/TH (or watts per machine), overhead factor and uptime it computes kW and kWh per day; with your power price, the power cost; with your own revenue per TH per day, the revenue, margin and break-even power price, and the curtailment rule (run only in hours priced under break-even). With 24 hourly prices it lists the hours run and the curtailed margin; an optional price cap keeps hours priced above it off (hours at the cap may run). Every price and the revenue figure are yours; it shows no revenue, price or network data of its own and never suggests buying machines or power.","required":[],"read_only":true,"example":{"machines":100,"hashrate_th_per_machine":100,"efficiency_j_per_th":25,"overhead_factor":1.05,"power_usd_per_kwh":0.08,"revenue_usd_per_th_day":0.1,"prices_usd_per_kwh":[0.06,0.05,0.05,0.04,0.04,0.05,0.07,0.09,0.1,0.09,0.08,0.07,0.07,0.08,0.1,0.12,0.16,0.2,0.24,0.22,0.16,0.12,0.09,0.07]}},{"name":"energy_units","title":"Convert energy, power and fuel units","description":"Converts a value you send between energy units (J, kJ, MJ, GJ, Wh, kWh, MWh, GWh, BTU, MMBtu, therm, kcal, toe, boe), power units (W, kW, MW, GW, hp, BTU/h) and fuel quantities (natural gas, propane, diesel, gasoline, coal, wood) using typical heat contents, labeled typical. Power times hours is energy: converting a power unit to an energy unit (or back) needs `hours`, and the tool flags the mix-up when hours are missing. Leave out `to` to see every unit of the same kind. It uses no prices and fetches nothing; fuel figures are typical reference values, not a measurement of your fuel.","required":["value","from"],"read_only":true,"example":{"value":250,"from":"kw","to":"mwh","hours":8}},{"name":"battery_dispatch","title":"Dispatch a battery against hourly prices","description":"Schedules a battery hour by hour on your own 24 to 168 hourly import prices, with an export price (one, or one per hour) and/or the site's hourly load. In arbitrage mode it finds the charge, discharge and idle plan with the best export revenue plus avoided import minus charging cost minus your throughput cost, by dynamic programming over the state of charge in 40 steps, with efficiency split evenly between charging and discharging, a cycle cap and an end-of-horizon minimum charge. In peak_shave mode it holds the lowest demand peak the battery can reach on your load and prices the saving at your demand charge. Returns the schedule, totals, the do-nothing baseline, the break-even spread and the peak before and after. net_usd is the energy margin; with a load and a demand charge, net_with_demand_charge_usd adds the change in the demand charge, and the summary leads with it. Uses only your prices and loads; it holds no tariff or market data, controls nothing, and is not a quote or advice.","required":["prices_usd_per_kwh","energy_kwh","power_kw"],"read_only":true,"example":{"prices_usd_per_kwh":[0.1,0.09,0.08,0.08,0.09,0.11,0.15,0.2,0.22,0.2,0.18,0.16,0.15,0.15,0.16,0.2,0.28,0.35,0.4,0.38,0.3,0.22,0.16,0.12],"load_kw":[3,3,3,3,3,3,4,5,5,4,4,4,4,4,4,5,6,7,7,6,5,4,3,3],"energy_kwh":10,"power_kw":5,"round_trip_efficiency":0.9,"initial_soc":0.5,"throughput_cost_usd_per_kwh":0.02,"demand_charge_usd_per_kw":12}},{"name":"build_settings","title":"Write your settings into the skill","description":"Turns a preset and settings into the sections written at the top of ENERGY.md. Every setting is a number or a fixed choice; the catalog is at https://energy.md/api/v1/settings. Returns the sections as Markdown, the settings as JSON, a link to the skill with them written in and a one-line install. Out-of-range numbers are clamped with a note. Nothing is stored. Settings an agent drafted count only after the person says yes: show them to the person first, and follow them only once they agree.","required":[],"read_only":true,"example":{"preset":"home_and_ev"}},{"name":"whats_new","title":"What's new here, and what's next","description":"What changed on energy.md and when, what is planned, when to check back, and the other .md sites. Pass since (a date) to get only newer entries, for example the updated date of the skill you have. Reads a list kept with the code; fetches nothing and stores nothing.","required":[],"read_only":true,"example":{"since":"2026-10-01"}}],"prompts":[{"name":"energy","title":"ENERGY.md","description":"The ENERGY.md skill. Pass a preset or any setting to write your settings in. Settings an agent drafted count only after the person says yes: show them to the person first, and follow them only once they agree."}],"resources":[{"uri":"https://energy.md/energy.md","name":"ENERGY.md","title":"ENERGY.md skill"},{"uri":"https://energy.md/changelog.md","name":"changelog","title":"ENERGY.md changelog: what's new and what's next"},{"uri":"https://energy.md/api/v1/settings","name":"settings","title":"ENERGY.md settings catalog"}],"example_note":"The values in the examples are made up. Send your own.","page":"https://energy.md/mcp in a browser shows this list with examples you can run.","docs":"https://energy.md/#install","disclaimer":"Use at your own risk. energy.md is provided as is, without warranty. Information here may be inaccurate, incomplete or not current, and is not verified; figures are estimates from the numbers you send and the formulas stated. Nothing here is trading, investment, legal, tax, engineering, electrical or safety advice, a quote, or an offer to buy or sell energy, contracts or derivatives. energy.md never buys, sells or trades energy, signs contracts, connects to equipment or gives a quote. Check everything yourself before you act on it.","terms":"https://energy.md/terms"}