query-opentarget — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited query-opentarget (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 OpenTargets Platform GraphQL API for drug-target-disease associations.
import requests
import json
OPENTARGETS_URL = "https://api.platform.opentargets.org/api/v4/graphql"
def query_opentargets(graphql_query, variables=None):
payload = {"query": graphql_query, "variables": variables or {}}
r = requests.post(OPENTARGETS_URL, json=payload, headers={"Content-Type": "application/json"})
r.raise_for_status()
return r.json()
# 1. Search for a target (gene)
def search_target(gene_name):
query = '''
query searchTarget($name: String!) {
search(queryString: $name, entityNames: ["target"], page: {index: 0, size: 5}) {
hits { id name description entity }
}
}'''
return query_opentargets(query, {"name": gene_name})
# 2. Get diseases associated with a target
def target_diseases(ensembl_id, size=10):
query = '''
query targetDiseases($ensemblId: String!, $size: Int!) {
target(ensemblId: $ensemblId) {
id approvedSymbol approvedName
associatedDiseases(page: {index: 0, size: $size}) {
count
rows { disease { id name } score
datasourceScores { componentId score } }
}
}
}'''
return query_opentargets(query, {"ensemblId": ensembl_id, "size": size})
# 3. Get targets for a disease
def disease_targets(disease_id, size=10):
query = '''
query diseaseTargets($diseaseId: String!, $size: Int!) {
disease(efoId: $diseaseId) {
id name
associatedTargets(page: {index: 0, size: $size}) {
count
rows { target { id approvedSymbol approvedName } score }
}
}
}'''
return query_opentargets(query, {"diseaseId": disease_id, "size": size})
# 4. Get drugs for a target
def target_drugs(ensembl_id):
query = '''
query targetDrugs($ensemblId: String!) {
target(ensemblId: $ensemblId) {
id approvedSymbol
knownDrugs(size: 10) {
count
rows { drug { id name } mechanismOfAction phase status
disease { id name } }
}
}
}'''
return query_opentargets(query, {"ensemblId": ensembl_id})
# 5. Search diseases
def search_disease(disease_name):
query = '''
query searchDisease($name: String!) {
search(queryString: $name, entityNames: ["disease"], page: {index: 0, size: 5}) {
hits { id name description entity }
}
}'''
return query_opentargets(query, {"name": disease_name})
# Example: Find top drug targets for Alzheimer's
result = search_disease("Alzheimer")
hits = result.get("data", {}).get("search", {}).get("hits", [])
if hits:
disease_id = hits[0]["id"]
targets = disease_targets(disease_id, size=5)
disease = targets.get("data", {}).get("disease", {})
print(f"Disease: {disease.get('name')} ({disease.get('id')})")
for row in disease.get("associatedTargets", {}).get("rows", []):
t = row["target"]
print(f" {t['approvedSymbol']} ({t['approvedName']}) — score: {row['score']:.3f}")EFO_0000249EFO_0000305EFO_0001360EFO_0002508~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.