query-reactome — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited query-reactome (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 Reactome ContentService and AnalysisService APIs.
import requests
import json
CONTENT_URL = "https://reactome.org/ContentService"
ANALYSIS_URL = "https://reactome.org/AnalysisService"
# 1. Search pathways by keyword
def search_pathways(keyword, species="Homo sapiens"):
url = f"{CONTENT_URL}/search/query"
params = {"query": keyword, "species": species, "types": "Pathway", "cluster": True}
r = requests.get(url, params=params)
r.raise_for_status()
return r.json()
# 2. Get pathway details
def get_pathway(pathway_id):
url = f"{CONTENT_URL}/data/query/{pathway_id}"
r = requests.get(url, headers={"Accept": "application/json"})
r.raise_for_status()
return r.json()
# 3. Get genes/proteins in a pathway
def get_pathway_participants(pathway_id):
url = f"{CONTENT_URL}/data/participants/{pathway_id}"
r = requests.get(url, headers={"Accept": "application/json"})
r.raise_for_status()
return r.json()
# 4. Gene list pathway enrichment
def pathway_enrichment(gene_list):
url = f"{ANALYSIS_URL}/identifiers/projection"
genes_text = "\n".join(gene_list)
headers = {"Content-Type": "text/plain"}
r = requests.post(url, data=genes_text, headers=headers)
r.raise_for_status()
return r.json()
# 5. Look up a gene in Reactome
def query_gene(gene_symbol):
url = f"{CONTENT_URL}/data/query/{gene_symbol}"
r = requests.get(url, headers={"Accept": "application/json"})
r.raise_for_status()
return r.json()
# Example: DNA repair pathways
results = search_pathways("DNA repair")
entries = results.get("results", [])
for entry in entries[:5]:
for e in entry.get("entries", []):
print(f"{e.get('stId', 'N/A')}: {e.get('name', 'N/A')}")
# Pathway enrichment
enrichment = pathway_enrichment(["BRCA1", "BRCA2", "TP53", "ATM", "CHEK2"])
for p in enrichment.get("pathways", [])[:5]:
name = p.get("name", "N/A")
pval = p.get("entities", {}).get("pValue", "N/A")
found = p.get("entities", {}).get("found", 0)
print(f"{name} — p={pval:.2e}, {found} genes found")R-HSA-73894R-HSA-109581R-HSA-1640170R-HSA-168256~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.