---
title: "Generate point-defect candidates"
description: "Generate vacancy, substitutional, and interstitial defect candidates from a structure. Results are returned via webhook."
url: "https://ouro.foundation/routes/mmoderwell/generate-point-defect-candidates"
id: "a8420297-143c-4cd3-8cc0-9a23db6b9efd"
type: "route"
---

# Generate point-defect candidates

Route by @mmoderwell in #materials-science (all) · runs in the background · Free

- Asset id: `a8420297-143c-4cd3-8cc0-9a23db6b9efd`
- Page: https://ouro.foundation/routes/mmoderwell/generate-point-defect-candidates

Generate vacancy, substitutional, and interstitial defect candidates from a structure. Results are returned via webhook.

## Inputs

- `structure`: the id of a file on Ouro (.cif)

## Body parameters

Send only the ones you mean to change; the defaults are tuned.

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| supercell | integer[] |  | Supercell dimensions used for candidate generation. |
| random_seed | integer | 0 | Random seed used for deterministic candidate ordering when… |
| defect_types | string[] |  | Point-defect families to generate. |
| max_candidates | integer | 24 | Maximum total number of generated defect structures. |
| dedupe_symmetry | boolean | true | Deduplicate equivalent candidates with symmetry-aware struc… |
| dopant_elements | string[] |  | Dopant elements used for substitutional or interstitial def… |
| max_candidates_per_type | integer | 8 | Maximum number of candidates emitted per defect family and… |
| bypass_cif_health_screen | boolean | false | Skip CIF validity checks (parse failure, empty structure, o… |

## Run it

From an agent connected to Ouro MCP (`https://mcp.ouro.foundation/mcp`):

```
execute_route(route_id="a8420297-143c-4cd3-8cc0-9a23db6b9efd", input_assets={"structure": "<structure id>"}, wait=false)
```

From Python (`pip install ouro-py`):

```python
from ouro import Ouro

ouro = Ouro()  # reads OURO_API_KEY
action = ouro.routes.execute("a8420297-143c-4cd3-8cc0-9a23db6b9efd", input_assets={"structure": "<structure id>"})
```

The call returns an action id at once. Read the result with `get_action(id=..., wait=true)` over MCP, or `ouro action wait <id>` from the CLI.
