Agent skill

Embl Ebi Ols

by google-deepmind in google-deepmind/science-skills

Query and search the EMBL-EBI Ontology Lookup Service (OLS) for biomedical ontology terms, definitions, and hierarchies across 250+ ontologies (e.g., GO, DOID, HP).

Apache-2.0Auto-check passedKnowledge Management

Install Embl Ebi Ols

skills CLI
$ npx skills add google-deepmind/science-skills --skill embl-ebi-ols -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install google-deepmind/science-skills embl-ebi-ols --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/google-deepmind/science-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/embl_ebi_ols .claude/skills/embl-ebi-ols && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
embl-ebi-ols
GitHub stars
3.2k
Used in
1 other repo
Token cost
~2.9k tokens
SKILL.md length
1,204 words
Files
11 (incl. scripts, references)
Skills in repo
40
Repo updated
First seen
Licence
Apache-2.0

At a glance

Query and search the EMBL-EBI Ontology Lookup Service (OLS) for biomedical ontology terms, definitions, and hierarchies across 250+ ontologies (e.g., GO, DOID, HP).

  • Works in 2 steps: uv: Read the uv skill and follow its… → User Notification: If…
  • The user asks to search for terms
  • SKILL.md covers Prerequisites, Core Rules, When to Use — Quick Recipes and Utility Scripts, plus 2 more sections
  • Runs Python scripts from its folder; calls uv

What it does

Embl Ebi Ols is an agent skill from google-deepmind/science-skills. Query and search the EMBL-EBI Ontology Lookup Service (OLS) for biomedical ontology terms, definitions, and hierarchies across 250+ ontologies (e.g., GO, DOID, HP). Use when the user asks to search for terms, retrieve details, navigate hierarchies (parents, children, ancestors), look up properties and individuals, get autocomplete suggestions, or access ontology metadata and statistics.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts and reference files (for example `references/api_reference.md`, `scripts/get_individual.py` and `scripts/get_ontology.py`).

It sits in Knowledge Management, covering Knowledge graphs and Statistics. The repository describes itself as: GDM Science Skills to speed up agentic scientific workflows with better grounding and higher token efficiency. Integrate insights from AlphaGenome, AFDB, UniProt and 30+ other… The licence is Apache-2.0.

When your agent uses it

  • The user asks to search for terms
  • Retrieve details
  • Navigate hierarchies (parents
  • Look up properties and individuals

Example prompts

  • “/embl-ebi-ols”

Requirements

  • Python 3

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. uv: Read the uv skill and follow its Setup instructions to ensure
  2. User Notification: If .licenses/embl_ebi_ols_LICENSE.txt does not

What it can do on your machine

Read from SKILL.md and the folder at commit 6883275. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 8 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • uv

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • ebi.ac.uk

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Embl Ebi Ols loads about 2.9k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 101 tokens; SKILL.md has 1,204 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~101
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from google-deepmind/science-skills at commit 6883275, republished under its Apache-2.0 licence (© google-deepmind). 1,204 words, ~2,857 tokens.

Download SKILL.mdSave it as .claude/skills/embl-ebi-ols/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
embl-ebi-ols
description
Query and search the EMBL-EBI Ontology Lookup Service (OLS) for biomedical ontology terms, definitions, and hierarchies across 250+ ontologies (e.g., GO, DOID, HP). Use when the user asks to search for terms, retrieve details, navigate hierarchies (parents, children, ancestors), look up properties and individuals, get autocomplete suggestions, or access ontology metadata and statistics.

EMBL-EBI Ontology Lookup Service (OLS)

Prerequisites

  1. uv: Read the uv skill and follow its Setup instructions to ensure uv is installed and on PATH.
  2. User Notification: If .licenses/embl_ebi_ols_LICENSE.txt does not already exist in the workspace root directory then (1) prominently notify the user to check the terms at https://www.ebi.ac.uk/ols4/api-docs, then (2) create the file recording the notification text and timestamp.

Core Rules

  • [!IMPORTANT] Use the Utility Scripts: You MUST ALWAYS use the provided utility script under scripts/ for all API interactions, including checking status. NEVER use curl or custom Python requests to query API directly.

  • Rate Limiting & Resilience: You MUST respect EBI's Terms of Use with a maximum 5 requests per second. The provided utility scripts automatically enforce this.

  • Notification: If this skill is used, ensure this is mentioned in the output.

When to Use — Quick Recipes

Use this skill whenever a user query matches one of these patterns:

  • Definition of a disease, phenotype, or term → get_term.py --obo_id <ID> --summary
  • Subtypes or children of a term → get_term.py --obo_id <ID> --relations children
  • Parent of a term → get_term.py --obo_id <ID> --relations parents
  • Ancestors / disease categories / classified under → get_term.py --obo_id <ID> --relations ancestors
  • Root terms of an ontology → get_term.py --ontology <id> --roots
  • Hierarchical parents (is-a + part-of) → get_term.py --obo_id <ID> --relations hierarchicalParents
  • Structures part of / hierarchical children → get_term.py --obo_id <ID> --relations hierarchicalChildren
  • Compare direct vs hierarchical parents → get_term.py --obo_id <ID> --relations parents,hierarchicalParents
  • Search for a term (e.g., "apoptosis" in GO) → search_ols.py --query "..." --ontology <id>
  • Find a GO term matching a function → search_ols.py --query "..." --ontology go --exact
  • Search in MONDO, CHEBI, CL, UBERON → search_ols.py --query "..." --ontology <id> --defining
  • Paginate search results / next page → search_ols.py --query "..." --rows N --start <offset>
  • Autocomplete a partial name → suggest_ols.py --query "..."
  • Ontology metadata (e.g., EFO info) → get_ontology.py --id <id>
  • OLS index statistics → get_stats.py

Multi-step queries (e.g., "What is the parent of myocardial infarction?"): When the user names a term but you don't know its OBO ID, complete in exactly 2 steps — do NOT search across multiple ontologies:

  1. Search in the single most appropriate ontology: search_ols.py --query "myocardial infarction" --ontology doid --exact --rows 1 --output /tmp/step1.json
  2. Get relations using the OBO ID from step 1: get_term.py --obo_id DOID:5844 --relations parents --output /tmp/step2.json

Ontology selection rule: ALWAYS use doid for common human diseases (e.g., diabetes, cancer), hp for phenotypes, go for gene functions, chebi for chemicals, uberon for anatomy, cl for cell types. Use mondo ONLY when cross-species context is explicitly mentioned or needed.

Utility Scripts

1. Search Terms Across Ontologies

Search for ontology terms by keyword and return clean JSON.

bash
uv run scripts/search_ols.py --query "diabetes" \
  --rows 5 --output /tmp/ols_search_results.json 2>/dev/null

Important: --output is required for all scripts. Results are always written to the specified file. For larger output, you can limit --rows (e.g., 5-10) or paginate using --start.

Returned Fields: JSON results include iri, label, description, ontology_name, ontology_prefix, obo_id, short_form, type, is_defining_ontology, and exact_synonyms.

Pagination: Output includes a pagination block with start, rows, and has_more so you can decide whether to fetch more results.

Options:

  • --query: Search string (required). Searches labels, synonyms, descriptions, and identifiers.
  • --ontology: Filter by ontology ID (e.g., go, doid, efo, hp). Recommended when you know which ontology to search — avoids noise from 250+ ontologies.
  • --type: Filter by entity type: class, property, individual, or ontology.
  • --exact: Flag for exact label match only. Use this for entity resolution when mapping a user's string to a specific ontology term ID.
  • --defining: Only return terms from their defining (authoritative) ontology. E.g., GO:0005634 only from GO, not cross-referenced copies.
  • --obsolete: Flag to include obsolete terms in results.
  • --local: Only return terms in their defining ontology.
  • --childrenOf: Restrict to children of given term IRI(s), comma-separated.
  • --allChildrenOf: Restrict to all children including transitive relations (part of, develops from), comma-separated IRIs.
  • --queryFields: Comma-separated fields to search in (e.g., label,synonym,description).
  • --fieldList: Comma-separated fields to return.
  • --groupField: Group results by unique IRI.
  • --isLeaf: Only return leaf terms (no children).
  • --rows: Number of results to return (default 10).
  • --start: Pagination offset (default 0).
  • --output: File path to save results (required).

2. Autocomplete / Suggest

Get autocomplete suggestions for partial term names.

bash
uv run scripts/suggest_ols.py --query "diabet" --rows 5 \
  --output /tmp/ols_suggest.json 2>/dev/null

Options:

  • --query: Partial term to autocomplete (required).
  • --ontology: Filter by ontology ID(s), comma-separated.
  • --rows: Number of suggestions (default 10).
  • --start: Pagination offset (default 0).
  • --output: File path to save results (default: stdout).

3. Get Term Details

Retrieve full details for a specific ontology term by its OBO ID or IRI.

bash
uv run scripts/get_term.py --obo_id "GO:0005634" \
  --output /tmp/ols_term.json 2>/dev/null

Returned Fields: JSON includes iri, label, description, obo_id, synonyms, ontology_name, is_obsolete, is_defining_ontology, has_children, is_root, annotation, in_subset, and any requested relations.

Show full SKILL.md (469 more words)Show less

Summary Mode: Use --summary to get a clean, human-readable block on stdout (Label, OBO ID, Ontology, Definition, Synonyms). The full JSON is always saved to the --output file.

bash
uv run scripts/get_term.py --obo_id "GO:0005634" --summary \
  --output /tmp/nucleus_full.json

Options:

  • --obo_id: OBO-style identifier (e.g., GO:0005634, DOID:9351). Mutually exclusive with --iri. Auto-converts to IRI with double encoding.

  • --iri: Full IRI of the term. Mutually exclusive with --obo_id.

  • --ontology: Ontology ID (auto-derived from --obo_id if not provided).

  • --relations: Comma-separated list of relations to fetch.

    • Direct (is-a only): parents, children, ancestors, descendants
    • Hierarchical (is-a + transitive like "part of", "develops from"): hierarchicalParents, hierarchicalChildren, hierarchicalAncestors, hierarchicalDescendants
    • Graph: graph — full graph JSON for a term

    Note: Use hierarchical variants for anatomical/developmental ontologies (UBERON, CL) where transitive relations like "part of" and "develops from" are critical for navigating the hierarchy.

  • --roots: List root terms of the ontology (requires --ontology).

  • --preferred_roots: List preferred root terms (requires --ontology).

  • --summary: Human-readable summary on stdout, full JSON to --output.

  • --output: File path to save results (default: stdout).

4. Get Property Details

Retrieve details for an ontology property (relation type) with hierarchy.

bash
uv run scripts/get_property.py --obo_id "BFO:0000051" --ontology go \
  --output /tmp/ols_property.json 2>/dev/null

Options:

  • --obo_id: OBO-style ID of the property. Mutually exclusive with --iri.
  • --iri: Full IRI of the property. Mutually exclusive with --obo_id.
  • --ontology: Ontology ID (required with --iri).
  • --relations: Comma-separated: parents, children, ancestors, descendants.
  • --roots: List root properties of the ontology (requires --ontology).
  • --output: File path to save results (default: stdout).

5. Get Individual Details

Retrieve details for an ontology individual (instance).

bash
uv run scripts/get_individual.py --obo_id "IAO:0000103" --ontology iao --types \
  --output /tmp/ols_individual.json 2>/dev/null

Options:

  • --obo_id: OBO-style ID. Mutually exclusive with --iri.
  • --iri: Full IRI. Mutually exclusive with --obo_id.
  • --ontology: Ontology ID (required with --iri).
  • --types: Fetch the direct types (classes) of this individual.
  • --alltypes: Fetch all types including ancestor classes.
  • --output: File path to save results (default: stdout).

6. Get Ontology Information

List available ontologies or retrieve details for a specific one.

bash
uv run scripts/get_ontology.py --id go \
  --output /tmp/ols_ontology.json 2>/dev/null

Options:

  • --id: Specific ontology ID (e.g., go, efo, doid). If omitted, lists all ontologies.
  • --page: Page number for pagination (default 0).
  • --size: Number of ontologies per page (default 20).
  • --output: File path to save results (default: stdout).

7. Get OLS Statistics

Retrieve index statistics (total ontologies, classes, properties, individuals).

bash
uv run scripts/get_stats.py --output /tmp/ols_stats.json 2>/dev/null

Options:

  • --output: File path to save results (default: stdout).

Reference

Workflow

  1. Use suggest_ols.py for autocomplete when you have a partial term name.
  2. Search for terms using search_ols.py. Use --defining to prioritize authoritative definitions. Use --exact for entity resolution.
  3. If full details are needed, use get_term.py with the OBO ID or IRI. Use --summary for a concise view.
  4. To explore a term's hierarchy, use get_term.py --relations parents,children for is-a only, or --relations hierarchicalParents,hierarchicalChildren for "part of" etc.
  5. To explore from the top down, use get_term.py --ontology go --roots.
  6. For properties or individuals, use get_property.py or get_individual.py.
  7. To discover available ontologies, use get_ontology.py.
  8. To check OLS index status, use get_stats.py.

© google-deepmind, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 10 other files (scripts, references) in skills/embl_ebi_ols of google-deepmind/science-skills.

  • SKILL.md
  • references/api_reference.md
  • references/citation.bib
  • scripts/get_individual.py
  • scripts/get_ontology.py
  • scripts/get_property.py
  • scripts/get_stats.py
  • scripts/get_term.py
  • scripts/ols_utils.py
  • scripts/search_ols.py
  • scripts/suggest_ols.py

Open the folder on GitHubat commit 6883275

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in google-deepmind/science-skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Embl Ebi Ols next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Embl Ebi Ols compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Embl Ebi Ols this skillgoogle-deepmind/science-skills3.2k1 repos~2.9kAutomated safety check: PassApache-2.0
Statsagenticnotetaking/arscontexta3.5k—~3.1kAutomated safety check: NotesMIT
Obsidian Canvas BoardsAgriciDaniel/claude-obsidian15k—~1.4kAutomated safety check: PassMIT
Ontology1mancompany/OneManCompany4412 repos~1.5kAutomated safety check: PassApache-2.0
Knowledge Graphgnomeria/usbtree691—~1.5kAutomated safety check: PassMIT
Graphagenticnotetaking/arscontexta3.5k—~4.9kAutomated safety check: NotesMIT

Similar skills

  • Stats

    agenticnotetaking/arscontexta

    Show vault statistics and knowledge graph metrics. An agent skill from agenticnotetaking/arscontexta.

    3.5k GitHub stars~3.1k tokensUpdated 7 mo ago
    Knowledge ManagementAuto-check: notes
  • Obsidian Canvas Boards

    AgriciDaniel/claude-obsidian

    Creates, inspects and updates Obsidian JSON Canvas boards in a vault, with text, file, link, group and edge nodes, using safe recoverable edits.

    15k GitHub stars~1.4k tokensUpdated 28 days ago
    Knowledge ManagementAuto-check passed
  • Ontology

    1mancompany/OneManCompany

    Typed knowledge graph for structured agent memory and composable skills.

    441 GitHub starsUsed in 2 repos~1.5k tokens
    Knowledge ManagementAuto-check passed
  • Knowledge Graph

    gnomeria/usbtree

    Set up and maintain a lightweight, file-based knowledge graph of the repo — entities, typed relations, decisions, gotchas — so agents load context fast instead of re-exploring the codebase every…

    691 GitHub stars~1.5k tokensUpdated 1 mo ago
    Knowledge ManagementAuto-check passed
  • Graph

    agenticnotetaking/arscontexta

    Interactive knowledge graph analysis. An agent skill from agenticnotetaking/arscontexta.

    3.5k GitHub stars~4.9k tokensUpdated 7 mo ago
    Knowledge ManagementAuto-check: notes
  • LLM Wiki Knowledge Graph

    Egonex-AI/Understand-Anything

    Detects a Karpathy-pattern LLM wiki and builds an interactive knowledge graph with entities, implicit relationships and topic clusters.

    86k GitHub stars~1.5k tokensUpdated today
    Knowledge ManagementAuto-check passed

More from google-deepmind/science-skills

All 40 skills in this repo
  • Alphafold Database Fetch And Analyze

    google-deepmind/science-skills

    Retrieve and analyze AlphaFold predicted structures for a protein.

    3.2k GitHub starsUsed in 2 repos~1.2k tokens
    Auto-check passed
  • Alphagenome Single Variant Analysis

    google-deepmind/science-skills

    Analyzes genetic variant effects on gene expression (RNA-seq), chromatin accessibility (DNASE), histone marks (ChIP), and transcription factors using the AlphaGenome API.

    3.2k GitHub starsUsed in 2 repos~3k tokens
    Auto-check: notes
  • Chembl Database

    google-deepmind/science-skills

    Query the ChEMBL database for bioactive molecules, drug targets, bioactivity data, approved drugs, and chemical structures.

    3.2k GitHub starsUsed in 2 repos~2.9k tokens
    Auto-check passed
  • Clinical Trials Database

    google-deepmind/science-skills

    Query ClinicalTrials.gov via APIv2. An agent skill from google-deepmind/science-skills.

    3.2k GitHub starsUsed in 2 repos~3.2k tokens
    Auto-check passed
  • Clinvar Database

    google-deepmind/science-skills

    A skill your agent uses when needing clinical significance, pathogenicity classifications (e.g., Pathogenic, Benign, VUS), clinical evidence rationales, or finding "hard positive" benchmark controls…

    3.2k GitHub starsUsed in 2 repos~3.9k tokens
    Auto-check: notes
  • Dbsnp Database

    google-deepmind/science-skills

    A skill your agent uses when you want to look up, map, and search for short genetic variants (SNPs, indels) in NCBI's dbSNP database.

    3.2k GitHub starsUsed in 2 repos~3.4k tokens
    Auto-check: notes

Questions about Embl Ebi Ols

What does Embl Ebi Ols do?

Query and search the EMBL-EBI Ontology Lookup Service (OLS) for biomedical ontology terms, definitions, and hierarchies across 250+ ontologies (e.g., GO, DOID, HP). Embl Ebi Ols is an agent skill from google-deepmind/science-skills., GO, DOID, HP).

When should I use Embl Ebi Ols?

Embl Ebi Ols fits situations like: the user asks to search for terms; retrieve details; navigate hierarchies (parents; look up properties and individuals.

How do I install Embl Ebi Ols in Claude Code?

Run `npx skills add google-deepmind/science-skills --skill embl-ebi-ols -a claude-code`. Or copy the skill folder (skills/embl_ebi_ols in google-deepmind/science-skills) into .claude/skills/embl-ebi-ols in your project. Claude Code loads it when a task matches its description.

How do I install Embl Ebi Ols in Codex?

Run `npx skills add google-deepmind/science-skills --skill embl-ebi-ols -a codex`. Or copy the skill folder (skills/embl_ebi_ols in google-deepmind/science-skills) into .agents/skills/embl-ebi-ols in your project. Codex loads it when a task matches its description.

Can I use Embl Ebi Ols in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add google-deepmind/science-skills --skill embl-ebi-ols -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/embl-ebi-ols, .gemini/skills/embl-ebi-ols, .github/skills/embl-ebi-ols and .opencode/skills/embl-ebi-ols in your project.

What does Embl Ebi Ols need to run?

Going by SKILL.md and its folder, Embl Ebi Ols needs Python for the scripts in its folder and the command-line tools its instructions call (uv). Our summary lists: Python 3.

Does Embl Ebi Ols access the network?

SKILL.md names 1 domain. As links in the text: ebi.ac.uk. This is read from the text; nothing was executed.

Is Embl Ebi Ols safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Embl Ebi Ols use?

Embl Ebi Ols is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Embl Ebi Ols use?

About 2.9k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.8k tokens, read only when the agent opens those files.

What are the alternatives to Embl Ebi Ols?

Skills that share tags, products or a category with Embl Ebi Ols: Stats (agenticnotetaking/arscontexta, 3.5k stars), Obsidian Canvas Boards (AgriciDaniel/claude-obsidian, 15k stars), Ontology (1mancompany/OneManCompany, 441 stars) and Knowledge Graph (gnomeria/usbtree, 691 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Embl Ebi Ols?

google-deepmind (a GitHub organization) maintains it in google-deepmind/science-skills, which has 3,226 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on September 15, 2026.

Source: google-deepmind/science-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.