Platform: EnergyScope MCP v2.9.3
Pipeline: data → derived_signals (v2, scored/themed/transition-aware) → compare_runs → HTML → publish
Tools used: latest(PET weekly), seasonal, crack_spread x3, snd_balance, derived_signals, compare_runs, IEA.OMR_HEADLINE
Data sources: PET, IEA
Contradictions firing: diesel_clean_long (1.000), forced_storage_build (0.965), refiner_margin_trap (0.797), gasoline_overhang (0.522)
Snapshot keys: crude_stocks_mb, crude_seasonal_pctl, gasoline_stocks_mb, gasoline_seasonal_pctl, distillate_stocks_mb, distillate_seasonal_pctl, cushing_z, cushing_7d_pct, production_mbd, production_seasonal_pctl, refinery_util, crack_321_z, crack_diesel_z, crack_gasoline_z, iea_global_stock_change_mb, iea_refinery_runs_mbd, regime, primary_dislocation, dominant_lens, contradictions_active_count
Signal layer: 45 signals evaluated, 19 active across 6 themes. Dominant lens: diesel_clean_long (1.0). Virtual metric: OPEC-IEA spread +2.53 mb/d.
Narrative approach: Regime-first hierarchy. Contradictions are server-canonical. Replication: any MCP client calling the same tools produces identical analysis.