Energy Diagram Generation

SkillDev tools

Use when the user asks to generate a reaction energy diagram, free energy profile, potential energy surface plot, or pathway comparison diagram for catalysis or reaction mechanism studies.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Energy Diagram Generation skill

What this skill tells your AI

The instructions your AI receives, as published by hello-qm/catgo-lrg in .claude/skills/energy-diagram/SKILL.md and read by ahel’s review.

Overview

Generates Plotly-compatible reaction energy pathway diagrams from computed intermediate and transition-state energies. The output includes horizontal line segments for intermediates, cubic-spline curves for transition states, and dashed connectors between consecutive steps.

Key applications:

  • Reaction mechanism comparison: Overlay multiple pathways on one diagram
  • Catalysis studies: Visualize OER, HER, CO2RR, NRR free energy profiles
  • Transition state analysis: Show activation barriers as TS arches
  • Publication figures: Export as SVG/PNG from the Plotly viewer

MCP Tool: catgo_catalysis_energy_diagram

In the full MCP server, use the catgo_catalysis_energy_diagram tool. In the workflow engine, the free_energy node generates energy diagrams automatically from upstream gibbs_energy nodes.

Generate a Simple Energy Diagram

{"tool": "catgo_catalysis_energy_diagram", "arguments": {
  "pathways": [
    {
      "name": "OER on RuO2(110)",
      "color": "#1f77b4",
      "steps": [
        {"label": "*", "energy": 0.0},
        {"label": "*OH", "energy": 0.85},
        {"label": "*O", "energy": 1.60},
        {"label": "*OOH", "energy": 3.20},
        {"label": "O2", "energy": 4.92}
      ]
    }
  ]
}}

Compare Multiple Pathways

{"tool": "catgo_catalysis_energy_diagram", "arguments": {
  "pathways": [
    {
      "name": "RuO2(110)",
      "color": "#1f77b4",
      "steps": [
        {"label": "*", "energy": 0.0},
        {"label": "*OH", "energy": 0.85},
        {"label": "*O", "energy": 1.60},
        {"label": "*OOH", "energy": 3.20},
        {"label": "O2", "energy": 4.92}
      ]
    },
    {
      "name": "IrO2(110)",
      "color": "#ff7f0e",
      "steps": [
        {"label": "*", "energy": 0.0},
        {"label": "*OH", "energy": 1.05},
        {"label": "*O", "energy": 1.95},
        {"label": "*OOH", "energy": 3.45},
        {"label": "O2", "energy": 4.92}
      ]
    }
  ]
}}

Include Transition States

Mark transition states with "is_ts": true. These appear as cubic-spline arches between the adjacent intermediates:

{"tool": "catgo_catalysis_energy_diagram", "arguments": {
  "pathways": [
    {
      "name": "CO oxidation on Pt(111)",
      "color": "#2ca02c",
      "steps": [
        {"label": "CO* + O*", "energy": 0.0},
        {"label": "TS", "energy": 0.85, "is_ts": true},
        {"label": "CO2(g)", "energy": -1.20}
      ]
    }
  ]
}}

Custom Layout Configuration

{"tool": "catgo_catalysis_energy_diagram", "arguments": {
  "pathways": [ ... ],
  "config": {
    "height": 500,
    "y_label": "Gibbs Free Energy (eV)",
    "x_label": "Reaction Coordinate",
    "energy_format": ".3f",
    "line_width": 4
  }
}}

Parameters

pathways (required)

Array of pathway objects. Each pathway contains:

FieldTypeRequiredDescription
namestringnoLegend label for this pathway
colorstringnoLine color (CSS color, e.g., "#1f77b4")
stepslist[dict]yesOrdered list of intermediates and TSs

Each step dict:

FieldTypeRequiredDescription
labelstringyesState label (e.g., "*OH", "TS1")
energyfloatyesEnergy in eV
is_tsboolnoTrue for transition states (default false)

config (optional)

ParameterTypeDefaultDescription
base_spacingfloat1.0Base horizontal spacing between states
hline_ratiofloat0.3Width of horizontal energy lines
ts_spacing_ratiofloat0.4Width of TS spline curves
vline_ratiofloat0.3Width of dashed connectors
line_widthfloat3Line thickness
energy_formatstring".2f"Python format string for energy labels
heightint450Plot height in pixels
y_labelstring"Free Energy (eV)"Y-axis title
x_labelstring"Reaction Coordinate"X-axis title

Return Format

{
  "traces": [ ... ],
  "layout": { ... },
  "annotations": [ ... ]
}

The return value is directly compatible with Plotly: pass traces as the data array, merge annotations into layout.annotations, and render with Plotly.newPlot(div, traces, layout).

Workflow Integration: free_energy Node

In the CatGo workflow engine, the free_energy node automatically generates an energy diagram from upstream gibbs_energy nodes:

{"tool": "catgo_workflow", "arguments": {
  "action": "batch",
  "workflow_id": "wf_oer",
  "operations": [
    {"op": "add_node", "node_type": "free_energy", "label": "diagram",
     "params": {"input_mode": "auto"}},
    {"op": "connect", "from_id": "gibbs_oh", "to_id": "diagram",
     "from_handle": "gibbs", "to_handle": "gibbs"},
    {"op": "connect", "from_id": "gibbs_o", "to_id": "diagram",
     "from_handle": "gibbs", "to_handle": "gibbs"},
    {"op": "connect", "from_id": "gibbs_ooh", "to_id": "diagram",
     "from_handle": "gibbs", "to_handle": "gibbs"}
  ]
}}

The free_energy node collects Gibbs energies from all connected upstream nodes and arranges them into a pathway diagram automatically.

Important: Use Gibbs Free Energies, NOT DFT Energies

All energy values passed to this tool must be Gibbs free energies (G), not raw DFT electronic energies (E_DFT). Each intermediate and gas-phase reference must go through the full chain: geo_opt --> freq --> gibbs_energy.

G = E_DFT + ZPE - TS

Using raw E_DFT omits zero-point energy (ZPE) and entropy (TS), which contribute 0.2-0.5 eV per intermediate. This makes the resulting diagram quantitatively wrong and can change which step is potential-determining.

For electrochemical reactions (OER, HER, CO2RR, NRR), also apply:

  • Atom balancing with gas-phase references (H2, H2O, CO2, N2, NH3)
  • pH correction: subtract 0.059 * pH eV per proton-transfer step at 298 K

Common Pitfalls

  1. Transition-state steps (is_ts: true) must be placed between two non-TS steps in the pathway. A TS at the start or end of a pathway will cause errors because the spline needs adjacent energy values.
  2. Energies should be Gibbs free energies in eV, referenced to a common zero (typically the clean slab + gas-phase references).
  3. When comparing pathways, use the same energy reference for all of them. Shifting one pathway by a constant offset invalidates the comparison.
  4. The anti-overlap algorithm adjusts annotation positions when multiple pathways have states at the same x-coordinate. For heavily overlapping pathways, increase base_spacing in the config.
  5. The returned traces use null-gap separation for disconnected line segments. This is a standard Plotly pattern for drawing multiple segments in one trace.

Signals

GitHub stars
196
Forks
23
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
energy-diagram
Source
github.com/hello-qm/catgo-lrg