Install
$ agentstack add skill-cheatthegod-biohermes-query-ensembl ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Ensembl REST API Query
Query the Ensembl REST API for genomic annotations, sequences, and variants.
When to Use
- User asks about a gene's genomic location, exons, or transcripts
- User wants to look up an rsID or variant
- User needs genomic/cDNA/protein sequences
- User asks about gene structure or regulatory features
- User wants cross-species gene information
How to Execute
import requests
import json
BASE_URL = "https://rest.ensembl.org"
HEADERS = {"Content-Type": "application/json", "Accept": "application/json"}
# 1. Gene lookup by symbol
def lookup_gene(symbol, species="homo_sapiens"):
url = f"{BASE_URL}/lookup/symbol/{species}/{symbol}"
r = requests.get(url, headers=HEADERS, params={"expand": 1})
r.raise_for_status()
return r.json()
# 2. Get sequence
def get_sequence(ensembl_id, seq_type="genomic"):
url = f"{BASE_URL}/sequence/id/{ensembl_id}"
r = requests.get(url, headers=HEADERS, params={"type": seq_type})
r.raise_for_status()
return r.json()
# 3. Variant lookup by rsID
def lookup_variant(rsid, species="homo_sapiens"):
url = f"{BASE_URL}/variation/{species}/{rsid}"
r = requests.get(url, headers=HEADERS)
r.raise_for_status()
return r.json()
# 4. Get overlapping features in a region
def overlap_region(species, chrom, start, end, feature="gene"):
url = f"{BASE_URL}/overlap/region/{species}/{chrom}:{start}-{end}"
r = requests.get(url, headers=HEADERS, params={"feature": feature})
r.raise_for_status()
return r.json()
# 5. Cross-species homologs
def get_homologs(ensembl_id, target_species=None):
url = f"{BASE_URL}/homology/id/{ensembl_id}"
params = {}
if target_species:
params["target_species"] = target_species
r = requests.get(url, headers=HEADERS, params=params)
r.raise_for_status()
return r.json()
# Example: look up BRCA2
gene = lookup_gene("BRCA2")
print(f"Gene: {gene['display_name']}")
print(f"Ensembl ID: {gene['id']}")
print(f"Location: chr{gene['seq_region_name']}:{gene['start']}-{gene['end']}")
print(f"Strand: {'+' if gene['strand'] == 1 else '-'}")
print(f"Biotype: {gene['biotype']}")
print(f"Description: {gene.get('description', 'N/A')}")
Key Endpoints
| Endpoint | Use | |----------|-----| | /lookup/symbol/{species}/{symbol} | Gene info by symbol | | /lookup/id/{id} | Info by Ensembl ID | | /sequence/id/{id}?type=genomic | Get sequence | | /variation/{species}/{rsid} | Variant info | | /overlap/region/{species}/{chr}:{start}-{end} | Features in region | | /homology/id/{id} | Orthologs/paralogs | | /vep/{species}/hgvs/{hgvs} | Variant effect prediction |
Notes
- Region queries max 4,900,000 bp
- Species:
homo_sapiens,mus_musculus,danio_rerio,drosophila_melanogaster - Always use
application/jsonAccept header
Follow-up Suggestions
- "Want me to get the protein sequence for this gene?"
- "Should I check for known pathogenic variants?"
- "Want me to find orthologs in mouse?"
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: cheatthegod
- Source: cheatthegod/BioHermes
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.