orca-router

Routes ORCA calculation requests to opt, neb_ts, or freq sub-skills. Enforces ORCA-specific policies for method, basis set, charge, and multiplicity.

SKILL.md

GitHub

ORCA Router Skill

When to Use

Use this skill when the user requests any ORCA-based calculation. Route to the appropriate sub-skill based on what the user needs:

User intent Route to
Geometry optimization, energy minimization orca/opt
Transition state, NEB, reaction barrier orca/neb_ts
Vibrational frequencies, IR spectrum, thermochemistry orca/freq

ORCA-Specific Policies

Method and Basis Set Defaults

Always set software: "orca" in workflow node params. Default method/basis combinations by use case:

Use case Method Basis Notes
General organic B3LYP def2-SVP Good balance of cost/accuracy
Production organic B3LYP def2-TZVP Publication quality
Transition metals PBE0 def2-SVP Better for d-electrons
Weak interactions B3LYP-D3BJ def2-TZVP Dispersion-corrected
Quick screening HF-3c (built-in) Composite, very fast
Accurate energies DLPNO-CCSD(T) cc-pVTZ Gold standard, expensive

Charge and Multiplicity

ORCA requires explicit charge and multiplicity for every calculation. Always ask the user or infer from the structure:

  • Neutral closed-shell: charge: 0, multiplicity: 1
  • Radical (one unpaired e-): charge: 0, multiplicity: 2
  • Anion: charge: -1, multiplicity: 1 (or 2 if radical anion)
  • Cation: charge: 1, multiplicity: 1 (or 2 if radical cation)
  • Transition metal complexes: determine from d-electron count and ligand field

If unsure, ask the user. Never guess multiplicity for open-shell systems.

Solvent Models

ORCA supports implicit solvation via CPCM:

orca_extra_keywords: "CPCM(Water)"

Common solvents: Water, Acetonitrile, DMSO, THF, Toluene, DCM.

MCP Tool Examples

Check what the user has loaded

catgo_view(action: "get_state")

Always check the viewer state first to confirm a molecular structure is loaded (not a periodic crystal -- ORCA is for molecular calculations).

Create an ORCA optimization workflow

catgo_workflow_engine(action: "create", params: {
  name: "Ethanol B3LYP optimization"
})

Then add an ORCA geo_opt task (see orca/opt skill for full details):

catgo_workflow_engine(action: "add_task", params: {
  workflow_id: "<wf_id>",
  task_type: "geo_opt",
  params: {
    software: "orca",
    orca_method: "B3LYP",
    orca_basis: "def2-SVP",
    charge: 0,
    multiplicity: 1
  }
})

Create an ORCA frequency workflow

catgo_workflow_engine(action: "add_task", params: {
  workflow_id: "<wf_id>",
  task_type: "freq",
  params: {
    software: "orca",
    orca_method: "B3LYP",
    orca_basis: "def2-SVP",
    charge: 0,
    multiplicity: 1
  }
})

Opt + Freq chain (common pattern)

After creating the workflow, add both tasks and connect them:

catgo_workflow_engine(action: "add_task", params: {
  workflow_id: "<wf_id>",
  task_type: "geo_opt",
  task_id: "opt1",
  params: { software: "orca", orca_method: "B3LYP", orca_basis: "def2-SVP",
            charge: 0, multiplicity: 1 }
})
catgo_workflow_engine(action: "add_task", params: {
  workflow_id: "<wf_id>",
  task_type: "freq",
  depends_on: ["opt1"],
  params: { software: "orca", orca_method: "B3LYP", orca_basis: "def2-SVP",
            charge: 0, multiplicity: 1 }
})

Routing Decision Tree

  1. Does the user want to find a transition state or reaction barrier?
    • YES -> route to orca/neb_ts
  2. Does the user want vibrational frequencies, IR spectrum, or thermochemistry?
    • YES -> route to orca/freq
  3. Does the user want to optimize a geometry or get an energy?
    • YES -> route to orca/opt
  4. Unsure? Ask the user what property they need.

Common Mistakes

  • Using ORCA for periodic systems (ORCA is molecular only -- use VASP or CP2K)
  • Forgetting charge/multiplicity (ORCA will fail or give wrong results)
  • Using too large a basis for initial screening (start with def2-SVP)
  • Not including dispersion for systems with non-covalent interactions