alterlab-opentargets — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited alterlab-opentargets (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.
The Open Targets Platform is a comprehensive resource for systematic identification and prioritization of potential therapeutic drug targets. It integrates publicly available datasets including human genetics, omics, literature, and chemical data to build and score target-disease associations.
Key capabilities:
Data access: The platform provides a GraphQL API, web interface, data downloads, and Google BigQuery access. This skill focuses on the GraphQL API for programmatic access.
This skill should be used when:
Start by finding the identifiers for targets, diseases, or drugs of interest.
For targets (genes):
from scripts.query_opentargets import search_entities
# Search by gene symbol or name
results = search_entities("BRCA1", entity_types=["target"])
# Returns: [{"id": "ENSG00000012048", "name": "BRCA1", ...}]For diseases:
# Search by disease name
results = search_entities("alzheimer", entity_types=["disease"])
# Returns: [{"id": "MONDO_0004975", "name": "Alzheimer disease", ...}]Always resolve the ID via search rather than hardcoding it — Open Targets has migrated many diseases from EFO to MONDO IDs (e.g. Alzheimer disease is now MONDO_0004975, not the older EFO_0000249).
For drugs:
# Search by drug name
results = search_entities("aspirin", entity_types=["drug"])
# Returns: [{"id": "CHEMBL25", "name": "ASPIRIN", ...}]Identifiers used:
ENSG00000157764 = BRAF, ENSG00000012048 = BRCA1)MONDO_0004975 = Alzheimer disease). The disease(efoId:) argument accepts any of these.CHEMBL25 = aspirin)Retrieve comprehensive target annotations to assess druggability and biology.
from scripts.query_opentargets import get_target_info
target_info = get_target_info("ENSG00000157764", include_diseases=True)
# Access key fields:
# - approvedSymbol: HGNC gene symbol
# - approvedName: Full gene name
# - tractability: Druggability assessments across modalities
# - safetyLiabilities: Known safety concerns
# - geneticConstraint: Constraint scores from gnomAD
# - associatedDiseases: Top disease associations with scoresKey annotations to review:
Refer to references/target_annotations.md for detailed information about all target features.
Get disease details and associated targets/drugs.
from scripts.query_opentargets import get_disease_info
disease_info = get_disease_info("MONDO_0004975", include_targets=True)
# Access fields:
# - name: Disease name
# - description: Disease description
# - therapeuticAreas: High-level disease categories
# - associatedTargets: Top targets with association scoresGet detailed evidence supporting a target-disease association.
from scripts.query_opentargets import get_target_disease_evidence
# Get all evidence
evidence = get_target_disease_evidence(
ensembl_id="ENSG00000157764",
efo_id="MONDO_0004975"
)
# The API filters by data SOURCE, not broad data type. To narrow to genetic
# evidence, pass its sources (or fetch all rows and filter on datatypeId).
genetic_evidence = get_target_disease_evidence(
ensembl_id="ENSG00000157764",
efo_id="MONDO_0004975",
datasource_ids=["gwas_catalog", "clinvar", "gene_burden"]
)
# Each evidence record contains:
# - datasourceId: Specific data source (e.g., "gwas_catalog", "chembl")
# - datatypeId: Evidence category (e.g., "genetic_association", "known_drug")
# - score: Evidence strength (0-1)
# - studyId: Original study identifier
# - literature: Associated publicationsMajor evidence types:
Refer to references/evidence_types.md for detailed descriptions of all evidence types and interpretation guidelines.
Identify drugs used for a disease and their targets.
from scripts.query_opentargets import get_known_drugs_for_disease
drugs = get_known_drugs_for_disease("MONDO_0004975")
# Helper queries the `drugAndClinicalCandidates` field (the former `knownDrugs`
# field was removed). It returns:
# - count: Total number of drug-indication records
# - rows: List of records, each with:
# - maxClinicalStage: Max stage reached for this disease (enum string)
# - drug: {id, name, drugType, maximumClinicalStage, mechanismsOfAction{rows{actionType, mechanismOfAction, targets}}}
# - clinicalReports: [{trialPhase, clinicalStage, trialOverallStatus}]Clinical stage is an enum string (not an integer):
APPROVAL: Approved drug (the former Phase 4)PHASE_3: Late-stage clinical trialsPHASE_2: Mid-stage trialsPHASE_1: Early safety trialsUNKNOWN: Stage not recordedRetrieve detailed drug information including mechanisms and indications.
from scripts.query_opentargets import get_drug_info
drug_info = get_drug_info("CHEMBL25")
# Access:
# - name, synonyms: Drug identifiers
# - drugType: Small molecule, antibody, etc.
# - maximumClinicalStage: Development stage (enum string, e.g. "APPROVAL")
# - mechanismsOfAction.rows: Target(s) and action type
# - indications.rows: Diseases with maxClinicalStage per indication
# - drugWarnings: Toxicity/withdrawal warnings (toxicityClass, description, country, year)Find all diseases associated with a target, optionally filtering by score.
from scripts.query_opentargets import get_target_associations
# Get associations with score >= 0.5
associations = get_target_associations(
ensembl_id="ENSG00000157764",
min_score=0.5
)
# Each association contains:
# - disease: {id, name}
# - score: Overall association score (0-1)
# - datatypeScores: Breakdown by evidence typeAssociation scores:
For custom queries beyond the provided helper functions, use the GraphQL API directly or modify scripts/query_opentargets.py.
Key information:
https://api.platform.opentargets.org/api/v4/graphqlhttps://api.platform.opentargets.org/api/v4/graphql/browserpage: {index: M, size: N} — both index and size are required (non-null)Refer to references/api_reference.md for:
When prioritizing drug targets:
Strong evidence indicators:
Caution flags:
Score interpretation:
Workflow 1: Target Discovery for a Disease
include_targets=TrueWorkflow 2: Target Validation
Workflow 3: Drug Repurposing
Workflow 4: Competitive Intelligence
scripts/query_opentargets.py Helper functions for common API operations:
search_entities() - Search for targets, diseases, or drugsget_target_info() - Retrieve target annotationsget_disease_info() - Retrieve disease informationget_target_disease_evidence() - Get supporting evidenceget_known_drugs_for_disease() - Find drugs for a diseaseget_drug_info() - Retrieve drug detailsget_target_associations() - Get all associations for a targetexecute_query() - Execute custom GraphQL queriesreferences/api_reference.md Complete GraphQL API documentation including:
references/evidence_types.md Comprehensive guide to evidence types and data sources:
references/target_annotations.md Complete target annotation reference:
The Open Targets Platform is updated periodically with new data releases. The GraphQL schema changes between releases — field names and argument names move (this skill's queries were verified against data version 26.03). If a field errors, introspect the live schema via the GraphQL browser. Confirm the running version with the meta { apiVersion { x y z } dataVersion { year month } } query.
Release information: Check https://platform-docs.opentargets.org/release-notes for the latest updates.
Citation: When using Open Targets data, cite: Ochoa, D. et al. (2025) Open Targets Platform: facilitating therapeutic hypotheses building in drug discovery. Nucleic Acids Research, 53(D1):D1467-D1477.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.