Defect Generation

SkillDev tools

Point defect generation creates vacancy, substitution, or interstitial defects in periodic structures. This is essential for studying:

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 Defect Generation skill

About this capability

Use when the user asks to create point defects such as vacancies, substitutional defects, or interstitial atoms in a crystal structure.

What this skill tells your AI

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

Overview

Point defect generation creates vacancy, substitution, or interstitial defects in periodic structures. This is essential for studying:

  • Vacancy formation energies: Removing atoms to find stable vacancy sites
  • Substitutional defects: Replacing host atoms (e.g., N replacing O in TiO2)
  • Interstitial defects: Inserting atoms in interstitial positions
  • Defect-mediated catalysis: Active sites at vacancy or dopant locations

The tool optionally builds a supercell before creating the defect to minimize periodic image interactions.

MCP Tool: catgo_structure (via REST /build/defect)

Defect generation is available through the /build/defect endpoint. In the full MCP server, use the catgo_build_defect tool. The structure is automatically fetched from the viewer.

Create a Vacancy

Remove an atom at a specific site index:

{"tool": "catgo_structure", "arguments": {
  "action": "delete",
  "indices": [5]
}}

For a workflow-integrated vacancy with supercell expansion, use the REST endpoint directly:

POST /build/defect
{
  "structure": { ... },
  "defect_type": "vacancy",
  "site_index": 5,
  "supercell": "2x2x2"
}

Create All Symmetry-Unique Vacancies

Set site_index to -1 to generate one vacancy structure per symmetry-unique site. This is useful for screening which vacancy site is most stable:

POST /build/defect
{
  "structure": { ... },
  "defect_type": "vacancy",
  "site_index": -1,
  "supercell": "2x2x2"
}

Returns multiple structures, each with a different symmetry-unique atom removed.

Create a Substitutional Defect

Replace one atom with a different element:

POST /build/defect
{
  "structure": { ... },
  "defect_type": "substitution",
  "site_index": 3,
  "substitute_element": "Fe",
  "supercell": "2x2x2"
}

Or use the viewer-based approach:

{"tool": "catgo_structure", "arguments": {
  "action": "replace",
  "index": 3,
  "new_element": "Fe"
}}

Create an Interstitial Defect

Insert an atom near a reference site. The interstitial is placed at the midpoint between the reference site and its nearest neighbor:

POST /build/defect
{
  "structure": { ... },
  "defect_type": "interstitial",
  "site_index": 0,
  "substitute_element": "Li",
  "supercell": "2x2x2"
}

Parameters

ParameterTypeDefaultDescription
defect_typestring"vacancy"Type: vacancy, substitution, interstitial
site_indexint0Atom index to act on (-1 for all unique vacancies)
substitute_elementstring""Element for substitution/interstitial
supercellstring"2x2x2"Supercell scaling before defect creation
structuredict--Structure in pymatgen dict format

Complete Workflow: Vacancy Formation Energy

1. Fetch and prepare structure

{"tool": "catgo_fetch", "arguments": {
  "action": "crystal", "formula": "TiO2", "provider": "mp"
}}
{"tool": "catgo_structure", "arguments": {
  "action": "supercell", "scaling": [2, 2, 2]
}}

2. Identify target atom

{"tool": "catgo_view", "arguments": {"action": "get_state"}}

Find an O atom (e.g., index 12) to create an oxygen vacancy.

3. Create vacancy

{"tool": "catgo_structure", "arguments": {
  "action": "delete", "indices": [12]
}}

4. Set up DFT workflow

{"tool": "catgo_workflow", "arguments": {
  "action": "create", "name": "O vacancy in TiO2"
}}
{"tool": "catgo_workflow", "arguments": {
  "action": "add_node", "workflow_id": "wf_vac",
  "node_type": "geo_opt",
  "params": {"software": "vasp", "ENCUT": 520, "ISPIN": 2,
             "system_name": "TiO2 O-vacancy"}
}}

5. Compute vacancy formation energy

E_f(V_O) = E(TiO2 - O) - E(TiO2_perfect) + 0.5 * E(O2)

Run the same geo_opt for the perfect supercell and gas-phase O2 as references.

Common Pitfalls

  1. Always use a supercell large enough (at least 2x2x2 for bulk, 3x3x1 for surfaces) to minimize defect-defect interactions across periodic boundaries.
  2. Vacancies in transition-metal oxides often require spin polarization (ISPIN=2) and DFT+U corrections for accurate formation energies.
  3. After creating a defect, always relax the structure with geo_opt. The atoms neighboring the defect will move significantly.
  4. For charged defects (e.g., V_O^{2+} in TiO2), additional corrections (Freysoldt, Kumagai) are needed for finite-size effects.
  5. The site_index uses 0-based indexing. Use catgo_view to verify which atom you are removing before proceeding.

Signals

GitHub stars
196
Forks
23
Last commit
Sep 2026

ahel recommends instead

Advanced
Catalog kind
skill
Gateway key
defect-generation-hello-qm
Source
github.com/hello-qm/catgo-lrg