This page is auto-rendered from the JSON Schema authored in this repo. Each $def becomes a section below with a stable anchor ID — research notes and Mold bodies can deep-link individual shapes via [[galaxy-tool-summary#SourceRecord]].
Source-of-truth chain:
packages/foundry/src/schemas/galaxy-tool-summary/galaxy-tool-summary.schema.json— the canonical JSON, hand-edited alongside the Mold/cast loop around summarize-galaxy-tool. Mold frontmatter still cites it ascontent/schemas/galaxy-tool-summary.schema.json; cast and Astro resolve that back to the package source.packages/foundry/scripts/sync-schema.mjsruns atprebuild, regenerating the typedgalaxy-tool-summary.schema.generated.tsconst wrapper from the canonical JSON.- Published as part of
@galaxy-foundry/foundry(orphan schema bundled in the unified CLI). Site rendering imports the schema directly from this package viasite/src/lib/schema-registry.ts; the published CLI also shipsfoundry validate-galaxy-tool-summaryfor cast skills and downstream consumers.
At runtime in cast skills: validation should happen through the CLI command:
foundry validate-galaxy-tool-summary manifest.json
Library validation exists for TypeScript consumers, but generated skills should prefer command-shaped validation so failures are easy to reproduce outside the agent runtime.
Why manifest-shaped
This schema describes the deterministic JSON emitted by galaxy-tool-cache summarize <tool_id> --version <ver> from @galaxy-tool-util/cli@1.3.x — not a curated Foundry-flavored summary. The CLI handles the deterministic, side-effect-bearing work (cache lookup, source classification, effect/JSONSchema translation of the parameter bundle); the manifest is the contract Foundry consumers bind to.
The shape:
source— where the cache entry came from (toolshed,galaxy,local,orphan,unknown), with the raw cache-indexlabel, origin URL, and cached-at timestamp.artifacts— filesystem paths to<cache_key>.jsonand (later)<cache_key>.sourceso consumers can reload or pass-through the raw bytes. Local debugging only; not stable across machines.raw_tool_source_pathisnulluntil galaxy-tool-util-ts#82 ships the raw-source storage path.parsed_tool— upstreamParsedToolpayload, owned by@galaxy-tool-util/schema. Validated againstparsedToolSchema; see parsed-tool for the inner shape. The Foundry schema does not duplicate this model.input_schemas— generated JSON Schemas for theworkflow_stepandworkflow_step_linkedrepresentations, suitable for direct binding by[[implement-galaxy-tool-step]]. Either entry isnullwhen generation fails, in which casewarnings[]carries the reason.
Scope and v2 follow-ups
v1 mirrors what galaxy-tool-cache summarize actually emits today. It does not attempt to surface curated requirements, containers, command, or stdio — those fields are not yet on upstream ParsedTool and remain out of scope until Galaxy upstream lands them and @galaxy-tool-util/schema mirrors them. Track:
- galaxy-tool-util-ts#82 — raw
<cache_key>.sourcestorage; flipsartifacts.raw_tool_source_pathfrom always-null to optionally populated. - Galaxy upstream ParsedTool extension (requirements, containers, stdio) — once it lands and is mirrored in
@galaxy-tool-util/schema, theparsed_toolsubtree gains those fields automatically because this schema delegates to upstreamparsedToolSchema.
A v2 of this manifest can layer Foundry-curated fields on top of (not in place of) the upstream parsed_tool, bumping schema_version to 2. Downstream Molds should branch on the integer to stay compatible during the transition.