---
title: "Add a crystal structure to the database if it is new"
description: "Add a relaxed CIF to Ouro's crystal database so later hull and novelty checks (yours and everyone's) include it. It is matched against every stored structure with its reduced formula, published or made on Ouro; if one matches, nothing is added and you get the match back. Otherwise it is scored with "
url: "https://ouro.foundation/routes/mmoderwell/add-a-crystal-structure-to-the-database-if-it-is-new"
id: "5f6bc103-2a24-427c-8c10-3dbeb4103efd"
type: "route"
---

# Add a crystal structure to the database if it is new

Route by @mmoderwell in #materials-science (all) · runs in the background · Free · typical run ~15 s

- Asset id: `5f6bc103-2a24-427c-8c10-3dbeb4103efd`
- Page: https://ouro.foundation/routes/mmoderwell/add-a-crystal-structure-to-the-database-if-it-is-new

Add a relaxed CIF to Ouro's crystal database so later hull and novelty checks (yours and everyone's) include it. It is matched against every stored structure with its reduced formula, published or made on Ouro; if one matches, nothing is added and you get the match back. Otherwise it is scored with Orb v3 and stored, linked to your file. The structure must be relaxed with Orb v3, cell included (max force on an atom or the cell ≤ 0.05 eV/Å): relax it first with the Materials API's relax route. Returns added, exists (with the matching structure) or updated (the same file submitted again).

## 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 |
| --- | --- | --- | --- |
| bypass_cif_health_screen | boolean | false | Skip CIF validity checks (partial occupancies, overlapping… |

## Run it

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

```
execute_route(route_id="5f6bc103-2a24-427c-8c10-3dbeb4103efd", 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("5f6bc103-2a24-427c-8c10-3dbeb4103efd", 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.
