Compare commits

...
Author SHA1 Message Date
promptadmin 266b6ae63d [upstream-sync] README.md from K-Dense-AI/scientific-agent-skills@9b1d761c [catalogue] 2026-08-09 03:53:07 +00:00
promptadmin 88287383e1 [upstream-sync] tests/ncats-arax/fixtures/two_hop_provenance.json from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:53:04 +00:00
promptadmin 1450d5dd23 [upstream-sync] tests/ncats-arax/fixtures/reversed_edge.json from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:53:02 +00:00
promptadmin 3201a989b2 [upstream-sync] tests/ncats-arax/fixtures/openapi_1_5_minimal.json from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:53:00 +00:00
promptadmin d531237001 [upstream-sync] tests/ncats-arax/fixtures/one_hop_provenance.json from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:52:58 +00:00
promptadmin 529adb6606 [upstream-sync] tests/ncats-arax/fixtures/normalization_response.json from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:52:55 +00:00
promptadmin 311a3e737c [upstream-sync] tests/ncats-arax/fixtures/no_results.json from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:52:52 +00:00
promptadmin 51725a6a5f [upstream-sync] tests/ncats-arax/fixtures/missing_publications.json from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:52:49 +00:00
promptadmin 1c254b5e6f [upstream-sync] tests/ncats-arax/fixtures/missing_auxiliary_graph.json from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:52:44 +00:00
promptadmin f7900386b8 [upstream-sync] tests/ncats-arax/fixtures/federated_partial_response.json from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:52:38 +00:00
promptadmin 8bbded83ab [upstream-sync] skills/ncats-arax/references/query-contract.md from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:52:32 +00:00
promptadmin f3ade75465 [upstream-sync] skills/ncats-arax/references/output-schema.md from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:52:27 +00:00
promptadmin 20b201dce5 [upstream-sync] skills/ncats-arax/SKILL.md from K-Dense-AI/scientific-agent-skills@9b1d761c [unknown] 2026-08-09 03:52:25 +00:00
13 changed files with 1139 additions and 29 deletions
@@ -2,9 +2,9 @@
title: "Scientific Agent Skills"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/a1b84fb2/README.md
upstream_sha: a1b84fb2
imported_at: 2026-07-26
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/README.md
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: catalogue
upstream_changes: accepted
author: upstream
@@ -14,11 +14,12 @@ validated: false
# Scientific Agent Skills
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.md)
[![Version](https://img.shields.io/badge/Version-2.55.0-blue.svg)](pyproject.toml)
[![Skills](https://img.shields.io/badge/Skills-150-brightgreen.svg)](#-whats-included)
[![Version](https://img.shields.io/badge/Version-2.62.0-blue.svg)](pyproject.toml)
[![Skills](https://img.shields.io/badge/Skills-161-brightgreen.svg)](#-whats-included)
[![Databases](https://img.shields.io/badge/Databases-100%2B-orange.svg)](#-whats-included)
[![Agent Skills](https://img.shields.io/badge/Standard-Agent_Skills-blueviolet.svg)](https://agentskills.io/)
[![Security Scan](https://github.com/K-Dense-AI/scientific-agent-skills/actions/workflows/security-scan.yml/badge.svg)](https://github.com/K-Dense-AI/scientific-agent-skills/actions/workflows/security-scan.yml)
[![Skill Tests](https://github.com/K-Dense-AI/scientific-agent-skills/actions/workflows/skill-tests.yml/badge.svg)](https://github.com/K-Dense-AI/scientific-agent-skills/actions/workflows/skill-tests.yml)
[![Works with](https://img.shields.io/badge/Works_with-Cursor_|_Claude_Code_|_Codex_|_Google_Antigravity-blue.svg)](#-getting-started)
[![X](https://img.shields.io/badge/Follow_on_X-%40k__dense__ai-000000?logo=x)](https://x.com/k_dense_ai)
[![LinkedIn](https://img.shields.io/badge/LinkedIn-K--Dense_Inc.-0A66C2?logo=linkedin)](https://www.linkedin.com/company/k-dense-inc)
@@ -36,11 +37,11 @@ validated: false
> **🔔 Claude Scientific Skills is now Scientific Agent Skills.** Same skills, broader compatibility — now works with any AI agent that supports the open [Agent Skills](https://agentskills.io/) standard, not just Claude.
> **New: [K-Dense BYOK](https://github.com/K-Dense-AI/k-dense-byok)** — A free, open-source AI co-scientist that runs on your desktop, powered by Scientific Agent Skills. Bring your own API keys, pick from 40+ models, and get a full research workspace with web search, file handling, 100+ scientific databases, and access to all 150 skills in this repo. Your data stays on your computer, and you can optionally scale to cloud compute via [Modal](https://modal.com/) for heavy workloads. [Get started here.](https://github.com/K-Dense-AI/k-dense-byok)
> **New: [K-Dense BYOK](https://github.com/K-Dense-AI/k-dense-byok)** — A free, open-source AI co-scientist that runs on your desktop, powered by Scientific Agent Skills. Bring your own API keys, pick from 40+ models, and get a full research workspace with web search, file handling, 100+ scientific databases, and access to all 161 skills in this repo. Your data stays on your computer, and you can optionally scale to cloud compute via [Modal](https://modal.com/) for heavy workloads. [Get started here.](https://github.com/K-Dense-AI/k-dense-byok)
> **Stay up to date:** Follow K-Dense on [X](https://x.com/k_dense_ai), [LinkedIn](https://www.linkedin.com/company/k-dense-inc), and [YouTube](https://www.youtube.com/@K-Dense-Inc) for new skills, release announcements, walkthroughs, research workflow demos, and examples you can use with your own AI agent.
A comprehensive collection of **150 ready-to-use scientific and research skills** (covering cancer genomics, individual-level 1000 Genomes queries, hosted regulatory-sequence prediction, drug-target binding, molecular dynamics, RNA velocity, geospatial science, time series forecasting, scientific ML resource discovery via Hugging Science, 78+ scientific databases, and more) for any AI agent that supports the open [Agent Skills](https://agentskills.io/) standard, created by [K-Dense](https://k-dense.ai). Works with **Cursor, Claude Code, Codex, Google Antigravity, and more**. Transform your AI agent into a research assistant capable of executing complex multi-step scientific workflows across biology, chemistry, medicine, and beyond.
A comprehensive collection of **161 ready-to-use scientific and research skills** (covering cancer genomics, individual-level 1000 Genomes queries, hosted regulatory-sequence prediction, live pathogen-variant surveillance, analytical method validation, PK/PD modelling and dose selection, full-text biomedical and regulatory literature retrieval, drug-target binding, bounded biomedical knowledge graph search, molecular dynamics, RNA velocity, geospatial science, time series forecasting, scientific ML resource discovery via Hugging Science, 78+ scientific databases, and more) for any AI agent that supports the open [Agent Skills](https://agentskills.io/) standard, created by [K-Dense](https://k-dense.ai). Works with **Cursor, Claude Code, Codex, Google Antigravity, and more**. Transform your AI agent into a research assistant capable of executing complex multi-step scientific workflows across biology, chemistry, medicine, and beyond.
> ⭐ **Help make AI for science easier to discover:** If Scientific Agent Skills saves you time, teaches your agent a workflow, or helps your lab move faster, please [star this repository](https://github.com/K-Dense-AI/scientific-agent-skills). A star is a public signal that these open, reusable research skills are worth maintaining: it helps scientists, engineers, and open-source contributors find the project, shows which agent-skill standards are gaining real adoption, and gives us a clear reason to keep expanding the collection for the community.
@@ -50,7 +51,7 @@ These skills enable your AI agent to seamlessly work with specialized scientific
- 🧬 Bioinformatics & Genomics - Sequence analysis, single-cell RNA-seq, gene regulatory networks, variant annotation, phylogenetic analysis
- 🧪 Cheminformatics & Drug Discovery - Molecular property prediction, virtual screening, ADMET analysis, molecular docking, lead optimization
- 🔬 Proteomics & Mass Spectrometry - LC-MS/MS processing, peptide identification, spectral matching, protein quantification
- 🏥 Clinical Research & Evidence Workflows - Clinical trials, pharmacogenomics, variant evidence review, aggregate decision-support evaluation, source-bound draft report structures, and formatting of clinician-authored treatment decisions
- 🏥 Clinical Research & Evidence Workflows - Clinical trials, pharmacogenomics, variant evidence review, pharmacokinetic/pharmacodynamic modelling and dose-regimen evaluation, aggregate decision-support evaluation, source-bound draft report structures, and formatting of clinician-authored treatment decisions
- 🧠 Healthcare AI & Biosignal Research - EHR and model research, physiological signal analysis, and retrospective validation—not patient-specific diagnosis, treatment, alarms, or deployment decisions
- 🖼️ Medical Imaging & Digital Pathology - Privacy-aware DICOM processing and research-only whole-slide image analysis, computational pathology, and radiology data workflows
- 🤖 Machine Learning & AI - Deep learning, reinforcement learning, time series analysis, model interpretability, Bayesian methods
@@ -65,6 +66,7 @@ These skills enable your AI agent to seamlessly work with specialized scientific
- 🧬 Protein Engineering & Design - Protein language models, structure prediction, sequence design, function annotation
- 🧰 Agent Platforms & Infrastructure - Build on Pi with SDK, RPC, extensions, custom providers/models, packages, TUI components, and session tooling
- 🎓 Research Methodology - Evidence-bounded candidate hypotheses, scientific brainstorming, critical thinking, grant writing, and qualitative low-stakes evaluation of scholarly works
- ⚖️ Regulatory & Standards - Draft evidence-preparation artifacts for ISO management-system and laboratory standards, plus analytical method validation, verification, and transfer under ICH/USP/CLSI frameworks—prepared for qualified review, never a certification, accreditation, or method-release decision
**Transform your AI coding agent into an 'AI Scientist' on your desktop!**
@@ -74,13 +76,13 @@ These skills enable your AI agent to seamlessly work with specialized scientific
## 📦 What's Included
This repository provides **150 scientific and research skills** organized into the following categories:
This repository provides **161 scientific and research skills** organized into the following categories:
- **100+ Scientific & Financial Databases** - A unified database-lookup skill provides deterministic, provenance-rich access to 78 public databases (PubChem, ChEMBL, UniProt, COSMIC, ClinicalTrials.gov, FRED, USPTO, and more), plus dedicated skills for DepMap, Imaging Data Commons, PrimeKG, U.S. Treasury Fiscal Data, Hugging Science, OneKGPd, and Genomic Intelligence. Multi-database packages like BioServices (~40 bioinformatics services), BioPython (39 NCBI sub-databases via Entrez), and gget (20+ genomics databases) add further coverage
- **100+ Scientific & Financial Databases** - A unified database-lookup skill provides deterministic, provenance-rich access to 78 public databases (PubChem, ChEMBL, UniProt, COSMIC, ClinicalTrials.gov, FRED, USPTO, and more), plus dedicated skills for DepMap, Imaging Data Commons, PrimeKG, NCATS ARAX, U.S. Treasury Fiscal Data, Hugging Science, OneKGPd, and Genomic Intelligence. Multi-database packages like BioServices (~40 bioinformatics services), BioPython (39 NCBI sub-databases via Entrez), and gget (20+ genomics databases) add further coverage
- **70+ Optimized Python Package Skills** - Explicitly defined, version-aware workflows for RDKit, Scanpy, PyTorch Lightning, scikit-learn, PyTDC, PathML, pydicom, NeuroKit2, PufferLib, QuTiP, GeoPandas, pymatgen, BioPython, Qiskit, Molecular Dynamics (OpenMM/MDAnalysis), and others. The agent can still use *any* Python package; these skills provide stronger, safer guidance for the packages listed
- **9 Scientific Integration Skills** - Explicitly defined skills for Benchling, DNAnexus, LatchBio, OMERO, Protocols.io, Open Notebook, Ginkgo Cloud Lab, LabArchives, and Opentrons. Again, the agent is not limited to these — any API or platform reachable from Python is fair game; these skills are the optimized, pre-documented paths
- **30+ Analysis & Communication Tools** - Literature review, evidence-traceable scientific writing, confidential peer review, document processing, Paperzilla, Exa Search, macro-free PPTX posters, slides, schematics, infographics, Mermaid diagrams, and more
- **10+ Research & Clinical Tools** - Evidence-bounded hypothesis generation, grant writing, aggregate clinical decision-support research, clinician-authored treatment-plan formatting, BIDS, ISO 13485 evidence preparation, scenario analysis, and workflow-derived skill drafting with Autoskill
- **30+ Analysis & Communication Tools** - Literature review, evidence-traceable scientific writing, confidential peer review, document processing, Paperclip (full-text papers, FDA/PMDA/EMA filings, and trial registries with line-pinned citations), Paperzilla, Exa Search, macro-free PPTX posters, slides, schematics, infographics, Mermaid diagrams, and more
- **10+ Research & Clinical Tools** - Evidence-bounded hypothesis generation, grant writing, aggregate clinical decision-support research, clinician-authored treatment-plan formatting, PK/PD modelling and simulation (NCA, population PK, exposure-response, bioequivalence, first-in-human dose), BIDS, ISO standards-readiness evidence preparation (ISO 13485, ISO 14971, ISO/IEC 17025, ISO 15189), analytical method validation and transfer (ICH Q2(R2)/Q14, ICH M10, USP, CLSI EP), scenario analysis, and workflow-derived skill drafting with Autoskill
Each skill includes:
- ✅ Comprehensive documentation (`SKILL.md`)
@@ -88,6 +90,7 @@ Each skill includes:
- ✅ Use cases and best practices
- ✅ Integration guides
- ✅ Reference materials
- ✅ A test suite for every skill that ships `scripts/` — CI blocks a pull request that adds bundled tooling without one
---
@@ -102,6 +105,7 @@ Each skill includes:
- [Quick Examples](#-quick-examples)
- [Use Cases](#-use-cases)
- [Available Skills](#-available-skills)
- [From the Blog](#-from-the-blog)
- [Contributing](#-contributing)
- [Troubleshooting](#-troubleshooting)
- [FAQ](#-faq)
@@ -119,7 +123,7 @@ Each skill includes:
- **Multi-Step Workflows** - Execute complex pipelines with a single prompt
### 🎯 **Comprehensive Coverage**
- **150 Skills** - Extensive coverage across all major scientific domains
- **161 Skills** - Extensive coverage across all major scientific domains
- **100+ Databases** - Unified access to 78+ databases via database-lookup, plus dedicated data access skills and multi-database packages like BioServices, BioPython, and gget
- **70+ Optimized Python Package Skills** - Current, version-scoped guidance for packages including RDKit, Scanpy, PyTorch Lightning, scikit-learn, PyTDC, pydicom, PufferLib, QuTiP, GeoPandas, pymatgen, Qiskit, Molecular Dynamics (OpenMM/MDAnalysis), scVelo, and TimesFM (the agent can use any Python package; these are the pre-documented paths)
@@ -130,6 +134,7 @@ Each skill includes:
### 🌟 **Maintained & Supported**
- **Regular Updates** - Continuously maintained and expanded by K-Dense team
- **Tested in CI** - Every skill that ships `scripts/` has a suite under `tests/`, plus a repo-wide structural contract (frontmatter, link resolution, script parsing, `--help` behavior) that runs on every pull request
- **Community Driven** - Open source with active community contributions
- **Enterprise Ready** - Commercial support available for advanced needs
@@ -173,7 +178,7 @@ Pin to a specific release tag or commit SHA for reproducible installs:
```bash
# Pin to a release tag
gh skill install K-Dense-AI/scientific-agent-skills --pin v2.55.0
gh skill install K-Dense-AI/scientific-agent-skills --pin v2.62.0
# Pin to a commit SHA
gh skill install K-Dense-AI/scientific-agent-skills --pin abc123def
@@ -204,7 +209,7 @@ For Hermes versions that support skill taps, add the repository as a tap:
hermes skills tap add K-Dense-AI/scientific-agent-skills
```
Every `SKILL.md` has YAML frontmatter, but legacy and community skills vary in `metadata` formatting (block or flow style) and optional extension fields. Repository updates must keep `metadata.version` as a quoted numeric string and pass canonical `skills-ref validate ./skills/<skill-name>` checks. Hosts may interpret optional metadata and credential prompts differently, so verify behavior on the target host. Because 150 skills add up to a lot of standing context, consider installing a topical subset rather than the whole collection.
Every `SKILL.md` has YAML frontmatter, but legacy and community skills vary in `metadata` formatting (block or flow style) and optional extension fields. Repository updates must keep `metadata.version` as a quoted numeric string and pass canonical `skills-ref validate ./skills/<skill-name>` checks. Hosts may interpret optional metadata and credential prompts differently, so verify behavior on the target host. Because 161 skills add up to a lot of standing context, consider installing a topical subset rather than the whole collection.
> **NemoClaw note:** NemoClaw runs agents inside NVIDIA OpenShell with default-deny outbound networking. Skills are discovered and loaded normally, but any skill that needs the network — package installs via `uv`, or API calls (Exa, Parallel, Benchling, NCBI, Materials Project, …) — only works once the operator pre-approves the relevant domains in the OpenShell TUI.
@@ -234,7 +239,7 @@ We recommend the following:
```
- **Report anything suspicious.** If you find a skill that looks malicious or behaves unexpectedly, please [open an issue](https://github.com/K-Dense-AI/scientific-agent-skills/issues) immediately so we can investigate.
Skills are scanned weekly — incrementally, so unchanged skills carry their previous findings forward, with a full rescan of everything at least every 30 days and whenever the scanner or model changes — and the results are published to [docs/security-report.md](docs/security-report.md) once they pass an automated consistency check against the repository contents. See [SECURITY.md](SECURITY.md) for our security policy, what is in scope, how to report a vulnerability privately, and how to contest a scan finding. We try to address security gaps as they arise.
Skills are scanned weekly — incrementally, so unchanged skills carry their previous findings forward, with a full rescan of everything at least every 30 days and whenever the scanner or model changes — and the results are published to [docs/security-report.md](docs/security-report.md). See [SECURITY.md](SECURITY.md) for our security policy, what is in scope, how to report a vulnerability privately, and how to contest a scan finding. We try to address security gaps as they arise.
---
@@ -409,6 +414,7 @@ networks, and search GEO for similar patterns.
- **Variant Database Management**: Build scalable VCF databases with TileDB-VCF for incremental sample addition, efficient population-scale queries, and compressed storage of genomic variant data
- **Population Genomics**: Query variants, cohort sample IDs, and relatedness in the 3,202-person GRCh38 1000 Genomes cohort with OneKGPd
- **Regulatory Sequence Models**: Run hosted Genomic Intelligence promoter, splice, enhancer, chromatin, expression, and gene-annotation predictions for research—not clinical or diagnostic decisions
- **Pathogen Surveillance**: Track which viral lineages are circulating now and how fast they are growing (SARS-CoV-2, influenza including H5N1, RSV, mpox, measles, dengue) through the GenSpectrum LAPIS API, with reporting lag measured rather than assumed
- **Gene Discovery**: Query NCBI Gene, UniProt, and Ensembl for comprehensive gene information
- **Network Analysis**: Identify protein-protein interactions via STRING, map to pathways (KEGG, Reactome)
@@ -416,6 +422,8 @@ networks, and search GEO for similar patterns.
- **Clinical Trials**: Analyze aggregate trial landscapes and protocol criteria without deciding individual eligibility
- **Variant Evidence Review**: Annotate authorized research data with ClinVar, COSMIC, and ClinPGx; qualified professionals retain interpretation responsibility
- **Drug Safety Research**: Query FDA databases for aggregate adverse-event, interaction, and recall evidence
- **Clinical Pharmacology**: Derive exposure metrics from concentration-time data, fit compartmental and population PK models, relate exposure to effect, and evaluate dosing regimens, bioequivalence, and first-in-human dose
- **Full-Text Evidence Retrieval**: Search and read papers, regulatory filings, and trial records end to end with Paperclip, returning citations pinned to line numbers rather than to abstracts
- **Decision-Support Evaluation**: Prepare synthetic or aggregate evaluation, evidence-profile, privacy, and governance artifacts—not live clinical decisions
- **Clinician-Authored Documentation**: Structure verified source-bound report drafts and format treatment decisions already made by authorized licensed professionals
@@ -440,17 +448,18 @@ networks, and search GEO for similar patterns.
## 📚 Available Skills
This repository contains **150 scientific and research skills** organized across multiple domains. Each skill provides comprehensive documentation, code examples, and best practices for working with scientific libraries, databases, and tools.
This repository contains **161 scientific and research skills** organized across multiple domains. Each skill provides comprehensive documentation, code examples, and best practices for working with scientific libraries, databases, and tools.
### Skill Categories
> **Note:** The Python package and integration skills listed below are *explicitly defined* skills — curated with documentation, examples, and best practices for stronger, more reliable performance. They are not a ceiling: the agent can install and use *any* Python package or call *any* API, even without a dedicated skill. The skills listed simply make common workflows faster and more dependable.
#### 🧬 **Bioinformatics & Genomics** (25 skills)
#### 🧬 **Bioinformatics & Genomics** (26 skills)
- RNA-seq pipelines: Bulk RNA-seq (end-to-end FASTQ -> counts -> DE -> enrichment orchestrator)
- Sequence analysis: BioPython, pysam, scikit-bio, BioServices
- Single-cell analysis: Scanpy, AnnData, scvi-tools, scVelo (RNA velocity), Arboreto, Cellxgene Census
- Genomic tools: gget, current geniml/Gtars interval workflows, deepTools, FlowIO, Polars-Bio, Zarr, TileDB-VCF
- Coordinate hygiene: Genomic Coordinates (convert intervals across BED/GFF/GTF/VCF/SAM/WIG conventions, normalise variant representations, and catch 0-based vs 1-based and assembly/contig-naming mismatches before they corrupt an analysis)
- Population and sequence intelligence: OneKGPd (individual-level 1000 Genomes cohort queries) and Genomic Intelligence (hosted regulatory/gene-expression predictions; research only)
- Differential expression: PyDESeq2
- Functional enrichment: Pathway Enrichment (ORA, GSEA/preranked, ssGSEA via gseapy + g:Profiler; GO, KEGG, Reactome, WikiPathways, MSigDB)
@@ -468,17 +477,19 @@ This repository contains **150 scientific and research skills** organized across
#### 🔬 **Proteomics & Mass Spectrometry** (2 skills)
- Spectral processing: matchms, pyOpenMS
#### 🏥 **Clinical Research & Evidence Workflows** (7 skills)
#### 🏥 **Clinical Research & Evidence Workflows** (8 skills)
- Clinical databases: via Database Lookup (ClinicalTrials.gov, ClinVar, ClinPGx, COSMIC, FDA, cBioPortal, Monarch, and more)
- Clinical pharmacology: PK/PD Modeling (non-compartmental analysis, compartmental and population PK, exposure-response and Emax, TMDD, PBPK orientation, bioequivalence including RSABE/ABEL, allometric scaling and first-in-human dose, DDI prediction under ICH M12, concentration-QTc, and Bayesian therapeutic drug monitoring — stdlib + numpy/scipy, no proprietary estimation software invoked)
- Cancer genomics: DepMap (cancer dependency scores, drug sensitivity)
- Cancer imaging: Imaging Data Commons (NCI radiology & pathology datasets via idc-index)
- Healthcare AI research: PyHealth
- Decision-support research: local, aggregate or synthetic Clinical Decision Support evaluation and governance artifacts only
- Clinical documentation: source-bound Clinical Reports drafts and formatting of verified clinician-authored decisions with Treatment Plans; neither skill diagnoses or recommends care
#### 🖼️ **Medical Imaging & Digital Pathology** (3 skills)
#### 🖼️ **Medical Imaging & Digital Pathology** (4 skills)
- DICOM processing: pydicom 3.0.2 with privacy-first local preflight and no diagnostic or de-identification-compliance claims
- Whole slide imaging: histolab and research-only PathML 3.0.5
- Virtual spatial transcriptomics: noncommercial DeepSpot-M for transcriptome-wide spatial gene expression from 224x224 H&E tiles
#### 🧠 **Neuroscience & Electrophysiology** (3 skills)
- Data standards: BIDS (Brain Imaging Data Structure for neuroscience and biomedical datasets)
@@ -501,13 +512,14 @@ This repository contains **150 scientific and research skills** organized across
- Astronomy: Astropy
- Quantum computing: Cirq, PennyLane, Qiskit, QuTiP 5.3
#### ⚙️ **Engineering & Simulation** (4 skills)
#### ⚙️ **Engineering & Simulation** (5 skills)
- Numerical computing: proprietary MATLAB R2026a and distinct GNU Octave 11.3 planning/review workflows
- Computational fluid dynamics: bounded FluidSim 0.9 simulations with numerical-validity and HPC checks
- Experimental flow measurement: OpenPIV (velocity fields from PIV image pairs, interrogation-window cross-correlation, spurious-vector validation, vorticity/strain-rate/turbulence statistics)
- Discrete-event simulation: SimPy 4.1.2 with replication, warm-up, and output-analysis guidance
- Symbolic math: SymPy
#### 📊 **Data Analysis & Visualization** (21 skills)
#### 📊 **Data Analysis & Visualization** (22 skills)
- Visualization: Matplotlib, Seaborn, Scientific Visualization
- Geospatial analysis: GeoPandas 1.1.4 and GeoMaster (remote sensing, GIS, satellite imagery, spatial ML, 500+ examples)
- Data processing: Dask, Polars, Vaex
@@ -517,6 +529,7 @@ This repository contains **150 scientific and research skills** organized across
- Diagrams: Markdown & Mermaid Writing (text-based diagrams as default documentation standard)
- Exploratory data analysis: bounded local EDA for explicitly supported formats, with unknown formats failing closed
- Statistical analysis: Statistical Analysis workflows
- Units and measurement uncertainty: Uncertainty & Units (pint dimensional checking, GUM uncertainty budgets, Type A/B evaluation, coverage factors and expanded uncertainty, Monte Carlo propagation, CODATA constants)
- Experimental design: Experimental Design (randomization, blocking, factorial/fractional-factorial DOE, crossover, cluster, sequential designs; pyDOE3)
- Statistical power: Statistical Power (sample-size & power for t-tests, ANOVA, proportions, correlation, regression — closed-form plus simulation-based for GLMs, mixed models, and cluster designs)
@@ -536,8 +549,9 @@ This repository contains **150 scientific and research skills** organized across
- Cloud laboratory platform: Adaptyv (automated protein testing and validation)
- Cloud structure & design platform: Tamarind (managed-GPU access to AlphaFold, Boltz, Chai, ESMFold, RFdiffusion, ProteinMPNN, BoltzGen, antibody/nanobody design, DiffDock/Vina docking, binding affinity, and MSA generation via REST API or MCP)
#### 📚 **Scientific Communication** (26 skills)
#### 📚 **Scientific Communication** (27 skills)
- Literature: Paper Lookup (PubMed, PMC, bioRxiv, medRxiv, arXiv, OpenAlex, Crossref, Semantic Scholar, CORE, Unpaywall), Literature Review, Paperzilla
- Full-text corpus access: Paperclip (read-only virtual filesystem over ~11M full-text papers, 217K+ FDA/PMDA/EMA regulatory documents, clinical trial registries, and UniProt/PDB/ChEMBL entries — source-scoped semantic search, corpus-wide grep, SQL metadata queries, map/reduce reading across many papers, figure vision analysis, and line-pinned citations)
- Advanced paper search: BGPT Paper Search (25+ structured fields per paper — methods, results, sample sizes, quality scores — from full text, not just abstracts)
- Web intelligence: Parallel Web (web search, URL/PDF extraction, deep research, structured enrichment, entity discovery, and recurring monitoring), Exa Search, and Research Lookup
- Research notebooks: Open Notebook (self-hosted NotebookLM alternative — PDFs, videos, audio, web pages; 16+ AI providers; multi-speaker podcast generation)
@@ -548,18 +562,21 @@ This repository contains **150 scientific and research skills** organized across
- Diagrams: Scientific Schematics, Markdown & Mermaid Writing
- Infographics: Infographics (10 types, 8 styles, colorblind-safe palettes)
- Citations: Citation Management, pyzotero
- Illustration: Generate Image (AI image generation with FLUX.2 Pro and Gemini 3.1 Flash Image Preview / Nano Banana 2)
- Illustration: Generate Image (AI image generation with FLUX.2 Pro and Gemini 3.1 Flash Image / Nano Banana 2)
#### 🔬 **Scientific Databases & Data Access** (8 skills → 100+ databases total)
#### 🔬 **Scientific Databases & Data Access** (11 skills → 100+ databases total)
> A unified database-lookup skill provides deterministic REST API access to 78 public databases across all domains, with retrieval contracts, pagination/count reconciliation, and endpoint provenance. Dedicated skills cover specialized data platforms. Multi-database packages like BioServices (~40 bioinformatics services), BioPython (39 NCBI sub-databases via Entrez), and gget (20+ genomics databases) add further coverage.
- Unified access: Database Lookup (78 databases spanning chemistry, genomics, clinical, pathways, patents, economics, and more — PubChem, ChEMBL, UniProt, PDB, AlphaFold, KEGG, Reactome, STRING, ClinVar, COSMIC, ClinicalTrials.gov, FDA, FRED, USPTO, SEC EDGAR, and dozens more — with auditable filters and provenance)
- Cancer genomics: DepMap (cancer cell line dependencies, drug sensitivity, gene effect profiles)
- Cancer imaging: Imaging Data Commons (NCI radiology & pathology datasets via idc-index)
- Knowledge graph: PrimeKG (precision medicine knowledge graph — genes, drugs, diseases, phenotypes)
- Biomedical knowledge graph search: [NCATS ARAX](skills/ncats-arax/) (bounded, Biolink-constrained one-hop and endpoint-pinned two-hop queries over knowledge graphs with up to five explicitly selected NCATS Translator providers, with provenance preservation)
- Fiscal data: U.S. Treasury Fiscal Data (national debt, Treasury statements, auctions, exchange rates)
- Scientific ML resource catalog: Hugging Science (curated index of datasets, models, blog posts, and interactive Spaces across 17 scientific domains — astronomy, biology, chemistry, climate, genomics, materials science, medicine, physics, scientific reasoning, and more — with usage patterns for `datasets`, `transformers`, and `gradio_client`)
- Individual-level population genomics: OneKGPd (3,202-person high-coverage 1000 Genomes cohort queries)
- Hosted regulatory genomics: Genomic Intelligence (promoter, splice, enhancer, chromatin, expression, and gene-annotation predictions for research use)
- Ontology identifiers: Ontology Term Resolution (resolve free-text tissue, cell-type, disease, phenotype, assay, chemical, organism, and developmental-stage labels to term IDs and validate CURIEs against EBI OLS4, for GEO/ENA/BioSamples/CELLxGENE/HCA/ISA-Tab metadata)
- Live pathogen surveillance: Pathogen Variant Surveillance (which viral lineages are circulating now, how fast they are growing, and what mutations they carry — SARS-CoV-2, influenza including H5N1, RSV, mpox, measles, dengue and more through the GenSpectrum LAPIS API, with lineage names resolved against the live pango-designation nomenclature and reporting lag measured rather than assumed)
#### 🔧 **Infrastructure & Platforms** (11 skills)
- Cloud compute: Modal
@@ -584,8 +601,11 @@ This repository contains **150 scientific and research skills** organized across
- Discovery: Research Lookup, Paper Lookup (10 academic databases)
- Market analysis: evidence-traceable Market Research Reports with assumption-led sizing and forecast sensitivity
#### ⚖️ **Regulatory & Standards** (1 skill)
- Medical device standards: draft ISO 13485 QMS evidence-preparation artifacts for qualified review—not compliance, audit, or certification decisions
#### ⚖️ **Regulatory & Standards** (2 skills)
- Standards readiness: draft evidence-preparation artifacts for ISO 13485 (medical device QMS), ISO 14971 (device risk management), ISO/IEC 17025 (testing and calibration laboratories), and ISO 15189 (medical laboratories), with per-standard process domains selected by a `--standard` profile
- Analytical method validation: plan, evaluate, and document validation, verification, and transfer of analytical procedures (HPLC, LC-MS/MS, GC, CE, ICP-MS, dissolution, qNMR, qPCR, NIR, ligand-binding and cell-based assays) under whichever framework governs — ICH Q2(R2)/Q14 and ICH M10 encoded from their openly licensed text, with USP `<1220>`/`<1225>`/`<1226>`, the CLSI EP series, and ISO/IEC 17025 cited by designation and scope only; stdlib-only statistics, no network access
- Assurance-lane separation: keeps ISO certification, laboratory accreditation, FDA QMSR inspection, CLIA certification, MDSAP, and EU MDR/IVDR evidence boundaries distinct—laboratories are accredited rather than certified, and ISO 15189 accreditation does not satisfy CLIA
- Never a compliance, audit, assessment, certification, accreditation, or method-release decision; qualified RA/QA, legal, laboratory-director, assessor, and certification-body review is required
> 📖 **For complete details on all skills**, see [docs/skills.md](docs/skills.md)
@@ -593,6 +613,38 @@ This repository contains **150 scientific and research skills** organized across
---
## 📝 From the Blog
Deep dives, benchmarks, and guides from the [K-Dense blog](https://www.k-dense.ai/blog) that are directly relevant to using the skills in this repository.
### Start here
- **[Agent Skills: The Final Piece for AI-Powered Scientific Research](https://www.k-dense.ai/blog/agent-skills-final-piece-for-ai-powered-research)** — What Agent Skills are, why curated domain guidance beats raw model capability, and an introduction to this repository.
- **[K-Dense Web vs Scientific Agent Skills: Why We Built Both (And Which One You Should Use)](https://www.k-dense.ai/blog/k-dense-web-vs-scientific-agent-skills)** — When the open-source skills are the right tool, and when a hosted platform with managed compute makes more sense.
### Skill benchmarks and deep dives
- **[One Skill, 78 Databases: Why We Didn't Build 78 Skills](https://www.k-dense.ai/blog/database-lookup-one-skill-78-databases)** — The design rationale behind [database-lookup](skills/database-lookup/): consolidation cut always-on context cost by 13.9x while holding routing accuracy across five models.
- **[Can an AI Agent Run Your Mass Spec Pipeline? Benchmarking the PyOpenMS Skill](https://www.k-dense.ai/blog/benchmarking-pyopenms-skill-mass-spectrometry)** — A 250-run study of [pyopenms](skills/pyopenms/): 100% task success with the skill versus 96% without, 92% fewer pyOpenMS API errors, and 10% lower cost.
- **[Beyond RDKit: Benchmarking the Rowan Agent Skill Against Experiment](https://www.k-dense.ai/blog/benchmarking-rowan-skill-chemistry)** — [rowan](skills/rowan/) compared against RDKit and experimental data: pKa MAE 0.23 (R² 0.986), logD₇.₄ MAE 1.15, and 0.19 Å RMSD docking pose recovery for roughly $0.52 of compute.
- **[GPU-Accelerate Your Science: 58x Average Speedup with a Single Skill](https://www.k-dense.ai/blog/optimize-for-gpu-skill)** — [optimize-for-gpu](skills/optimize-for-gpu/) rewriting CPU-bound Python across 12 libraries, with speedups ranging from 1.7x to 492x.
- **[Towards Smarter Scientific Search: Exa Joins the Scientific Agent Skills Library](https://www.k-dense.ai/blog/towards-smarter-scientific-search-exa-scientific-agent-skills)** — What [exa-search](skills/exa-search/) adds: neural semantic search and URL extraction tuned for scholarly discovery instead of keyword matching.
- **[Benchmarking Nano Banana 2 Lite for Scientific Image Generation](https://www.k-dense.ai/blog/benchmarking-nano-banana-2-lite-scientific-image-model)** — A 240-image comparison of scientific-diagram models, useful when choosing a backend for [generate-image](skills/generate-image/): 3.8 s median latency for Nano Banana 2 Lite against 49 s for GPT Image 2, with a quality tradeoff.
- **[Benchmarking NVIDIA BioNeMo Agent Toolkit Skills for NIM microservices](https://www.k-dense.ai/blog/benchmarking-nvidia-bionemo-nim-skill)** — A separate NVIDIA skill set rather than one of these, but the findings generalize: skills help most with routing to non-obvious endpoints and with weak-model reliability, and do not improve the underlying scientific model's accuracy.
### Security and safe deployment
- **[Security in the Science Agent Era: What Every Lab Needs to Know Before Installing Skills](https://www.k-dense.ai/blog/skill-security-before-you-install)** — The practical review checklist behind this repo's [Security Disclaimer](#%EF%B8%8F-security-disclaimer): read the full `SKILL.md` and `scripts/`, scan before installing, and pin versions instead of tracking a branch.
- **[The Sandboxed AI Scientist: Pairing NVIDIA OpenShell with Scientific Agent Skills](https://www.k-dense.ai/blog/sandboxed-ai-scientist-openshell-skills)** — Running these skills inside a policy-governed sandbox; see also the NemoClaw note in [Getting Started](#-getting-started).
### Complementary open-source projects
- **[Introducing Science Superpowers: Scientific Discipline for Your Research Agent](https://www.k-dense.ai/blog/introducing-science-superpowers)** — Hypothesis pre-registration, reproducible workflows, and verification-before-claims that wrap around these skills to guard against p-hacking and HARKing.
- **[Your AI Assistant Reasons Like a Generalist. Science Needs a Specialist.](https://www.k-dense.ai/blog/introducing-scientific-agents)** — 503 open-source `AGENTS.md` profiles supplying the "how to think" layer alongside the "what to do" procedures in these skills.
- **[Introducing mimeo and 80+ Mimeographs](https://www.k-dense.ai/blog/introducing-mimeo-and-mimeographs)** — Generate your own `SKILL.md` / `AGENTS.md` expert profiles by distilling how a given practitioner reasons.
---
## 🤝 Contributing
We welcome contributions to expand and improve this scientific skills repository!
@@ -621,7 +673,7 @@ For detailed instructions on adding or updating a skill, see [CONTRIBUTING.md](C
2. **Create** a feature branch (`git checkout -b feature/amazing-skill`)
3. **Follow** [CONTRIBUTING.md](CONTRIBUTING.md) and the existing directory structure
4. **Ensure** all new skills include valid `SKILL.md` files with required frontmatter and `metadata.version`
5. **Test** your examples and workflows thoroughly
5. **Test** your examples and workflows thoroughly, and add a suite under `tests/<skill-name>/` if your skill ships `scripts/`
6. **Commit** your changes (`git commit -m 'Add amazing skill'`)
7. **Push** to your branch (`git push origin feature/amazing-skill`)
8. **Submit** a pull request with a clear description of your changes
@@ -638,6 +690,23 @@ For detailed instructions on adding or updating a skill, see [CONTRIBUTING.md](C
✅ Provide clear comments and docstrings in code
✅ Include references to official documentation
### Testing
Every skill that ships `scripts/` must have a test suite under `tests/<skill-name>/` and an entry in `tests/skill-requirements.toml`. This is enforced — `tests/_meta` fails a pull request that adds bundled tooling without one, and it also runs a repo-wide structural contract over all skills (frontmatter conformance, `SKILL.md` length, local links resolving, scripts parsing, no shipped bytecode, no hardcoded local paths, `--help` behavior).
```bash
# Structural contract and coverage guard — seconds, no scientific packages needed
uv run python -m pytest tests/_meta -q
# One skill's suite
uv run --with pytest python -m pytest tests/<skill-name> -q
# Every suite, each in its own throwaway environment
uv run python tests/run_all.py --isolated
```
The [Skill Tests](https://github.com/K-Dense-AI/scientific-agent-skills/actions/workflows/skill-tests.yml) workflow runs the contract plus the standard-library-only suites on every pull request; the full `--isolated` sweep builds ~100 environments and is run locally or on a schedule.
### Security Scanning
All skills in this repository are security-scanned using [Cisco AI Defense Skill Scanner](https://github.com/cisco-ai-defense/skill-scanner), an open-source tool that detects prompt injection, data exfiltration, and malicious code patterns in Agent Skills.
@@ -774,7 +843,7 @@ Recommended practice:
title = {Scientific Agent Skills: A Comprehensive Collection of Scientific Tools for AI Agents},
year = {2026},
url = {https://github.com/K-Dense-AI/scientific-agent-skills},
note = {150 skills covering databases, packages, integrations, and analysis tools}
note = {161 skills covering databases, packages, integrations, and analysis tools}
}
```
@@ -0,0 +1,184 @@
---
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/skills/ncats-arax/SKILL.md
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
name: ncats-arax
description: Queries the NCATS Translator ARAX production API for bounded, typed, provenance-rich one-hop and endpoint-pinned two-hop biomedical knowledge-graph relationships. Use for Biolink-constrained RTX-KG2 lookup, explicit selected-provider ARAX federation, separate entity normalization, qualifier-aware graph traversal, and inspection of TRAPI edge bindings, publications, and knowledge-source provenance. Do not use for inference, ranking, open-ended pathfinding, clinical guidance, or sensitive queries.
allowed-tools: Read Bash
license: MIT
compatibility: Requires Python 3.10+ and outbound HTTPS access to arax.transltr.io. The client uses only the Python standard library and needs no API key. Queries and caller metadata may be publicly visible; never submit sensitive or patient-specific content.
metadata:
version: "1.0"
skill-author: neuroepithelial
---
# NCATS ARAX
Use ARAX as a constrained knowledge-graph lookup service. Submit reviewed CURIEs and explicit
Biolink types, preserve the exact TRAPI exchange, inspect query-edge bindings and provenance, and
treat every returned path as a candidate for subsequent verification.
Read [query-contract.md](references/query-contract.md) before constructing a query. Read
[output-schema.md](references/output-schema.md) when interpreting saved artifacts, warnings,
provenance, or partial results.
## Safety boundary
- Use only public, nonsensitive research questions. ARAX status facilities may expose query and
caller metadata even when `store=false` is requested.
- Do not submit patient information, confidential research questions, unpublished compound
programs, or proprietary target hypotheses.
- Do not present a returned path as a validated mechanism or clinical recommendation.
- Report a zero as "not returned under these constraints," never as evidence that no relationship
exists.
- Describe position as unscored response order, never rank.
- Verify important candidates with literature and authoritative databases separately.
## Workflow
1. Normalize free text separately, then review and report the proposed CURIE and category.
2. Choose a typed one-hop query or an exactly two-hop query with both endpoints pinned.
3. Use default RTX-KG2 lookup unless the user explicitly names two to five providers.
4. Acknowledge that the biomedical query is public and choose a new or empty output directory.
5. Run the client once. Do not silently change provider selection or expansion order after a
failure or empty result.
6. Inspect `summary.json` for bounded bindings and provenance and `response.json` for the exact
TRAPI payload.
7. Verify scientifically important paths outside ARAX.
## Preflight
Check the production OpenAPI without making a biomedical query:
```bash
python skills/ncats-arax/scripts/arax_client.py preflight
```
The client verifies that the service identifies itself as ARAX, exposes `/query`, and reports a
supported TRAPI version. A nonproduction endpoint or untested TRAPI series requires an explicit
override; neither override changes the fixed query shapes or operations.
## Normalize an entity
Normalization is review-only and never triggers a graph query:
```bash
python skills/ncats-arax/scripts/arax_client.py normalize "primary myelofibrosis" \
--expected-category biolink:Disease \
--max-synonyms 10 \
--acknowledge-public-query \
--output-dir outputs/normalize-myelofibrosis
```
Review the canonical identifier, name, category, and synonym preview before using a CURIE. Report
all CURIEs and categories regardless of query outcome. A category warning or zero result is a
reason to curate the identifier, not to chain automatically to `/query`.
## One-hop lookup
Pin at least one endpoint and type both nodes:
```bash
python skills/ncats-arax/scripts/arax_client.py one-hop \
--subject-id CHEBI:31690 \
--subject-category biolink:SmallMolecule \
--predicate biolink:affects \
--object-id NCBIGene:25 \
--object-category biolink:Gene \
--qualifier biolink:object_aspect_qualifier=activity_or_abundance \
--qualifier biolink:object_direction_qualifier=decreased \
--acknowledge-public-query \
--output-dir outputs/imatinib-abl1
```
Lookup mode is the default and fixes expansion to `infores:rtx-kg2`. It defaults to 20 results.
Use `--result-limit N` to request 1-50 results; 50 is the hard cap in either mode.
## Endpoint-pinned two-hop lookup
Use exactly one typed, unpinned intermediate node:
```bash
python skills/ncats-arax/scripts/arax_client.py two-hop \
--subject-id CHEBI:66901 \
--subject-category biolink:SmallMolecule \
--predicate-1 biolink:affects \
--intermediate-category biolink:Gene \
--predicate-2 biolink:associated_with \
--object-id MONDO:0009061 \
--object-category biolink:Disease \
--qualifier-1 biolink:object_aspect_qualifier=activity_or_abundance \
--qualifier-1 biolink:object_direction_qualifier=increased \
--expand-order right-first \
--acknowledge-public-query \
--output-dir outputs/ivacaftor-cystic-fibrosis
```
Right-first expansion is the default. If an empty result merits another attempt, run a new query
explicitly with `--expand-order left-first` and keep the runs separate.
## Selected-provider federation
Federation is explicit and accepts two to five named providers:
```bash
python skills/ncats-arax/scripts/arax_client.py one-hop \
--subject-id CHEBI:31690 \
--subject-category biolink:SmallMolecule \
--predicate biolink:affects \
--object-id NCBIGene:25 \
--object-category biolink:Gene \
--mode federated \
--kp infores:rtx-kg2 \
--kp infores:molepro \
--acknowledge-public-query \
--output-dir outputs/federated-imatinib-abl1
```
Federation defaults to the hard maximum of 50 results. Provider errors may coexist with useful
results; such a run exits 7 after retaining its artifacts and is marked partial.
## Inspect saved provenance
Rebuild a bounded summary without network access:
```bash
python skills/ncats-arax/scripts/arax_client.py summarize \
--request outputs/ivacaftor-cystic-fibrosis/request.json \
--response outputs/ivacaftor-cystic-fibrosis/response.json \
--format text
```
The inspector accepts only the same constrained request shapes and fixed operations that the live
commands generate. Use `--format json` for the normalized view on standard output.
## Interpret results
- Follow each analysis's query-edge bindings; do not summarize every knowledge-graph edge.
- Preserve the physical edge subject, predicate, object, and qualifier values returned by ARAX.
Returned predicates or qualifier aspects may be more specific than the query constraint.
- Inspect all source objects, including primary, aggregator, supporting-data, upstream-resource,
and source-record URL fields.
- Treat `publication_availability: not_returned` as missing metadata, not evidence that no
publications exist.
- Treat missing auxiliary-graph references and provider failures as explicit warnings.
- Consult the raw response whenever the bounded summary omits detail or the service response is
partial, unfamiliar, or scientifically surprising.
## Deliberate exclusions
The client has no raw-query, workflow, operation, overlay, ranking, inference, link-prediction,
Pathfinder, ARS, batch, all-provider, three-hop, cache, daemon, SDK, MCP, or
natural-language-to-TRAPI surface. Do not work around those limits with direct HTTP calls under
this skill.
## Official references
- [ARAX documentation](https://ncatstranslator.github.io/TranslatorTechnicalDocumentation/architecture/ara/arax/)
- [ARAX production OpenAPI](https://arax.transltr.io/api/arax/v1.4/openapi.json)
- [ARAXi operation documentation](https://github.com/RTXteam/RTX/blob/master/code/ARAX/Documentation/DSL_Documentation.md)
- [Translator Reasoner API](https://github.com/NCATSTranslator/ReasonerAPI)
- [Biolink Model](https://biolink.github.io/biolink-model/)
@@ -0,0 +1,199 @@
---
title: "ARAX artifact and output contract"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/skills/ncats-arax/references/output-schema.md
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
author: upstream
validated: false
---
# ARAX artifact and output contract
## Contents
- [Artifact sets](#artifact-sets)
- [Exact byte preservation](#exact-byte-preservation)
- [Query summary](#query-summary)
- [Normalization and preflight summaries](#normalization-and-preflight-summaries)
- [Provenance interpretation](#provenance-interpretation)
- [Truncation and completeness](#truncation-and-completeness)
- [Manifest](#manifest)
- [Warnings and exit codes](#warnings-and-exit-codes)
## Artifact sets
Every graph query requires a new or empty output directory and writes:
```text
request.json
response.json
summary.json
manifest.json
```
Normalization writes the exact entity response, a bounded normalization summary, and a manifest.
Preflight writes the exact OpenAPI response, a service summary, and a manifest only when an output
directory is requested. GET commands do not create a fictitious `request.json`; the corresponding
manifest file, byte, and hash fields are null. Offline `summarize` writes nothing.
Reject an existing nonempty directory before network access. Write artifacts through a private
temporary file, flush and `fsync`, set mode `0600` where supported, and atomically replace the final
path. Write the manifest last.
## Exact byte preservation
Serialize a POST body once with sorted keys, compact separators, UTF-8, and `ensure_ascii=False`.
Save and send that same byte string. Request `Accept-Encoding: identity`, save the raw response
before JSON parsing, and hash request and response bytes with SHA-256.
Read at most 26,214,401 response bytes. If the extra byte exists, treat the response as oversized,
save no partial `response.json`, retain the request when applicable, write a terminal manifest, and
exit 6. A bounded HTTP-error body is preserved exactly. A bounded malformed JSON response is also
preserved, but no misleading summary is produced.
## Query summary
`summary.json` is a normalized bounded view; `response.json` remains authoritative.
```json
{
"schema_version": "1.0",
"query": {
"kind": "one-hop|two-hop",
"mode": "lookup|federated",
"provider_ids": [],
"expand_order": "right-first|left-first|null",
"qnode_ids": {},
"result_limit": 20
},
"service": {
"base_url": null,
"arax_version": null,
"trapi_version": null,
"biolink_version": null
},
"counts": {
"results_returned": 0,
"results_summarized": 0,
"analyses_summarized": 0,
"bound_edges_summarized": 0,
"knowledge_graph_nodes": 0,
"knowledge_graph_edges": 0,
"server_total_results_count": null
},
"truncation_status": "no|possible|confirmed",
"completeness": "complete|partial|unknown",
"results": [],
"warnings": []
}
```
Keep response order. A result contains its one-based unscored `position`, bounded description,
normalized node bindings, and separate analyses. Each analysis contains its resource ID, returned
score, support-graph IDs, and bound-edge objects grouped by query-edge key.
A bound-edge object contains the returned edge ID, physical subject/predicate/object and names,
query-direction match flag, qualifiers, full source objects, role-derived source ID lists,
publication IDs and availability, and support-graph IDs and status.
## Normalization and preflight summaries
A normalization summary records the input, expected category, whether free-text confirmation is
required, service versions, canonical identifier/name/category, category-count mapping, total
synonym count, bounded candidate preview, and warnings.
A preflight summary records service versions plus Boolean checks for ARAX identity, `/query`, and
version compatibility. Neither summary claims graph results.
## Provenance interpretation
Use each analysis's `edge_bindings` to select knowledge-graph edges. Do not include unrelated graph
edges. Preserve multiple analyses separately and retain all entries from each bound edge's
`sources`, including `resource_id`, `resource_role`, `upstream_resource_ids`, and
`source_record_urls`. Derive unique, first-seen resource ID lists for primary, aggregator, and
supporting-data roles without discarding the full objects.
Preserve returned qualifiers as type/value pairs. Preserve physical edge direction and set
`matches_query_direction: false` rather than rewriting a reversed edge.
V1 recognizes `biolink:publications` edge attributes. Accept a string or list of strings and
deduplicate in first-seen order. Missing recognized metadata means:
```text
publication_ids: []
publication_availability: not_returned
```
It never means that no publications exist.
Use `analysis.support_graphs` as the support-graph references. If none are returned, report
`not_returned`; if all appear in `message.auxiliary_graphs`, report `available`; if a referenced ID
is absent, report `missing` and warn.
## Truncation and completeness
- Fewer results than the requested limit: `no`, unless logs or counts show removal.
- Exactly the limit: `possible` and `RESULT_LIMIT_REACHED`.
- More than the limit, an explicit pruning/removal log, or a larger server total: `confirmed`.
Keep only the first requested number of results in the normalized summary while preserving the
entire size-bounded raw response.
Federated KP timeout, provider error, or malformed-provider evidence yields `completeness: partial`,
`result_status: partial`, retained artifacts, and exit 7. Otherwise a valid parsed response is
`complete`; raw malformed responses produce no summary.
## Manifest
The manifest records run UUID, UTC timestamps, command, execution/result status, privacy
acknowledgment, fixed client identity, service versions, request/response method, URL, filenames,
byte counts, hashes, elapsed time, applied limits, attempt counts, artifact names, bounded error,
and warnings. Fields for artifacts that do not exist are null rather than false filenames.
Execution statuses are `success`, `http_error`, and `client_error`. Result statuses are `results`,
`no_results`, `partial`, and `not_available`.
## Warnings and exit codes
Warnings are objects with a stable `code`, bounded sanitized `message`, and a small scalar
`context`. Supported codes:
```text
PUBLIC_QUERY
NORMALIZATION_REQUIRES_CONFIRMATION
NORMALIZATION_CATEGORY_MISMATCH
NO_RESULTS
NO_PUBLICATIONS_RETURNED
NO_PRIMARY_SOURCE_RETURNED
UNSCORED_RESPONSE_ORDER
RESULT_LIMIT_REACHED
INTERNAL_PRUNING_DETECTED
KP_TIMEOUT
KP_ERROR
MALFORMED_KP_RESPONSE
MISSING_AUXILIARY_GRAPH
REVERSED_EDGE_BINDING
UNTESTED_SERVICE_VERSION
NONPRODUCTION_ENDPOINT
```
Exit codes:
| Code | Meaning |
| ---: | --- |
| 0 | Complete success, including a valid zero-result graph response |
| 2 | Invalid CLI input, unsupported saved request, or local validation failure |
| 3 | Service preflight or unsupported-version failure |
| 4 | Normalization returned no usable result |
| 5 | Transport or HTTP failure |
| 6 | Malformed, oversized, or artifact-integrity failure |
| 7 | Partial federated response with retained artifacts |
Text output prints at most the bounded result set and ten publication IDs per edge, labels every
position unscored, includes all source-role IDs, and points to `summary.json` and `response.json`.
Use "ARAX returned" and "not returned under these constraints," never proof, absence, or ranking
language.
@@ -0,0 +1,153 @@
---
title: "ARAX query contract"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/skills/ncats-arax/references/query-contract.md
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
author: upstream
validated: false
---
# ARAX query contract
## Contents
- [Service boundary](#service-boundary)
- [Supported query shapes](#supported-query-shapes)
- [Validation](#validation)
- [Fixed operations](#fixed-operations)
- [Limits and retries](#limits-and-retries)
- [Version and endpoint policy](#version-and-endpoint-policy)
- [Excluded escape hatches](#excluded-escape-hatches)
## Service boundary
Use `https://arax.transltr.io/api/arax/v1.4` by default. A networked command first retrieves
`/openapi.json`, verifies an ARAX title and `/query`, and records the advertised ARAX and TRAPI
versions. Normalization uses `/entity`; graph lookup uses `/query`.
Every normalization or graph request requires `--acknowledge-public-query`. This is an explicit
acknowledgment that query and caller metadata may be visible through service facilities. The
`store=false` operation reduces intentional response storage but is not a privacy guarantee.
## Supported query shapes
### One hop
Use two qnodes (`n0`, `n1`) and one qedge (`e0`). Require one category on each qnode, one to five
predicates, and at least one pinned endpoint. Each qnode has at most one CURIE. Omit `ids` from an
unpinned qnode.
### Two hops
Use three qnodes (`n0`, `n1`, `n2`) and two qedges (`e0`, `e1`). Pin `n0` and `n2` with exactly one
CURIE each. Type every qnode. Keep `n1` unpinned. Each edge has one to five predicates.
For either shape, an edge may have zero to six qualifiers. Combine them in one
`qualifier_constraints` entry containing one AND-conjoined `qualifier_set`. Omit the whole field
when no qualifier is supplied. Do not repeat a qualifier type on the same edge.
## Validation
CURIEs follow this conservative form:
```text
^[A-Za-z][A-Za-z0-9._-]*:[^\s]+$
```
They must be no more than 200 characters and contain no controls, NUL, tabs, or newlines.
Categories, predicates, and qualifier types follow:
```text
^biolink:[A-Za-z][A-Za-z0-9._-]*$
```
Provider identifiers are interpolated into an ARAXi action and therefore use the stricter form:
```text
^infores:[A-Za-z0-9._-]+$
```
Do not maintain a local Biolink model or provider registry. Shape validation is local; ARAX remains
the semantic authority. Reject duplicate predicates, qualifier types, provider IDs, and repeated
scalar endpoint options.
## Fixed operations
Lookup mode fixes the provider to `infores:rtx-kg2`. Federated mode requires two to five explicit,
distinct provider identifiers and emits them in one list-valued `kp=` argument. Never omit `kp` and
never generate duplicate `kp=` arguments.
One hop expands `e0`. Two-hop right-first expands `e1` and then `e0`; left-first reverses only those
two actions. Append exactly:
```text
scoreless_resultify(ignore_edge_direction=true)
filter_results(action=limit_number_of_results,max_results=<1-50>,prune_kg=true)
return(response=true,store=false)
```
Each expansion fixes:
```text
kp_timeout=30,return_minimal_metadata=false
```
Always send `stream_progress: false` and the constant submitter
`scientific-agent-skills-ncats-arax`. Never put a user name, project name, or query term into the
submitter or User-Agent.
## Limits and retries
| Control | Value |
| --- | ---: |
| OpenAPI/entity HTTP timeout | 30 seconds |
| Lookup query HTTP timeout | 120 seconds |
| Federated query HTTP timeout | 180 seconds |
| ARAX KP timeout | 30 seconds |
| Lookup default result limit | 20 |
| Federated default result limit | 50 |
| Hard result limit | 50 |
| Provider count | 2-5 in federation |
| Predicates per edge | 1-5 |
| Qualifiers per edge | 0-6 |
| Raw response limit | 25 MiB (26,214,400 bytes) |
Retry OpenAPI and entity GET requests once after HTTP 429, 502, 503, 504, or a transport timeout.
Honor `Retry-After` for at most 10 seconds; otherwise wait one second. Never retry POST `/query`.
A failed POST may have been processed and must be rerun only by an explicit user decision.
Use these headers:
```text
Accept: application/json
Accept-Encoding: identity
Content-Type: application/json # POST only
User-Agent: scientific-agent-skills-ncats-arax/1.0
```
## Version and endpoint policy
The tested target is ARAX 1.5.4 with TRAPI 1.5.0. Parse the common response fields for TRAPI 1.5
and 1.6, warning whenever the version is not the tested value. Refuse an unknown or missing TRAPI
series unless `--allow-untested-version` is explicit. Record `biolink_version` from each query
response rather than assuming it.
Accept only HTTPS base URLs without credentials, query strings, or fragments. Reject localhost and
literal private, loopback, link-local, or reserved addresses. A URL other than the production base
requires `--allow-nonproduction-endpoint`, must still identify ARAX through OpenAPI, and receives a
warning. Reject cross-origin and protocol-downgrade redirects. Never fall back automatically to
`arax.ncats.io` or another ARA.
## Excluded escape hatches
Expose no raw JSON submission, query-file, generic node/edge list, workflow, operations, action,
overlay, ranking, inference, creative-query, link-prediction, Pathfinder, ARS, all-provider,
batching, stdin-list, cache, database, daemon, server, SDK, MCP, or third-hop option.
The offline summarizer validates the saved request against this same topology and operation
contract. It refuses unsupported requests rather than becoming a back door for broader ARAX use.
@@ -0,0 +1,47 @@
---
title: "Federated Partial Response"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/tests/ncats-arax/fixtures/federated_partial_response.json
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
author: upstream
validated: false
---
{
"status": "Success",
"schema_version": "1.5.0",
"biolink_version": "4.2.1",
"tool_version": "1.5.4",
"logs": [
{"level": "WARNING", "code": "KP_TIMEOUT", "message": "infores:molepro timed out"},
{"level": "ERROR", "code": "KP_ERROR", "message": "KP infores:example returned HTTP 413"},
{"level": "WARNING", "code": "DESERIALIZATION_ERROR", "message": "Malformed KP response could not be deserialized"}
],
"message": {
"knowledge_graph": {
"nodes": {"CHEBI:31690": {"name": "imatinib"}, "NCBIGene:25": {"name": "ABL1"}},
"edges": {
"kg-partial": {
"subject": "CHEBI:31690",
"predicate": "biolink:affects",
"object": "NCBIGene:25",
"sources": [
{"resource_id": "infores:drugbank", "resource_role": "primary_knowledge_source"},
{"resource_id": "infores:rtx-kg2", "resource_role": "aggregator_knowledge_source"}
],
"attributes": [{"attribute_type_id": "biolink:publications", "value": "PMID:300"}]
}
}
},
"results": [
{
"node_bindings": {"n0": [{"id": "CHEBI:31690"}], "n1": [{"id": "NCBIGene:25"}]},
"analyses": [{"resource_id": "infores:arax", "edge_bindings": {"e0": [{"id": "kg-partial"}]}}]
}
]
}
}
@@ -0,0 +1,47 @@
---
title: "Missing Auxiliary Graph"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/tests/ncats-arax/fixtures/missing_auxiliary_graph.json
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
author: upstream
validated: false
---
{
"status": "Success",
"schema_version": "1.5.0",
"biolink_version": "4.2.1",
"tool_version": "1.5.4",
"logs": [],
"message": {
"knowledge_graph": {
"nodes": {"CHEBI:31690": {"name": "imatinib"}, "NCBIGene:25": {"name": "ABL1"}},
"edges": {
"kg-missing-aux": {
"subject": "CHEBI:31690",
"predicate": "biolink:affects",
"object": "NCBIGene:25",
"sources": [{"resource_id": "infores:drugbank", "resource_role": "primary_knowledge_source"}],
"attributes": []
}
}
},
"auxiliary_graphs": {},
"results": [
{
"node_bindings": {"n0": [{"id": "CHEBI:31690"}], "n1": [{"id": "NCBIGene:25"}]},
"analyses": [
{
"resource_id": "infores:arax",
"support_graphs": ["sg-absent"],
"edge_bindings": {"e0": [{"id": "kg-missing-aux"}]}
}
]
}
]
}
}
@@ -0,0 +1,43 @@
---
title: "Missing Publications"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/tests/ncats-arax/fixtures/missing_publications.json
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
author: upstream
validated: false
---
{
"status": "Success",
"schema_version": "1.5.0",
"biolink_version": "4.2.1",
"tool_version": "1.5.4",
"logs": [],
"message": {
"knowledge_graph": {
"nodes": {
"CHEBI:31690": {"name": "imatinib"},
"NCBIGene:25": {"name": "ABL1"}
},
"edges": {
"kg-no-pubs": {
"subject": "CHEBI:31690",
"predicate": "biolink:affects",
"object": "NCBIGene:25",
"sources": [{"resource_id": "infores:drugbank", "resource_role": "primary_knowledge_source"}],
"attributes": [{"attribute_type_id": "biolink:knowledge_level", "value": "knowledge_assertion"}]
}
}
},
"results": [
{
"node_bindings": {"n0": [{"id": "CHEBI:31690"}], "n1": [{"id": "NCBIGene:25"}]},
"analyses": [{"resource_id": "infores:arax", "edge_bindings": {"e0": [{"id": "kg-no-pubs"}]}}]
}
]
}
}
@@ -0,0 +1,25 @@
---
title: "No Results"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/tests/ncats-arax/fixtures/no_results.json
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
author: upstream
validated: false
---
{
"status": "Success",
"schema_version": "1.5.0",
"biolink_version": "4.2.1",
"tool_version": "1.5.4",
"total_results_count": 0,
"logs": [],
"message": {
"knowledge_graph": {"nodes": {}, "edges": {}},
"results": []
}
}
@@ -0,0 +1,41 @@
---
title: "Normalization Response"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/tests/ncats-arax/fixtures/normalization_response.json
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
author: upstream
validated: false
---
{
"ivacaftor": {
"categories": {
"biolink:Drug": 3,
"biolink:SmallMolecule": 2
},
"id": {
"identifier": "CHEBI:66901",
"name": "ivacaftor",
"category": "biolink:SmallMolecule",
"SRI_normalizer_name": "ivacaftor"
},
"knowledge_graph": {},
"nodes": [
{
"identifier": "CHEBI:66901",
"name": "ivacaftor",
"category": "biolink:SmallMolecule"
},
{
"identifier": "PUBCHEM.COMPOUND:16220172",
"name": "Ivacaftor — synonym",
"category": "biolink:SmallMolecule"
}
],
"total_synonyms": 2
}
}
@@ -0,0 +1,131 @@
---
title: "One Hop Provenance"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/tests/ncats-arax/fixtures/one_hop_provenance.json
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
author: upstream
validated: false
---
{
"status": "Success",
"description": "Normal completion",
"schema_version": "1.5.0",
"biolink_version": "4.2.1",
"tool_version": "1.5.4",
"total_results_count": 1,
"logs": [],
"message": {
"query_graph": {
"nodes": {
"n0": {"ids": ["CHEBI:31690"], "categories": ["biolink:SmallMolecule"]},
"n1": {"ids": ["NCBIGene:25"], "categories": ["biolink:Gene"]}
},
"edges": {
"e0": {"subject": "n0", "object": "n1", "predicates": ["biolink:affects"]}
}
},
"knowledge_graph": {
"nodes": {
"CHEBI:31690": {"name": "imatinib methanesulfonate", "categories": ["biolink:SmallMolecule"]},
"NCBIGene:25": {"name": "ABL1", "categories": ["biolink:Gene"]},
"NCBIGene:999": {"name": "Unbound β node", "categories": ["biolink:Gene"]}
},
"edges": {
"kg-e0-primary": {
"subject": "CHEBI:31690",
"predicate": "biolink:affects",
"object": "NCBIGene:25",
"qualifiers": [
{"qualifier_type_id": "biolink:object_aspect_qualifier", "qualifier_value": "activity"},
{"qualifier_type_id": "biolink:object_direction_qualifier", "qualifier_value": "decreased"}
],
"sources": [
{
"resource_id": "infores:drugbank",
"resource_role": "primary_knowledge_source",
"source_record_urls": ["https://example.org/drugbank/one"]
},
{
"resource_id": "infores:rtx-kg2",
"resource_role": "aggregator_knowledge_source",
"upstream_resource_ids": ["infores:drugbank"]
},
{
"resource_id": "infores:arax",
"resource_role": "aggregator_knowledge_source",
"upstream_resource_ids": ["infores:rtx-kg2"]
}
],
"attributes": [
{"attribute_type_id": "biolink:publications", "value": "PMID:100"}
]
},
"kg-e0-secondary": {
"subject": "CHEBI:31690",
"predicate": "biolink:affects",
"object": "NCBIGene:25",
"qualifiers": [
{"qualifier_type_id": "biolink:object_direction_qualifier", "qualifier_value": "decreased"}
],
"sources": [
{"resource_id": "infores:semmeddb", "resource_role": "primary_knowledge_source"},
{"resource_id": "infores:ctd", "resource_role": "supporting_data_source"}
],
"attributes": [
{"attribute_type_id": "biolink:publications", "value": ["PMID:101", "PMID:100"]}
]
},
"kg-e0-tertiary": {
"subject": "CHEBI:31690",
"predicate": "biolink:related_to",
"object": "NCBIGene:25",
"sources": [
{"resource_id": "infores:dgidb", "resource_role": "primary_knowledge_source"}
],
"attributes": []
},
"kg-unbound": {
"subject": "CHEBI:31690",
"predicate": "biolink:related_to",
"object": "NCBIGene:999",
"sources": [],
"attributes": []
}
}
},
"auxiliary_graphs": {
"sg-one": {"edges": ["kg-e0-primary"]}
},
"results": [
{
"description": "ImatinibABL1 candidate",
"node_bindings": {
"n0": [{"id": "CHEBI:31690", "query_id": "CHEBI:31690", "attributes": []}],
"n1": [{"id": "NCBIGene:25", "query_id": "NCBIGene:25", "attributes": []}]
},
"analyses": [
{
"resource_id": "infores:arax",
"score": null,
"support_graphs": ["sg-one"],
"edge_bindings": {
"e0": [{"id": "kg-e0-primary"}, {"id": "kg-e0-secondary"}]
}
},
{
"resource_id": "infores:arax",
"score": null,
"edge_bindings": {
"e0": [{"id": "kg-e0-tertiary"}]
}
}
]
}
]
}
}
@@ -0,0 +1,33 @@
---
title: "Openapi 1 5 Minimal"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/tests/ncats-arax/fixtures/openapi_1_5_minimal.json
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
author: upstream
validated: false
---
{
"openapi": "3.0.1",
"info": {
"title": "ARAX Translator Reasoner - TRAPI 1.5.0",
"version": "1.5.4"
},
"servers": [
{
"url": "/api/arax/v1.4"
}
],
"paths": {
"/entity": {
"get": {}
},
"/query": {
"post": {}
}
}
}
@@ -0,0 +1,48 @@
---
title: "Reversed Edge"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/tests/ncats-arax/fixtures/reversed_edge.json
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
author: upstream
validated: false
---
{
"status": "Success",
"schema_version": "1.5.0",
"biolink_version": "4.2.1",
"tool_version": "1.5.4",
"logs": [],
"message": {
"knowledge_graph": {
"nodes": {
"CHEBI:31690": {"name": "imatinib"},
"NCBIGene:25": {"name": "ABL1"}
},
"edges": {
"kg-reversed": {
"subject": "NCBIGene:25",
"predicate": "biolink:affected_by",
"object": "CHEBI:31690",
"sources": [{"resource_id": "infores:drugbank", "resource_role": "primary_knowledge_source"}],
"attributes": []
}
}
},
"results": [
{
"node_bindings": {
"n0": [{"id": "CHEBI:31690"}],
"n1": [{"id": "NCBIGene:25"}]
},
"analyses": [
{"resource_id": "infores:arax", "score": null, "edge_bindings": {"e0": [{"id": "kg-reversed"}]}}
]
}
]
}
}
@@ -0,0 +1,90 @@
---
title: "Two Hop Provenance"
task: ""
lineage_type: import
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9b1d761c/tests/ncats-arax/fixtures/two_hop_provenance.json
upstream_sha: 9b1d761c
imported_at: 2026-08-09
prompt_class: unknown
upstream_changes: accepted
author: upstream
validated: false
---
{
"status": "Success",
"schema_version": "1.5.0",
"biolink_version": "4.2.1",
"tool_version": "1.5.4",
"total_results_count": 1,
"logs": [],
"message": {
"query_graph": {
"nodes": {
"n0": {"ids": ["CHEBI:66901"], "categories": ["biolink:SmallMolecule"]},
"n1": {"categories": ["biolink:Gene"]},
"n2": {"ids": ["MONDO:0009061"], "categories": ["biolink:Disease"]}
},
"edges": {
"e0": {"subject": "n0", "object": "n1", "predicates": ["biolink:affects"]},
"e1": {"subject": "n1", "object": "n2", "predicates": ["biolink:associated_with"]}
}
},
"knowledge_graph": {
"nodes": {
"CHEBI:66901": {"name": "ivacaftor"},
"NCBIGene:1080": {"name": "CFTR"},
"MONDO:0009061": {"name": "cystic fibrosis"}
},
"edges": {
"kg-drug-gene": {
"subject": "CHEBI:66901",
"predicate": "biolink:affects",
"object": "NCBIGene:1080",
"qualifiers": [
{"qualifier_type_id": "biolink:object_aspect_qualifier", "qualifier_value": "activity"},
{"qualifier_type_id": "biolink:object_direction_qualifier", "qualifier_value": "increased"}
],
"sources": [
{"resource_id": "infores:drugcentral", "resource_role": "primary_knowledge_source"},
{"resource_id": "infores:rtx-kg2", "resource_role": "aggregator_knowledge_source", "upstream_resource_ids": ["infores:drugcentral"]}
],
"attributes": [{"attribute_type_id": "biolink:publications", "value": ["PMID:200"]}]
},
"kg-gene-disease": {
"subject": "NCBIGene:1080",
"predicate": "biolink:gene_associated_with_condition",
"object": "MONDO:0009061",
"sources": [
{"resource_id": "infores:disgenet", "resource_role": "primary_knowledge_source"},
{"resource_id": "infores:arax", "resource_role": "aggregator_knowledge_source", "upstream_resource_ids": ["infores:rtx-kg2"]}
],
"attributes": [{"attribute_type_id": "biolink:publications", "value": "PMID:201"}]
}
}
},
"auxiliary_graphs": {
"sg-two": {"edges": ["kg-drug-gene", "kg-gene-disease"]}
},
"results": [
{
"node_bindings": {
"n0": [{"id": "CHEBI:66901"}],
"n1": [{"id": "NCBIGene:1080"}],
"n2": [{"id": "MONDO:0009061"}]
},
"analyses": [
{
"resource_id": "infores:arax",
"score": null,
"support_graphs": ["sg-two"],
"edge_bindings": {
"e0": [{"id": "kg-drug-gene"}],
"e1": [{"id": "kg-gene-disease"}]
}
}
]
}
]
}
}