| name | lifesciences-proteomics |
| description | Queries protein databases (UniProt, STRING, BioGRID) via curl for protein lookups, protein-protein interactions, functional enrichment analysis, and cross-database ID mapping. This skill should be used when the user asks to "find protein interactions", "analyze interaction networks", "perform GO enrichment", "map protein IDs", or mentions PPI networks, UniProt accessions, STRING scores, BioGRID interactions, or protein ID conversion between databases. |
Proteomics API Skills
Query protein databases directly via curl. These endpoints complement the Life Sciences MCPs.
Quick Reference
| Task | API | Endpoint |
|---|
| Search proteins | UniProt | /uniprotkb/search |
| Get protein details | UniProt | /uniprotkb/{accession} |
| Batch ID mapping | UniProt | /idmapping/run |
| Protein interactions | STRING | /network |
| Functional enrichment | STRING | /enrichment |
| Genetic/physical interactions | BioGRID | /interactions |
Curl Examples
UniProt: Protein Search & Retrieval
curl -s "https://rest.uniprot.org/uniprotkb/search?query=gene:TP53+AND+organism_id:9606&format=json&size=3" \
| jq '.results[:1][] | {accession: .primaryAccession, name: .proteinDescription.recommendedName.fullName.value}'
curl -s "https://rest.uniprot.org/uniprotkb/P04637.json" \
| jq '{accession: .primaryAccession, gene: .genes[0].geneName.value, function: .comments[] | select(.commentType=="FUNCTION") | .texts[0].value}'
curl -s "https://rest.uniprot.org/uniprotkb/P04637.fasta"
curl -s "https://rest.uniprot.org/uniprotkb/search?query=reviewed:true+AND+organism_id:9606+AND+keyword:Apoptosis&format=json&size=5" \
| jq '.results[] | {accession: .primaryAccession, gene: .genes[0].geneName.value}'
UniProt: Batch ID Mapping (Async)
JOB_ID=$(curl -s "https://rest.uniprot.org/idmapping/run" \
--form 'ids=P04637,P38398,P51587' \
--form 'from=UniProtKB_AC-ID' \
--form 'to=Ensembl' | jq -r '.jobId')
curl -s "https://rest.uniprot.org/idmapping/status/$JOB_ID"
curl -s "https://rest.uniprot.org/idmapping/results/$JOB_ID" | jq '.results'
STRING: Protein-Protein Interactions
curl -s "https://string-db.org/api/json/network?identifiers=TP53&species=9606&required_score=700&limit=10" \
| jq '.[] | {proteinA: .preferredName_A, proteinB: .preferredName_B, score}'
curl -s "https://string-db.org/api/json/network?identifiers=TP53%0dMDM2%0dATM&species=9606" \
| jq '.[] | {A: .preferredName_A, B: .preferredName_B, score}'
curl -s "https://string-db.org/api/json/network?identifiers=TP53&species=9606&required_score=900&limit=5" \
| jq '.[] | {A: .preferredName_A, B: .preferredName_B, experimental: .escore, database: .dscore, textmining: .tscore}'
STRING: Functional Enrichment
curl -s "https://string-db.org/api/json/enrichment?identifiers=9606.ENSP00000269305%0d9606.ENSP00000258149%0d9606.ENSP00000278616&species=9606" \
| jq '.[:5][] | {category, term, description, fdr}'
curl -s "https://string-db.org/api/json/get_string_ids?identifiers=TP53%0dMDM2%0dATM&species=9606" \
| jq '.[].stringId'
STRING: Network Visualization
echo "https://string-db.org/api/highres_image/network?identifiers=TP53%0dMDM2%0dATM&species=9606&network_flavor=confidence"
curl -s "https://string-db.org/api/svg/network?identifiers=TP53&species=9606&add_nodes=5" > network.svg
BioGRID: Genetic & Physical Interactions
curl -s "https://webservice.thebiogrid.org/interactions?geneList=TP53&taxId=9606&format=json&accesskey=${BIOGRID_API_KEY}" \
| jq 'to_entries[:5][] | .value | {geneA: .OFFICIAL_SYMBOL_A, geneB: .OFFICIAL_SYMBOL_B, system: .EXPERIMENTAL_SYSTEM}'
curl -s "https://webservice.thebiogrid.org/interactions?geneList=TP53&taxId=9606&evidenceList=Two-hybrid&format=json&accesskey=${BIOGRID_API_KEY}"
curl -s "https://webservice.thebiogrid.org/interactions?geneList=TP53&taxId=9606&throughputTag=low&format=json&accesskey=${BIOGRID_API_KEY}"
ID Resolution Patterns
curl -s "https://string-db.org/api/json/get_string_ids?identifiers=TP53&species=9606" \
| jq '.[0].stringId'
curl -s "https://rest.ensembl.org/xrefs/id/ENSP00000269305?content-type=application/json" \
| jq '.[] | select(.dbname=="Uniprot/SWISSPROT") | .primary_id'
Rate Limits
| API | Limit | Auth Required |
|---|
| UniProt | 100 req/s | No |
| STRING | 1 req/s | No |
| BioGRID | 10 req/s | Yes (API key) |