{"openapi":"3.1.0","info":{"title":"Boncourant — calculs publics et études temporaires","version":"1.5.1","description":"Sans compte. Les arguments sont validés par les mêmes handlers que le serveur MCP. Les études temporaires nécessitent leur reçu secret."},"servers":[{"url":"https://boncourant.fr"}],"paths":{"/api/simulate":{"post":{"operationId":"simulateResidential","summary":"Estimation résidentielle sur le catalogue actuel, sans compte","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"postal_code":{"type":"string","pattern":"^\\d{5}$"},"puissance_kva":{"type":"number","exclusiveMinimum":0,"maximum":36},"conso_annuelle_kwh":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"option":{"type":"string","enum":["Base","HP/HC","Tempo"]},"proportion_hc":{"type":"number","minimum":0,"maximum":1}},"required":["postal_code","puissance_kva","conso_annuelle_kwh"],"additionalProperties":false,"allOf":[{"if":{"required":["option"],"properties":{"option":{"const":"HP/HC"}}},"then":{"required":["proportion_hc"]},"else":{"not":{"required":["proportion_hc"]}}}]}}}},"responses":{"200":{"description":"Résultat calculé, ou grounded=false sans montant inventé. Données privées, jamais mises en cache.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["grounded","reason","generated_at"],"properties":{"grounded":{"const":false},"reason":{"type":"string"},"generated_at":{"type":"string"}}},{"type":"object","required":["grounded","recommendation","best_offer_annual_eur","trv_annual_eur","saving_eur","offers_compared","generated_at"],"properties":{"grounded":{"const":true},"recommendation":{"enum":["stay","switch"]},"offers_compared":{"type":["number","null"]},"confidence":{"type":["number","null"]},"calculation_status":{"enum":["verified","estimated","needs_confirmation",null]},"assumptions":{"type":"array","items":{}},"uncertainties":{"type":"array","items":{"type":"string"}},"provenance":{"type":["object","null"]},"simulator_version":{"type":"string"},"catalog_version":{"type":"string"},"generated_at":{"type":"string","format":"date-time"},"postal_code":{"type":"string"},"puissance_kva":{"type":"number"},"conso_annuelle_kwh":{"type":"number"},"option":{"type":"string"},"best_offer_annual_eur":{"type":["number","null"]},"trv_annual_eur":{"type":["number","null"]},"saving_eur":{"type":["number","null"]},"best_offer_name":{"type":"string"},"best_offer_supplier":{"type":"string"}}}]}}}},"400":{"description":"Arguments invalides ou incohérents"},"413":{"description":"Requête supérieure à 16 Ko"},"415":{"description":"Content-Type application/json requis"},"429":{"description":"Limite par instance atteinte ; respecter Retry-After"},"503":{"description":"Calcul indisponible"}}}},"/api/audit":{"post":{"operationId":"analyzeStructuredBill","summary":"Recommandation prospective issue d’une facture résidentielle déjà structurée","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"conso_annuelle_kwh":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"puissance_kva":{"type":"number","exclusiveMinimum":0,"maximum":36},"postal_code":{"type":"string","pattern":"^\\d{5}$"},"option":{"type":"string","enum":["Base","HP/HC","Tempo"]},"conso_kwh_hp":{"type":"number","minimum":0},"conso_kwh_hc":{"type":"number","minimum":0},"current_supplier":{"type":"string","minLength":1,"maxLength":200},"current_offer":{"type":"string","minLength":1,"maxLength":300},"current_annual_cost_eur":{"type":"number","exclusiveMinimum":0,"maximum":10000000}},"required":["conso_annuelle_kwh","puissance_kva","postal_code"],"additionalProperties":false,"description":"Facture résidentielle déjà extraite ; si HP/HC, HP + HC doit égaler le total annuel (tolérance 1 kWh). Aucun PDF ni contrôle historique dans cette route.","allOf":[{"if":{"required":["option"],"properties":{"option":{"const":"HP/HC"}}},"then":{"required":["conso_kwh_hp","conso_kwh_hc"]},"else":{"not":{"anyOf":[{"required":["conso_kwh_hp"]},{"required":["conso_kwh_hc"]}]}}}]}}}},"responses":{"200":{"description":"Résultat calculé, ou grounded=false sans montant inventé. Données privées, jamais mises en cache.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["grounded","reason","generated_at"],"properties":{"grounded":{"const":false},"reason":{"type":"string"},"generated_at":{"type":"string"}}},{"type":"object","required":["grounded","recommendation","recommended_annual_eur","baseline_kind","annual_savings_eur","generated_at"],"properties":{"grounded":{"const":true},"recommendation":{"enum":["stay","switch"]},"offers_compared":{"type":["number","null"]},"confidence":{"type":["number","null"]},"calculation_status":{"enum":["verified","estimated","needs_confirmation",null]},"assumptions":{"type":"array","items":{}},"uncertainties":{"type":"array","items":{"type":"string"}},"provenance":{"type":["object","null"]},"simulator_version":{"type":"string"},"catalog_version":{"type":"string"},"generated_at":{"type":"string","format":"date-time"},"recommended_offer":{"type":["string","null"]},"recommended_supplier":{"type":["string","null"]},"recommended_option":{"type":["string","null"]},"recommended_annual_eur":{"type":["number","null"]},"best_market_offer":{"type":"object"},"trv_annual_eur":{"type":["number","null"]},"current_contract_annual_eur":{"type":["number","null"]},"baseline_kind":{"enum":["current_contract","declared_contract","trv","trve","none",null]},"baseline_annual_eur":{"type":["number","null"]},"annual_savings_eur":{"type":["number","null"]},"alternatives":{"type":"array","items":{"type":"object"}},"references":{"type":"array","items":{"type":"string"}}}}]}}}},"400":{"description":"Arguments invalides ou incohérents"},"413":{"description":"Requête supérieure à 16 Ko"},"415":{"description":"Content-Type application/json requis"},"429":{"description":"Limite par instance atteinte ; respecter Retry-After"},"503":{"description":"Calcul indisponible"}}}},"/api/simulate/pro":{"post":{"operationId":"estimateC5Base","summary":"Estimation C5 Base Enedis, sans référence TRVe ni économie personnelle supposée","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["conso_annuelle_kwh","puissance_kva","dso","option"],"properties":{"conso_annuelle_kwh":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"puissance_kva":{"type":"integer","minimum":3,"maximum":36},"dso":{"const":"enedis"},"option":{"const":"Base"}}}}}},"responses":{"200":{"description":"Résultat calculé, ou grounded=false sans montant inventé. Données privées, jamais mises en cache.","content":{"application/json":{"schema":{"type":"object","required":["grounded","best","offers_compared","saving_eur","note"],"properties":{"grounded":{"type":"boolean"},"offers_compared":{"type":"integer"},"best":{"type":["object","null"],"properties":{"name":{"type":"string"},"supplier":{"type":"string"},"annual_eur":{"type":"number"},"subscription_eur":{"type":"number"},"energy_eur":{"type":"number"},"observed_at":{"type":"string","format":"date-time"}}},"baseline_annual_eur":{"type":"null"},"saving_eur":{"type":"null"},"note":{"type":"string"}}}}}},"400":{"description":"Arguments invalides ou incohérents"},"413":{"description":"Requête supérieure à 16 Ko"},"415":{"description":"Content-Type application/json requis"},"429":{"description":"Limite par instance atteinte ; respecter Retry-After"},"503":{"description":"Calcul indisponible"}}}},"/api/trv-gap":{"get":{"operationId":"getTrvGap","summary":"Écart TRV et marché pour le profil public fixe ; pas une économie personnelle","security":[],"responses":{"200":{"description":"Jeu de données daté CC-BY 4.0","content":{"application/json":{"schema":{"type":"object","required":["license","sources","generatedAt","referenceConsumer","current","history12m"],"properties":{"license":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"generatedAt":{"type":"string"},"referenceConsumer":{"type":"object","properties":{"option":{"const":"base"},"kva":{"const":9},"kwhYear":{"type":"number"},"region":{"type":"string"},"profile":{"type":"string"}}},"current":{"type":"object","properties":{"trvAnnualCostEur":{"type":"number"},"cheapestOfferAnnualEur":{"type":"number"},"gapEur":{"type":"number"},"asOf":{"type":"string"},"cheapestOffer":{"type":"object"}}},"history12m":{"type":"array","items":{"type":"object","properties":{"month":{"type":"string"},"trvAnnual":{"type":"number"},"cheapestMarket":{"type":"number"},"gap":{"type":"number"}}}}}}}}},"503":{"description":"Pas de données récentes suffisamment comparables"}}}},"/api/commissions":{"get":{"operationId":"getCommissionEvidence","summary":"Registre sourcé des commissions du marché ; distinct du registre des revenus Boncourant /transparence","security":[],"responses":{"200":{"description":"Preuves, sources et inconnues explicitement distinguées, CC-BY 4.0","content":{"application/json":{"schema":{"type":"object","required":["schemaVersion","entries","sources","knownUnknowns","generatedAt","license"],"properties":{"schemaVersion":{"const":"2.0.0"},"entries":{"type":"array","items":{"type":"object","properties":{"comparator":{"type":"string"},"supplier":{"type":["string","null"]},"amountEur":{"type":["number","null"]},"sourceUrl":{"type":"string"},"confidence":{"type":"string"}}}},"sources":{"type":"array","items":{"type":"object"}},"knownUnknowns":{"type":"array","items":{"type":"object"}},"generatedAt":{"type":"string"},"license":{"const":"CC-BY 4.0"}}}}}}}}},"/mcp":{"post":{"operationId":"callPublicTool","summary":"Exécuter un outil MCP public","security":[],"parameters":[{"name":"mcp-protocol-version","in":"header","schema":{"type":"string","const":"2025-11-25"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"list_capabilities"},"arguments":{"type":"object","properties":{"audience":{"type":"string","enum":["household","professional","large_consumer","producer"]},"capability_id":{"type":"string","description":"Identifiant exact retourné lors d'un appel précédent."}},"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"hc_schedule_change_impact"},"arguments":{"type":"object","properties":{"old_schedule":{"type":"object","additionalProperties":false,"required":["winter_windows","summer_windows"],"properties":{"winter_windows":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["start_h","end_h"],"properties":{"start_h":{"type":"integer","minimum":0,"maximum":23},"end_h":{"type":"integer","minimum":0,"maximum":23}}}},"summer_windows":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["start_h","end_h"],"properties":{"start_h":{"type":"integer","minimum":0,"maximum":23},"end_h":{"type":"integer","minimum":0,"maximum":23}}}},"evidence":{"type":"string","enum":["bill","declaration","meter","assumed"]}}},"new_schedule":{"type":"object","additionalProperties":false,"required":["winter_windows","summer_windows"],"properties":{"winter_windows":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["start_h","end_h"],"properties":{"start_h":{"type":"integer","minimum":0,"maximum":23},"end_h":{"type":"integer","minimum":0,"maximum":23}}}},"summer_windows":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["start_h","end_h"],"properties":{"start_h":{"type":"integer","minimum":0,"maximum":23},"end_h":{"type":"integer","minimum":0,"maximum":23}}}},"evidence":{"type":"string","enum":["bill","declaration","meter","assumed"]}}},"current_option":{"type":"object","additionalProperties":false,"required":["option","hp_eur_per_kwh","hc_eur_per_kwh","subscription_eur_per_year"],"properties":{"option":{"type":"string","enum":["base","hp_hc","tempo"]},"hp_eur_per_kwh":{"type":"number","exclusiveMinimum":0,"maximum":1},"hc_eur_per_kwh":{"type":"number","exclusiveMinimum":0,"maximum":1},"subscription_eur_per_year":{"type":"number","minimum":0},"price_label":{"type":"string","maxLength":200},"price_as_of":{"type":"string","maxLength":40},"kwh_by_colour":{"type":"object","additionalProperties":false,"required":["bleu","blanc","rouge"],"properties":{"bleu":{"type":"number","minimum":0},"blanc":{"type":"number","minimum":0},"rouge":{"type":"number","minimum":0}}}}},"alternatives":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["option","hp_eur_per_kwh","hc_eur_per_kwh","subscription_eur_per_year"],"properties":{"option":{"type":"string","enum":["base","hp_hc","tempo"]},"hp_eur_per_kwh":{"type":"number","exclusiveMinimum":0,"maximum":1},"hc_eur_per_kwh":{"type":"number","exclusiveMinimum":0,"maximum":1},"subscription_eur_per_year":{"type":"number","minimum":0},"price_label":{"type":"string","maxLength":200},"price_as_of":{"type":"string","maxLength":40},"kwh_by_colour":{"type":"object","additionalProperties":false,"required":["bleu","blanc","rouge"],"properties":{"bleu":{"type":"number","minimum":0},"blanc":{"type":"number","minimum":0},"rouge":{"type":"number","minimum":0}}}}}},"consumption":{"oneOf":[{"type":"object","additionalProperties":false,"required":["basis","annual_kwh","hp_kwh","hc_kwh"],"properties":{"basis":{"const":"split"},"annual_kwh":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"hp_kwh":{"type":"number","minimum":0},"hc_kwh":{"type":"number","minimum":0},"shape":{"type":"object","additionalProperties":false,"required":["hourly_share","monthly_share"],"properties":{"label":{"type":"string","maxLength":120},"hourly_share":{"type":"array","minItems":24,"maxItems":24,"items":{"type":"number","minimum":0}},"monthly_share":{"type":"array","minItems":12,"maxItems":12,"items":{"type":"number","minimum":0}}}}}},{"type":"object","additionalProperties":false,"required":["basis","annual_kwh"],"properties":{"basis":{"const":"annual"},"annual_kwh":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"shape":{"type":"object","additionalProperties":false,"required":["hourly_share","monthly_share"],"properties":{"label":{"type":"string","maxLength":120},"hourly_share":{"type":"array","minItems":24,"maxItems":24,"items":{"type":"number","minimum":0}},"monthly_share":{"type":"array","minItems":12,"maxItems":12,"items":{"type":"number","minimum":0}}}}}}]}},"required":["old_schedule","new_schedule","current_option","consumption"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"simulate"},"arguments":{"type":"object","properties":{"postal_code":{"type":"string","description":"Code postal à 5 chiffres"},"puissance_kva":{"type":"number","description":"Puissance du compteur en kVA"},"conso_annuelle_kwh":{"type":"number","description":"Consommation annuelle en kWh (lue sur la facture)"},"option":{"type":"string","enum":["Base","HP/HC","Tempo"]},"proportion_hc":{"type":"number","description":"Proportion de consommation en heures creuses (0.0 à 1.0). Requis si option = HP/HC."}},"required":["postal_code","puissance_kva","conso_annuelle_kwh"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"analyze_bill"},"arguments":{"type":"object","properties":{"conso_annuelle_kwh":{"type":"number","description":"Consommation annuelle en kWh (lue sur la facture)"},"puissance_kva":{"type":"number","description":"Puissance souscrite en kVA"},"postal_code":{"type":"string","description":"Code postal à 5 chiffres"},"option":{"type":"string","enum":["Base","HP/HC","Tempo"],"description":"Option tarifaire actuelle"},"conso_kwh_hp":{"type":"number","description":"Consommation en heures pleines (kWh), si option HP/HC"},"conso_kwh_hc":{"type":"number","description":"Consommation en heures creuses (kWh), si option HP/HC"},"current_supplier":{"type":"string","description":"Fournisseur actuel (facultatif)"},"current_offer":{"type":"string","description":"Nom de l'offre actuelle (facultatif)"},"current_annual_cost_eur":{"type":"number","description":"Coût annuel TTC du contrat actuel en euros (facultatif) — sert de référence pour l'économie"}},"required":["conso_annuelle_kwh","puissance_kva","postal_code"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"get_methodology"},"arguments":{"type":"object","properties":{"method_id":{"type":"string"},"family":{"type":"string"},"version":{"type":"string"}},"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"decompose_invoice"},"arguments":{"type":"object","properties":{"line_items":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","properties":{"component":{"type":"string","enum":["energy","turpe_fixed","turpe_variable","accise","cta","tva","capacity","cee","fees","other"]},"amount_ht":{"type":["number","null"]},"amount_tva":{"type":["number","null"]},"amount_ttc":{"type":["number","null"]},"quantity":{"type":["number","null"]},"unit":{"type":["string","null"]},"temporal_class":{"type":["string","null"]},"confidence":{"type":"string","enum":["confirmed","estimated","indicative","not_enough_data"]}},"required":["component","confidence"],"additionalProperties":false}},"stated_total_ttc":{"type":["number","null"]},"stated_total_ht":{"type":["number","null"]}},"required":["line_items"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"annualize_invoice"},"arguments":{"type":"object","properties":{"period_start":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"period_end":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"period_kwh":{"type":"number","minimum":0},"period_total_ttc_eur":{"type":"number","minimum":0},"segment":{"type":"string","enum":["residentiel","pro_bt36","pro_bt36plus"]},"option":{"type":"string","enum":["base","hp_hc","tempo"]},"puissance_kva":{"type":"number","exclusiveMinimum":0,"maximum":250}},"required":["period_start","period_end","segment","puissance_kva"],"anyOf":[{"required":["period_kwh"]},{"required":["period_total_ttc_eur"]}],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"check_subscribed_power"},"arguments":{"type":"object","properties":{"evaluation_date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"subscribed_kva":{"type":"number","exclusiveMinimum":0,"maximum":250},"max_demand_kw":{"type":["number","null"],"minimum":0},"monthly_max_kw":{"type":["array","null"],"items":{"type":"number","minimum":0},"minItems":1,"maxItems":12},"connection_segment":{"type":"string","enum":["c5_bt_le_36","c4_bt_gt_36_le_250"]},"max_demand_kva":{"type":["number","null"],"minimum":0},"monthly_max_kva":{"type":["array","null"],"items":{"type":"number","minimum":0},"minItems":1,"maxItems":12},"measurement_period_days":{"type":["integer","null"],"minimum":1,"maximum":370},"measurement_basis":{"type":["string","null"],"enum":["official_metering","invoice_peak",null]},"subscribed_powers_kva":{"type":["object","null"],"properties":{"p1":{"type":"number","exclusiveMinimum":0,"maximum":250},"p2":{"type":"number","exclusiveMinimum":0,"maximum":250},"p3":{"type":"number","exclusiveMinimum":0,"maximum":250},"p4":{"type":"number","exclusiveMinimum":36,"maximum":250}},"required":["p1","p2","p3","p4"],"additionalProperties":false},"available_contract_tiers_kva":{"type":["array","null"],"items":{"type":"number","exclusiveMinimum":0,"maximum":36},"minItems":1,"uniqueItems":true}},"required":["evaluation_date","subscribed_kva","connection_segment"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"analyze_renewal_terms"},"arguments":{"type":"object","properties":{"end_date":{"type":["string","null"],"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"auto_renewal":{"type":["boolean","null"]},"notice_period_days":{"type":["number","null"],"minimum":0},"pricing_type":{"type":["string","null"],"enum":["fixed","market_indexed","spot_indexed","trve_linked","arenh_reference",null]},"evaluation_date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"}},"required":["evaluation_date"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"assess_historical_optimality"},"arguments":{"type":"object","properties":{"contract":{"type":"object","properties":{"contract_id":{"type":"string"},"supplier_id":{"type":["string","null"]},"signed_at":{"type":["string","null"],"format":"date"},"delivery_start":{"type":["string","null"],"format":"date"},"delivery_end":{"type":["string","null"],"format":"date"},"term_months":{"type":["number","null"],"exclusiveMinimum":0},"comparable_cost_eur_year":{"type":["number","null"],"exclusiveMinimum":0},"comparison_basis":{"type":["string","null"]}},"required":["contract_id","supplier_id","signed_at","delivery_start","delivery_end","term_months","comparable_cost_eur_year","comparison_basis"],"additionalProperties":false},"alternatives":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"candidate_id":{"type":"string"},"supplier_id":{"type":"string"},"issued_at":{"type":["string","null"],"format":"date"},"valid_from":{"type":["string","null"],"format":"date"},"valid_until":{"type":["string","null"],"format":"date"},"delivery_start":{"type":["string","null"],"format":"date"},"delivery_end":{"type":["string","null"],"format":"date"},"term_months":{"type":["number","null"],"exclusiveMinimum":0},"comparable_cost_eur_year":{"type":["number","null"],"exclusiveMinimum":0},"comparison_basis":{"type":["string","null"]},"feasibility":{"type":"string","enum":["confirmed","unconfirmed","rejected"]},"feasibility_reasons":{"type":"array","items":{"type":"string"},"maxItems":20},"evidence_ref":{"type":["string","null"]}},"required":["candidate_id","supplier_id","issued_at","valid_from","valid_until","delivery_start","delivery_end","term_months","comparable_cost_eur_year","comparison_basis","feasibility"],"additionalProperties":false}},"materiality_eur_year":{"type":"number","minimum":0}},"required":["contract","alternatives"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"renewal_advisor"},"arguments":{"type":"object","properties":{"evaluation_date":{"type":"string","format":"date"},"end_date":{"type":["string","null"],"format":"date"},"auto_renewal":{"type":["boolean","null"]},"notice_period_days":{"type":["number","null"],"minimum":0},"pricing_type":{"type":["string","null"],"enum":["fixed","market_indexed","spot_indexed","trve_linked","arenh_reference",null]},"current_locked_supply_eur_mwh":{"type":"number","exclusiveMinimum":0,"description":"Prix actuel HT fourniture, en €/MWh"},"annual_consumption_mwh":{"type":["number","null"],"exclusiveMinimum":0},"budget_eur_mwh":{"type":["number","null"],"exclusiveMinimum":0},"ceiling_eur_mwh":{"type":["number","null"],"exclusiveMinimum":0},"locked_fraction":{"type":"number","minimum":0,"maximum":1,"default":0},"segment":{"type":"string","enum":["c5_bt_le_36","c4_bt_gt_36_le_250"]},"structure":{"type":["string","null"],"enum":["base","hp_hc","hph_hch_hpe_hce",null]}},"required":["evaluation_date","current_locked_supply_eur_mwh","segment"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"extract_energy_document"},"arguments":{"type":"object","properties":{"document_kind":{"type":"string","enum":["bill","contract"]},"segment":{"type":"string","enum":["residentiel","professionnel"]},"evaluation_date":{"type":"string","format":"date"},"document_base64":{"type":"string","description":"PDF base64, 10 Mo maximum"},"document_text":{"type":"string","maxLength":100000,"description":"Texte déjà extrait, alternative au PDF"},"document_file":{"type":"object","properties":{"download_url":{"type":"string"},"file_id":{"type":"string"},"mime_type":{"type":"string"},"file_name":{"type":"string"}},"required":["download_url","file_id"],"additionalProperties":false}},"required":["document_kind","segment","evaluation_date"],"oneOf":[{"required":["document_file"]},{"required":["document_base64"]},{"required":["document_text"]}],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"run_method"},"arguments":{"type":"object","properties":{"method_id":{"type":"string"},"version":{"type":"string"},"valid_on":{"type":"string","format":"date"},"input":{"type":"object","additionalProperties":true},"context":{"type":"object","properties":{"cta_fraction":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false}},"required":["method_id","input"],"oneOf":[{"required":["version"]},{"required":["valid_on"]}],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"assess_ppa"},"arguments":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customer":{"type":"object","properties":{"requested":{"type":"boolean"},"useUploadedProductionForPpa":{"type":"boolean"},"productionAllocationPct":{"type":"number","minimum":0,"maximum":100},"role":{"type":"string","enum":["buyer","producer","prosumer"]},"structure":{"type":"string","enum":["physical","sleeved","onsite","virtual"]},"volumeBasis":{"type":"string","enum":["pay_as_produced","baseload","pay_as_consumed","fixed_volume"]},"annualVolumeMwh":{"type":"number","exclusiveMinimum":0},"annualConsumptionMwh":{"type":"number","exclusiveMinimum":0},"annualProductionMwh":{"type":"number","exclusiveMinimum":0},"strikeEurMwh":{"type":"number"},"termYears":{"type":"number","exclusiveMinimum":0,"maximum":60},"discountRatePct":{"type":"number","minimum":0,"maximum":100},"annualFeesEur":{"type":"number","minimum":0},"upfrontCostEur":{"type":"number","minimum":0},"collateralEur":{"type":"number","minimum":0},"liquidityBudgetEur":{"type":"number","minimum":0},"commitmentHorizonYears":{"type":"number","exclusiveMinimum":0},"goRequired":{"type":"boolean"},"goTransferred":{"type":"boolean"},"supportScheme":{"type":"string"},"accountingStandard":{"type":"string","enum":["french_gaap","ifrs","unknown"]},"scenarios":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"marketPriceEurMwh":{"type":"number"},"settlementPriceEurMwh":{"type":"number"},"productionChangePct":{"type":"number","minimum":-100,"maximum":300},"consumptionChangePct":{"type":"number","minimum":-100,"maximum":300}},"required":["name","marketPriceEurMwh"],"additionalProperties":false}},"alternatives":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"annualNetEur":{"type":"number"},"role":{"type":"string","enum":["buyer","producer"]},"comparable":{"type":"boolean"},"basis":{"type":"string","minLength":1}},"required":["name","annualNetEur","role","comparable","basis"],"additionalProperties":false}},"fixedPriceConfirmed":{"type":"boolean"},"costPerimeterComplete":{"type":"boolean"},"operationalReadinessConfirmed":{"type":"boolean"},"legalTaxReviewConfirmed":{"type":"boolean"}},"additionalProperties":false},"contracts":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"reference":{"type":"string","minLength":1,"maxLength":300},"ppa":{"anyOf":[{"type":"object","properties":{"is_ppa":{"type":"boolean"},"structure":{"type":"string","enum":["physical","sleeved","onsite","virtual","unknown"]},"volume_basis":{"type":"string","enum":["pay_as_produced","baseload","pay_as_consumed","fixed_volume","unknown"]},"buyer":{"anyOf":[{"type":"string"},{"type":"null"}]},"producer":{"anyOf":[{"type":"string"},{"type":"null"}]},"asset":{"anyOf":[{"type":"string"},{"type":"null"}]},"technology":{"anyOf":[{"type":"string"},{"type":"null"}]},"jurisdiction":{"anyOf":[{"type":"string"},{"type":"null"}]},"annual_volume_mwh":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"strike_eur_mwh":{"anyOf":[{"type":"number"},{"type":"null"}]},"go_transferred":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"support_scheme":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["is_ppa","structure","volume_basis","buyer","producer","asset","technology","jurisdiction","annual_volume_mwh","strike_eur_mwh","go_transferred","support_scheme"],"additionalProperties":false},{"type":"null"}]},"reading_coverage":{"type":"object","properties":{"status":{"type":"string","enum":["text_read","needs_review"]},"total_characters":{"type":"integer","minimum":0,"maximum":9007199254740991},"processed_characters":{"type":"integer","minimum":0,"maximum":9007199254740991},"chunks":{"type":"integer","minimum":0,"maximum":9007199254740991},"conflict_paths":{"type":"array","items":{"type":"string"}},"rejected_evidence_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"source_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pages_without_text":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"page_provenance_available":{"type":"boolean"},"evidence":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string","enum":["parties","asset","term","price","volume","delivery","balancing","negative_prices","curtailment","availability","commissioning","credit","collateral","termination","force_majeure","change_in_law","assignment","disputes","tax","administration","guarantees_of_origin","public_support","reporting","other"]},"title":{"type":"string"},"summary":{"type":"string"},"consequence":{"type":"string"},"beneficiary":{"type":"string","enum":["buyer","producer","both","unknown"]},"obligation":{"anyOf":[{"type":"string"},{"type":"null"}]},"deadline":{"anyOf":[{"type":"string"},{"type":"null"}]},"risk":{"type":"string","enum":["high","medium","low","unknown"]},"negotiation":{"anyOf":[{"type":"string"},{"type":"null"}]},"excerpt":{"type":"string"},"confidence":{"type":"number","minimum":0,"maximum":1},"start":{"type":"integer","minimum":0,"maximum":9007199254740991},"end":{"type":"integer","minimum":0,"maximum":9007199254740991},"verified_pages":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}},"required":["topic","title","summary","consequence","beneficiary","obligation","deadline","risk","negotiation","excerpt","confidence","start","end"],"additionalProperties":false}},"limitation":{"type":"string"}},"required":["status","total_characters","processed_characters","chunks","conflict_paths","rejected_evidence_count","source_sha256","evidence","limitation"],"additionalProperties":false}},"required":["id"],"additionalProperties":false}},"matched_profile":{"type":"object","properties":{"consumption_kwh":{"minItems":1,"maxItems":35136,"type":"array","items":{"type":"number","minimum":0}},"ppa_generation_kwh":{"minItems":1,"maxItems":35136,"type":"array","items":{"type":"number","minimum":0}},"interval_minutes":{"anyOf":[{"type":"number","const":15},{"type":"number","const":30},{"type":"number","const":60}]},"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["consumption_kwh","ppa_generation_kwh","interval_minutes","start","end"],"additionalProperties":false}},"required":["customer","contracts"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"create_analysis_study"},"arguments":{"type":"object","properties":{"idempotency_key":{"type":"string","minLength":16,"maxLength":200,"pattern":"^[A-Za-z0-9._:-]+$","description":"Valeur opaque stable pour réessayer exactement la même création, par exemple un UUID."},"capability_id":{"type":"string","description":"Identifiant optionnel retourné par list_capabilities ; l’outil doit appartenir à cette capacité."},"target_tool":{"type":"string","enum":["simulate","analyze_bill","get_methodology","decompose_invoice","annualize_invoice","check_subscribed_power","analyze_renewal_terms","assess_historical_optimality","renewal_advisor","extract_energy_document","run_method","assess_ppa","eex_connector","pro_catalog"]},"arguments":{"type":"object","additionalProperties":true,"description":"Arguments exacts du target_tool selon son schéma tools/list."},"document_file":{"type":"object","description":"Fichier temporaire ChatGPT à injecter dans extract_energy_document pour un job asynchrone.","properties":{"download_url":{"type":"string"},"file_id":{"type":"string"},"mime_type":{"type":"string"},"file_name":{"type":"string"}},"required":["download_url","file_id"],"additionalProperties":false}},"required":["idempotency_key","target_tool","arguments"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"get_analysis_study"},"arguments":{"type":"object","properties":{"receipt":{"type":"string","pattern":"^bas_[A-Za-z0-9_-]{43}$"}},"required":["receipt"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"get_analysis_report"},"arguments":{"type":"object","properties":{"receipt":{"type":"string","pattern":"^bas_[A-Za-z0-9_-]{43}$"}},"required":["receipt"],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"eex_connector"},"arguments":{"type":"object","properties":{"asof":{"type":"string","description":"Date de référence ISO 8601 (YYYY-MM-DD). Défaut : aujourd'hui."}},"required":[],"additionalProperties":false}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"additionalProperties":false,"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"additionalProperties":false,"properties":{"name":{"const":"pro_catalog"},"arguments":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}]}}}},"responses":{"200":{"description":"Enveloppe JSON-RPC : result ou error. Un résultat d’outil peut avoir isError=true.","content":{"application/json":{"schema":{"type":"object","properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number","null"]},"result":{"type":"object","properties":{"structuredContent":{"type":"object"},"isError":{"type":"boolean"}}},"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}}}}},"413":{"description":"Fichier ou requête trop volumineux"},"429":{"description":"Limite de requêtes atteinte"}}}}},"externalDocs":{"url":"https://boncourant.fr/agents"}}