ChEBI Query Skill

SkillDatabases & data

Query the ChEBI (Chemical Entities of Biological Interest) database. Use whenever the user asks about small molecule identifiers, chemical ontology roles, molecular formulae, SMILES, InChI, synonyms, or cross-references for biologically relevant chemical compounds via ChEBI.

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the ChEBI Query Skill skill

What this skill tells your AI

The instructions your AI receives, as published by qsong-github/drugclaw in skills/drug_ontology/chebi/SKILL.md and read by ahel’s review.

Search the ChEBI 2.0 REST API by any entity. Auto-detects input type:

Input PatternDetected AsAction
CHEBI:15422 / chebi:15422ChEBI ID (prefixed)full entity lookup via /compound/{id}/
27732 (pure digits ≤7)ChEBI ID (numeric)full entity lookup via /compound/{id}/
anything elsefree textElasticsearch search via /es_search/?term=...

API

FunctionInputReturns
search(query, max_results=25)single entity stringlist[dict]
search_batch(queries, max_results=25)list of entity stringsdict[str, list[dict]]
summarize(results, label)result list + labelcompact one-line-per-hit text
to_json(results)result listlist[dict] (JSON-serialisable)

Lower-level helpers (called internally):

FunctionPurpose
search_chebi(query, max_results)keyword search via GET /es_search/?term=...&size=N
get_entity(chebi_id)full entity via GET /compound/CHEBI:{id}/
get_entities_batch(chebi_ids)batch lookup via GET /compounds/?chebi_ids=id1,id2,...

search_batch() automatically uses the efficient batch endpoint when all queries are ChEBI IDs; otherwise it iterates with a 0.3 s delay.

Usage

See if __name__ == "__main__" block in 64_ChEBI.py for runnable examples covering: single ID lookup, name search, formula search, batch ID search, mixed batch search, and JSON output.

Key Fields Returned

Top-level: chebi_accession, name, ascii_name, definition, stars (curation quality; 3 = fully curated), secondary_ids, is_released.

chemical_data (nested dict): formula, charge, mass, monoisotopic_mass.

default_structure (nested dict): smiles, standard_inchi, standard_inchi_key, wurcs.

names (nested dict by type): keys like IUPAC NAME, SYNONYM, BRAND NAME, UNIPROT NAME; each value is a list of name objects.

ontology_relations: incoming_relations and outgoing_relations, each a list of {init_id, init_name, relation_type, final_id, final_name}.

database_accessions (nested dict by type): CAS, MANUAL_X_REF, REGISTRY_NUMBER, CITATION; cross-refs to DrugBank, KEGG, HMDB, PubChem, PDBeChem, Wikipedia, etc.

roles_classification: list of role dicts with chebi_accession, name, definition, biological_role (bool), application (bool), chemical_role (bool).

Data Source

  • Database: ChEBI 2.0 (EMBL-EBI), >195,000 molecular entities
  • API base: https://www.ebi.ac.uk/chebi/backend/api/public/
  • Docs: https://www.ebi.ac.uk/chebi/backend/api/docs/
  • License: CC BY 4.0
  • Citation: Bento et al. Nucleic Acids Res. 2025, 54(D1), D1768–D1774.

Signals

GitHub stars
116
Forks
3
Last commit
Aug 2026

ahel review

  • K1binfo
    installs-packages (in chebi_skill.py)
  • K1binfo
    installs-packages (in README.md)

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Item type
skill
Key
chebi-query
Source
github.com/qsong-github/drugclaw