Query EBI QuickGO REST API for GO terms and protein annotations. Fetch term metadata by ID, search by keyword, walk ancestor/descendant hierarchies, download annotations filtered by taxon, evidence code, aspect.
SkillScore91Maintained
Automatic
◆Research pack
Last verified 8/28/2026
What it changes
Passed 20 of 22 test cases with the skill, and 13 of 22 without it.
Without skill59%
With skill91%
Checks it passed that the model alone missed
Includes TAS in the curated evidence codes string.
Sets the geneProductId parameter using the UniProtKB: prefix.
Passes a relations parameter containing the values is_a and part_of.
and 9 more in the full report
7 fixed13 passed either way2 still failing0 broke
Pass-rate lift
+32 pp
Tokens
+271%
Agent turns
0%
Response time
+6%
Model gemini-3.6-flashMeasured 8/28/2026v120 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 7 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 7
Prompt
Write a Python script to retrieve all highly reliable, manually curated experimental GO annotations for the human BRCA1 protein (accession P38398). I want the final output structured as a pandas DataFrame containing columns for the GO term ID, the term's name, and the specific evidence category for every matching record.
What was checked, without and with the skill
Checked
Without skill
With skill
Prepends the UniProtKB: prefix to the protein accession when assigning the geneProductId parameter.
Missed
Passed
Assigns a comma-separated list of experimental codes to the evidenceCode parameter rather than inventing an evidenceCodeType key.
Missed
Passed
Extracts the evidence category from the response items using the exact evidenceCode key.
Missed
Passed
Implements pagination by comparing the length of accumulated records against the numberOfHits field.
Missed
Passed
case-01 · gemini-3.6-flash · 8/28/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md687 linessingle file
QuickGO Database
Overview
QuickGO is the EBI's Gene Ontology annotation browser and REST API. It provides programmatic access to the GO ontology (terms, synonyms, hierarchies) and to the manually curated and electronic GO annotations for proteins across all species. The API is free, requires no authentication, and returns JSON responses. All endpoints live under https://www.ebi.ac.uk/QuickGO/services/.
When to Use
Resolving a GO term ID (e.g., GO:0006915) to its name, definition, and aspect (biological_process, molecular_function, cellular_component)
Retrieving all GO annotations for a UniProt protein, filtered by evidence code and taxon
Searching GO terms by keyword (e.g., "apoptosis") to find relevant term IDs before enrichment analysis
Walking the GO DAG upward (ancestors) or downward (descendants) from a specific term
Getting annotation counts stratified by evidence code or GO aspect for a set of proteins
Resolving multiple GO IDs in one batch request to avoid looping over individual term lookups
For enrichment analysis (ORA/GSEA) on a gene list use gseapy-gene-enrichment; QuickGO provides the raw annotation data
For comprehensive protein function annotations in Swiss-Prot format use uniprot-protein-database
Prerequisites
Python packages: requests, pandas, matplotlib
Data requirements: GO term IDs (GO:XXXXXXX) or UniProt accessions; taxon IDs (e.g., 9606 for human)
Environment: internet connection; no API key required
Rate limits: no published hard limit; use time.sleep(1.0) between requests in batch loops for polite access
pip install requests pandas matplotlib
Quick Start
import requests
import time
QUICKGO_BASE = "https://www.ebi.ac.uk/QuickGO/services"
def quickgo_get(endpoint: str, params: dict = None) -> dict:
"""Send a GET request to a QuickGO endpoint and return parsed JSON."""
url = f"{QUICKGO_BASE}/{endpoint}"
headers = {"Accept": "application/json"}