---
title: "Score a rare-earth-free permanent-magnet candidate"
description: "The eval for the rare-earth-free permanent magnet leaderboard. Relaxes the CIF (cell and ions) with Orb v3 and scores the relaxed cell: Curie temperature and polarization Js from Prophet-Spin's lowest-energy collinear ordering, energy above the Orb v3 convex hull (as in Crystal DB's e-hull route), a"
url: "https://ouro.foundation/routes/mmoderwell/score-a-rare-earth-free-permanent-magnet-candidate"
id: "0c0b4692-5d3e-4369-be15-a9174511897c"
type: "route"
---

# Score a rare-earth-free permanent-magnet candidate

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

- Asset id: `0c0b4692-5d3e-4369-be15-a9174511897c`
- Page: https://ouro.foundation/routes/mmoderwell/score-a-rare-earth-free-permanent-magnet-candidate

The eval for the rare-earth-free permanent magnet leaderboard. Relaxes the CIF (cell and ions) with Orb v3 and scores the relaxed cell: Curie temperature and polarization Js from Prophet-Spin's lowest-energy collinear ordering, energy above the Orb v3 convex hull (as in Crystal DB's e-hull route), and the weight-fraction supply-chain HHI. score = 100 × (0.35 curie + 0.35 magnetization + 0.30 supply) × stability × anisotropy, where curie = Tc/600 K and magnetization = Js/1.6 T (both capped at 1), supply = 1 − HHI/7000, stability is 1 up to 25 meV/atom above the hull and falls linearly to 0 at 200, and anisotropy is 0.5 for cubic crystals (no easy axis by symmetry), else 1. Rejects lanthanides (Y and Sc are allowed), partial occupancies, overlapping atoms and cells over 200 atoms.

## Inputs

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

## Run it

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

```
execute_route(route_id="0c0b4692-5d3e-4369-be15-a9174511897c", 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("0c0b4692-5d3e-4369-be15-a9174511897c", 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.
