uniprot-protein

Query the UniProt REST API for protein sequences, function annotations, structure info, and cross-references. Use when the user needs protein data, gene-to-protein mapping, functional annotation, or FASTA sequences. NOT for nucleotide sequences (use NCBI), 3D structure files (use PDB), or pathway data (use KEGG).

564 stars

Best use case

uniprot-protein is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Query the UniProt REST API for protein sequences, function annotations, structure info, and cross-references. Use when the user needs protein data, gene-to-protein mapping, functional annotation, or FASTA sequences. NOT for nucleotide sequences (use NCBI), 3D structure files (use PDB), or pathway data (use KEGG).

Teams using uniprot-protein should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/uniprot-protein/SKILL.md --create-dirs "https://raw.githubusercontent.com/beita6969/ScienceClaw/main/skills/uniprot-protein/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/uniprot-protein/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How uniprot-protein Compares

Feature / Agentuniprot-proteinStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Query the UniProt REST API for protein sequences, function annotations, structure info, and cross-references. Use when the user needs protein data, gene-to-protein mapping, functional annotation, or FASTA sequences. NOT for nucleotide sequences (use NCBI), 3D structure files (use PDB), or pathway data (use KEGG).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# UniProt Protein Database API

Access the Universal Protein Resource (UniProt) to search and retrieve protein entries,
sequences, functional annotations, and cross-references. No authentication required.

## API Endpoints

Base: `https://rest.uniprot.org`

### GET /uniprotkb/search -- Search protein entries
```bash
# Search for human insulin proteins (reviewed/Swiss-Prot only)
curl -s "https://rest.uniprot.org/uniprotkb/search?query=insulin+AND+organism_id:9606+AND+reviewed:true&format=json&size=5"

# Search by gene name exact match
curl -s "https://rest.uniprot.org/uniprotkb/search?query=gene_exact:TP53+AND+organism_id:9606&format=json"

# Search by EC number (enzyme classification)
curl -s "https://rest.uniprot.org/uniprotkb/search?query=ec:2.7.11.1+AND+reviewed:true&format=json&size=10"

# Search by Gene Ontology term
curl -s "https://rest.uniprot.org/uniprotkb/search?query=go:0006915+AND+organism_id:9606&format=json&size=10"
```

### GET /uniprotkb/{accession} -- Retrieve a single protein entry
```bash
# Get full entry for human p53 (JSON)
curl -s "https://rest.uniprot.org/uniprotkb/P04637?format=json"

# Get entry in TSV with selected fields
curl -s "https://rest.uniprot.org/uniprotkb/search?query=accession:P04637&format=tsv&fields=accession,gene_names,protein_name,organism_name,length,go_p"
```

### GET /uniprotkb/{accession}.fasta -- Download FASTA sequence
```bash
# Get FASTA sequence for human hemoglobin subunit alpha
curl -s "https://rest.uniprot.org/uniprotkb/P69905.fasta"
```

### GET /uniref/search -- Search UniProt Reference Clusters
```bash
# Find UniRef90 clusters for a protein
curl -s "https://rest.uniprot.org/uniref/search?query=uniprot_id:P04637&format=json&size=5"
```

### GET /uniparc/search -- Search UniProt Archive
```bash
# Search UniParc for cross-reference records
curl -s "https://rest.uniprot.org/uniparc/search?query=uniprotkb:P04637&format=json&size=5"
```

## Query Syntax

UniProt supports a rich query language for the `query` parameter:

| Field             | Example                              | Description                        |
|-------------------|--------------------------------------|------------------------------------|
| `gene_exact`      | `gene_exact:BRCA1`                   | Exact gene name match              |
| `organism_id`     | `organism_id:9606`                   | NCBI taxonomy ID (9606 = human)    |
| `ec`              | `ec:3.4.21.5`                        | Enzyme Commission number           |
| `go`              | `go:0006915`                         | Gene Ontology term ID              |
| `keyword`         | `keyword:Phosphoprotein`             | UniProt keyword                    |
| `reviewed`        | `reviewed:true`                      | Swiss-Prot (reviewed) entries only |
| `length`          | `length:[100 TO 500]`               | Sequence length range              |
| `structure_3d`    | `structure_3d:true`                  | Has 3D structure                   |
| `accession`       | `accession:P04637`                   | UniProt accession                  |

Combine with `AND`, `OR`, `NOT`. Use `+` for spaces in URL encoding.

## Common Queries

```bash
# All reviewed human kinases
curl -s "https://rest.uniprot.org/uniprotkb/search?query=keyword:Kinase+AND+organism_id:9606+AND+reviewed:true&format=json&size=25"

# Proteins with disease association
curl -s "https://rest.uniprot.org/uniprotkb/search?query=keyword:Disease+AND+gene_exact:CFTR&format=json"

# Batch retrieve multiple accessions (TSV)
curl -s "https://rest.uniprot.org/uniprotkb/search?query=accession:P04637+OR+accession:P69905+OR+accession:P00533&format=tsv&fields=accession,gene_names,protein_name,length"

# Paginate results using cursor (check Link header for next page)
curl -sI "https://rest.uniprot.org/uniprotkb/search?query=organism_id:9606+AND+reviewed:true&size=25" | grep -i link
```

## Best Practices

1. Always add `reviewed:true` when searching Swiss-Prot (curated) entries to avoid TrEMBL noise.
2. Use `format=tsv&fields=...` for tabular output when you only need specific fields.
3. Use `format=json` for programmatic parsing of full entry data.
4. Paginate with `size` parameter (max 500) and cursor-based pagination via the `Link` header.
5. No API key is needed, but be respectful with rate limits -- avoid rapid-fire batch requests.
6. Common organism IDs: human=9606, mouse=10090, rat=10116, E.coli=83333, yeast=559292.
7. Use `.fasta` suffix for quick sequence retrieval without parsing JSON.

## Data Integrity Rule

NEVER fabricate database results from training data. Every protein ID, gene name, compound property, pathway ID, structure detail, and metadata MUST come from an actual API response in this conversation. If the API returns no results, errors, or partial data, report exactly what happened. Do not "fill in" missing data from memory or make up identifiers.

Related Skills

uniprot-database

564
from beita6969/ScienceClaw

Direct REST API access to UniProt. Protein searches, FASTA retrieval, ID mapping, Swiss-Prot/TrEMBL. For Python workflows with multiple databases, prefer bioservices (unified interface to 40+ services). Use this for direct HTTP/REST work or UniProt-specific control.

protein-structure

564
from beita6969/ScienceClaw

Analyzes protein 3D structures, performs homology modeling, interprets AlphaFold predictions, conducts molecular docking, and evaluates protein-ligand interactions; trigger when users ask about PDB files, folding, binding sites, or structural biology.

protein-structure-prediction

564
from beita6969/ScienceClaw

COPYRIGHT NOTICE

xurl

564
from beita6969/ScienceClaw

A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.

xlsx

564
from beita6969/ScienceClaw

Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like "the xlsx in my downloads") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.

writing

564
from beita6969/ScienceClaw

No description provided.

world-bank-data

564
from beita6969/ScienceClaw

World Bank Open Data API for development indicators. Use when: user asks about GDP, population, poverty, health, or education statistics by country. NOT for: real-time financial data or stock prices.

wikipedia-search

564
from beita6969/ScienceClaw

Search and fetch structured content from Wikipedia using the MediaWiki API for reliable, encyclopedic information

wikidata-knowledge

564
from beita6969/ScienceClaw

Query Wikidata for structured knowledge using SPARQL and entity search. Use when: (1) finding structured facts about entities (people, places, organizations), (2) querying relationships between entities, (3) cross-referencing external identifiers (Wikipedia, VIAF, GND, ORCID), (4) building knowledge graphs from linked data. NOT for: full-text article content (use Wikipedia API), scientific literature (use semantic-scholar), geospatial data (use OpenStreetMap).

weather

564
from beita6969/ScienceClaw

Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.

wacli

564
from beita6969/ScienceClaw

Send WhatsApp messages to other people or search/sync WhatsApp history via the wacli CLI (not for normal user chats).

voice-call

564
from beita6969/ScienceClaw

Start voice calls via the OpenClaw voice-call plugin.