{"serverId":"mcp-registry/com.energyaisolution/energyai","tools":[{"name":"check_incentives","fixed":{"name":"check_incentives","description":"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 informa","inputSchema":{"type":"object","examples":[{"zipCode":"59715"},{"country":"DE","zipCode":"10115"}],"required":[],"properties":{"apiKey":{"type":"string","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."},"country":{"type":"string","examples":["DE","GB","CA"],"description":"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":{"type":"string","examples":["59715"],"description":"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":412,"tokensAfter":412},{"name":"create_builder_key","fixed":{"name":"create_builder_key","description":"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 chang","inputSchema":{"type":"object","examples":[{"name":"Acme Home Assistant","acceptTerms":true},{"name":"Acme Home Assistant","acceptTerms":true,"intendedUse":"Persisted solar projects for our smart-home users","contactEmail":"dev@acme.example"}],"required":["name","acceptTerms"],"properties":{"name":{"type":"string","examples":["Acme Home Assistant"],"description":"Name of the agent, product, or operator claiming the key (2-120 chars). Shown only on your own account."},"apiKey":{"type":"string","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."},"acceptTerms":{"type":"boolean","examples":[true],"description":"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":{"type":"string","description":"OPTIONAL, one line: what you plan to build. Used only to prioritize the roadmap."},"contactEmail":{"type":"string","format":"email","description":"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."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":568,"tokensAfter":568},{"name":"create_energy_assessment","fixed":{"name":"create_energy_assessment","description":"Start a new assessment session. Free. [free]","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":40,"tokensAfter":40},{"name":"create_energy_node_roadmap_checkout","fixed":{"name":"create_energy_node_roadmap_checkout","description":"Create the end-user checkout link for an unlocked Energy Node roadmap. Free. [free]","inputSchema":{"type":"object","required":["assessmentId"],"properties":{"email":{"type":"string","format":"email"},"assessmentId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":83,"tokensAfter":83},{"name":"estimate_production","fixed":{"name":"estimate_production","description":"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]","inputSchema":{"type":"object","examples":[{"zipCode":"59715","systemKw":6},{"zipCode":"02139","monthlyBillUsd":180}],"required":[],"properties":{"apiKey":{"type":"string","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."},"country":{"type":"string","examples":["AU","DE"],"description":"ISO 3166-1 alpha-2 country code. Omit for US. Non-US estimates use a default solar resource and say so honestly."},"zipCode":{"type":"string","examples":["59715"],"description":"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":{"type":"number","examples":[6],"description":"Proposed solar system size in kW-DC. Omit to have a size recommended from the bill."},"monthlyBillUsd":{"type":"number","examples":[180],"description":"Average monthly electric bill in USD (used to size a system when systemKw is omitted)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":443,"tokensAfter":443},{"name":"find_local_installers","fixed":{"name":"find_local_installers","description":"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","inputSchema":{"type":"object","examples":[{"zipCode":"05401"},{"state":"VT","contractorCategory":"solar_installation"}],"required":[],"properties":{"state":{"type":"string","examples":["VT","CA"],"description":"Two-letter US state code. Use instead of zipCode for a statewide list."},"apiKey":{"type":"string","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."},"zipCode":{"type":"string","examples":["59715"],"description":"5-digit US ZIP of the property (ZIP+4 accepted). US-only today."},"contractorCategory":{"type":"string","description":"Optional filter: solar_installation | battery_storage | ev_charger | energy_audit | insulation_weatherization | heat_pump"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":412,"tokensAfter":412},{"name":"generate_energy_recommendation_preview","fixed":{"name":"generate_energy_recommendation_preview","description":"Generate honest cost, savings, and next-action ranges. [$0.05/call]","inputSchema":{"type":"object","required":["assessmentId"],"properties":{"assessmentId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":67,"tokensAfter":67},{"name":"get_anonymized_dataset_sample","fixed":{"name":"get_anonymized_dataset_sample","description":"Return an aggregated, anonymized Energy Node dataset sample. [$1.00/call]","inputSchema":{"type":"object","properties":{"limit":{"type":"number","default":100},"offset":{"type":"number","default":0}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":72,"tokensAfter":72},{"name":"get_builder_upgrade_link","fixed":{"name":"get_builder_upgrade_link","description":"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 r","inputSchema":{"type":"object","examples":[{},{"mode":"subscription"},{"mode":"credit","amountCents":2000}],"required":[],"properties":{"mode":{"type":"string","description":"'subscription' (default) for the $19/month Builder plan, or 'credit' for a one-off prepaid top-up."},"apiKey":{"type":"string","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."},"amountCents":{"type":"number","examples":[2000],"description":"Only for mode=credit: top-up amount in cents (minimum 500, default 2000)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":364,"tokensAfter":364},{"name":"get_energy_incentives","fixed":{"name":"get_energy_incentives","description":"Use a completed assessment to prioritize property-specific incentive checks and return an evidence-based verification plan. [$0.02/call]","inputSchema":{"type":"object","required":["assessmentId"],"properties":{"assessmentId":{"type":"string","description":"Completed EnergyAI assessment id. Use free check_incentives for ZIP-only guidance."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":109,"tokensAfter":109},{"name":"get_energy_node_roadmap","fixed":{"name":"get_energy_node_roadmap","description":"Retrieve the full unlocked Energy Node roadmap. Locked previews never consume credit. [$0.10/call]","inputSchema":{"type":"object","required":["assessmentId"],"properties":{"assessmentId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":72,"tokensAfter":72},{"name":"get_energy_node_score","fixed":{"name":"get_energy_node_score","description":"Retrieve the persisted seven-axis score with input coverage, weakest-axis gaps, next action, and calculation provenance. [$0.05/call]","inputSchema":{"type":"object","required":["assessmentId"],"properties":{"assessmentId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":81,"tokensAfter":81},{"name":"get_eta_i_metric","fixed":{"name":"get_eta_i_metric","description":"Read the public platform intelligence-efficiency metric. Free. [free]","inputSchema":{"type":"object","properties":{"days":{"type":"number","default":30}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":55,"tokensAfter":55},{"name":"get_guide","fixed":{"name":"get_guide","description":"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","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string","description":"Guide slug exactly as returned by list_guides (e.g. 'vermont-solar-incentives-2026')."},"apiKey":{"type":"string","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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":297,"tokensAfter":297},{"name":"get_information_theoretic_recommendation","fixed":{"name":"get_information_theoretic_recommendation","description":"Rank upgrades by intelligence-bound lift per dollar. [$0.25/call]","inputSchema":{"type":"object","required":["assessmentId"],"properties":{"assessmentId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":67,"tokensAfter":67},{"name":"get_node_score","fixed":{"name":"get_node_score","description":"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]","inputSchema":{"type":"object","examples":[{"zipCode":"59715","heatingFuel":"natural_gas","serviceType":"solar","propertyType":"single_family","monthlyBillRange":"150_250"}],"required":[],"properties":{"apiKey":{"type":"string","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."},"evType":{"type":"string","description":"e.g. own_ev | plan_ev | no_ev"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code. Omit for US."},"roofAge":{"type":"string","description":"e.g. lt_5 | 5_15 | gt_15 | unknown"},"zipCode":{"type":"string","description":"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":{"type":"string","description":"e.g. whole_home | essentials | none"},"heatingFuel":{"type":"string","description":"e.g. natural_gas | oil | propane | electric_resistance | heat_pump | wood | other"},"serviceType":{"type":"string","description":"Primary interest: solar | battery | ev_charger | efficiency | heat_pump | unsure"},"propertyType":{"type":"string","description":"single_family | townhouse | condo | mobile_home | multi_family | commercial | farm | other"},"outageConcern":{"type":"string","description":"rare | occasional | frequent | severe"},"monthlyBillUsd":{"type":"number","description":"Alternative to monthlyBillRange: average monthly bill in USD."},"monthlyBillRange":{"type":"string","description":"lt_75 | 75_150 | 150_250 | 250_400 | gt_400 | unknown"},"electricalPanelSize":{"type":"string","description":"e.g. lt_100 | 100_200 | gt_200 | unknown"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":644,"tokensAfter":644},{"name":"get_power_passport_link","fixed":{"name":"get_power_passport_link","description":"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, an","inputSchema":{"type":"object","examples":[{"targetMw":12,"decisionNeed":"Decide whether to stage the first 4 MW here or continue the site search.","projectStage":"utility_conversations","siteLocation":"Clark County, Nevada","workloadType":"inference"},{}],"required":[],"properties":{"apiKey":{"type":"string","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."},"targetMw":{"type":"number","maximum":2000,"minimum":0.1,"description":"Target compute or flexible-load capacity in MW."},"decisionNeed":{"type":"string","maxLength":2000,"description":"The concrete decision this five-day pre-feasibility screen must change. Do not include personal or confidential information."},"projectStage":{"enum":["exploring","site_control","utility_conversations","interconnection_process","financing","operating"],"type":"string","description":"Current project stage."},"siteLocation":{"type":"string","description":"Broad candidate-site description such as county/state, balancing area, or approximate coordinates. Do not send a street address or contact information."},"workloadType":{"enum":["ai_training","inference","hpc","rendering_simulation","mixed_compute","renewable_project","other"],"type":"string","description":"Primary workload or renewable-project use case."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":577,"tokensAfter":577},{"name":"get_power_service_quote","fixed":{"name":"get_power_service_quote","description":"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]","inputSchema":{"type":"object","examples":[{"stagedMw":4,"targetMw":12,"coolingMode":"dry","siteLocation":"Clark County, Nevada","storageHours":2,"workloadType":"inference","powerEvidence":"utility_contact","flexibilityHours":24}],"required":["siteLocation","targetMw","workloadType"],"properties":{"apiKey":{"type":"string","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."},"stagedMw":{"type":"number","maximum":2000,"minimum":0.1,"description":"Optional first-stage load in MW; defaults to the lesser of 4 MW and targetMw."},"targetMw":{"type":"number","maximum":2000,"minimum":0.1,"description":"Target compute or flexible-load capacity in MW."},"coolingMode":{"enum":["unknown","dry","liquid_closed","evaporative"],"type":"string","default":"unknown"},"siteLocation":{"type":"string","description":"County/state, balancing area, or approximate site. Do not send a street address or contact information."},"storageHours":{"type":"number","maximum":24,"minimum":0,"description":"Optional available storage duration in hours."},"workloadType":{"enum":["ai_training","inference","hpc","rendering_simulation","mixed_compute","renewable_project","other"],"type":"string"},"powerEvidence":{"enum":["unknown","regional","utility_contact","confirmed"],"type":"string","default":"unknown","description":"Buyer-stated evidence maturity; confirmed still requires documentary verification."},"flexibilityHours":{"type":"number","maximum":168,"minimum":0,"description":"Hours per week the workload can shift."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":593,"tokensAfter":593},{"name":"get_quote_link","fixed":{"name":"get_quote_link","description":"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 to","inputSchema":{"type":"object","examples":[{"zipCode":"59715"},{"zipCode":"59715","contractorCategory":"solar_installation"},{}],"required":[],"properties":{"apiKey":{"type":"string","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."},"country":{"type":"string","examples":["DE","GB"],"description":"ISO 3166-1 alpha-2 country code. Omit for US."},"zipCode":{"type":"string","examples":["59715","59715-1234"],"description":"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":{"type":"string","description":"Optional: solar_installation | battery_storage | ev_charger | energy_audit | insulation_weatherization | heat_pump. Pre-selects the project type; omit if unknown."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":448,"tokensAfter":448},{"name":"list_guides","fixed":{"name":"list_guides","description":"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]","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Max guides to return (1–50, default 20)."},"topic":{"type":"string","description":"Filter by topic: solar | heat_pump | battery | weatherization | overview. Omit for all topics."},"apiKey":{"type":"string","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."},"region":{"type":"string","description":"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":345,"tokensAfter":345},{"name":"run_power_screen","fixed":{"name":"run_power_screen","description":"Execute one signed Power Screen quote and return an immediate modeled constraint decision, assumptions, evidence gaps, and immutable artifact hash. [$1.00/call]","inputSchema":{"type":"object","required":["quoteToken"],"properties":{"apiKey":{"type":"string","description":"Optional one-call credential bridge for MCP hosts that cannot change Authorization headers mid-session. EnergyAI strips it before billing, execution, and persistence."},"quoteToken":{"type":"string","description":"Unmodified signed quoteToken returned by get_power_service_quote. The quote expires after 15 minutes and binds scope, price, and assumptions."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":188,"tokensAfter":188},{"name":"submit_contractor_match_request","fixed":{"name":"submit_contractor_match_request","description":"Submit a consented installer lead and retain referral attribution. Free. [free]","inputSchema":{"type":"object","required":["assessmentId","contactName","contactEmail","consentText","consentTimestamp"],"properties":{"consentText":{"type":"string","description":"EXACT consent text shown to end user."},"contactName":{"type":"string"},"assessmentId":{"type":"string"},"contactEmail":{"type":"string","format":"email"},"contactPhone":{"type":"string"},"consentVersion":{"type":"string"},"consentTimestamp":{"type":"string","format":"date-time"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":168,"tokensAfter":168}],"toolsChanged":22,"tokensSaved":0,"todo":[{"tool":"answer_energy_assessment_question","params":["answerLabel","answerValue","questionKey","assessmentId"]},{"tool":"bootstrap_energy_project","params":["city","state","country","primaryGoal","serviceType","propertyType","monthlyBillRange"]},{"tool":"complete_energy_assessment","params":["assessmentId"]},{"tool":"create_energy_node_roadmap_checkout","params":["email","assessmentId"]},{"tool":"generate_energy_recommendation_preview","params":["assessmentId"]},{"tool":"generate_intelligence_bound_report","params":["assessmentId"]},{"tool":"get_anonymized_dataset_sample","params":["limit","offset"]},{"tool":"get_energy_node_roadmap","params":["assessmentId"]},{"tool":"get_energy_node_score","params":["assessmentId"]},{"tool":"get_eta_i_metric","params":["days"]},{"tool":"get_information_theoretic_recommendation","params":["assessmentId"]},{"tool":"get_power_service_quote","params":["coolingMode","workloadType"]},{"tool":"match_installers","params":["state","zipCode","contractorCategory"]},{"tool":"record_quote_review_outcome","params":["action","usefulness","deliveredToHousehold"]},{"tool":"review_installer_quote","params":["city","state","country","serviceType","propertyType","monthlyBillRange"]},{"tool":"route_lead","params":["city","budgetRange","contactPhone","propertyType"]},{"tool":"submit_contractor_match_request","params":["contactName","assessmentId","contactEmail","contactPhone","consentVersion","consentTimestamp"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}