{"name":"energy.md","version":"1.0","description":"A skill file for agents that measure, price, schedule or size energy, with your rules written in: price caps, budgets, demand limits, scheduling windows, carbon factors and contract approvals. Read-only calculators over HTTP and MCP cover units, loads and bills, shifting flexible load, solar and storage sizing, fixed vs floating supply and hedge settlement, generation cost, and mining or other flexible loads. Every price, tariff and factor comes from your request; none comes from us.","skill":{"url":"https://energy.md/energy.md","with_settings":"https://energy.md/energy.md?preset=home_and_ev"},"settings":"https://energy.md/api/v1/settings","usage":"GET /api/v1/<tool> with query parameters (arrays and objects as URL-encoded JSON), or POST /api/v1/<tool> with a JSON body (64 KB at most). No key. CORS open. Nothing is stored.","tools":[{"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.","get":"https://energy.md/api/v1/load_energy","post":"https://energy.md/api/v1/load_energy","example_body":{"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},"example_note":"Round illustrative numbers, not market data, a price or a quote; send your own.","input":{"type":"object","properties":{"devices":{"type":"array","minItems":1,"maxItems":100,"description":"The devices: [{label, count (default 1), watts (draw while on), hours_per_day (0-24), duty (0-1 share of on-time at full draw, default 1), on_hours (optional: when it runs, like \"18-23\" or a list of hours. Without it, a device under 24 h/day has its energy spread evenly over the day for time-of-use pricing, and its full draw is assumed to run at the same time as every other device for peak kW and demand charges; send on_hours to make time-of-use and demand bills exact)}].","items":{"type":"object","properties":{"label":{"type":"string"},"count":{"type":"number","minimum":0},"watts":{"type":"number","minimum":0},"hours_per_day":{"type":"number","minimum":0,"maximum":24},"duty":{"type":"number","minimum":0,"maximum":1},"on_hours":{"description":"A range like \"16-21\" or a list of hours 0-23."}},"required":["watts"]}},"overhead_factor":{"type":"number","minimum":1,"maximum":5,"default":1,"description":"A multiplier on every device for cooling, power conversion or a PUE-style overhead. 1 means none. Default 1."},"days":{"type":"number","minimum":1,"maximum":366,"default":30,"description":"Days in the billing month. Default 30."},"tariffs":{"type":"array","maxItems":4,"description":"Up to 4 of your tariffs: [{label, fixed_usd_per_month, flat_usd_per_kwh, tou: [{label, hours: \"16-21\" or a list of hours, usd_per_kwh}], demand_usd_per_kw}]. Each needs a flat rate or time-of-use periods; a flat rate also covers hours no period lists. Charges you leave out are not counted. Optional.","items":{"type":"object","properties":{"label":{"type":"string"},"fixed_usd_per_month":{"type":"number","minimum":0},"flat_usd_per_kwh":{"type":"number"},"tou":{"type":"array","items":{"type":"object"}},"demand_usd_per_kw":{"type":"number","minimum":0}}}},"grid_kg_co2e_per_kwh":{"type":"number","minimum":0,"maximum":3,"description":"Your grid emissions factor, kg CO2e per kWh. Optional."},"demand_limit_kw":{"type":"number","minimum":0,"maximum":10000000,"description":"Your demand limit, kW. The peak is checked against it. Optional."},"budget_usd_per_month":{"type":"number","minimum":0,"maximum":10000000000,"description":"Your monthly energy budget, $. The cheapest bill is checked against it. Optional."},"carbon_cap_kg_per_month":{"type":"number","minimum":0,"maximum":10000000000,"description":"Your monthly carbon cap, kg CO2e. Needs grid_kg_co2e_per_kwh. Optional."}},"required":["devices"]}},{"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.","get":"https://energy.md/api/v1/shift_load","post":"https://energy.md/api/v1/shift_load","example_body":{"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},"example_note":"Round illustrative numbers, not market data, a price or a quote; send your own.","input":{"type":"object","properties":{"energy_kwh":{"type":"number","minimum":0,"maximum":100000000,"description":"Energy the job needs, kWh. Or send power_kw and run_hours."},"power_kw":{"type":"number","minimum":0,"maximum":10000000,"description":"The job's draw while running, kW."},"run_hours":{"type":"number","minimum":0,"maximum":24,"description":"Hours the job runs at power_kw (fractions allowed)."},"max_power_kw":{"type":"number","minimum":0,"maximum":10000000,"description":"The most the job or its circuit can draw in an hour, kW. An interruptible job may run at up to this. Optional."},"interruptible":{"type":"boolean","default":false,"description":"true if the job can pause and resume (charging, batch compute). Default false: it runs in one block."},"earliest_hour":{"type":"integer","minimum":0,"maximum":23,"description":"First hour the job may run, 0-23. Default start_now_hour."},"deadline_hour":{"type":"integer","minimum":0,"maximum":24,"description":"Hour the job must be done by, 0-24. At or before earliest_hour it means the next day. Default: 24 hours after earliest_hour."},"start_now_hour":{"type":"integer","minimum":0,"maximum":23,"description":"The hour it is now, for the start-now comparison. Default earliest_hour, or 0."},"prices_usd_per_kwh":{"type":"array","minItems":24,"maxItems":24,"items":{"type":"number"},"description":"Your 24 hourly energy prices, $/kWh, hour 0 first. Optional; without them nothing is priced."},"carbon_kg_per_kwh":{"type":"array","minItems":24,"maxItems":24,"items":{"type":"number"},"description":"Your 24 hourly carbon factors, kg CO2e per kWh, hour 0 first. Optional."},"grid_kg_co2e_per_kwh":{"type":"number","minimum":0,"maximum":3,"description":"One grid factor, kg CO2e per kWh, used when no hourly factors are sent. Optional."},"max_price_usd_per_kwh":{"type":"number","minimum":-10,"maximum":100,"description":"Your price cap, $/kWh: hours above it are never used. Optional."}}}},{"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.","get":"https://energy.md/api/v1/solar_storage","post":"https://energy.md/api/v1/solar_storage","example_get":"https://energy.md/api/v1/solar_storage?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","example_body":{"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},"example_note":"Round illustrative numbers, not market data, a price or a quote; send your own.","input":{"type":"object","properties":{"daily_load_kwh":{"type":"number","minimum":0,"maximum":10000000,"description":"Average daily energy use in kWh. Needed to size PV."},"peak_sun_hours":{"type":"number","minimum":0.1,"maximum":12,"description":"Your site's average peak sun hours per day (kWh/m2/day) for the panel tilt and direction. Needed to size PV."},"system_losses":{"type":"number","minimum":0,"maximum":0.9,"default":0.14,"description":"Share lost to wiring, inverter, heat, soiling and shading, 0-0.9 (default 0.14)."},"offset_share":{"type":"number","minimum":0,"maximum":1,"default":1,"description":"Share of the daily load the PV should cover, 0-1 (default 1)."},"backup_hours":{"type":"number","minimum":0,"maximum":720,"description":"Hours of backup wanted. Needs backup_load_kw."},"backup_load_kw":{"type":"number","minimum":0,"maximum":1000000,"description":"Load to carry during backup, kW. Needs backup_hours."},"evening_shift_kwh":{"type":"number","minimum":0,"maximum":10000000,"description":"Daily solar energy to store for use after sunset, kWh."},"depth_of_discharge":{"type":"number","minimum":0.1,"maximum":1,"default":0.9,"description":"Usable share of the battery's nominal capacity, 0.1-1 (default 0.9)."},"round_trip_efficiency":{"type":"number","minimum":0.1,"maximum":1,"default":0.9,"description":"Battery round-trip efficiency, 0.1-1 (default 0.9). Applied on the charging side."},"dc_ac_ratio":{"type":"number","minimum":1,"maximum":2,"default":1.2,"description":"PV DC kW per inverter AC kW (default 1.2)."},"install_usd_per_w":{"type":"number","minimum":0,"maximum":100,"description":"Your PV installed cost, USD per W DC. Or send install_usd. No default."},"install_usd":{"type":"number","minimum":0,"maximum":10000000000,"description":"Your total PV installed cost in USD, instead of install_usd_per_w. No default."},"battery_usd_per_kwh":{"type":"number","minimum":0,"maximum":100000,"description":"Your installed battery cost, USD per nominal kWh. No default."},"incentive_share":{"type":"number","minimum":0,"maximum":1,"default":0,"description":"Share of the cost covered by incentives you qualify for, 0-1 (default 0). Yours to confirm."},"tariff_usd_per_kwh":{"type":"number","minimum":0,"maximum":100,"description":"Your retail price per kWh that self-used solar avoids. No default."},"export_usd_per_kwh":{"type":"number","minimum":0,"maximum":100,"description":"What you are paid per kWh exported. No default; exports are not valued without it."},"self_consumption_share":{"type":"number","minimum":0,"maximum":1,"default":1,"description":"Share of PV output used on site (default 1); the rest is exported."},"degradation_per_year":{"type":"number","minimum":0,"maximum":0.1,"default":0.005,"description":"Yearly PV output loss (default 0.005 = 0.5%)."},"years":{"type":"integer","minimum":1,"maximum":50,"default":25,"description":"Years for payback and NPV (default 25)."},"discount_rate":{"type":"number","minimum":0,"maximum":1,"description":"Your discount rate as a decimal for NPV. No default; NPV is skipped without it."}}}},{"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.","get":"https://energy.md/api/v1/hedge_math","post":"https://energy.md/api/v1/hedge_math","example_body":{"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},"example_note":"Round illustrative numbers, not market data, a price or a quote; send your own.","input":{"type":"object","properties":{"volume_mwh":{"type":"number","minimum":0,"maximum":1000000000,"description":"Total volume for the period, in MWh. Send this or monthly_volumes_mwh."},"monthly_volumes_mwh":{"type":"array","items":{"type":"number"},"maxItems":60,"description":"Volume per month in MWh, instead of volume_mwh. The total is their sum."},"fixed_usd_per_mwh":{"type":"number","minimum":-10000,"maximum":100000,"description":"Your fixed-price offer, in $/MWh. No default. Without it, only the floating side is priced."},"hedge_ratio":{"type":"number","minimum":0,"maximum":1,"default":1,"description":"Share of volume at the fixed price, 0 to 1. The rest floats. Default 1."},"hedge_ratio_max":{"type":"number","minimum":0,"maximum":1,"description":"Your own cap on the hedge ratio, from your settings. Optional; flagged when hedge_ratio is above it."},"scenarios_usd_per_mwh":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"object","properties":{"label":{"type":"string"},"usd_per_mwh":{"type":"number"}},"required":["usd_per_mwh"]}]},"maxItems":20,"description":"Your floating price scenarios in $/MWh: numbers, or {label, usd_per_mwh} such as low, base and high. No defaults."},"adder_usd_per_mwh":{"type":"number","minimum":-1000,"maximum":10000,"description":"Your adder on the floating price (fees, shaping, delivery), in $/MWh. Optional, default 0. Applied to the floating side only."},"strike_usd_per_mwh":{"type":"number","minimum":-10000,"maximum":100000,"description":"Contract-for-difference strike, in $/MWh. Optional; without it no settlement is computed."},"cfd_volume_mwh":{"type":"number","minimum":0,"maximum":1000000000,"description":"Volume the contract for difference settles on, in MWh. Default: the hedged volume (volume x hedge_ratio)."},"cfd_side":{"type":"string","enum":["buyer","seller"],"default":"buyer","description":"Which side the settlement is shown from: buyer (the offtaker, default) or seller (the generator)."}}}},{"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.","get":"https://energy.md/api/v1/generation_cost","post":"https://energy.md/api/v1/generation_cost","example_get":"https://energy.md/api/v1/generation_cost?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","example_body":{"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"},"example_note":"Round illustrative numbers, not market data, a price or a quote; send your own.","input":{"type":"object","properties":{"capacity_mw":{"type":"number","minimum":0.000001,"maximum":100000,"description":"Nameplate capacity in MW (AC)."},"capacity_factor":{"type":"number","minimum":0,"maximum":1,"description":"Share of the year's maximum output actually produced, 0-1 (your site or plant figure)."},"capex_usd_per_kw":{"type":"number","minimum":0,"maximum":100000,"description":"Your overnight capital cost, USD per kW. No default; capital is not priced without it."},"fixed_om_usd_per_kw_year":{"type":"number","minimum":0,"maximum":10000,"description":"Your fixed O&M, USD per kW per year. No default."},"variable_om_usd_per_mwh":{"type":"number","minimum":0,"maximum":10000,"description":"Your variable O&M, USD per MWh. No default."},"fuel_usd_per_mmbtu":{"type":"number","minimum":0,"maximum":1000,"description":"Your fuel price, USD per MMBtu. Needs heat_rate_btu_per_kwh. No default."},"heat_rate_btu_per_kwh":{"type":"number","minimum":3412.14,"maximum":30000,"description":"Plant heat rate, Btu of fuel per kWh of power (fuel plants only). 3,412 Btu/kWh would be 100% efficient."},"discount_rate":{"type":"number","minimum":0,"maximum":1,"description":"Your discount rate or cost of capital as a decimal (0.08 = 8%). Needed to annualize capex. No default."},"life_years":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Economic life in years for the capital recovery factor (default 25)."},"power_usd_per_mwh":{"type":"number","minimum":-10000,"maximum":100000,"description":"Your power price, USD per MWh, for the spread and the margin over LCOE. No default."},"fuel":{"type":"string","enum":["none","gas","coal","oil","other"],"description":"Fuel type, used only to name the spread: gas = spark spread, coal = dark spread. Optional."}},"required":["capacity_mw","capacity_factor"]}},{"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.","get":"https://energy.md/api/v1/mining_power","post":"https://energy.md/api/v1/mining_power","example_body":{"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]},"example_note":"Round illustrative numbers, not market data, a price or a quote; send your own.","input":{"type":"object","properties":{"machines":{"type":"integer","minimum":1,"maximum":1000000,"default":1,"description":"Number of machines. Default 1."},"hashrate_th_per_machine":{"type":"number","minimum":0,"maximum":1000000,"description":"Hashrate per machine in TH/s. Needed for revenue."},"efficiency_j_per_th":{"type":"number","minimum":0,"maximum":10000,"description":"Efficiency in J/TH. Watts per machine = hashrate x J/TH."},"watts_per_machine":{"type":"number","minimum":0,"maximum":10000000,"description":"Power per machine at the wall, in W, instead of hashrate x J/TH. Any flexible machine works."},"overhead_factor":{"type":"number","minimum":1,"maximum":3,"default":1.05,"description":"Cooling and site overhead multiplier on machine power. Default 1.05."},"uptime":{"type":"number","minimum":0,"maximum":1,"default":1,"description":"Share of time running, 0 to 1. Default 1."},"power_usd_per_kwh":{"type":"number","minimum":-100,"maximum":100,"description":"Your all-in power price in $/kWh. No default."},"revenue_usd_per_th_day":{"type":"number","minimum":0,"maximum":1000,"description":"Your own revenue figure per TH/s per day, in $. No default; it moves with conditions this tool can't see."},"prices_usd_per_kwh":{"type":"array","items":{"type":"number"},"minItems":24,"maxItems":24,"description":"Optional: your 24 hourly prices in $/kWh, hour 0 to 23, for the curtailed day."},"max_price_usd_per_kwh":{"type":"number","minimum":-100,"maximum":100,"description":"Optional: your own price cap from settings. Hours priced above it never run, even when under break-even; hours at or under it may run if they are also under break-even."}}}},{"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.","get":"https://energy.md/api/v1/energy_units","post":"https://energy.md/api/v1/energy_units","example_get":"https://energy.md/api/v1/energy_units?value=250&from=kw&to=mwh&hours=8","example_body":{"value":250,"from":"kw","to":"mwh","hours":8},"example_note":"Round illustrative numbers, not market data, a price or a quote; send your own.","input":{"type":"object","properties":{"value":{"type":"number","minimum":-1000000000000000,"maximum":1000000000000000,"description":"The amount to convert, in the `from` unit."},"from":{"type":"string","maxLength":40,"description":"The unit of value. Energy: j, kj, mj, gj, wh, kwh, mwh, gwh, btu, mmbtu, therm, kcal, toe, boe. Power: w, kw, mw, gw, hp, btu/h. Fuel (typical heat content): natural_gas_scf, natural_gas_mcf, natural_gas_m3, propane_gal, diesel_gal, diesel_l, gasoline_gal, gasoline_l, coal_short_ton, wood_cord. Case, spaces and plurals don't matter (therms, BTUs, MMBtus); btu/hr and btuh read as btu/h. MBtu is ambiguous and is refused."},"to":{"type":"string","maxLength":40,"description":"The unit to convert to, from the same list. Optional: leave it out to see the value in every energy (or power) unit."},"hours":{"type":"number","minimum":0,"maximum":876000,"description":"Hours, only for power to energy (energy = power x hours) or energy to power (power = energy / hours). Optional."}},"required":["value","from"]}},{"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.","get":"https://energy.md/api/v1/build_settings","post":"https://energy.md/api/v1/build_settings","example_get":"https://energy.md/api/v1/build_settings?preset=home_and_ev","example_body":{"preset":"home_and_ev"},"example_note":"Round illustrative numbers, not market data, a price or a quote; send your own.","input":{"type":"object","properties":{"preset":{"type":"string","enum":["core","home_and_ev","compute_jobs","business_site"],"description":"Starting point: core, home_and_ev, compute_jobs, business_site. Applied first; each setting overrides it."},"max_price_usd_per_kwh":{"type":"number","minimum":0,"maximum":10,"description":"Flexible loads never run above ($/kWh). Optional; unset clears it. Out-of-range values are clamped."},"budget_usd_per_month":{"type":"number","minimum":0,"maximum":100000000,"description":"Energy budget per month ($). Optional; unset clears it. Out-of-range values are clamped."},"approval_usd":{"type":"number","minimum":0,"maximum":100000000,"description":"Get a yes on any plan that spends or commits over ($). Default 100. Capped at budget_usd_per_month. Out-of-range values are clamped."},"budget_alert_pct":{"type":"integer","minimum":10,"maximum":100,"description":"Warn at this share of the budget (%). Optional; unset clears it. Out-of-range values are clamped."},"missing_prices":{"type":"string","enum":["ask","leave_unpriced"],"description":"When a price is missing: ask (Ask the person for it), leave_unpriced (Work out the rest and list what isn't priced). Default ask."},"demand_limit_kw":{"type":"number","minimum":0,"maximum":1000000,"description":"Keep total demand under (kW). Optional; unset clears it. Out-of-range values are clamped."},"overhead_factor":{"type":"number","minimum":1,"maximum":3,"description":"Cooling or overhead multiplier (x). Optional; unset clears it. Out-of-range values are clamped."},"backup_min_hours":{"type":"number","minimum":0,"maximum":720,"description":"Backup must last at least (hours). Optional; unset clears it. Out-of-range values are clamped."},"days":{"type":"integer","minimum":1,"maximum":366,"description":"Days per billing period (days). Optional; unset clears it. Out-of-range values are clamped."},"electrical_work":{"type":"string","enum":["licensed_only"],"description":"Electrical work: licensed_only (Licensed professionals only). Default licensed_only."},"shift_flexible":{"type":"string","enum":["always","ask","never"],"description":"Move flexible jobs to cheaper or cleaner hours: always (Always, within the rules), ask (Ask first), never (Never). Default ask."},"earliest_hour":{"type":"integer","minimum":0,"maximum":23,"description":"Flexible jobs start no earlier than (hour (0-23)). Optional; unset clears it. Out-of-range values are clamped."},"deadline_hour":{"type":"integer","minimum":1,"maximum":24,"description":"Flexible jobs finish by (hour (1-24)). Optional; unset clears it. Out-of-range values are clamped."},"interruptible":{"type":"string","enum":["yes","no","unset"],"description":"Jobs may pause and resume: yes (Yes), no (No). Optional; unset clears it."},"grid_kg_co2e_per_kwh":{"type":"number","minimum":0,"maximum":2,"description":"Your grid emission factor (kg CO2e/kWh). Optional; unset clears it. Out-of-range values are clamped."},"carbon_cap_kg_per_month":{"type":"number","minimum":0,"maximum":100000000,"description":"Monthly emissions cap (kg CO2e). Optional; unset clears it. Out-of-range values are clamped."},"prefer_clean_hours":{"type":"string","enum":["yes","no","unset"],"description":"Cleaner hours first: yes (Yes, when the cost is within the rules), no (No, cheapest first). Optional; unset clears it."},"contracts":{"type":"string","enum":["never","ask"],"description":"Supply contracts, PPAs, hedges and derivatives: never (Never touch them), ask (Prepare numbers for a person). Default never."},"hedge_ratio_max":{"type":"number","minimum":0,"maximum":1,"description":"Most of the volume a fixed or hedged price may cover (share (0-1)). Optional; unset clears it. Out-of-range values are clamped."},"fixed_vs_floating":{"type":"string","enum":["ask","prefer_fixed","prefer_floating","unset"],"description":"The person's own stance on fixed vs floating: ask (Ask each time), prefer_fixed (Prefers fixed), prefer_floating (Prefers floating). Optional; unset clears it."},"discount_rate":{"type":"number","minimum":0,"maximum":0.5,"description":"Discount rate for NPV and LCOE (share a year (0.07 = 7%)). Optional; unset clears it. Out-of-range values are clamped."},"trading":{"type":"string","enum":["never"],"description":"Trading: never (Never). Default never."},"format":{"type":"string","enum":["section","skill"],"description":"section (default): the settings sections only; skill: the whole skill file too."}}}}],"mcp":{"url":"https://energy.md/mcp","transport":"streamable-http, stateless, JSON responses, no auth","add":"claude mcp add --transport http energy https://energy.md/mcp","tools":["load_energy","shift_load","solar_storage","hedge_math","generation_cost","mining_power","energy_units","build_settings"],"prompts":["energy"],"resources":["https://energy.md/energy.md","https://energy.md/api/v1/settings"]},"openapi":"https://energy.md/openapi.json","llms_txt":"https://energy.md/llms.txt","manifest":"https://energy.md/.well-known/energy.json","rule":"Settings an agent drafted count only after the person says yes: show them to the person first, and follow them only once they agree.","never":["fetches or shows third-party data, prices or rates","stores what you send","approves, enforces or certifies anything","never buys, sells or trades energy, signs contracts, connects to equipment or gives a quote"],"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","contact":"support [at] mailbox.bot"}