GA4GH TRS Tool Registry Extractor
Pricing
from $0.35 / 1,000 tool rows
GA4GH TRS Tool Registry Extractor
Point at ANY GA4GH TRS v2 registry (Dockstore, WorkflowHub) and pull tools, workflows, tool classes, versions and CWL/WDL/NFL/GALAXY descriptors into clean flat rows. Auto-pages via next_page, round-trips %2F tool ids, surfaces each version's descriptor types. Pay per tool.
Pricing
from $0.35 / 1,000 tool rows
Rating
0.0
(0)
Developer
Datamule
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Point at any GA4GH TRS (Tool Registry Service) v2 registry and pull its tools, workflows, tool classes, versions and workflow descriptors into clean, flat, tabular rows — one actor for the whole standard, no per-registry scraper.
TRS is the Global Alliance for Genomics & Health standard
for describing and discovering runnable analysis tools and workflows. Registries
like Dockstore and WorkflowHub all expose the same uniform /ga4gh/trs/v2
grammar, so this actor harvests any of them the same way.
What it does
Give it one or more TRS base URLs and a mode:
| Mode | Returns |
|---|---|
tools | One row per tool / workflow (paginated, filterable by name, class, organization, registry, author, checker). |
toolClasses | The registry's tool-class taxonomy (CommandLineTool, Workflow, Notebook, Service…). |
service-info | The registry's identity, TRS spec version and software version. |
tool-versions | One row per version of each tool (all tools, or a given toolId list). |
tool-descriptor | The descriptor file (CWL / WDL / Nextflow / Galaxy / Snakemake) for each version — surfacing whatever types the version actually advertises. |
Every row is normalized to the same flat shape regardless of which registry it
came from, plus a lossless _raw copy of the original record and _source /
_trsName / _registrySoftware provenance.
Verified registries (live)
- Dockstore —
https://dockstore.org/api/ga4gh/trs/v2(2,200+ tools & workflows) - WorkflowHub —
https://workflowhub.eu/ga4gh/trs/v2(1,500+ workflows)
Any other conformant GA4GH TRS v2 endpoint works too — just pass its base URL.
Example input
List workflows on Dockstore:
{"sources": ["https://dockstore.org/api/ga4gh/trs/v2"],"mode": "tools","toolClass": "Workflow","maxRecords": 500}
Pull the CWL/WDL/Nextflow/Galaxy descriptor files for one tool:
{"sources": ["https://dockstore.org/api/ga4gh/trs/v2"],"mode": "tool-descriptor","toolId": ["quay.io/collaboratory/dockstore-tool-bedtools-genomecov"]}
Harvest two registries in one run:
{"sources": ["https://dockstore.org/api/ga4gh/trs/v2","https://workflowhub.eu/ga4gh/trs/v2"],"mode": "tools","maxRecords": 1000}
Output fields
Common: _source, _mode, _trsName, _trsVersion (TRS spec, e.g. 2.0.1),
_apiVersion (registry software version), _registrySoftware, id, name,
description, organization, toolclass, url, aliases, _raw.
Tools add versionsCount, descriptorTypes, has_checker, checker_url.
Versions add toolId, versionId, versionName, authors, imageCount,
containerfile, is_production, verified.
Descriptors add descriptorType, descriptorContent, descriptorUrl,
descriptorContentLength.
How it handles the tricky bits
- Pagination is followed the way each registry advertises it (via the
next_pageresponse header), so it works whether a host counts pages or rows — and every tool is de-duplicated so overlaps never double-emit. - Tool IDs that contain slashes (e.g.
quay.io/org/tool) are URL-encoded correctly for every sub-request. - Descriptor languages are read from each version, never assumed — a Galaxy workflow returns its Galaxy descriptor, a CWL tool returns CWL.
- Honest results only. A registry that errors or times out is skipped with a warning and the run continues; if no source returns anything the run fails loudly instead of emitting an empty success.
Pricing
Pay-per-event: you are charged per tool / row returned. No subscription, no platform-usage surprises — you pay only for the records you actually get, with volume discounts at higher usage tiers.
Auth
The public registries need no authentication. For a private or auth-gated TRS
endpoint, supply a bearerToken (sent as Authorization: Bearer …, never logged)
or arbitrary extraHeaders.