Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Query computational catalysis reaction data via Catalysis Hub GraphQL
.claude/skills/brycewang-stanford-catalysis-hub-api/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 84% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 109% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 152% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -14% | 0% |
Catalysis Hub is an open-access database of DFT-calculated reaction energies and activation barriers for heterogeneous catalysis, developed at SUNCAT Center (Stanford/SLAC). It aggregates computational results from published studies, enabling researchers to search, compare, and reuse DFT data for catalyst screening and mechanism validation.
The GraphQL endpoint provides structured access to reactions, publications, and atomic structures. All data is linked to peer-reviewed publications and includes computational details (DFT code, XC functional, surface facet, coverage).
No authentication required. Catalysis Hub is a free public service with no API keys.
Endpoint: https://api.catalysis-hub.org/graphql
All queries use HTTP POST with a JSON query field. Responses follow the Relay connection pattern (edges/node).
| Query | Description | |-------|-------------| | reactions | DFT-computed reaction energies and barriers | | publications | Published studies linked to reaction data | | systems | Atomic structure data (ASE Atoms objects) | | species | Chemical species involved in reactions |
chemicalComposition, surfaceComposition, facet, reactionEnergy (eV), activationEnergy (eV), dftCode (e.g. Quantum-Espresso, VASP-5.4.4), dftFunctional (e.g. RPBE), reactants (JSON), products (JSON), Equation (e.g. 0.5O2(g) + * -> O*)
title, authors (JSON), journal, year (Int), doi, reactions (linked Reaction list)
bashcurl -s -X POST "https://api.catalysis-hub.org/graphql" \ -H "Content-Type: application/json" -d '{"query":"{ reactions(first: 3) { edges { node { chemicalComposition reactionEnergy activationEnergy surfaceComposition } } } }"}'
Response (truncated):
json{"data":{"reactions":{"edges":[ {"node":{"chemicalComposition":"Nb9Sn3","reactionEnergy":-9.687,"activationEnergy":null,"surfaceComposition":"Nb3Sn"}}, {"node":{"chemicalComposition":"Ir3V9","reactionEnergy":-8.395,"activationEnergy":null,"surfaceComposition":"V3Ir"}}, {"node":{"chemicalComposition":"Ir9Ni3","reactionEnergy":-2.005,"activationEnergy":null,"surfaceComposition":"Ir3Ni"}} ]}}}
bashcurl -s -X POST "https://api.catalysis-hub.org/graphql" \ -H "Content-Type: application/json" -d '{"query":"{ reactions(first: 2, surfaceComposition: \"Pt\") { edges { node { chemicalComposition surfaceComposition facet reactionEnergy dftCode dftFunctional Equation } } } }"}'
Response (truncated):
json{"data":{"reactions":{"edges":[ {"node":{"chemicalComposition":"Pt28","surfaceComposition":"Pt","facet":"100","reactionEnergy":0.856,"dftCode":"Quantum-Espresso","dftFunctional":"RPBE","Equation":"0.5N2(g) + * -> N*"}}, {"node":{"chemicalComposition":"Pt28","surfaceComposition":"Pt","facet":"100","reactionEnergy":-0.984,"dftCode":"Quantum-Espresso","dftFunctional":"RPBE","Equation":"0.5O2(g) + * -> O*"}} ]}}}
~ prefix)bashcurl -s -X POST "https://api.catalysis-hub.org/graphql" \ -H "Content-Type: application/json" -d '{"query":"{ reactions(first: 3, chemicalComposition: \"~CO\") { edges { node { chemicalComposition reactionEnergy dftCode } } } }"}'
Response (truncated):
json{"data":{"reactions":{"edges":[ {"node":{"chemicalComposition":"Co9Cr2FeMnNiO20","reactionEnergy":1.910,"dftCode":"VASP-5.4.4"}}, {"node":{"chemicalComposition":"Co9Cr2FeMnNiO20","reactionEnergy":0.648,"dftCode":"VASP-5.4.4"}}, {"node":{"chemicalComposition":"Co10CrFeMnNiO20","reactionEnergy":3.167,"dftCode":"VASP-5.4.4"}} ]}}}
bashcurl -s -X POST "https://api.catalysis-hub.org/graphql" \ -H "Content-Type: application/json" -d '{"query":"{ publications(first: 2, year: 2019) { edges { node { title authors journal year doi } } } }"}'
Response (truncated):
json{"data":{"publications":{"edges":[ {"node":{"title":"High-Throughput Calculations of Catalytic Properties of Bimetallic Alloy Surfaces","authors":"[\"Mamun, Osman\",\"Winther, Kirsten T.\",\"Boes, Jacob R.\",\"Bligaard, Thomas\"]","journal":"Scientific Data","year":2019,"doi":"10.1038/s41597-019-0080-z"}}, {"node":{"title":"Selective high-temperature CO2 electrolysis enabled by oxidized carbon intermediates","journal":"Nature Energy","year":2019,"doi":"10.1038/s41560-019-0457-4"}} ]}}}
first to limit results; pagination via cursor-based after argumentpythonimport requests ENDPOINT = "https://api.catalysis-hub.org/graphql" def query_catalysis_hub(query): """Execute a GraphQL query against Catalysis Hub.""" resp = requests.post(ENDPOINT, json={"query": query}) resp.raise_for_status() return resp.json()["data"] # Screen adsorption energies on Pt surfaces data = query_catalysis_hub(""" { reactions(first: 20, surfaceComposition: "Pt") { edges { node { Equation facet reactionEnergy dftFunctional } } } } """) for edge in data["reactions"]["edges"]: r = edge["node"] print(f"{r['Equation']:<30} facet={r['facet']} E={r['reactionEnergy']:+.3f} eV") # Publications with linked reactions pubs = query_catalysis_hub(""" { publications(first: 5, year: 2019) { edges { node { title doi reactions { surfaceComposition Equation } } } } } """) for edge in pubs["publications"]["edges"]: pub = edge["node"] print(f"{pub['title']} | DOI: {pub['doi']} | {len(pub.get('reactions') or [])} reactions")
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 7,712 | 8,057 | +4% | 1 | 1 | 0% | 1,482 | 2,729 | +84% | 0 | 0 | — |
case-02 | fail→pass | 13,370 | 8,784 | -34% | 1 | 1 | 0% | 2,704 | 3,658 | +35% | 0 | 0 | — |
case-03 | fail→pass | 19,270 | 3,546 | -82% | 1 | 1 | 0% | 1,244 | 2,603 | +109% | 0 | 0 | — |
case-04 | pass→pass | 31,024 | 19,950 | -36% | 1 | 1 | 0% | 5,699 | 5,727 | +0% | 0 | 0 | — |
case-05 | pass→pass | 13,183 | 9,858 | -25% | 1 | 1 | 0% | 2,464 | 3,633 | +47% | 0 | 0 | — |
case-06 | pass→pass | 12,752 | 9,443 | -26% | 1 | 1 | 0% | 2,285 | 3,502 | +53% | 0 | 0 | — |
case-07 | pass→pass | 7,740 | 4,851 | -37% | 1 | 1 | 0% | 1,387 | 2,762 | +99% | 0 | 0 | — |
case-08 | pass→pass | 8,692 | 4,429 | -49% | 1 | 1 | 0% | 1,574 | 2,757 | +75% | 0 | 0 | — |
case-09 | pass→pass | 6,937 | 3,917 | -44% | 1 | 1 | 0% | 1,298 | 2,656 | +105% | 0 | 0 | — |
case-15 | pass→pass | 7,458 | 1,935 | -74% | 1 | 1 | 0% | 1,307 | 2,188 | +67% | 0 | 0 | — |
case-10 | fail→pass | 13,832 | 2,793 | -80% | 1 | 1 | 0% | 970 | 2,441 | +152% | 0 | 0 | — |
case-11 | pass→pass | 4,399 | 2,199 | -50% | 1 | 1 | 0% | 750 | 2,266 | +202% | 0 | 0 | — |
case-12 | pass→pass | 6,288 | 3,025 | -52% | 1 | 1 | 0% | 1,025 | 2,339 | +128% | 0 | 0 | — |
case-13 | pass→pass | 7,641 | 1,623 | -79% | 1 | 1 | 0% | 1,139 | 2,185 | +92% | 0 | 0 | — |
case-14 | fail→pass | 16,485 | 2,234 | -86% | 1 | 1 | 0% | 2,714 | 2,323 | -14% | 0 | 0 | — |
case-16 | pass→pass | 5,154 | 2,076 | -60% | 1 | 1 | 0% | 827 | 2,322 | +181% | 0 | 0 | — |
case-17 | fail→pass | 8,587 | 4,110 | -52% | 1 | 1 | 0% | 1,681 | 2,688 | +60% | 0 | 0 | — |
case-18 | fail→pass | 14,965 | 8,737 | -42% | 1 | 1 | 0% | 2,602 | 3,569 | +37% | 0 | 0 | — |
case-19 | pass→pass | 11,799 | 5,287 | -55% | 1 | 1 | 0% | 1,953 | 2,847 | +46% | 0 | 0 | — |
case-20 | pass→pass | 11,267 | 2,232 | -80% | 1 | 1 | 0% | 1,852 | 2,278 | +23% | 0 | 0 | — |
case-21 | pass→pass | 14,801 | 9,957 | -33% | 1 | 1 | 0% | 2,315 | 3,984 | +72% | 0 | 0 | — |
case-22 | pass→pass | 7,376 | 7,592 | +3% | 1 | 1 | 0% | 1,461 | 3,165 | +117% | 0 | 0 | — |
case-23 | pass→pass | 11,819 | 7,350 | -38% | 1 | 1 | 0% | 1,977 | 3,172 | +60% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 21 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +30 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.