Direct access to KEGG via the REST API for academic-only pathway/gene/compound/drug queries; use when you need precise HTTP-level control or targeted KEGG ID mapping.
65
79%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./scientific-skills/Evidence Insight/kegg-database/SKILL.mdNote: KEGG REST access is intended for academic use. Non-academic/commercial use may require a separate KEGG license.
kegg_info (database metadata)kegg_list (catalog listing)kegg_find (keyword/property search)kegg_get (entry retrieval; sequences/structures/images)kegg_conv (ID conversion)kegg_link (cross-database linking)kegg_ddi (drug–drug interactions)map00010, hsa00010hsa:10458cpd:C00002dr:D00001ec:1.1.1.1ko:K00001kegg_get: aaseq, ntseq, mol, kcf, image, kgml, json (some formats are single-entry only).>=3.9requests >=2.31.0"""
End-to-end example:
1) Find a human gene by keyword
2) Link the gene to pathways
3) Retrieve one pathway entry
4) Convert the gene ID to UniProt
"""
from scripts.kegg_api import kegg_find, kegg_link, kegg_get, kegg_conv
# 1) Search for a gene keyword in KEGG GENES
hits = kegg_find("genes", "p53")
print("FIND results (first lines):")
print("\n".join(hits.splitlines()[:5]), "\n")
# Choose a known KEGG gene ID for TP53 (human)
gene_id = "hsa:7157"
# 2) Link gene -> pathways
pathway_links = kegg_link("pathway", gene_id)
print("LINK gene -> pathways (first lines):")
print("\n".join(pathway_links.splitlines()[:5]), "\n")
# Parse the first pathway ID from the link output
# Typical line format: path:hsaXXXXX<TAB>hsa:7157
first_line = next((ln for ln in pathway_links.splitlines() if ln.strip()), None)
if not first_line:
raise RuntimeError("No pathways returned for the gene ID.")
path_id = first_line.split("\t")[0].replace("path:", "")
print("Selected pathway:", path_id, "\n")
# 3) Retrieve the pathway entry (flat text)
pathway_entry = kegg_get(path_id)
print("GET pathway entry (first 30 lines):")
print("\n".join(pathway_entry.splitlines()[:30]), "\n")
# 4) Convert KEGG gene ID -> UniProt
uniprot_map = kegg_conv("uniprot", gene_id)
print("CONV KEGG -> UniProt:")
print(uniprot_map)This skill wraps KEGG REST endpoints into Python functions (see scripts/kegg_api.py):
kegg_info(database_or_org)
Retrieves database or organism metadata (release info, counts, etc.).
kegg_list(database, organism=None)
Lists entries in a database; optionally scoped to an organism (e.g., ("pathway", "hsa")).
Also supports listing explicit IDs (batch-style) when passed as a single string.
kegg_find(database, query, option=None)
Searches by keyword or by chemical properties. Common option values:
formula (exact match)exact_mass (range like 300-310)mol_weight (range)kegg_get(entry_ids, option=None)
Retrieves full entries or specific formats:
aaseq, ntseqmol, kcfimage (PNG), kgml (XML), json (Pathway JSON)Batching rules:
image, kgml, and json typically allow only 1 entry per request.kegg_conv(target_db, source)
Converts IDs between KEGG and external databases (e.g., uniprot, ncbi-geneid, pubchem, chebi).
Output is tab-delimited pairs: source_id<TAB>target_id.
kegg_link(target_db, source)
Cross-references entries across KEGG databases (e.g., gene → pathway, pathway → compound, gene → KO).
kegg_ddi(drug_ids)
Returns known drug–drug interactions for one or more KEGG drug IDs (up to typical batch limits).
image/kgml/json.400 (bad request / malformed parameters)404 (unknown database or entry ID)For detailed endpoint syntax, database lists, and species codes, consult:
references/kegg_reference.md63c61d3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.