tooluniverse-sequence-retrieval
Retrieve DNA/RNA/protein sequences from NCBI and ENA with disambiguation. Quality hierarchy: RefSeq (NM_/NP_) > RefSeq predicted (XM_/XP_) > GenBank submissions. Use for fetching specific sequences by accession, gene-symbol-to-sequence lookup, transcript-isoform retrieval, and curated-vs-raw-submiss
By mims-harvard · 1,640 installs
npx skills add mims-harvard/tooluniverse --skill tooluniverse-sequence-retrieval
Source repository · Upstream listing
Biological Sequence Retrieval
Retrieve DNA, RNA, and protein sequences with proper disambiguation and cross database handling.
IMPORTANT : Always use English terms in tool calls. Only try original language terms as fallback. Respond in the user's language.
LOOK UP DON'T GUESS : Never assume accession numbers or sequence versions. Always retrieve and verify from NCBI or ENA.
Domain Reasoning
Sequence quality hierarchy: RefSeq (NM /NP = curated) RefSeq predicted (XM /XP ) GenBank (submitted). Prefer the MANE Select transcript for human canonical isoforms. Check version numbers annotations improve across versions.
Workflow
Phase 0: Clarification (When Needed)
Ask ONLY if: gene exists in multiple organisms, sequence type unclear, or strain matters.
Skip for: specific accessions, clear organism+gene combos, complete genome requests with organism.
Phase 1: Gene/Organism Disambiguation
Accession Type Decision Tree
Prefix Type Use With
NC /NM /NR /NP /XM RefSeq NCBI only
U /M /K /X /CP /NZ GenBank NCBI or ENA
EMBL format EMBL ENA preferred
CRITICAL : Never try ENA tools with RefSeq accessions they return 404.
Identity Checklist
Organism confirmed (scientific name)
Gene symbol/name identified
Sequence type determined (genomic/mRNA/protein)
Accession prefix identified for tool selection
Phase 2: Data Retrieval (Internal)
Retrieve silently. Do NOT narrate the search process.
Fallback Chains
Primary Fallback Notes
NCBI get sequence ENA (if GenBank format) NCBI unavailable
ena get entry NCBI get sequence ENA doesn't have RefSeq
NCBI search nucleotide Try broader keywords No results
NCBI get sequence / ena get sequence fasta dbfetch fetch entry (db="refseqn"/"ena sequence") Both NCBI and ENA specific tools unavailable; dbfetch mirrors the same underlying records
Phase 3: Report Sequence Profile
Present as a Sequence Profile Report . Hide search process. Include:
1. Search Summary : query, database, result count
2. Primary Sequence : accession, type (RefSeq/GenBank), organism, strain, length, molecule, topology, curation level
3. Sequence Preview : first lines of FASTA (truncated)
4. Annotations Summary : CDS/tRNA/rRNA/regulatory feature counts (from GenBank format)
5. Alternative Sequences : ranked by relevance and curation, with ENA compatibility
6. Cross Database References : RefSeq, GenBank, ENA/EMBL, BioProject, BioSample
7. Download Options : FASTA (for BLAST/alignment), GenBank (for annotation)
Curation Level Tiers
Tier Prefix Description
RefSeq Reference (best) NC , NM , NP NCBI curated, gold standard
RefSeq Predicted XM , XP , XR Computationally predicted
GenBank Validated Various Submitted, some curation
GenBank Direct Various Direct submission
Third Party TPA Third party annotation
Reasoning Framework
Sequence quality : Prefer RefSeq over GenBank. Check version numbers. Sequences with "PREDICTED" in definition are not experimentally validated.
Accession guidance : RefSeq = NCBI only. GenBank = mirrored in ENA/EMBL. Default to RefSeq mRNA (NM ) for human/model organisms; most complete genome assembly for microbial queries.
Cross database reconciliation : Same sequence may have different accessions (e.g., GenBank U00096 = RefSeq NC 000913 for E. coli K 12). Always report both when available. Discrepancies between GenBank/RefSeq typically indicate RefSeq curation corrected submission errors.
Synthesis Questions
1. What is the highest quality accession available?
2. Are there alternative accessions in other databases?
3. What is the annotation completeness?
4. Is the sequence from the expected organism/strain?
5. What download format suits the user's downstream analysis?
Error Handling
Error Response
"No search criteria provided" Add organism, gene, or keywords
"ENA 404 error" Likely RefSeq use NCBI only
"No results found" Broaden search, check spelling, try synonyms
"Sequence too large" Note size, provide download link instead
Tool Reference
NCBI Tools : NCBI search nucleotide (search), NCBI fetch accessions (UID→accession), NCBI get sequence (retrieve)
ENA Tools (GenBank/EMBL only) : ena get entry (metadata), ena get sequence fasta (FASTA), ena get entry summary (summary)
Search Parameters Reference
NCBI search nucleotide : operation ="search", organism (scientific name), gene (symbol), strain , keywords , seq type (complete genome/mrna/refseq), limit
NCBI get sequence : operation ="fetch sequence", accession , format (fasta/genbank)
Whole Organism Reference Proteomes (UniProt)
A different granularity from Phases 1 3 above: src/tooluniverse/data/uniprot ref tools.json 's
UniProtRef search proteomes / UniProtRef get proteome (no API key
required) return organism LEVEL proteome metadata — total protein count,
chromosome/component breakdown, genome accession — not one sequence.
Reach for these when the question is "what is species X's reference
proteome and how big is it" (e.g. before a proteome wide analysis, or to
find the right genome assembly accession to hand to Phase 2 above), not
for fetching an individual gene/transcript sequence.
Tool Resolves Key output
UniProtRef search proteomes organism name/taxon ID matching proteome ID(s) id ( UPXXXXXXXXX ), organism , taxon id , proteome type (Reference/Non Reference), protein count
UniProtRef get proteome one proteome ID full organism/assembly detail organism.scientific name / taxon id , components[] ( name , protein count , genome accession ), total protein count
Real example chain (verified live): UniProtRef search proteomes {"query":
"SARS CoV 2"} 3 results, including UP000464024 ( proteome type:
"Reference proteome" , 17 proteins) alongside two "Non Reference
proteome" entries for the same organism (5 and 10 proteins) — always
check proteome type and prefer "Reference proteome" rather than
assuming the first hit is canonical. Feeding UP000464024 into
UniProtRef get proteome confirms components: [{"name": "Segment",
"protein count": 17, "genome accession": "MN908947"}] (the real SARS CoV 2
reference genome accession) and total protein count: 17 . For human
( UP000005640 ) and E. coli K 12 ( UP000000625 ), get proteome returns
per chromosome/plasmid component breakdowns the same way.
Registry duplication, verified live: UniProt search proteomes (in
src/tooluniverse/data/uniprot proteomes tools.json , hitting
rest.uniprot.org/proteomes/search directly) does the SAME search as
UniProtRef search proteomes above, but is a separate, older tool
implementation. Its advantage: one call returns the full rich record
(BUSCO completeness, genome assembly, per component protein counts, full
citation list) that UniProtRef search proteomes requires a second
UniProtRef get proteome call to obtain — verified live on organism name:
human , organism name:escherichia coli , organism name:mouse , all 3
returning the full nested object in one shot. If you only need the ID or
proteomeType for triage, either tool works; if you need full detail
immediately, prefer UniProt search proteomes and skip the follow up call.
Sequence Archive and Clustering (UniParc, UniRef)
A different question again from Phases 1 3 and the proteome tools above:
"has this exact sequence been seen before, and under how many accessions,"
and "what other sequences are near identical to this one."
Tool Answers Key params
UniParc search Find all UPI archive entries for a gene/organism/keyword query (UniProt query syntax, e.g. "gene:EGFR AND organism id:9606" ), size
UniParc get entry Full sequence + every UniProt accession that ever pointed to this exact sequence, across every database load upi
UniRef search clusters Find sequence similarity clusters for a gene/organism/keyword query , cluster type (UniRef100/90/50), size
UniRef get cluster Cluster detail: member count, representative sequence, common taxon cluster id (e.g. UniRef90 P00533 )
Real example (verified live, EGFR/human): UniParc search {"query": "gene:EGFR
AND organism id:9606", "size": 3} 3 distinct UPI entries, each with a
different set of UniProt accessions ( Q8NDU8.1 , Q9BZS2.1 , Q9UMG5.1 ) and
different oldest created dates — UniParc treats each unique amino acid
string as one entry regardless of which UniProt accession(s) submitted it,
so isoforms/fragments with distinct sequences get distinct UPIs even
though they share a gene name. UniRef get cluster {"cluster id":
"UniRef90 P00533"} a real 119 member cluster spanning Boreoeutheria
(the common ancestor taxon), with a representative member ( EGFR HUMAN ,
1210 aa) that carries 9+ merged UniProtKB accessions ( P00533 , O00688 ,
...) — note the seed id ( UPI0005F3CCCC , a UniParc ID) and
representative member are not always the same sequence.
Use UniParc when the question is "which UniProt accessions actually share
this exact sequence" (deduplication); use UniRef when the question is
"what else looks like this sequence at X% identity" (finding related
proteins across species for MSA/phylogenetics input, or reducing
redundancy before a proteome wide analysis).
Subcellular Location Vocabulary (UniProt Locations)
UniProtLocations search / UniProtLocations get location resolve UniProt's
controlled subcellular location vocabulary (organelles, membranes,
topology, orientation) by ID ( SL XXXX ) or free text search.
Real gotcha, verified live: the common term "plasma membrane" does
NOT surface UniProt's actual term for it — UniProt's controlled vocabulary
calls this location "Cell membrane" ( SL 0039 ), not "Plasma membrane."
Searching "plasma membrane" or "Plasma membrane" returns only
tangentially related hits (e.g. SL 0552 "Rhabdomere membrane," whose
definition happens to mention "plasma membrane," not the term itself).
Search a broader, UniProt native term ( "membrane" , "cell" ) and scan the
results rather than assuming your everyday biology term matches UniProt's
naming — this is a real vocabulary mismatch, not a search bug.
Sample Metadata (EBI BioSamples)
BioSamples search / BioSamples search by filter / BioSamples get sample /
BioSamples get relationships / BioSamples get facets query EBI's 60M+
sample metadata archive (organism, tissue, disease, experimental context)
for samples that back sequencing/omics submissions — a different layer
from the sequence itself, useful for "what samples exist for condition X"
before going to ENA/SRA for the actual data.
Real gotcha, verified live: BioSamples search with a multi word
phrase ( "EGFR lung adenocarcinoma" ) returned zero results, while the
single term "EGFR" returned real hits immediately — the search does not
implicitly AND multiple free text words the way a search engine would.
Use one keyword at a time, or use BioSamples search by filter (structured
attribute / value pairs, e.g. attribute="organism", value="Homo
sapiens" ) when you need to combine multiple real constraints. get facets
is useful up front to discover which attribute values actually exist
before filtering on one (verified live: returns real facet counts, e.g.
432,302 samples for a broad text query).
Organism Taxonomy (EBI Taxonomy)
EBITaxonomy get by id / get by scientific name / search by name / suggest
resolve organism names/IDs (NCBI Taxonomy, mirrored by EBI) — lineage,
rank, division, genetic code. Use search by name for common names
("mouse," "fruit fly") and suggest for type ahead partial matching;
get by scientific name / get by id for an exact, already known name/ID.
Verified live: Homo sapiens tax id: "9606" , full lineage string
"Eukaryota; Metazoa; Chordata; ... Ho