query-uniprot — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited query-uniprot (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Query the UniProt REST API for protein information.
import requests
import json
BASE_URL = "https://rest.uniprot.org"
# 1. Search by gene name (default: human, reviewed/Swiss-Prot)
def search_uniprot(gene_name, organism_id=9606, max_results=5):
url = f"{BASE_URL}/uniprotkb/search"
params = {
"query": f"gene_exact:{gene_name} AND organism_id:{organism_id} AND reviewed:true",
"format": "json",
"size": max_results,
"fields": "accession,id,gene_names,protein_name,organism_name,length,cc_function,ft_domain,sequence"
}
r = requests.get(url, params=params)
r.raise_for_status()
return r.json()
# 2. Get by accession ID
def get_uniprot_entry(accession):
url = f"{BASE_URL}/uniprotkb/{accession}.json"
r = requests.get(url)
r.raise_for_status()
return r.json()
# 3. Get FASTA sequence
def get_fasta(accession):
url = f"{BASE_URL}/uniprotkb/{accession}.fasta"
r = requests.get(url)
r.raise_for_status()
return r.text
# Example usage
data = search_uniprot("TP53")
for entry in data.get("results", []):
acc = entry["primaryAccession"]
name = entry.get("proteinDescription", {}).get("recommendedName", {}).get("fullName", {}).get("value", "N/A")
gene = entry.get("genes", [{}])[0].get("geneName", {}).get("value", "N/A")
length = entry.get("sequence", {}).get("length", "N/A")
# Extract function
functions = [c["texts"][0]["value"] for c in entry.get("comments", []) if c["commentType"] == "FUNCTION"]
func_text = functions[0][:200] if functions else "N/A"
print(f"Accession: {acc}")
print(f"Protein: {name}")
print(f"Gene: {gene}")
print(f"Length: {length} aa")
print(f"Function: {func_text}")gene_exact:BRCA1 AND organism_id:9606keyword:kinase AND organism_id:9606cc_disease:cancer AND organism_id:9606go:apoptosis AND organism_id:9606Present: Accession, protein name, gene, organism, length, function summary, and UniProt link.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.