Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Retrieves biological sequences (DNA, RNA, protein) from NCBI and ENA with gene disambiguation, accession type handling, and comprehensive sequence profiles. Creates detailed reports with sequence metadata, cross-database references, and download options. Use when users need nucleotide sequences, protein sequences, genome data, or mention GenBank, RefSeq, EMBL accessions.
.claude/skills/tooluniverse-sequence-retrieval/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
| case-10 | ✗→✓ | ▲ Improved | — | — |
| case-18 | ✗→✓ | ▲ Improved | — | — |
| case-04 | ✗→✗ | = Same ✗ | — | — |
Retrieve DNA, RNA, and protein sequences with proper disambiguation and cross-database handling.
IMPORTANT: Always use English terms in tool calls (gene names, organism names, sequence descriptions), even if the user writes in another language. Only try original-language terms as a fallback if English returns no results. Respond in the user's language.
Phase 0: Clarify (if needed)
↓
Phase 1: Disambiguate Gene/Organism
↓
Phase 2: Search & Retrieve (Internal)
↓
Phase 3: Report Sequence ProfileAsk the user ONLY if:
Skip clarification for:
pythonfrom tooluniverse import ToolUniverse tu = ToolUniverse() tu.load_tools() # Strategy depends on input type if user_provided_accession: # Direct retrieval based on accession type accession = user_provided_accession elif user_provided_gene_and_organism: # Search NCBI Nucleotide result = tu.tools.NCBI_search_nucleotide( operation="search", organism=organism, gene=gene, limit=10 )
CRITICAL: Accession prefix determines which tools to use.
| Prefix | Type | Use With | |--------|------|----------| | NC_ | RefSeq chromosome | NCBI only | | NM_ | RefSeq mRNA | NCBI only | | NR_ | RefSeq ncRNA | NCBI only | | NP_ | RefSeq protein | NCBI only | | XM_ | RefSeq predicted mRNA | NCBI only | | U, M, K, X | GenBank | NCBI or ENA | | CP, NZ_ | GenBank genome | NCBI or ENA | | EMBL format | EMBL | ENA preferred |
Retrieve silently. Do NOT narrate the search process.
python# Search NCBI Nucleotide result = tu.tools.NCBI_search_nucleotide( operation="search", organism=organism, gene=gene, strain=strain, # Optional keywords=keywords, # Optional seq_type=seq_type, # complete_genome, mrna, refseq limit=10 ) # Get accession numbers from UIDs accessions = tu.tools.NCBI_fetch_accessions( operation="fetch_accession", uids=result["data"]["uids"] )
python# Get sequence in desired format sequence = tu.tools.NCBI_get_sequence( operation="fetch_sequence", accession=accession, format="fasta" # or "genbank" ) # GenBank format for annotations annotations = tu.tools.NCBI_get_sequence( operation="fetch_sequence", accession=accession, format="genbank" )
python# Only for non-RefSeq accessions! if not accession.startswith(("NC_", "NM_", "NR_", "NP_", "XM_", "XR_")): # ENA entry info entry = tu.tools.ena_get_entry(accession=accession) # ENA FASTA fasta = tu.tools.ena_get_sequence_fasta(accession=accession) # ENA summary summary = tu.tools.ena_get_entry_summary(accession=accession)
| 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 |
Critical Rule: Never try ENA tools with RefSeq accessions (NC_, NM_, etc.) - they will return 404 errors.
Present as a Sequence Profile Report. Hide search process.
markdown# Sequence Profile: [Gene/Organism] **Search Summary** - Query: [gene] in [organism] - Database: NCBI Nucleotide - Results: [N] sequences found --- ## Primary Sequence ### [Accession]: [Definition/Title] | Attribute | Value | |-----------|-------| | **Accession** | [accession] | | **Type** | RefSeq / GenBank | | **Organism** | [scientific name] | | **Strain** | [strain if applicable] | | **Length** | [X,XXX bp / aa] | | **Molecule** | DNA / mRNA / Protein | | **Topology** | Linear / Circular | **Curation Level**: ●●● RefSeq (curated) / ●●○ GenBank (submitted) / ●○○ Third-party ### Sequence Statistics | Statistic | Value | |-----------|-------| | **Length** | [X,XXX] bp | | **GC Content** | [XX.X]% | | **Genes** | [N] (if genome) | | **CDS** | [N] (if annotated) | ### Sequence Preview
>accession] definition] ATGCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCG ATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGA ... truncated, full sequence in download]
### Annotations Summary (from GenBank format)
| Feature | Count | Examples |
|---------|-------|----------|
| CDS | [N] | [gene names] |
| tRNA | [N] | - |
| rRNA | [N] | 16S, 23S |
| Regulatory | [N] | promoters |
---
## Alternative Sequences
Ranked by relevance and curation level:
| Accession | Type | Length | Description | ENA Compatible |
|-----------|------|--------|-------------|----------------|
| NC_000913.3 | RefSeq | 4.6 Mb | E. coli K-12 reference | ✗ |
| U00096.3 | GenBank | 4.6 Mb | E. coli K-12 | ✓ |
| CP001509.3 | GenBank | 4.6 Mb | E. coli DH10B | ✓ |
---
## Cross-Database References
| Database | Accession | Link |
|----------|-----------|------|
| RefSeq | [NC_*] | [NCBI link] |
| GenBank | [U*] | [NCBI link] |
| ENA/EMBL | [same as GenBank] | [ENA link] |
| BioProject | [PRJNA*] | [link] |
| BioSample | [SAMN*] | [link] |
---
## Download Options
### Formats Available
| Format | Description | Use Case |
|--------|-------------|----------|
| FASTA | Sequence only | BLAST, alignment |
| GenBank | Sequence + annotations | Gene analysis |
| GFF3 | Annotations only | Genome browsers |
### Direct Commandstu.tools.NCBI_get_sequence( operation="fetch_sequence", accession="accession]", format="fasta" )
tu.tools.NCBI_get_sequence( operation="fetch_sequence", accession="accession]", format="genbank" )
---
## Related Sequences
### Other Strains/Isolates
| Accession | Strain | Similarity | Notes |
|-----------|--------|------------|-------|
| [acc1] | [strain1] | 99.9% | [notes] |
| [acc2] | [strain2] | 99.5% | [notes] |
### Protein Products (if applicable)
| Protein Accession | Product Name | Length |
|-------------------|--------------|--------|
| [NP_*] | [protein name] | [X] aa |
---
Retrieved: [date]
Database: NCBI Nucleotide| Tier | Symbol | Accession Prefix | Description | |------|--------|------------------|-------------| | RefSeq Reference | ●●●● | 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 |
Include in report:
markdown**Curation Level**: ●●●● RefSeq Reference - Curated by NCBI RefSeq project - Regular updates and validation - Recommended for reference use
Every sequence report MUST include:
User: "Get E. coli K-12 complete genome"
pythonresult = tu.tools.NCBI_search_nucleotide( operation="search", organism="Escherichia coli", strain="K-12", seq_type="complete_genome", limit=3 ) # Return NC_000913.3 (RefSeq reference)
User: "Find human BRCA1 mRNA"
pythonresult = tu.tools.NCBI_search_nucleotide( operation="search", organism="Homo sapiens", gene="BRCA1", seq_type="mrna", limit=10 )
User: "Get sequence for NC_045512.2" → Direct retrieval with full metadata
User: "Compare E. coli K-12 and O157:H7 genomes" → Search both strains, provide comparison table
| Error | Response | |-------|----------| | "No search criteria provided" | Add organism, gene, or keywords | | "ENA 404 error" | Accession is likely RefSeq → use NCBI only | | "No results found" | Broaden search, check spelling, try synonyms | | "Sequence too large" | Note size, provide download link instead of preview | | "API rate limit" | Tools auto-retry; if persistent, wait briefly |
NCBI Tools (All Accessions) | Tool | Purpose | |------|---------| | NCBI_search_nucleotide | Search by gene/organism | | NCBI_fetch_accessions | Convert UIDs to accessions | | NCBI_get_sequence | Retrieve sequence data |
ENA Tools (GenBank/EMBL Only) | Tool | Purpose | |------|---------| | ena_get_entry | Entry metadata | | ena_get_sequence_fasta | FASTA sequence | | ena_get_entry_summary | Summary info |
NCBI_search_nucleotide | Parameter | Description | Example | |-----------|-------------|---------| | operation | Always "search" | "search" | | organism | Scientific name | "Homo sapiens" | | gene | Gene symbol | "BRCA1" | | strain | Specific strain | "K-12" | | keywords | Free text | "complete genome" | | seq_type | Sequence type | "complete_genome", "mrna", "refseq" | | limit | Max results | 10 |
NCBI_get_sequence | Parameter | Description | Example | |-----------|-------------|---------| | operation | Always "fetch_sequence" | "fetch_sequence" | | accession | Accession number | "NC_000913.3" | | format | Output format | "fasta", "genbank" |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 10 counted toward the lift figure. The other 12 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +18 percentage points is the difference between those two pass rates over the 10 comparable cases. 5 cases got worse with the skill loaded, and they are included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.