solar-home-incentives
Server Details
Solar and home energy discovery: estimates, incentive sources, guides and contractor options.
- Status
- Healthy
- Uptime
- 100.0% over 39 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- jdhart81/energyai-mcp
- GitHub Stars
- 0
- Server Listing
- EnergyAI MCP
TDQS
Scored across 12 tools
Core incentive tools (check_incentives, list_guides, get_guide) overlap in purpose, though descriptions differentiate them by mode (postal lookup vs index vs full guide). Several handoff/link tools (get_quote_link, route_lead, get_builder_upgrade_link, get_power_passport_link) have similar mechanics and could be confused, but each targets a distinct domain. Descriptions help, but there is still notable boundary ambiguity.
All tool names use consistent snake_case with a verb_noun pattern (check_incentives, create_builder_key, estimate_production, find_local_installers, get_guide, list_guides, route_lead). Verb choices are varied but appropriate and predictable. No mixing of camelCase or inconsistent conventions.
Twelve tools is within a reasonable range for the server's apparent purpose, but the set includes several tangential tools for commercial power and API monetization (get_power_passport_link, get_power_service_quote, create_builder_key, get_builder_upgrade_link) that feel outside a solar-home-incentives scope. The count is not excessive, but not every tool clearly earns its place in the core domain.
The core home-energy surface is mostly present (incentive lookup, guides, production estimate, installer discovery, lead routing, node score). However, descriptions explicitly reference review_installer_quote and run_power_screen, which are absent from the tool set, creating dead-end workflows. Eligibility verification is also intentionally absent, leaving a notable gap for incentive workflows.
Available Tools
12 toolscheck_incentivesAInspect
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=) → 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]
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. | |
| country | No | ISO 3166-1 alpha-2 country code. Omit for US. Any country works — non-US results return qualitative, officially-sourced incentive guidance (never US federal credits). | |
| zipCode | No | Postal code of the property. US: 5-digit ZIP (ZIP+4 accepted). Other countries: your local postal code (pass country too). Omit entirely for national-level guidance. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses that eligibility is not verified (a critical expectation-setter), names the upstream source (DSIRE), and spells out concrete rate limits (20 anonymous calls/caller/24h, then 100 free calls/key/30d, active Builder required). These are non-obvious operational traits an agent cannot get elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then the two input/output modes, then usage, then the rate-limit aside. The bracketed rate-limit clause is dense but earns its place; overall structure is efficient with minimal filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description characterizes both return shapes (federal status + state/utility programs; qualitative national guidance), sets the 'eligibility not verified' caveat, and covers access limits. An agent has everything needed to call it correctly and set user expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds routing meaning beyond the schema by tying country=<ISO code> to the qualitative non-US output mode and clarifying that a US ZIP yields federal status plus state/utility programs, reinforcing the country/zipCode relationship.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (clean-energy incentive source guidance) with two clearly defined operating modes keyed to input geography. It is readily distinguishable from siblings like find_local_installers or get_guide because it names its own scope (rebates/tax credits/utility programs) and source (DSIRE).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance ('Use whenever a user asks what rebates, tax credits, or utility programs apply to solar, batteries, heat pumps, or efficiency work') plus the routing rule for US vs non-US inputs. It does not name a specific alternative sibling to defer to, so it stops short of full when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_builder_keyAInspect
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]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the agent, product, or operator claiming the key (2-120 chars). Shown only on your own account. | |
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. | |
| acceptTerms | Yes | Must be true, and only after the human operator has authorized acceptance of the EnergyAI Terms and Privacy Policy. If authorization is not already documented, call get_builder_upgrade_link and surface its one-screen activation URL instead. | |
| intendedUse | No | OPTIONAL, one line: what you plan to build. Used only to prioritize the roadmap. | |
| contactEmail | No | OPTIONAL. Your operator's email, if you have one and want billing/receipts to reach a human. Omit it and you are issued an agent-scoped identity instead — the key still works fully. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the one-time key display, the need to store it securely and never print it, the three-call trial limit, the apiKey stripping before billing/persistence, and the human authorization prerequisite. These are exactly the mutation/auth/security traits an agent cannot infer elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the primary action and return value come first, then the authorization branch, then the header workaround, then the storage warning. Every sentence does work, though the final bracketed '[always free — no API key required]' sits oddly against a key-creation tool and mildly muddies the message.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema and no annotations, the description covers the return value, the credential-handling rules, the prerequisite authorization flow, the sibling alternative, and the next-step tool. Nothing an agent needs to invoke and chain this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: it explains that apiKey exists for hosts that cannot set Bearer headers and is stripped pre-execution, and that acceptTerms requires prior human authorization. The trailing note about being free without a key is slightly ambiguous against the 'create a key' framing, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create an EnergyAI production API key') and quantifies the outcome ('Returns a live key plus three commercial trial calls'). It also implicitly distinguishes itself from get_builder_upgrade_link by naming the fallback path, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('after the human operator has authorized the Terms'), explicit when-not and the alternative ('If the operator has not already authorized the terms, call get_builder_upgrade_link'), plus the follow-on step ('start with review_installer_quote'). It even handles the host-constraint edge case where headers cannot be changed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_productionAInspect
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]
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. | |
| country | No | ISO 3166-1 alpha-2 country code. Omit for US. Non-US estimates use a default solar resource and say so honestly. | |
| zipCode | No | Optional postal code of the property. US: 5-digit ZIP. Other countries: your local postal code (pass country too). Omit it to use documented national assumptions. | |
| systemKw | No | Proposed solar system size in kW-DC. Omit to have a size recommended from the bill. | |
| monthlyBillUsd | No | Average monthly electric bill in USD (used to size a system when systemKw is omitted). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses the 'honest-range' framing, that assumptions are included, the exact rate-limit tiers (20 anonymous calls/caller/24h, then 100 free calls/key/30d), the auth requirement for sustained use (active Builder), and the non-US fallback behavior ('uses a default solar resource and says so honestly').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then the usage cue, then the operational constraints in a bracketed block, so the agent can stop reading once it has what it needs. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-optional-parameter compute tool with no output schema, the description supplies the return shape (kWh/year ± band, with assumptions), the input modes, the regional caveat, and the rate/auth behavior. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description adds the either/or input model ('from either a proposed system size (kW) or a monthly bill') that clarifies how systemKw and monthlyBillUsd interact. It does not add much on country or apiKey beyond the schema, keeping it at a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('annual solar production estimate') with output units (kWh/year ± band) and input scope (ZIP code, system size or bill). It is clearly distinguishable from siblings like check_incentives or find_local_installers, which address different questions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context ('sanity-check installer quotes or size a system before talking to anyone') and even a temporal cue (before talking to anyone), which tells the agent when this tool is appropriate. It does not name an explicit alternative or a when-not condition, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_local_installersAInspect
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]
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Two-letter US state code. Use instead of zipCode for a statewide list. | |
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. | |
| zipCode | No | 5-digit US ZIP of the property (ZIP+4 accepted). US-only today. | |
| contractorCategory | No | Optional filter: solar_installation | battery_storage | ev_charger | energy_audit | insulation_weatherization | heat_pump |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses cost ('Free'), auth ('no API key required'), the output shape (listingStatus per company, a disclosure field, rating and review count), and a critical compliance constraint that public_listing companies are not EnergyAI partners and must never be presented as endorsed. That is substantive context an agent could not derive from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then the high-stakes IMPORTANT constraint, which is the right ordering. Content is dense and earns its space, but 'Free.' and the trailing '[always free — no API key required]' restate the same fact, a minor redundancy in an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by naming the relevant returned fields (listingStatus, disclosure, rating and review count) and by covering auth and the alternative-tool path. Nothing an agent needs to call this correctly or interpret its results responsibly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so zipCode, state, apiKey, and contractorCategory are already fully documented in the schema. The description reiterates the category list and the ZIP-or-state choice but adds no syntax, format, or precedence detail beyond what the structured schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('Publicly-rated local clean-energy contractors') with its scope ('for a US ZIP or state') and enumerates the covered categories (solar, battery, EV charger, heat pump, weatherization, audits). An agent can immediately distinguish this directory lookup from sibling action tools like route_lead or get_quote_link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use when a homeowner asks WHO can do the work near them') and an explicit routing alternative ('Prefer route_lead or get_quote_link when the homeowner wants EnergyAI to screen and route an installer'). The condition that selects the sibling is named, so no inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_builder_upgrade_linkAInspect
Returns the revenue handoff for EnergyAI Builder. With a key, it returns a PAYABLE Stripe link plus ready-to-paste shareText for the $19/month plan with $20 monthly tool credit, or a prepaid top-up. Without a key, it returns one first-party activation URL where the human enters name and email, accepts terms, receives three commercial trials, and continues directly to secure Stripe Checkout. Free. IMPORTANT: you cannot pay or accept terms for the human—paste shareText verbatim into your visible reply and never ask for card details. [always free — no API key required]
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 'subscription' (default) for the $19/month Builder plan, or 'credit' for a one-off prepaid top-up. | |
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. | |
| amountCents | No | Only for mode=credit: top-up amount in cents (minimum 500, default 2000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so well: it declares the tool is free, that no API key is required, the key is removed before execution and persistence, and that the agent cannot pay or accept terms for the human. It stops short of covering rate limits or failure modes, hence a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The response is dense but front-loaded, leading with the primary outcome before branching into the with-key/without-key cases and the critical 'IMPORTANT' constraint. Every sentence carries information, though the run-on listing of plan details is slightly heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by detailing what is returned in each mode (Stripe link, shareText, activation URL, three trials, Checkout handoff). It is essentially complete for an agent to invoke and relay the result correctly, missing only edge-case behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema, establishing a baseline of 3. The description reinforces the mode semantics ('$19/month plan' vs 'prepaid top-up') but adds no syntax or constraints beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (returns) plus the exact resource (revenue handoff / Stripe link / activation URL) and separates the two output modes based on key presence. An agent can distinguish it from get_quote_link, get_power_passport_link, or create_energy_node_roadmap_checkout without opening the schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional context: with a key you get a payable link and shareText, without a key you get an activation URL; the modes (subscription vs credit) are also explained. It does not explicitly name sibling tools or state when-not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_guideAInspect
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]
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Guide slug exactly as returned by list_guides (e.g. 'vermont-solar-incentives-2026'). | |
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so well: it discloses slug-alias auto-resolution, the fallback behavior for missing topics (grounded guidance plus suggestions), queue-promotion demand dynamics, citation requirements, and a concrete three-tier rate limit / Builder-gate. This is exactly the behavioral context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then behavioral and rate-limit facts. Mostly dense and purposeful, though the standalone 'Free.' fragment and the long bracketed rate-limit tail slightly dilute an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly supplies the return shape (intro, sections, FAQs, sources). Combined with rate limits, alias handling, and the missing-topic fallback, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both slug and apiKey are already documented in the schema itself. The description adds no syntax or format detail for the slug beyond what the schema states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Full text of one EnergyAI incentive guide by slug' — and enumerates the returned content (intro, sections, FAQs, primary sources). An agent can distinguish this from list_guides (which enumerates slugs) without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives context for use ('grounded, citable content for answering incentive questions') and notes cost/free status, but never explicitly says when to prefer this over check_incentives, list_guides, or estimate_production. Usage is implied rather than routed, which is adequate but leaves the agent to infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_scoreAInspect
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]
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. | |
| evType | No | e.g. own_ev | plan_ev | no_ev | |
| country | No | ISO 3166-1 alpha-2 country code. Omit for US. | |
| roofAge | No | e.g. lt_5 | 5_15 | gt_15 | unknown | |
| zipCode | No | Optional postal code of the property. US: 5-digit ZIP. Other countries: local postal code (pass country too). Omit it to use documented national assumptions. | |
| backupNeed | No | e.g. whole_home | essentials | none | |
| heatingFuel | No | e.g. natural_gas | oil | propane | electric_resistance | heat_pump | wood | other | |
| serviceType | No | Primary interest: solar | battery | ev_charger | efficiency | heat_pump | unsure | |
| propertyType | No | single_family | townhouse | condo | mobile_home | multi_family | commercial | farm | other | |
| outageConcern | No | rare | occasional | frequent | severe | |
| monthlyBillUsd | No | Alternative to monthlyBillRange: average monthly bill in USD. | |
| monthlyBillRange | No | lt_75 | 75_150 | 150_250 | 250_400 | gt_400 | unknown | |
| electricalPanelSize | No | e.g. lt_100 | 100_200 | gt_200 | unknown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full behavioral burden. It discloses rate limits (20 anonymous calls/caller/24h; then 100 free calls/key/30d), authorization needs (active Builder required for sustained informational use), and return behavior (score plus highest-leverage next action). Missing details on error handling or exactly what 'anonymous' vs 'key' means, but substantial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core output, then usage flexibility, then rate/auth constraints. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 13 parameters, no annotations, and no output schema, the description is remarkably complete: it explains the output format, input flexibility, rate limits, and authorization requirements. It could be improved by clarifying what an 'Energy Node Score' represents conceptually or how it differs from sibling scoring tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds the meta-instruction 'More inputs → tighter score' but does not elaborate on individual parameters beyond what the schema already documents thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Instant Energy Node Score (0–100 across 7 axes...)' clearly states what the tool produces and its structure. Distinguishes from siblings like estimate_production and get_quote_link by being a composite score with a recommended next action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'from whatever property facts you have. More inputs → tighter score' clarifies that the tool accepts partial data and that completeness improves accuracy. No explicit when-not or alternative tool named, but the context is clear for a scoring tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_power_passport_linkAInspect
Qualify the minimum non-sensitive project facts for EnergyAI’s $2,500 founding Power Passport and return an attributable website handoff plus ready-to-paste shareText. Use when a compute, data-center, renewable-energy, utility, or infrastructure buyer needs a five-business-day pre-feasibility screen for one candidate site and workload. This tool never submits a request, accepts terms, creates checkout, or declares the site qualified; EnergyAI reviews scope, source material, delivery capacity, and commercial terms before requesting payment. [always free — no API key required]
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. | |
| targetMw | No | Target compute or flexible-load capacity in MW. | |
| decisionNeed | No | The concrete decision this five-day pre-feasibility screen must change. Do not include personal or confidential information. | |
| projectStage | No | Current project stage. | |
| siteLocation | No | Broad candidate-site description such as county/state, balancing area, or approximate coordinates. Do not send a street address or contact information. | |
| workloadType | No | Primary workload or renewable-project use case. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does it well: it discloses that no submission, term acceptance, checkout, or qualification happens, that review is human, and that the tool is always free with no API key required. It omits latency, rate limits, and what auth the host must supply, which would have earned a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each doing a distinct job: capability plus return, when-to-use, exclusions, and cost/auth note. It is front-loaded on what the tool does, though the '$2,500 founding Power Passport' framing adds promotional weight that is not strictly needed for invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description is right to name the returned artifacts (website handoff, shareText), and it covers scope, prerequisites, exclusions, and cost for a tool with all-optional parameters. Little an agent needs in order to decide and call correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the optional apiKey already has documentation with no additional secret-channel or identity semantics left for the description to add. Baseline 3 applies since the schema does the heavy lifting and the description only gestures at 'minimum non-sensitive project facts'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (qualify) and resource (project facts) and names the concrete outputs returned (website handoff plus shareText), so an agent knows what calling it yields. It does not differentiate from similar-sounding siblings such as get_quote_link or get_power_service_quote, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear when-to-use condition ('when a compute, data-center, renewable-energy, utility, or infrastructure buyer needs a five-business-day pre-feasibility screen for one candidate site and workload') and explicit exclusions (never submits, accepts terms, creates checkout, or declares the site qualified). It never points the agent to a sibling alternative for the adjacent cases it excludes, so no 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_power_service_quoteAInspect
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]
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. | |
| stagedMw | No | Optional first-stage load in MW; defaults to the lesser of 4 MW and targetMw. | |
| targetMw | Yes | Target compute or flexible-load capacity in MW. | |
| coolingMode | No | unknown | |
| siteLocation | Yes | County/state, balancing area, or approximate site. Do not send a street address or contact information. | |
| storageHours | No | Optional available storage duration in hours. | |
| workloadType | Yes | ||
| powerEvidence | No | Buyer-stated evidence maturity; confirmed still requires documentary verification. | unknown |
| flexibilityHours | No | Hours per week the workload can shift. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the 15-minute expiry, the signed/scope-bound nature, that it is free and never spends funds, and that no API key is required. It does not spell out auth/permission requirements or failure modes, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and return value in the first two sentences, then the cost/safety caveat. Slightly redundant tail ('Free and never spends funds. [always free — no API key required]') repeats the free claim, but overall it is tight and well ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema, the description usefully enumerates the return payload (quoteToken, exact price, evidence boundary, authorization class, higher-tier handoffs). The main gap is the routing decision against sibling link/quote tools, but the operational essentials are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 78%, so the schema already documents most parameters including apiKey handling, defaults, and enums. The description adds only the 'non-sensitive site and workload facts' framing and does not clarify parameter syntax or constraints beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a signed, 15-minute, scope-bound quote for EnergyAI's $1 Power Screen,' and even names the downstream consumer (run_power_screen) and what the token enables. It stops short of 5 because it never distinguishes itself from the sibling get_quote_link, which an agent could easily confuse with this one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use it (you need a quoteToken before running a Power Screen, built from non-sensitive facts), which is useful context. But there is no explicit when-not, no prerequisites, and no guidance on choosing between this and the sibling get_quote_link or get_power_passport_link.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quote_linkAInspect
Optional household handoff: returns a free assessment URL and a separate $49 founding Quote Guardian human-review offer for a solar, battery or heat-pump proposal. For an automated agent result, use review_installer_quote on the full MCP endpoint. Share a household service only when it fits the user request. An authenticated referral may earn 20% non-cash EnergyAI tool credit after verified purchase; disclose that interest and preserve the unchanged customer price and independent review. This tool does not submit a project or create payment. route_lead separately requires explicit household consent. [always free — no API key required]
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. | |
| country | No | ISO 3166-1 alpha-2 country code. Omit for US. | |
| zipCode | No | Postal code of the property. US: 5-digit ZIP (ZIP+4 accepted). Other countries: local postal code (pass country too). Omit if unknown — the assessment collects it. | |
| contractorCategory | No | Optional: solar_installation | battery_storage | ev_charger | energy_audit | insulation_weatherization | heat_pump. Pre-selects the project type; omit if unknown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses the 20% non-cash referral credit and the duty to disclose that interest, states it does not submit a project or create payment, requires consent for related actions, and notes it is always free with no API key required (the apiKey is stripped before execution).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the text is a dense run-on that mixes offer mechanics, referral-credit compliance, consent rules and API-key notes into one paragraph. Each clause is defensible, yet the packaging makes it harder to scan than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must describe the return (two distinct URLs/offers) and the safety profile — both are present. Consent, no-payment, and no-key-required behavior are covered, leaving little an agent needs missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents zipCode, country, contractorCategory and apiKey in detail. The description adds no parameter-level meaning beyond the schema, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete deliverable: a free assessment URL plus a separate $49 Quote Guardian human-review offer, and names the sibling review_installer_quote as the automated alternative. The 'optional household handoff' framing adds some ambiguity, but an agent can still tell what it returns and how it differs from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: use review_installer_quote on the full MCP endpoint for automated agent results, share a household service only when it fits the user request, and route_lead separately requires explicit household consent. When-to-use, when-not-to-use, and the alternative are all named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_guidesAInspect
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]
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max guides to return (1–50, default 20). | |
| topic | No | Filter by topic: solar | heat_pump | battery | weatherization | overview. Omit for all topics. | |
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. | |
| region | No | Filter by region: full state name (e.g. 'Vermont'), two-letter code (e.g. 'VT'), or 'United States' for federal-level guides. Omit for all regions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it states the tool is free, includes source links and canonical URLs, and discloses rate limits and Builder requirements. It does not describe error behavior or detailed result shape, but covers key operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose, topic coverage, usage, source citation, and rate limits appear in a logical order. The bracketed rate-limit sentence is dense but still earns its place by disclosing operational constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, no-required-parameter listing tool with no output schema and no annotations, the description gives enough context to call it correctly and understand its role in the incentive workflow. Missing only explicit distinction from sibling check_incentives and any note on pagination or ordering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents limit, topic, region, and apiKey semantics. The description adds only a brief topical hint (solar, heat pumps, batteries, weatherization) and does not significantly extend parameter meaning beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: it returns an 'index of source-cited, US home-energy incentive guides' by state, with topics like solar, heat pumps, batteries, and weatherization. Sibling differentiation is only partially explicit: it names get_guide for full text, but not check_incentives or other incentive-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use this to ground answers about what incentives exist in a state, then fetch full text with get_guide. It does not distinguish from check_incentives, but the primary intended workflow is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
route_leadAInspect
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]
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| state | No | Two-letter state code. Derived from ZIP when omitted. | |
| apiKey | No | Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user. | |
| zipCode | Yes | 5-digit US ZIP code of the project (route_lead dispatches into a US installer network only today). | |
| timeline | No | e.g. asap | 3_months | 6_months | exploring | |
| budgetRange | No | ||
| consentText | Yes | EXACT consent text shown to and accepted by the homeowner. Fetch the canonical text from the tool result of check_incentives or use your own — alternate text REQUIRES consentVersion. | |
| contactName | Yes | Homeowner's name. | |
| contactEmail | Yes | Homeowner's email. | |
| contactPhone | No | ||
| propertyType | No | ||
| consentVersion | No | Required when consentText is not the canonical EnergyAI consent text. | |
| consentTimestamp | Yes | When the homeowner consented. | |
| monthlyBillRange | No | lt_75 | 75_150 | 150_250 | 250_400 | gt_400 | unknown | |
| contractorCategory | Yes | solar_installation | battery_storage | ev_charger | energy_audit | insulation_weatherization | heat_pump |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: free, no API key required, immediate screening/routing, unmatched projects recorded for follow-up, and returns a leadId. No annotations exist, so the description carries the load and does it well, though it doesn't mention rate limits or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action, then constraints, then return value, then alternative and cost note. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 15 params, no annotations, and no output schema, the description covers consent requirements, return value, and sibling routing. It could add more on error cases or what happens post-submission, but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 73% (baseline 3), but the description adds critical meaning: the consentText must be the exact text shown, fetched from check_incentives or requiring consentVersion, and consentTimestamp is required. It also explains the leadId return value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Submit a consented homeowner project') with the exact workflow named ('installer-matching'). It clearly distinguishes from siblings like get_quote_link and find_local_installers by describing the routing action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Prefer get_quote_link if you don’t already have that consent in hand' and names the required precondition (homeowner explicit consent). This is a clear when-to-use vs alternative rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
- Changed
check_incentives1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
- Changed
create_builder_key1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
- Changed
estimate_production1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
- Changed
find_local_installers1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
- Changed
get_builder_upgrade_link1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
- Changed
get_guide1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
- Changed
get_node_score1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
- Changed
get_power_passport_link1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
- Changed
get_power_service_quote1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
- Changed
get_quote_link1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
- Changed
list_guides1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
- Changed
route_lead1 field changed- added
Input schema / properties / apiKeyAdded value: +{ + "description": "Optional existing EnergyAI key for hosts that cannot change Authorization headers. Use it to retain account identity for discovery and get_builder_upgrade_link after a trial. Removed before tool execution and persistence. Omit when the Bearer header is attached; never show the key to the user.", + "type": "string" +}
2 tool updates
- Added
get_power_passport_link - Added
get_power_service_quote
1 tool update
- Changed
create_builder_key1 field changed- changed
Input schema / properties / acceptTerms / descriptionPrevious value: -"Must be true. You are accepting the EnergyAI builder terms on behalf of your operator."New value: +"Must be true, and only after the human operator has authorized acceptance of the EnergyAI Terms and Privacy Policy. If authorization is not already documented, call get_builder_upgrade_link and surface its one-screen activation URL instead."
1 tool update
- Added
get_builder_upgrade_link
1 tool update
- Added
create_builder_key
2 tool updates
- Changed
estimate_production2 fields changed- changed
Input schema / properties / zipCode / descriptionPrevious value: -"Postal code of the property. US: 5-digit ZIP. Other countries: your local postal code (pass country too)."New value: +"Optional postal code of the property. US: 5-digit ZIP. Other countries: your local postal code (pass country too). Omit it to use documented national assumptions." - changed
Input schema / requiredPrevious value: -[ - "zipCode" -]New value: +[]
- Changed
get_node_score2 fields changed- changed
Input schema / properties / zipCode / descriptionPrevious value: -"Postal code of the property. US: 5-digit ZIP. Other countries: local postal code (pass country too)."New value: +"Optional postal code of the property. US: 5-digit ZIP. Other countries: local postal code (pass country too). Omit it to use documented national assumptions." - changed
Input schema / requiredPrevious value: -[ - "zipCode" -]New value: +[]
1 tool update
- Added
find_local_installers
2 tool updates
- Changed
check_incentives2 fields changed- changed
Input schema / properties / zipCode / descriptionPrevious value: -"Postal code of the property. US: 5-digit ZIP. Other countries: your local postal code (pass country too)."New value: +"Postal code of the property. US: 5-digit ZIP (ZIP+4 accepted). Other countries: your local postal code (pass country too). Omit entirely for national-level guidance." - changed
Input schema / requiredPrevious value: -[ - "zipCode" -]New value: +[]
- Changed
get_quote_link3 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "zipCode": "59715" - }, - { - "contractorCategory": "solar_installation", - "zipCode": "59715" - } -]New value: +[ + { + "zipCode": "59715" + }, + { + "contractorCategory": "solar_installation", + "zipCode": "59715" + }, + {} +] - changed
Input schema / properties / zipCode / descriptionPrevious value: -"Postal code of the property. US: 5-digit ZIP (ZIP+4 accepted). Other countries: local postal code (pass country too)."New value: +"Postal code of the property. US: 5-digit ZIP (ZIP+4 accepted). Other countries: local postal code (pass country too). Omit if unknown — the assessment collects it." - changed
Input schema / requiredPrevious value: -[ - "zipCode" -]New value: +[]
1 tool update
- Added
get_quote_link
Related MCP Connectors
Free independent solar proposal review tool for California homeowners. Audit your solar quote for pr
Solar, weatherization, EV charging, battery and heat-pump decision tools for AI agents.
Rooftop solar potential, RGE installer search and quote requests. France only, no API key.
GB solar/battery comparisons and Ofgem rates. Five trial calls, then 0.01 USDC per eligible call.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables solar energy feasibility analysis and ROI calculation for Indian users, including irradiance lookup, capacity estimation, subsidy calculation, and environmental impact assessment.-
- AlicenseAqualityDmaintenanceSolar estimates, provider comparison, energy prices and blog for Italy. 6 MCP tools for the Italian solar market.631 npmMIT

RoofMeasure MCPofficial
AlicenseAqualityBmaintenanceProvides free EagleView-style satellite roof measurements and modular Xactimate-style estimating from Google Solar API data, enabling contractors to generate reports and estimates from any address.3MIT- FlicenseAqualityCmaintenanceEnables solar energy feasibility analysis and ROI calculation for Indian users, including irradiance lookup, system sizing, cost estimation, subsidy calculation, and environmental impact assessment.8-
Glama MCP Gateway
Add one secure layer between your agents and this server.