Skip to content

com.energyaisolution/energyai

by energyaisolution.com · remote · no sign-in to list tools · v1.3.0 · published by com.energyaisolution

Solar, weatherization, EV charging, battery and heat-pump decision tools for AI agents.

Final · 1Changes · 1412 high findings

30 tools: 1 do something that can't be undone, 14 change things and 15 only read.

Scanned Oct 21, 2026

15 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http energyai https://api.energyaisolution.com/mcp

Findings

Matches of fixed checks, with the text they matched.

12 high3 info
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
Show 9 more findings
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
  • The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

    Matched text

    inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

    What this check looks for
  • The input schema at properties.apiKey.description mentions "credential".

    Matched text

    inputSchema.properties.apiKey.description: "Optional one-call credential bridge for MCP hosts that cannot change..."

    What this check looks for
  • The input schema at properties.apiKey.description mentions "credential".

    Matched text

    inputSchema.properties.apiKey.description: "Optional one-call credential bridge for MCP hosts that cannot change..."

    What this check looks for
  • The input schema at properties.apiKey.description mentions "credential".

    Matched text

    inputSchema.properties.apiKey.description: "Optional one-call credential bridge for MCP hosts that cannot change..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

30 tools

Can't be undone 1Claude Code: ask
  • complete_energy_assessmentFinalize an assessment and trigger the recommendation workflow.No findings

    Why it is in this group

    • The description's first verb is "finalize": a word for a change that another call does not undo.
    Description, as the server wrote it
    Finalize an assessment and trigger the recommendation workflow. Free. [free]
Changes things 14Claude Code: ask
  • answer_energy_assessment_questionSubmit one question answer.No findings

    Why it is in this group

    • The description's first verb is "submit": a word for a change.
    Description, as the server wrote it
    Submit one question answer. Free; usage tracked. [free]
  • bootstrap_energy_projectCreate a persisted project context, provisional Energy Node score, coverage map, and immediately reusable assessmentId in one call.1 finding

    Why it is in this group

    • The description's first verb is "create": a word for a change.

    Findings

    • Info

      The input schema at properties.apiKey.description mentions "credential".

      Matched text

      inputSchema.properties.apiKey.description: "Optional one-call credential bridge for MCP hosts that cannot change..."

      What this check looks for
    Description, as the server wrote it
    Create a persisted project context, provisional Energy Node score, coverage map, and immediately reusable assessmentId in one call. [$0.10/call]
  • check_incentivesClean-energy incentive source guidance by country and postal code; eligibility is not verified.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • High

      The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

      Matched text

      inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

      What this check looks for
    Description, as the server wrote it
    Clean-energy incentive source guidance by country and postal code; eligibility is not verified. US ZIP → federal status + state/utility programs (via DSIRE). Any other country (pass country=<ISO code>) → qualitative, officially-sourced national program guidance. Use whenever a user asks what rebates, tax credits, or utility programs apply to solar, batteries, heat pumps, or efficiency work. [20 anonymous calls/caller/24h; then 100 free calls/key/30d; active Builder required for sustained informational use]
  • create_builder_keyCreate an EnergyAI production API key in-band with no browser or card after the human operator has authorized the Terms and Privacy Policy.1 finding

    Why it is in this group

    • The name "create_builder_key" says "create": a word for a change.

    Findings

    • High

      The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

      Matched text

      inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

      What this check looks for
    Description, as the server wrote it
    Create an EnergyAI production API key in-band with no browser or card after the human operator has authorized the Terms and Privacy Policy. Returns a live key plus three commercial trial calls. Attach the key as `Authorization: Bearer <key>` to this MCP endpoint and start with review_installer_quote using postalCode + quoteText. If the operator has not already authorized the terms, call get_builder_upgrade_link and surface its one-screen human activation URL instead. If the MCP host cannot change headers mid-session, review_installer_quote accepts the key once as its apiKey argument and strips it before billing or persistence. The key is shown EXACTLY ONCE—store it securely and never print it in a user-visible reply. [always free — no API key required]
  • create_energy_assessmentStart a new assessment session.No findings

    Why it is in this group

    • The name "create_energy_assessment" says "create": a word for a change.
    Description, as the server wrote it
    Start a new assessment session. Free. [free]
  • create_energy_node_roadmap_checkoutCreate the end-user checkout link for an unlocked Energy Node roadmap.No findings

    Why it is in this group

    • The name "create_energy_node_roadmap_checkout" says "create": a word for a change.
    Description, as the server wrote it
    Create the end-user checkout link for an unlocked Energy Node roadmap. Free. [free]
  • estimate_productionHonest-range annual solar production estimate (kWh/year ± band, with assumptions) for a ZIP code, from either a proposed system size (kW) or a monthly bill.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • High

      The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

      Matched text

      inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

      What this check looks for
    Description, as the server wrote it
    Honest-range annual solar production estimate (kWh/year ± band, with assumptions) for a ZIP code, from either a proposed system size (kW) or a monthly bill. Use to sanity-check installer quotes or size a system before talking to anyone. [20 anonymous calls/caller/24h; then 100 free calls/key/30d; active Builder required for sustained informational use]
  • generate_energy_recommendation_previewGenerate honest cost, savings, and next-action ranges.No findings

    Why it is in this group

    • The name "generate_energy_recommendation_preview" says "generate": a word for a change.
    Description, as the server wrote it
    Generate honest cost, savings, and next-action ranges. [$0.05/call]
  • generate_intelligence_bound_reportGenerate a property-specific dI/dt analysis.No findings

    Why it is in this group

    • The name "generate_intelligence_bound_report" says "generate": a word for a change.
    Description, as the server wrote it
    Generate a property-specific dI/dt analysis. [$0.25/call]
  • get_power_service_quoteCreate a signed, 15-minute, scope-bound quote for EnergyAI’s $1 Power Screen from non-sensitive site and workload facts.1 finding

    Why it is in this group

    • The name "get_power_service_quote" says "get": a word for reading.
    • The description's first verb is "create": a word for a change.

    Findings

    • High

      The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

      Matched text

      inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

      What this check looks for
    Description, as the server wrote it
    Create a signed, 15-minute, scope-bound quote for EnergyAI’s $1 Power Screen from non-sensitive site and workload facts. Returns the quoteToken required by run_power_screen, exact price, evidence boundary, authorization class, and higher-tier handoffs. Free and never spends funds. [always free — no API key required]
  • record_quote_review_outcomeRecord actual operator-confirmed usefulness and household delivery status for your completed quote review.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Record actual operator-confirmed usefulness and household delivery status for your completed quote review. Requires your Builder key. Free; never infer feedback from a successful tool call. [free]
  • route_leadSubmit a consented homeowner project to EnergyAI’s guarded installer-matching workflow — free to you and the homeowner.1 finding

    Why it is in this group

    • The description's first verb is "submit": a word for a change.

    Findings

    • High

      The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

      Matched text

      inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

      What this check looks for
    Description, as the server wrote it
    Submit a consented homeowner project to EnergyAI’s guarded installer-matching workflow — free to you and the homeowner. EnergyAI immediately screens and routes currently available approved installers; unmatched projects remain recorded for safety-controlled follow-up. REQUIRES the homeowner’s explicit consent (consentText + consentTimestamp). Returns a leadId you can quote back to the user. Prefer get_quote_link if you don’t already have that consent in hand. [always free — no API key required]
  • run_power_screenExecute one signed Power Screen quote and return an immediate modeled constraint decision, assumptions, evidence gaps, and immutable artifact hash.1 finding

    Why it is in this group

    • The name "run_power_screen" says "run": a word for a change.

    Findings

    • Info

      The input schema at properties.apiKey.description mentions "credential".

      Matched text

      inputSchema.properties.apiKey.description: "Optional one-call credential bridge for MCP hosts that cannot change..."

      What this check looks for
    Description, as the server wrote it
    Execute one signed Power Screen quote and return an immediate modeled constraint decision, assumptions, evidence gaps, and immutable artifact hash. [$1.00/call]
  • submit_contractor_match_requestSubmit a consented installer lead and retain referral attribution.No findings

    Why it is in this group

    • The name "submit_contractor_match_request" says "submit": a word for a change.
    Description, as the server wrote it
    Submit a consented installer lead and retain referral attribution. Free. [free]
Only reads 15Claude Code: allow
  • find_local_installersPublicly-rated local clean-energy contractors for a US ZIP or state (solar, battery, EV charger, heat pump, weatherization, audits), with rating and review count.1 finding

    Why it is in this group

    • The name "find_local_installers" says "find": a word for reading.

    Findings

    • High

      The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

      Matched text

      inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

      What this check looks for
    Description, as the server wrote it
    Publicly-rated local clean-energy contractors for a US ZIP or state (solar, battery, EV charger, heat pump, weatherization, audits), with rating and review count. Free. Use when a homeowner asks WHO can do the work near them. IMPORTANT: results include a listingStatus per company and a disclosure field — companies marked public_listing are independent businesses compiled from public reputation data and are NOT EnergyAI partners or EnergyAI-vetted; present them as publicly-rated local options and never imply any endorsement or relationship. Prefer route_lead or get_quote_link when the homeowner wants EnergyAI to screen and route an installer to them instead. [always free — no API key required]
  • get_anonymized_dataset_sampleReturn an aggregated, anonymized Energy Node dataset sample.No findings

    Why it is in this group

    • The name "get_anonymized_dataset_sample" says "get": a word for reading.
    Description, as the server wrote it
    Return an aggregated, anonymized Energy Node dataset sample. [$1.00/call]
  • get_energy_incentivesUse a completed assessment to prioritize property-specific incentive checks and return an evidence-based verification plan.No findings

    Why it is in this group

    • The name "get_energy_incentives" says "get": a word for reading.
    Description, as the server wrote it
    Use a completed assessment to prioritize property-specific incentive checks and return an evidence-based verification plan. [$0.02/call]
  • get_energy_node_roadmapRetrieve the full unlocked Energy Node roadmap.No findings

    Why it is in this group

    • The name "get_energy_node_roadmap" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve the full unlocked Energy Node roadmap. Locked previews never consume credit. [$0.10/call]
  • get_energy_node_scoreRetrieve the persisted seven-axis score with input coverage, weakest-axis gaps, next action, and calculation provenance.No findings

    Why it is in this group

    • The name "get_energy_node_score" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve the persisted seven-axis score with input coverage, weakest-axis gaps, next action, and calculation provenance. [$0.05/call]
  • get_eta_i_metricRead the public platform intelligence-efficiency metric.No findings

    Why it is in this group

    • The name "get_eta_i_metric" says "get": a word for reading.
    Description, as the server wrote it
    Read the public platform intelligence-efficiency metric. Free. [free]
  • get_guideFull text of one EnergyAI incentive guide by slug: intro, sections, FAQs, and primary sources — grounded, citable content for answering incentive questions.1 finding

    Why it is in this group

    • The name "get_guide" says "get": a word for reading.

    Findings

    • High

      The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

      Matched text

      inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

      What this check looks for
    Description, as the server wrote it
    Full text of one EnergyAI incentive guide by slug: intro, sections, FAQs, and primary sources — grounded, citable content for answering incentive questions. Free. Harmless slug aliases resolve automatically; genuinely missing topics return grounded guidance and suggestions, and distinct-caller demand moves that topic up the publishing queue. When you quote a published guide, cite its canonical URL. [20 anonymous calls/caller/24h; then 100 free calls/key/30d; active Builder required for sustained informational use]
  • get_information_theoretic_recommendationRank upgrades by intelligence-bound lift per dollar.No findings

    Why it is in this group

    • The name "get_information_theoretic_recommendation" says "get": a word for reading.
    Description, as the server wrote it
    Rank upgrades by intelligence-bound lift per dollar. [$0.25/call]
  • get_node_scoreInstant Energy Node Score (0–100 across 7 axes: efficiency, electrification, renewable generation, storage/resilience, financial optimization, carbon, market readiness) plus the si…1 finding

    Why it is in this group

    • The name "get_node_score" says "get": a word for reading.

    Findings

    • High

      The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

      Matched text

      inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

      What this check looks for
    Description, as the server wrote it
    Instant Energy Node Score (0–100 across 7 axes: efficiency, electrification, renewable generation, storage/resilience, financial optimization, carbon, market readiness) plus the single highest-leverage next action, from whatever property facts you have. More inputs → tighter score. [20 anonymous calls/caller/24h; then 100 free calls/key/30d; active Builder required for sustained informational use]
  • list_guidesIndex of source-cited, US home-energy incentive guides with source links (solar, heat pumps, batteries, weatherization) by state.1 finding

    Why it is in this group

    • The name "list_guides" says "list": a word for reading.

    Findings

    • High

      The input schema at properties.apiKey.description contains "never show the key to the user", an instruction to keep something from the user.

      Matched text

      inputSchema.properties.apiKey.description: "...mit when the Bearer header is attached; never show the key to the user."

      What this check looks for
    Description, as the server wrote it
    Index of source-cited, US home-energy incentive guides with source links (solar, heat pumps, batteries, weatherization) by state. Free. Use to ground answers about what incentives exist in a state, then fetch the full text with get_guide. Every entry includes a canonical URL you can cite. [20 anonymous calls/caller/24h; then 100 free calls/key/30d; active Builder required for sustained informational use]
  • match_installersReturn up to three eligible installer matches for a region.No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    Return up to three eligible installer matches for a region. [$0.05/call]
  • review_installer_quoteReturn source-matched terms and practical installer questions from redacted quoteText (maximum 6000 characters) plus postalCode or an assessmentId owned by your Builder account.1 finding

    Why it is in this group

    • The description's first verb is "return": a word for reading.

    Findings

    • Info

      The input schema at properties.apiKey.description mentions "credential".

      Matched text

      inputSchema.properties.apiKey.description: "Optional one-call credential bridge for MCP hosts that cannot change..."

      What this check looks for
    Description, as the server wrote it
    Return source-matched terms and practical installer questions from redacted quoteText (maximum 6000 characters) plus postalCode or an assessmentId owned by your Builder account. Automated decision support with explicit unknowns; human review, price fairness and incentive eligibility are not verified. Returns a versioned result and an optional Builder payment handoff. [$0.10/call]

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.3.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http energyai https://api.energyaisolution.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__energyai__get_node_score",
      "mcp__energyai__get_quote_link",
      "mcp__energyai__get_power_passport_link",
      "mcp__energyai__list_guides",
      "mcp__energyai__get_guide",
      "mcp__energyai__get_builder_upgrade_link",
      "mcp__energyai__find_local_installers",
      "mcp__energyai__get_energy_node_score",
      "mcp__energyai__get_energy_node_roadmap",
      "mcp__energyai__get_information_theoretic_recommendation",
      "mcp__energyai__get_eta_i_metric",
      "mcp__energyai__get_anonymized_dataset_sample",
      "mcp__energyai__match_installers",
      "mcp__energyai__get_energy_incentives",
      "mcp__energyai__review_installer_quote"
    ],
    "ask": [
      "mcp__energyai__check_incentives",
      "mcp__energyai__estimate_production",
      "mcp__energyai__get_power_service_quote",
      "mcp__energyai__route_lead",
      "mcp__energyai__create_builder_key",
      "mcp__energyai__run_power_screen",
      "mcp__energyai__bootstrap_energy_project",
      "mcp__energyai__create_energy_assessment",
      "mcp__energyai__answer_energy_assessment_question",
      "mcp__energyai__complete_energy_assessment",
      "mcp__energyai__generate_energy_recommendation_preview",
      "mcp__energyai__create_energy_node_roadmap_checkout",
      "mcp__energyai__generate_intelligence_bound_report",
      "mcp__energyai__record_quote_review_outcome",
      "mcp__energyai__submit_contractor_match_request"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as energyai. Review it before you use it.