Skill Tracer
Skills › Scientific Agent Skills › ncats-arax

ncats-arax

skill · 192 lines · MIT · skills/ncats-arax/SKILL.md

The facts

Its 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.

The description the agent reads to decide when to use it.

From its settingsline 3

Tools it may use, or may not

allowed-tools: Read Bash

Tools it may use while it runs without asking you first.

From its settingsline 4

Runs scripts

python skills/ncats-arax/scripts/arax_client.py (first 5 of 6 lines)

Scripts the text names. Found by matching words, so treat them as pointers.

Found by matching wordsline 52 line 65 line 81 line 101 line 124

Files it mentions

references/query-contract.md, references/output-schema.md

Files the text names, such as ones to read or write. Found by matching words, so treat them as pointers.

Found by matching wordsline 19 line 20

Licence

MIT, from the skill file

The terms its author shares it under, which let it be shown here.

From its settingsline 5 licence text

Other settings

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.2" last-reviewed: "2026-09-30" skill-author: neuroepithelial

More settings at the top of the file, shown as written.

From its settingsline 6 line 7
Other files in this skill (3) Close

The text

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1---
2name: ncats-arax
3description: 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.
4allowed-tools: Read Bash
5license: MIT
6compatibility: 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.
7metadata:
8 version: "1.2"
9 last-reviewed: "2026-09-30"
10 skill-author: neuroepithelial
11---
13# NCATS ARAX
15Use ARAX as a constrained knowledge-graph lookup service. Submit reviewed CURIEs and explicit
16Biolink types, preserve the exact TRAPI exchange, inspect query-edge bindings and provenance, and
17treat every returned path as a candidate for subsequent verification.
19Read [query-contract.md](references/query-contract.md) before constructing a query. Read
20[output-schema.md](references/output-schema.md) when interpreting saved artifacts, warnings,
21provenance, or partial results.

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 before constructing a query. Read output-schema.md when interpreting saved artifacts, warnings, provenance, or partial results.

Raw lines 1 to 22
23## Safety boundary
25- Use only public, nonsensitive research questions. ARAX status facilities may expose query and
26 caller metadata even when `store=false` is requested.
27- Do not submit patient information, confidential research questions, unpublished compound
28 programs, or proprietary target hypotheses.
29- Do not present a returned path as a validated mechanism or clinical recommendation.
30- Report a zero as "not returned under these constraints," never as evidence that no relationship
31 exists.
32- Describe position as unscored response order, never rank.
33- Verify important candidates with literature and authoritative databases separately.

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.
Raw lines 23 to 34
35## Workflow
371. Normalize free text separately, then review and report the proposed CURIE and category.
382. Choose a typed one-hop query or an exactly two-hop query with both endpoints pinned.
393. Use default RTX-KG2 lookup unless the user explicitly names two to five providers.
404. Acknowledge that the biomedical query is public and choose a new or empty output directory.
415. Run the client once. Do not silently change provider selection or expansion order after a
42 failure or empty result.
436. Inspect `summary.json` for bounded bindings and provenance and `response.json` for the exact
44 TRAPI payload.
457. Verify scientifically important paths outside ARAX.

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.
Raw lines 35 to 46
47## Preflight
49Check the production OpenAPI without making a biomedical query:
51```bash
52python skills/ncats-arax/scripts/arax_client.py preflight
53```
55The client verifies that the service identifies itself as ARAX, exposes `POST /query` and
56`GET /entity`, and reports a supported TRAPI version. It reads `info.x-trapi.version`, falling back
57to the title for older OpenAPI documents. A nonproduction endpoint or untested TRAPI series
58requires an explicit override; neither override changes the fixed query shapes or operations.

Preflight

Check the production OpenAPI without making a biomedical query:

python skills/ncats-arax/scripts/arax_client.py preflight

The client verifies that the service identifies itself as ARAX, exposes POST /query and GET /entity, and reports a supported TRAPI version. It reads info.x-trapi.version, falling back to the title for older OpenAPI documents. A nonproduction endpoint or untested TRAPI series requires an explicit override; neither override changes the fixed query shapes or operations.

Raw lines 47 to 59
Runs code python skills/ncats-arax/scripts/arax_client.py :52
60## Normalize an entity
62Normalization is review-only and never triggers a graph query:
64```bash
65python skills/ncats-arax/scripts/arax_client.py normalize "ivacaftor" \
66 --expected-category biolink:SmallMolecule \
67 --max-synonyms 10 \
68 --acknowledge-public-query \
69 --output-dir outputs/normalize-ivacaftor
70```
72Review the canonical identifier, name, category, and synonym preview before using a CURIE. Report
73all CURIEs and categories regardless of query outcome. A category warning or zero result is a
74reason to curate the identifier, not to chain automatically to `/query`.

Normalize an entity

Normalization is review-only and never triggers a graph query:

python skills/ncats-arax/scripts/arax_client.py normalize "ivacaftor" \
  --expected-category biolink:SmallMolecule \
  --max-synonyms 10 \
  --acknowledge-public-query \
  --output-dir outputs/normalize-ivacaftor

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.

Raw lines 60 to 75
Runs code python skills/ncats-arax/scripts/arax_client.py :65
76## One-hop lookup
78Pin at least one endpoint and type both nodes:
80```bash
81python skills/ncats-arax/scripts/arax_client.py one-hop \
82 --subject-id CHEBI:31690 \
83 --subject-category biolink:SmallMolecule \
84 --predicate biolink:affects \
85 --object-id NCBIGene:25 \
86 --object-category biolink:Gene \
87 --qualifier biolink:object_aspect_qualifier=activity_or_abundance \
88 --qualifier biolink:object_direction_qualifier=decreased \
89 --acknowledge-public-query \
90 --output-dir outputs/imatinib-abl1
91```
93Lookup mode is the default and fixes expansion to `infores:rtx-kg2`. It defaults to 20 results.
94Use `--result-limit N` to request 1-50 results; 50 is the hard cap in either mode.

One-hop lookup

Pin at least one endpoint and type both nodes:

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.

Raw lines 76 to 95
Runs code python skills/ncats-arax/scripts/arax_client.py :81
96## Endpoint-pinned two-hop lookup
98Use exactly one typed, unpinned intermediate node:
100```bash
101python skills/ncats-arax/scripts/arax_client.py two-hop \
102 --subject-id CHEBI:66901 \
103 --subject-category biolink:SmallMolecule \
104 --predicate-1 biolink:affects \
105 --intermediate-category biolink:Gene \
106 --predicate-2 biolink:associated_with \
107 --object-id MONDO:0009061 \
108 --object-category biolink:Disease \
109 --qualifier-1 biolink:object_aspect_qualifier=activity_or_abundance \
110 --qualifier-1 biolink:object_direction_qualifier=increased \
111 --expand-order right-first \
112 --acknowledge-public-query \
113 --output-dir outputs/ivacaftor-cystic-fibrosis
114```
116Right-first expansion is the default. If an empty result merits another attempt, run a new query
117explicitly with `--expand-order left-first` and keep the runs separate.

Endpoint-pinned two-hop lookup

Use exactly one typed, unpinned intermediate node:

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.

Raw lines 96 to 118
Runs code python skills/ncats-arax/scripts/arax_client.py :101
119## Selected-provider federation
121Federation is explicit and accepts two to five named providers:
123```bash
124python skills/ncats-arax/scripts/arax_client.py one-hop \
125 --subject-id CHEBI:31690 \
126 --subject-category biolink:SmallMolecule \
127 --predicate biolink:affects \
128 --object-id NCBIGene:25 \
129 --object-category biolink:Gene \
130 --mode federated \
131 --kp infores:rtx-kg2 \
132 --kp infores:molepro \
133 --acknowledge-public-query \
134 --output-dir outputs/federated-imatinib-abl1
135```
137Federation defaults to the hard maximum of 50 results. Provider errors may coexist with useful
138results; such a run exits 7 after retaining its artifacts and is marked partial. The same applies
139to a failed provider in lookup mode. An explicit non-success ARAX response status exits 6 with
140the raw response retained; it must not be reported as a successful zero-result query.

Selected-provider federation

Federation is explicit and accepts two to five named providers:

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. The same applies to a failed provider in lookup mode. An explicit non-success ARAX response status exits 6 with the raw response retained; it must not be reported as a successful zero-result query.

Raw lines 119 to 141
Runs code python skills/ncats-arax/scripts/arax_client.py :124
142## Inspect saved provenance
144Rebuild a bounded summary without network access:
146```bash
147python skills/ncats-arax/scripts/arax_client.py summarize \
148 --request outputs/ivacaftor-cystic-fibrosis/request.json \
149 --response outputs/ivacaftor-cystic-fibrosis/response.json \
150 --format text
151```
153The inspector accepts only the same constrained request shapes and fixed operations that the live
154commands generate. Use `--format json` for the normalized view on standard output.

Inspect saved provenance

Rebuild a bounded summary without network access:

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.

Raw lines 142 to 155
Runs code python skills/ncats-arax/scripts/arax_client.py :147
156## Interpret results
158- Follow each analysis's query-edge bindings; do not summarize every knowledge-graph edge.
159- Preserve the physical edge subject, predicate, object, and qualifier values returned by ARAX.
160 Returned predicates or qualifier aspects may be more specific than the query constraint.
161- Inspect all source objects, including primary, aggregator, supporting-data, upstream-resource,
162 and source-record URL fields.
163- Trace aggregator edges to their primary/upstream sources and publications before claiming
164 corroboration. Multiple providers can redistribute the same record; report distinct primary
165 evidence, not provider count as confidence or independent replication.
166- Treat `publication_availability: not_returned` as missing metadata, not evidence that no
167 publications exist.
168- Treat missing auxiliary-graph references and provider failures as explicit warnings.
169- Consult the raw response whenever the bounded summary omits detail or the service response is
170 partial, unfamiliar, or scientifically surprising.

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.
  • Trace aggregator edges to their primary/upstream sources and publications before claiming corroboration. Multiple providers can redistribute the same record; report distinct primary evidence, not provider count as confidence or independent replication.
  • 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.
Raw lines 156 to 171
172## Deliberate exclusions
174The client has no raw-query, workflow, operation, overlay, ranking, inference, link-prediction,
175Pathfinder, ARS, batch, all-provider, three-hop, cache, daemon, SDK, MCP, or
176natural-language-to-TRAPI surface. Do not work around those limits with direct HTTP calls under
177this skill.

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.

Raw lines 172 to 178
Uses an outside tool MCP :175
179## Official references
181Reviewed on 2026-09-30 against production ARAX 1.5.4 / TRAPI 1.5.0 (the URL still contains `v1.4`).
182Live public smoke tests passed for preflight, normalization, qualified one-hop and endpoint-pinned
183two-hop lookups, and RTX-KG2/MolePro federation. Results and provider availability can change.
184The official introductory guide contains older response examples; use the deployed schema and
185current ARAX source for field and operation contracts. No Python SDK is used by this client.
187- [ARAX documentation](https://ncatstranslator.github.io/TranslatorTechnicalDocumentation/architecture/ara/arax/)
188- [ARAX production OpenAPI](https://arax.transltr.io/api/arax/v1.4/openapi.json)
189- [ARAXi operation documentation](https://github.com/RTXteam/RTX/blob/master/code/ARAX/Documentation/DSL_Documentation.md)
190- [ARAX query execution and scoreless resultification](https://github.com/RTXteam/RTX/blob/master/code/ARAX/ARAXQuery/ARAX_query.py)
191- [Translator Reasoner API](https://github.com/NCATSTranslator/ReasonerAPI)
192- [Biolink Model](https://biolink.github.io/biolink-model/)

Official references

Reviewed on 2026-09-30 against production ARAX 1.5.4 / TRAPI 1.5.0 (the URL still contains v1.4). Live public smoke tests passed for preflight, normalization, qualified one-hop and endpoint-pinned two-hop lookups, and RTX-KG2/MolePro federation. Results and provider availability can change. The official introductory guide contains older response examples; use the deployed schema and current ARAX source for field and operation contracts. No Python SDK is used by this client.

Raw lines 179 to 192

From K-Dense-AI/scientific-agent-skills at 5f2bc03, 2026-10-26. Not read by a model yet. Summary and techniques by Claude Opus 5.5 on 2026-11-06.