For developers & AI systems

The solar engine is the product

The website is one interface to a calculation engine. That engine is API-first: the same functions power every calculator, the Solar Decision Engine and the Solar Advisor, and they are documented so an AI assistant or agent can eventually call them directly.

Status

Today the engine runs client-side as window.SI.engine in /assets/data.js. There is no hosted REST endpoint or MCP server yet — but the function contracts are stable and specified, so integrations built against them will carry over.

Functions

calculateSolarSystem

Sizes a residential system and estimates its economics.

In: { zip, monthly_bill, annual_kwh?, roof_area?, roof_orientation?, shading?, battery_interest?, offset?, rate_escalation? }
Out: { system_size, production, annual_consumption, coverage_pct, gross_cost, incentives_total, net_cost, annual_savings, payback, savings_10yr, savings_20yr, savings_25yr, roi_pct, monthly_loan, assumptions[] }

calculateSolarFinancing

Amortizes a solar loan and estimates payback against savings.

In: { system_cost, down_payment?, apr?, term?, annual_savings? }
Out: { loan_amount, apr, term, monthly_payment, total_interest, total_cost, net_monthly_impact, payback, assumptions[] }

getSolarIncentives

Returns structured incentive records — federal first, then state — each with a source URL and a last_verified date.

In: { state | zip, technology? }
Out: { state, incentives: [{ id, name, level, jurisdiction, eligibility, value, value_type, expiration, source_name, source_url, last_verified, technologies[] }], note, source }

findInstallers

Installers that publicly serve a state, ranked 0–100 by a transparent, fixed-weight match score. Weights: service-area 25, experience 15, reputation 20, product 10, warranty 10, financing 10, verification 10. Reputation/warranty/verification currently use a neutral baseline (records are not independently verified). Ranking is algorithmic and may include commercial relationships.

In: { zip | state, system_size?, battery?, financing?, limit? }
Out: { state, count, weights, disclosure, installers: [{ name, website, hq, founded, profile_url, match_score, match_breakdown }] }

compareSolarQuotes

Compares 2–3 proposals and names the cheapest, best value, best warranty, best financing, highest production and best overall, with a rationale for each.

In: { quotes: [{ label?, system_size, price, ppw?, battery_kwh?, warranty_years?, apr?, monthly_payment?, production? }] }
Out: { quotes[], best_price, best_value, best_financing, best_warranty, best_production, overall_recommendation, rationale{} }

scenarios / sensitivity / verdict

Helpers over the above: scenarios(input) → cash / loan / solar+battery; sensitivity(input) → payback and 25-year savings at 2/4/6%/yr escalation plus optimistic/base/conservative; verdict({payback, rate, coverage_pct}){ rating, why }.

Roadmap

  • Hosted REST API at /api/v0 matching the OpenAPI spec
  • MCP / WebMCP server exposing the five functions as tools
  • Signed, timestamped data snapshots for citation
  • Structured market data (the U.S. Solar Cost Index) as a downloadable dataset

Interested in an integration or early API access? Get in touch.