Skip to main content
Glama
jbwod

CASDA MCP Server

by jbwod

CASDA MCP Server

MCP Badge

casda-mcp is a conservative Model Context Protocol server for the CSIRO ASKAP Science Data Archive (CASDA). It converts an AI client's structured selections into explicit, auditable archive operations. The server does not interpret unrestricted natural language or expose URL-fetching, shell, or filesystem browsing tools. Advanced ADQL is optional and flag-gated (CASDA_ENABLE_ADVANCED_ADQL).

The supported workflow is:

  1. Discover archive status, schemas, and VO holdings (VOSI, SIA/SCS/SSA, projects, events).

  2. Search bounded CASDA ObsCore metadata or run validated advanced ADQL when enabled.

  3. Inspect one product, ASKAP scheduling block, project, or collection.

  4. Select explicit product identifiers.

  5. Optionally submit authenticated SODA/UWS full-file, cutout, or spectrum jobs.

  6. Check that request with a separate, single status call (casda_get_data_job / staging alias).

  7. Optionally download archive-confirmed files into a restricted directory.

  8. Create a reproducible JSON manifest with collection metadata.

Search and metadata inspection are enabled by default. Staging, downloads, and advanced ADQL are disabled by default and require separate administrator configuration.

Status and confirmed interfaces

The implementation uses these CASDA interfaces:

  • TAP 1.0/ADQL (sync and async) with VOSI availability/capabilities and TAP_SCHEMA discovery;

  • SIA 2, SIA 1 (+ surveys), SCS catalogue cone search, and SSA spectrum discovery;

  • public observation events feed;

  • Datalink 1.1 VOTables for authenticated SODA service and opaque product-token discovery;

  • asynchronous SODA/UWS jobs for full-file staging, cutouts, spectrum generation, and one-shot status;

  • archive result URLs and checksum sidecars for streamed downloads.

Public metadata paths were validated live on 18 July 2026. Optional -m live tests exercise read-only discovery when CASDA_RUN_LIVE_TESTS=true. Authenticated staging, cutout, and downloads are covered by mocked protocol tests and are never run by default live gates.

The dated CASDA capability matrix maps the complete public and authenticated protocol surface, implementation status, remaining upstream/DAP boundaries, and MCP contract requirements.

Related MCP server: Cassini Mission Plan MCP

Requirements

  • Python 3.10 or newer

  • uv for the documented locked setup

  • Network access to the configured CASDA endpoints

  • An OPAL account only for staging operations

Installation

git clone <repository-url> casda-mcp
cd casda-mcp
uv sync --frozen --extra dev

Run the server over stdio:

uv run casda-mcp

Run the Streamable HTTP transport on loopback:

uv run casda-mcp --transport streamable-http --host 127.0.0.1 --port 8000

The MCP endpoint is http://127.0.0.1:8000/mcp. Non-sensitive probes:

  • http://127.0.0.1:8000/healthz — process liveness

  • http://127.0.0.1:8000/readyz — readiness using last-known archive availability (never blocks on a live CASDA call)

MCP client configuration

For a stdio client, adjust the absolute project path:

{
  "mcpServers": {
    "casda": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/casda-mcp",
        "run",
        "casda-mcp"
      ],
      "env": {
        "CASDA_ENABLE_STAGING": "false",
        "CASDA_ENABLE_DOWNLOADS": "false"
      }
    }
  }
}

Codex CLI can register the same stdio command:

codex mcp add casda \
  --env CASDA_ENABLE_STAGING=false \
  --env CASDA_ENABLE_DOWNLOADS=false \
  -- uv --directory /absolute/path/to/casda-mcp run casda-mcp

Equivalent Codex config.toml:

[mcp_servers.casda]
command = "uv"
args = ["--directory", "/absolute/path/to/casda-mcp", "run", "casda-mcp"]

[mcp_servers.casda.env]
CASDA_ENABLE_STAGING = "false"
CASDA_ENABLE_DOWNLOADS = "false"

ChatGPT desktop and IDE MCP settings accept either the same STDIO command or the Streamable HTTP URL. Restart the client after adding the server. See the current ChatGPT MCP configuration guide.

Configuration

Configuration is loaded from environment variables and validated at startup. Invalid state-changing configuration fails fast.

Variable

Default

Purpose and security effect

CASDA_BASE_URL

https://casda.csiro.au

CASDA base host; HTTPS and no embedded credentials required.

CASDA_TAP_URL

CASDA TAP sync URL

Fixed metadata query endpoint. Tool callers cannot override it.

CASDA_TAP_ASYNC_URL

CASDA TAP async URL

Fixed async TAP/UWS endpoint for advanced ADQL jobs.

CASDA_DATALINK_URL

CASDA proxy Datalink URL

Establishes an allowed CASDA host; product Datalink URLs still come from TAP.

CASDA_SODA_URL

CASDA async SODA URL

Establishes the allowed staging host and documents the expected service.

CASDA_LOGIN_URL

CASDA proxy TAP availability URL

Safe credential verification endpoint.

CASDA_SIA1_URL

CASDA SIA 1 query URL

Legacy survey image discovery.

CASDA_SIA1_SURVEYS_URL

CASDA SIA 1 surveys URL

Survey inventory.

CASDA_SIA2_URL

CASDA SIA 2 query URL

Multidimensional image/cube discovery.

CASDA_SCS_BASE_URL

CASDA SCS base URL

Catalogue cone-search base (/{short_name} appended).

CASDA_SSA_URL

CASDA SSA query URL

Spectrum discovery.

CASDA_EVENTS_URL

CASDA observation events URL

Public lifecycle/event feed.

CASDA_USERNAME

unset

OPAL username. Required with CASDA_PASSWORD for staging.

CASDA_PASSWORD

unset

OPAL password. Stored as a secret value and never logged.

CASDA_ENABLE_STAGING

false

Enables archive-side full-file, Pawsey, cutout, and spectrum job creation when OPAL credentials are complete. Pawsey pull is distinct from WEB download staging.

CASDA_ENABLE_DOWNLOADS

false

Enables local file writes.

CASDA_ENABLE_ADVANCED_ADQL

false

Enables casda_tap_query / async TAP submit after SELECT-only validation.

CASDA_ENABLE_DOI_RESOLVE

true

Enables public read-only DOI resolve via DataCite/doi.org (no minting).

CASDA_DOWNLOAD_DIR

unset

Required absolute, dedicated containment directory when downloads are enabled; filesystem roots are rejected, including through symlinks.

CASDA_ALLOW_OVERWRITE

false

Allows atomic replacement of an existing destination. Keep false normally.

CASDA_MAX_RESULTS

100

Maximum bounded search window, up to a hard limit of 1000.

CASDA_MAX_CONE_RADIUS_DEG

5

Maximum cone radius in degrees.

CASDA_MAX_STAGE_PRODUCTS

20

Maximum deduplicated products in one staging request.

CASDA_MAX_STAGE_BYTES

107374182400

Maximum summed estimated staging size in bytes.

CASDA_ALLOW_UNKNOWN_STAGE_SIZE

false

If false, products without estimated sizes cannot be staged.

CASDA_MAX_MANIFEST_PRODUCTS

100

Maximum deduplicated products in one manifest.

CASDA_MAX_DOWNLOAD_BYTES

53687091200

Maximum archive-reported and streamed bytes for one download.

CASDA_MAX_RESPONSE_BYTES

16777216

Maximum decoded bytes buffered from one metadata or control response (validated from 1 KiB to 100 MiB).

CASDA_REQUEST_TIMEOUT_SECONDS

30

Metadata and control-request timeout.

CASDA_DOWNLOAD_TIMEOUT_SECONDS

300

Timeout used for a download response.

CASDA_MAX_RETRIES

3

Retries for safe reads only, with exponential backoff, jitter, and Retry-After.

CASDA_CACHE_TTL_SECONDS

60

Read-only metadata cache TTL; zero disables caching.

CASDA_CACHE_MAX_ENTRIES

256

Process-local cache bound; zero disables caching.

CASDA_STATE_DB

unset

Optional SQLite state file, forced to owner-only mode (0600) on POSIX. Default state is process-local memory.

Copy .env.example to .env for local development; it is loaded automatically and ignored by Git. Do not commit a populated .env file. Production deployments should inject secrets instead.

Enabling staging

export CASDA_USERNAME='researcher@example.edu.au'
export CASDA_PASSWORD='use-a-secret-provider-in-production'
export CASDA_ENABLE_STAGING=true
uv run casda-mcp

Use the process environment, an OS credential provider that injects environment variables, or a deployment secret store. Do not put credentials in command-line arguments. The implementation uses the OPAL HTTP Basic authentication behavior confirmed by Astroquery's CASDA client.

Enabling downloads

export CASDA_ENABLE_DOWNLOADS=true
export CASDA_DOWNLOAD_DIR=/srv/casda-downloads
export CASDA_MAX_DOWNLOAD_BYTES=10737418240
uv run casda-mcp

The directory must be absolute, dedicated to CASDA downloads, and cannot resolve to a filesystem root. On POSIX it must be owned by the server account and not group- or world-writable; equivalent ACL isolation is an operator responsibility on Windows. Its canonical location and inode identity are recorded once writes begin and rechecked before path mutations; non-sticky writable ancestors are rejected on POSIX. Caller destinations are checked for containment, symlink traversal, reserved internal names, and portable filename safety. Each target is reserved in a private, hash-named .casda-mcp/locks directory before any archive request. Files are streamed as identity-encoded raw bytes through a descriptor bound to the original temporary inode, then published atomically after length and optional checksum verification. With overwrite disabled, the destination filesystem must support same-directory hard links for atomic no-clobber publication. Incomplete files and normal reservations are removed after failure.

Tools

Successful tool responses carry operation-specific data and provenance. Failures use protocol-level ToolError / isError rather than a successful envelope with an error field. Provenance contains the server version, archive, timestamps, deterministic query identifier, sanitised endpoint, parameters, result count, cache status, and correlation identifier. Credentials and URL query strings are not included.

Discovery and job tools beyond the core ObsCore path include:

Group

Tools

Archive / TAP_SCHEMA

casda_get_archive_status, casda_list_capabilities, casda_list_schemas, casda_list_tables, casda_describe_table, casda_list_foreign_keys

VO search

casda_search_images, casda_list_image_surveys, casda_search_survey_images, casda_list_catalogues, casda_search_catalogue, casda_search_spectra

Projects / events / DOI / DAP

casda_search_projects, casda_get_project, casda_get_collection, casda_resolve_collection_doi, casda_get_dap_navigation, casda_list_events

Advanced ADQL

casda_build_adql, casda_validate_adql, casda_tap_query, casda_submit_tap_query, casda_get_tap_job, casda_get_tap_results, casda_abort_tap_job, casda_delete_tap_job

DataLink / jobs

casda_get_auth_status, casda_get_datalink, casda_stage_pawsey, casda_create_cutout, casda_create_spectrum, casda_get_data_job, casda_get_data_job_results, casda_abort_data_job, casda_delete_data_job, casda_download_job_results, casda_verify_file

The full name inventory is asserted in tests/test_contract.py.

casda_search_products

Read-only bounded product discovery. Supported filters are exact source/target name, ICRS position and radius in degrees, OPAL project code, ASKAP SBID, overlapping ISO 8601 observation dates, overlapping frequencies in hertz, exact collection, facility/instrument names, and these allowlisted product types:

image, cube, visibility, spectrum, catalogue, weight, moment_map, cubelet, evaluation, scan.

It supports bounded pagination (page or opaque cursor) and allowlisted sorting. It does not resolve astronomical names, stage, or download. Caller-supplied ADQL belongs on the flag-gated advanced tools, not this helper.

{
  "ra_deg": 333.8,
  "dec_deg": -46.0,
  "radius_deg": 0.05,
  "project_code": "AS102",
  "product_types": ["cube", "weight", "moment_map"],
  "released_only": true,
  "page": 1,
  "page_size": 20
}

casda_get_product

Read-only complete supported ObsCore metadata for one exact obs_publisher_did.

{"product_id": "cube-1170"}

The response retains raw archive identifiers, nulls, units in field names, spatial footprint, spectral coverage converted to hertz, estimated byte size, SBID when encoded as ASKAP-<sbid>, project code where the collection maps to casda.project.short_name, release state, and quality.

casda_get_observation

Read-only ASKAP observation lookup with related projects and a bounded product list.

{"scheduling_block_id": 2338}

casda_stage_products

Creates and starts one archive-side asynchronous SODA/UWS request. It requires staging to be enabled and OPAL credentials to be present. Empty requests are rejected, identifiers are normalised and deduplicated, count and total estimated size are bounded, and missing sizes are rejected by default.

{
  "product_ids": ["cube-1170", "cube-1171"],
  "idempotency_key": "wallaby-run-2026-07-12",
  "allow_duplicate": false
}

The output includes the archive request ID, effective idempotency key, confirmed phase, submission time, and per-product state. A reused idempotency key with different products is an error. An active request for the same product set is returned rather than duplicated unless the caller uses a new key and explicitly sets allow_duplicate.

The non-idempotent archive creation and start requests are never automatically retried.

casda_stage_pawsey

Creates and starts one Pawsey pull staging job via the DataLink pawsey_async_service descriptor. Requires the same CASDA_ENABLE_STAGING flag and OPAL credentials as WEB full-file staging, but results are Pawsey-network restricted. The response includes human_gate_warnings: a Pawsey HPC account is required, and licence/account confirmation must be completed by a human in the DAP — this server never auto-accepts terms. Reuse casda_get_data_job / download tools for lifecycle.

casda_resolve_collection_doi

Read-only public citation resolve. Provide exactly one of doi, collection, or project_code. DOIs are fetched from DataCite JSON with a doi.org CSL-JSON fallback on allowlisted hosts only. Collection/project lookups never invent a DOI; when archive metadata has none, the tool returns found=false plus a DAP search navigation URL. CSIRO DAP DOIs typically use prefix 10.25919 (is_csiro_dap). Never mints DOIs.

casda_get_dap_navigation

Constructs documented DAP deep links (Observation Search, Skymap, search hints) without scraping HTML. Privileged action values such as accept_licence, mint_doi, or launch_carta return structured unsupported_actions only — never HTTP mutation.

casda_get_staging_status

Performs exactly one uncached UWS status read:

{"request_id": "archive-job-id"}

It returns the overall archive phase, expiry, archive failure reason, per-product state, and whether every product has a confirmed matching result URL. Active phases advise the caller to make another tool call later; no background polling is claimed or scheduled.

casda_download_product

Downloads one product only after a completed status read recorded a matching archive result URL:

{
  "product_id": "cube-1170",
  "destination": "wallaby/cube-1170.fits",
  "verify_checksum": true
}

The result includes the confirmed local path, actual bytes, Content-Length verification, checksum result, whether a Range retry resumed within this call, staging request ID, and provenance. A local path is never returned before the final file exists. The server does not expose a deletion tool.

casda_create_cutout / casda_create_spectrum

Authenticated SODA jobs (require staging enabled + OPAL). Supply CIRCLE / POLYGON / BAND / CHANNEL / POL / COORD as documented by CASDA DataLink descriptors. Monitor with casda_get_data_job, then download via casda_download_product or casda_download_job_results.

casda_create_manifest

Creates and retains a schema-versioned JSON manifest in server state:

{
  "product_ids": ["cube-1170", "catalogue-10"],
  "source_name": "WALLABY J2214-4600",
  "workflow_name": "spectral-line-analysis",
  "include_download_urls": false
}

The manifest includes a deterministic SHA-256 identifier, creation time, full typed product metadata, filenames, estimated file sizes, available checksums, SBIDs, project codes, types, spatial and spectral metadata, access state, collection metadata (obs_collection, facility_name, release span), known originating search criteria, provenance, and server version. Archive artifact URLs are never persisted in manifests because opaque paths may be short-lived bearer credentials even when they contain no query string. Use casda_resolve_collection_doi for public citation metadata.

Resources

The server exposes read-only resources:

  • casda://products/{product_id}

  • casda://observations/{scheduling_block_id}

  • casda://staging/{request_id}

  • casda://events/{event_id}

  • casda://manifests/{manifest_id}

  • casda://archive/status

  • casda://archive/capabilities

  • casda://dap/navigation

  • casda://server/status

  • casda://skills (JSON index of packaged agent skills)

  • casda://skills/{skill_name} (raw SKILL.md markdown)

Resources do not expose credentials, raw local state files, unrestricted filesystem content, or URL query strings. The staging resource performs one current status read, like the tool.

Prompts

Registered MCP prompts guide safe workflows:

Prompt

Purpose

find-and-inspect-products

Bounded search, then inspect selected products or ASKAP observations

query-tables

list_schemaslist_tablesdescribe_table

run-adql

Validate then tap_query / submit (requires CASDA_ENABLE_ADVANCED_ADQL)

query-catalogue

casda_list_catalogues / casda_search_catalogue, with ObsCore catalogue fallback

stage-and-download

Stage explicit IDs (WEB or Pawsey), one-shot status checks, guarded download

make-cutout

casda_create_cutoutcasda_get_data_job → download

build-reproducible-selection

Create a manifest without persisting artifact URLs

monitor-releases

Release fields via search/get_product; casda_list_events when useful

dap-navigate

Safe DAP deep links; structured refusal of privileged automation

Agent skills

Canonical skill files live under src/casda_mcp/skills/ and ship in the package:

  • casda-safe-archive-access

  • casda-find-and-inspect

  • casda-stage-and-download

  • casda-reproducible-manifest

The same files are mirrored under .cursor/skills/ for Cursor project discovery. MCP clients can read them through casda://skills and casda://skills/{skill_name}.

Example workflows

Search and inspect

  1. Call casda_search_products with explicit bounded criteria.

  2. Present the candidates and stable product identifiers to the researcher.

  3. Call casda_get_product only for selected identifiers.

  4. Explain access_state and authorisation_state without claiming access that CASDA has not confirmed.

Search by WALLABY source

  1. Resolve the source name to coordinates in the AI client or a separately trusted resolver.

  2. Call casda_search_products with the explicit coordinates, radius, project_code: "AS102", and required product types.

  3. Inspect candidates, including SBID, collection, footprint, spectral range, and file size.

  4. Call casda_create_manifest for the explicit selection.

The generic model can represent WALLABY identifiers present in target_name, project code, SBID, footprint, cube/weight/catalogue/spectrum/moment-map subtypes, channels, spatial metadata, size, and access state. No wallaby_find_source_products tool is included because a stable, complete source selection rule has not been established. WALLABY-specific rules should remain a future adapter.

Stage and download

  1. Inspect the selected product and size.

  2. Call casda_stage_products for WEB download staging, or casda_stage_pawsey for Pawsey pull (read human_gate_warnings; complete licence/HPC confirmation as a human in the DAP).

  3. Later, call casda_get_staging_status or casda_get_data_job; do not assume automatic polling.

  4. Only after products are ready, call casda_download_product (Pawsey results are network-restricted).

  5. Check returned length and checksum fields.

Cutout

  1. Enable staging and configure OPAL credentials.

  2. Call casda_create_cutout with an explicit product_id and SODA constraints (for example circle).

  3. Poll with casda_get_data_job.

  4. Download with casda_download_product or casda_download_job_results when downloads are enabled.

Advanced ADQL

  1. Set CASDA_ENABLE_ADVANCED_ADQL=true.

  2. Prefer casda_build_adql or carefully drafted SELECT-only ADQL.

  3. Call casda_validate_adql, then casda_tap_query or casda_submit_tap_query.

  4. Prefer casda_search_products / VO discovery tools when allowlisted filters suffice.

Reproducible workflow manifest

  1. Search with explicit criteria.

  2. Select identifiers.

  3. Inspect full metadata.

  4. Call casda_create_manifest.

  5. Read the result later through casda://manifests/{manifest_id} when persistent state is enabled.

Security model

  • Tool input is untrusted and validated before query construction.

  • TAP table names, selected columns, product-type clauses, sort fields, and operators are hard-coded allowlists.

  • Text wildcards and control characters are rejected; identifiers use restrictive patterns.

  • Cone, result, page, staging, manifest, decoded archive response, and download sizes are bounded.

  • Only configured HTTPS CASDA hosts and current CASDA-controlled Pawsey download hosts are allowed. Redirect destinations are revalidated before they are followed.

  • Safe metadata reads may retry; staging creation/start never automatically retry.

  • OPAL credentials use environment/secret injection and are excluded from logs, provenance, and exceptions.

  • Structured logs go to stderr so stdio JSON-RPC is not corrupted.

  • Cache keys include the complete generated query and bound; authentication failures are not cached.

  • Staging status is never cached.

  • Streamable HTTP binds to loopback by default and has no built-in client authentication. Put a production remote deployment behind TLS and an authenticating reverse proxy or MCP authorization layer. Do not expose it directly when staging, credentials, or downloads are enabled.

  • Principal isolation is process-scoped: credentials, authorization results, job state, ready URLs, caches, and manifests are not multiplexed safely across remote users in one process. For remote multi-user deployments, run one process per principal (or an equivalent front end that never shares a process across principals).

  • CASDA_STATE_DB may contain short-lived signed URLs needed to resume status/download workflows. The server rejects symlink/non-file targets and forces owner-only file permissions on POSIX; deployments should additionally use an owner-controlled directory and encrypted storage. In-memory state is the default.

See SECURITY.md for the threat model and reporting guidance.

Architecture

MCP client
  -> typed FastMCP tools/resources/prompts
  -> CasdaService (validation, limits, idempotency, provenance)
  -> QueryBuilder / adql / vosi / cursor / parsers / TTL cache / StateStore
  -> CasdaClient (pooled HTTP, retries, host validation, OPAL auth)
  -> CASDA TAP | VOSI | SIA/SCS/SSA | events | Datalink | SODA/UWS | staged file endpoint

The modules are deliberately separated so CASDA protocol behavior does not depend on a particular AI client. See docs/architecture.md for component and sequence details. See docs/casda-capability-matrix.md for protocol coverage and the implementation roadmap.

Testing and validation

Run the default offline suite:

uv run pytest -m "not live" --cov=casda_mcp --cov-report=term-missing
uv run ruff format --check .
uv run ruff check .
uv run mypy src
uv build

The tests cover validation, coordinates, cone limits, dates, frequencies, identifiers, safe ADQL, pagination, CSV/VOTable/UWS parsing, redaction, caching, error mapping, idempotency, partial staging, path traversal, overwrite prevention, streamed byte limits, checksum mismatch cleanup, Range resume, manifest determinism, MCP schemas, resources, health, and mocked end-to-end HTTP behavior.

Optional live tests are read-only discovery checks and disabled by default:

CASDA_RUN_LIVE_TESTS=true uv run pytest -m live -v

They cover VOSI availability/capabilities, a small TAP sync query, schema listing, SIA 2 cone, SIA 1 surveys, catalogue inventory, and the events feed. They never stage, download, or create cutouts. CI does not require credentials.

Container

Build and run the default read-only HTTP server:

docker build -t casda-mcp .
docker run --rm -p 127.0.0.1:8000:8000 casda-mcp

The image runs as a non-root user and checks /healthz. Mount a dedicated directory and inject secrets only when explicitly enabling downloads or staging.

Troubleshooting

  • No products: remove filters deliberately, check the exact target/collection name, and keep the radius explicit. The server will not silently broaden the request.

  • ARCHIVE_QUERY_ERROR: CASDA rejected the generated bounded query. Record the correlation and query IDs; no stack trace or credentials are exposed to the client.

  • AUTHENTICATION_REQUIRED / AUTHENTICATION_FAILED: configure both OPAL variables and verify the account at the OPAL site. Metadata search itself does not require login.

  • STAGING_DISABLED / DOWNLOADS_DISABLED: these are safe defaults, not archive failures.

  • STAGING_REQUEST_NOT_FOUND: in-memory state was lost after restart or the ID came from another instance. Configure CASDA_STATE_DB before submission when restart persistence is required.

  • PRODUCT_NOT_READY: run a current status check for the original request. The server will not infer readiness from elapsed time.

  • UNSAFE_ARCHIVE_URL: CASDA returned a host outside the configured allowlist. Do not bypass this check without verifying a documented archive migration.

  • Repeated stale metadata: reduce/disable the short cache or restart; staging status bypasses it.

  • HTTP works but remote access should not: the default bind is loopback. Remote exposure requires an explicit host plus a secure front end.

Known limitations

  • Authenticated staging, cutout, spectrum, and file download behavior is protocol-tested with mocks; default live tests never exercise those paths.

  • ASKAP SBID product relationships use the confirmed ObsCore obs_id = 'ASKAP-<sbid>' convention.

  • Project codes are joined where ivoa.obscore.obs_collection matches casda.project.short_name; CASDA does not expose a direct generic project foreign key in ObsCore.

  • CASDA's current ADQL service does not support CURRENT_TIMESTAMP; public-only search retrieves the configured bounded window and removes future release dates locally.

  • Advanced ADQL remains SELECT-only, length/row bounded, and disabled until CASDA_ENABLE_ADVANCED_ADQL=true.

  • UWS reports an overall job phase. A product is marked individually ready only when a completed job returns its unique product result identifier. A globally unambiguous filename fallback is retained for historical jobs; ambiguous results remain UNKNOWN.

  • Resumption is attempted within one download call only when CASDA supplies a strong ETag or an RFC-strong Last-Modified validator; otherwise a retry restarts from byte zero. Final failure removes the temporary file, so resumption does not persist across separate calls. An abrupt process or host termination can leave a hashed lock in .casda-mcp/locks that an operator must inspect and remove before retrying that exact destination.

  • Source-name resolution is outside this server. DOI minting, licence acceptance, and other privileged DAP workflows remain DAP-boundary; use casda_resolve_collection_doi and casda_get_dap_navigation for safe read-only helpers.

  • Beam identifiers may be retained in filenames or target metadata, but CASDA ObsCore does not expose a generic structured neighbouring-beam relationship used by this implementation.

References

Available Tools

45 tools
casda_abort_data_jobAbort CASDA data jobA

Abort a SODA/UWS data job previously created by this server.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesData job identifier returned by this server.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
statusYes
provenanceNo
request_idYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide basic flags but description adds no extra behavioral context (e.g., reversibility, side effects). It is neutral and not contradictory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single succinct sentence, no redundancy, front-loaded with the key action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple abort with one parameter and output schema, the description is adequate. No critical gaps, but could hint at what aborting entails.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds minimal value beyond stating 'Data job identifier returned by this server.' No parameter details enhanced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action (abort) and the resource (SODA/UWS data job). It is specific and distinguishes from other operations like creation or deletion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to abort vs. delete, or any prerequisites. Siblings like casda_delete_data_job exist but no differentiation is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_abort_tap_jobAbort CASDA TAP jobC

Abort a TAP job created by this server.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesAsync TAP job identifier returned by this server.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
statusYes
provenanceNo
request_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate mutation (readOnlyHint=false) but not destructive (destructiveHint=false). The description does not disclose side effects, state transitions, or any additional behavioral context beyond the bare action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no extra words. It is concise, though could benefit from slightly more detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, missing details about return values are acceptable. However, the description could clarify the job state after aborting, making it moderately complete for a simple action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema coverage. The description repeats the schema's purpose without adding new meaning, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Abort' and resource 'TAP job', and distinguishes from sibling tools like 'casda_delete_tap_job' by using a different action verb, though the exact difference is not explained.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to abort vs. delete or any context for use. The description lacks explicit when-to-use or alternatives, leaving the agent to infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_build_adqlBuild CASDA ADQLA
Read-onlyIdempotent

Build the allowlisted ObsCore search ADQL string without contacting CASDA.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoOne-based page within the configured bounded result window.
ra_degNoICRS right ascension in degrees, in [0, 360).
dec_degNoICRS declination in degrees, in [-90, 90].
sort_byNoAllowlisted sort field: product_id, filename, file_size, observation_start, release_date, distance.product_id
page_sizeNoNumber of results to return; bounded by server configuration.
collectionNoExact ObsCore collection name.
radius_degNoCone radius in degrees; bounded by server configuration.
sort_orderNoSort direction: asc or desc.asc
source_nameNoExact CASDA target name; this tool does not resolve names.
project_codeNoExact OPAL/CASDA project code, such as AS102.
facility_nameNoExact ObsCore facility_name filter.
product_typesNoAllowlisted types: image, cube, visibility, spectrum, catalogue, weight, moment_map, cubelet, evaluation, scan.
released_onlyNoWhen true, require a non-null obs_release_date in the ADQL.
instrument_nameNoExact ObsCore instrument_name filter.
observation_endNoLatest overlapping observation date/time in ISO 8601.
frequency_max_hzNoUpper overlapping spectral frequency in hertz.
frequency_min_hzNoLower overlapping spectral frequency in hertz.
observation_startNoEarliest overlapping observation date/time in ISO 8601.
scheduling_block_idNoPositive ASKAP scheduling block identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
queryYes
parametersNo
provenanceNo
max_recordsYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds 'without contacting CASDA', confirming local operation. This is useful but does not disclose additional behavioral traits beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the core purpose, containing no redundant or extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 19 parameters, full schema documentation, and an output schema, the description is adequate but minimal. It does not explain what the ADQL string represents or how parameters are combined, but the output schema likely covers the return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds no parameter-specific information beyond what is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool builds an ADQL string locally ('without contacting CASDA'), specifying the verb 'Build' and the resource 'allowlisted ObsCore search ADQL string'. This distinguishes it from sibling tools like casda_tap_query which execute queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for offline ADQL construction but does not explicitly state when to use this tool over alternatives like casda_validate_adql or casda_tap_query. No when-not or prerequisite guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_create_cutoutCreate CASDA cutout jobA

Create one cutout SODA job via the DataLink cutout_service descriptor.

Requires CASDA_ENABLE_STAGING and credentials. Never auto-retries create/start.

ParametersJSON Schema
NameRequiredDescriptionDefault
polNoSODA POL constraint.
bandNoSODA BAND constraint in metres (wavelength).
coordNoSODA COORD system, for example ICRS.
circleNoSODA CIRCLE constraint: 'ra_deg dec_deg radius_deg'.
channelNoSODA CHANNEL constraint.
polygonNoSODA POLYGON constraint as space-separated ra/dec pairs.
product_idYesExact CASDA product identifier.
idempotency_keyNoCaller-supplied idempotency key; a UUID is generated when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
reusedNo
statusNo
job_kindNo
productsNo
provenanceNo
request_idNo
submitted_atNo
idempotency_keyNo
human_gate_warningsNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint=false) and non-idempotence (idempotentHint=false). The description adds unique value by stating 'Never auto-retries create/start' and requiring specific environment configuration, disclosing behavioral traits beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at two sentences. The first sentence states the core purpose, the second provides prerequisites and a key behavioral note. No redundant or unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations, the description covers the essential purpose, prerequisites, and a behavioral constraint. It does not explain error handling or the concept of a 'cutout SODA job', but for a well-documented tool with a rich schema, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema fully documents all 8 parameters. The description does not add any parameter-specific details beyond what the schema already provides, so it performs at the baseline for parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create one cutout SODA job via the DataLink cutout_service descriptor', specifying the action (create), resource (cutout SODA job), and method. This distinguishes it from sibling tools like casda_create_spectrum which creates a different type of job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions prerequisites ('Requires CASDA_ENABLE_STAGING and credentials') and a behavioral constraint ('Never auto-retries create/start'), providing clear context for when the tool can be used. However, it does not explicitly compare with alternatives or exclude other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_create_manifestCreate CASDA manifestA
Idempotent

Create and retain a versioned, machine-readable manifest for explicit products.

This tool performs bounded metadata and optional checksum reads. It does not stage, download, or write the manifest to the caller's filesystem. Signed and short-lived URLs are omitted even when URL inclusion is requested.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idsYesExplicit CASDA product identifiers to record reproducibly.
source_nameNoOptional source label to record in the manifest.
workflow_nameNoOptional downstream workflow label.
include_download_urlsNoRequest URL inclusion. CASDA artifact URLs are never persisted because opaque paths may be bearer credentials; true records an omission warning.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
manifestNo
provenanceNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations: it states bounded metadata/checksum reads, no staging/download, omission of signed URLs, and recording an omission warning. This covers safety and side-effect details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences plus a bullet list. It front-loads the purpose and adds essential behavioral notes without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown but indicated), the description covers the tool's purpose, limitations, and behavioral details comprehensively. No gaps for an agent to understand when to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add per-parameter details beyond what the schema provides, but the overall context of 'bounded metadata reads' and URL omission helps interpretation. No extra value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'create' and resource 'manifest' with qualifiers 'versioned, machine-readable for explicit products'. It distinguishes from sibling tools like staging, downloading, and searching by focusing solely on manifest creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states what the tool does NOT do (not staging, download, writing to filesystem) and clarifies behavior when URL inclusion is requested. However, it does not explicitly contrast with alternatives like casda_get_product or casda_stage_products, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_create_spectrumCreate CASDA spectrum jobA

Create one spectrum-generation SODA job via spectrum_generation_service.

Requires CASDA_ENABLE_STAGING and credentials. Never auto-retries create/start.

ParametersJSON Schema
NameRequiredDescriptionDefault
polNoSODA POL constraint.
bandNoSODA BAND constraint in metres (wavelength).
coordNoSODA COORD system, for example ICRS.
circleNoSODA CIRCLE constraint: 'ra_deg dec_deg radius_deg'.
channelNoSODA CHANNEL constraint.
polygonNoSODA POLYGON constraint as space-separated ra/dec pairs.
product_idYesExact CASDA product identifier.
idempotency_keyNoCaller-supplied idempotency key; a UUID is generated when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
reusedNo
statusNo
job_kindNo
productsNo
provenanceNo
request_idNo
submitted_atNo
idempotency_keyNo
human_gate_warningsNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a write operation (readOnlyHint=false) and non-destructive nature. The description adds critical details: it requires staging, credentials, and never auto-retries create/start. This supplements annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main action, and every sentence adds value. No extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters and an output schema (not shown), the description is minimal. It does not explain the job lifecycle, how to use the returned job, or that the operation is asynchronous. Complete enough for a simple tool but lacks context for agent orchestration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema documents all parameters. The description adds no parameter-level detail beyond what is already in the schema, meeting the baseline but not exceeding it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a spectrum-generation SODA job, using a specific verb and resource. It is distinct from sibling tools which handle searches, queries, or downloads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions requirements (CASDA_ENABLE_STAGING, credentials) and behavior (no auto-retry), but does not contrast with alternatives like casda_search_spectra or casda_create_cutout, leaving the agent without explicit when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_delete_data_jobDelete CASDA data jobA
Destructive

Delete a data job from the archive and local state.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesData job identifier returned by this server.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
deletedNo
provenanceNo
request_idYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint: true, which is reinforced by 'Delete'. The description adds that deletion occurs from 'archive and local state', providing slight behavioral context beyond annotations. However, it does not disclose whether the action is reversible or requires specific permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no extraneous words, front-loads the action. Highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with one parameter and annotations covering destructive behavior, the description is mostly complete. It could mention the output or error handling, but the existing context is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes the parameter as 'Data job identifier returned by this server.' The description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Delete', the resource 'data job', and the scope 'from the archive and local state'. This distinguishes it from siblings like casda_abort_data_job and casda_get_data_job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like casda_abort_data_job or casda_delete_tap_job. The description does not specify prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_delete_tap_jobDelete CASDA TAP jobA
Destructive

Delete a TAP job created by this server from the archive and local state.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesAsync TAP job identifier returned by this server.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
deletedNo
provenanceNo
request_idYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds value by specifying what gets removed ('archive and local state'), which is beyond the structured hints. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that conveys all necessary information without redundancy. It is front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (single required parameter, destructive operation), the description is complete. It doesn't discuss return values, but an output schema exists, and the tool's effect is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is well-described in the schema. The description does not add extra semantics beyond what is already in the parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a TAP job' with specific context 'from the archive and local state'. It uses a strong verb and identifies the resource, distinguishing it from sibling tools like abort and get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for deleting completed jobs but does not explicitly state when to use this tool versus alternatives like casda_abort_tap_job or casda_get_tap_job. No when-not or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_describe_tableDescribe CASDA tableA
Read-onlyIdempotent

Describe columns for one TAP_SCHEMA table identified by schema and table name.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYesUnqualified TAP table name such as obscore or catalogue.
schema_nameYesTAP schema name such as ivoa, casda, or AS102.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
columnsNo
provenanceNo
table_nameNo
schema_nameNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds that the tool operates on a single table, but otherwise does not disclose additional behavioral details beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 14 words that immediately conveys the action ('describe columns') and the target ('one TAP_SCHEMA table'). No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (handles return values) and full parameter documentation, the description adequately conveys the core function. It omits context about underlying TAP_SCHEMA views but is still complete for a simple metadata tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters having clear descriptions (e.g., 'Unqualified TAP table name such as obscore'). The tool description adds no further parameter meaning, meeting the baseline expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('describe') and resource ('columns for one TAP_SCHEMA table'), clearly distinguishing it from sibling tools like casda_list_tables (lists table names) and casda_list_schemas (lists schema names).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., casda_tap_query for arbitrary column queries, casda_list_tables for table names). It does not mention prerequisites or typical workflow steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_download_job_resultsDownload CASDA job resultsA
Idempotent

Sequentially download all ready results for one job into CASDA_DOWNLOAD_DIR.

Stops on the first failure and reports partial successes.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesData job identifier with ready results.
verify_checksumNoVerify archive checksums when sidecar metadata is available.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
resultsNo
provenanceNo
request_idYes
failure_reasonNo
failed_product_idNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide idempotentHint=true and destructiveHint=false; description adds sequential download, stop-on-failure, and partial success reporting. This adds some behavioral context but does not cover authentication, side effects on local storage, or concurrency limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core purpose. Every word adds value; no redundant or verbose content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a download tool with an output schema, the description covers key behaviors (sequential, stop on failure, partial results). It lacks detail on error handling, default directory location, or post-download file management, but is sufficient for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. Description does not add any additional semantic details beyond the schema, such as format constraints for request_id or the effect of verify_checksum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool downloads all ready results for a single job, with specific details like sequential download and target directory. It distinguishes from sibling tools like casda_get_data_job_results (which likely only retrieves results metadata) and casda_download_product (single product download).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like casda_get_data_job_results or casda_download_product. The description assumes the user already knows to use this for downloading completed job results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_download_productDownload CASDA productA
Idempotent

Download one confirmed-ready product using guarded, streamed local filesystem writes.

This operation requires CASDA_ENABLE_DOWNLOADS and a restricted CASDA_DOWNLOAD_DIR. It never overwrites by default, enforces the byte limit, verifies Content-Length, resumes within the call when Range is supported, and removes incomplete files after failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesOne explicit CASDA product identifier confirmed ready by staging.
destinationNoOptional path constrained to CASDA_DOWNLOAD_DIR; defaults to the archive filename.
verify_checksumNoVerify the archive checksum when a checksum sidecar is available.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
resultNo
provenanceNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond annotations by detailing behaviors: never overwrites by default, enforces byte limit, verifies Content-Length, resumes on Range support, removes incomplete files after failure. This provides essential safety context for a file download operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences covering purpose and key behaviors. Every sentence adds information; no fluff. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (download with options) and the presence of an output schema, the description covers prerequisites, safety, and behavioral quirks comprehensively. It is sufficient for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with good descriptions. The description adds clarity on constraints (destination constrained to CASDA_DOWNLOAD_DIR) and default behavior (verify_checksum default true). This adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Download one confirmed-ready product using guarded, streamed local filesystem writes.' It uses specific verb+resource and distinguishes from sibling tools like casda_get_product (which likely returns metadata) and staging tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions prerequisites ('requires CASDA_ENABLE_DOWNLOADS and a restricted CASDA_DOWNLOAD_DIR') and implies the product must be confirmed-ready (via staging). It does not explicitly list alternatives or when-not-to-use, but the context of sibling tools provides differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_archive_statusGet CASDA archive statusA
Read-onlyIdempotent

Read VOSI availability for the configured public CASDA TAP service.

This is archive availability, not local process liveness. Prefer /healthz for the MCP server itself.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
provenanceNo
availabilityNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so safety is clear. The description adds context that the tool reads VOSI availability from the public CASDA TAP service, going beyond what annotations provide. It also clarifies it is not local process liveness. This is valuable behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at two sentences, with no unnecessary words. The first sentence front-loads the core action, and the second provides critical distinction. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple status-check tool with no parameters and rich annotations, the description is complete. It explains what it checks (archive availability), what it does not (local liveness), and suggests an alternative. With an output schema present, no further detail on return values is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so schema coverage is 100%. The description does not need to explain parameters. Baseline score of 4 is appropriate for a tool with no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads VOSI availability for the public CASDA TAP service, using specific verb 'read' and resource 'archive status'. It distinguishes from local process liveness by explicitly noting it is archive availability, not local. This clarity helps an agent understand the tool's exact purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance: it is for archive availability, not local liveness, and advises using /healthz for the MCP server itself. This helps an agent decide when to use this tool vs. the health endpoint. However, it does not contrast with similar status tools like casda_get_staging_status or casda_get_auth_status, which slightly limits completeness.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_auth_statusGet CASDA authentication statusA
Read-onlyIdempotent

Report whether credentials are configured and currently authenticate to CASDA.

Never returns username, password, or other secret material.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
provenanceNo
authenticatedYes
credentials_configuredYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety and idempotency. The description adds the important behavioral detail that it never returns secrets, which is valuable context not provided by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, the first stating the purpose and the second adding a safety note. Every sentence is necessary and there is no redundancy or irrelevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool with a read-only, idempotent function and an output schema, the description is complete: it explains what is reported and assures security. No additional context seems necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and schema coverage is trivially 100%. According to the guidelines, a baseline of 4 applies; the description appropriately does not need to add parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool reports whether credentials are configured and authenticate to CASDA. This is a specific verb-resource pair that uniquely identifies its function among the many sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The purpose is implied by the name and description, but there is no mention of prerequisites or situations where another tool might be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_collectionGet CASDA collectionA
Read-onlyIdempotent

Aggregate ObsCore products for one collection (counts, types, release span).

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesExact ObsCore obs_collection / project short name.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
collectionNo
provenanceNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds behavioral context by naming outputs (counts, types, release span), which is not in annotations. However, it does not disclose potential pagination or performance aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, clearly conveying the core purpose and key outputs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has a single parameter (with full schema coverage) and an output schema available, the description adequately covers the purpose and scope. Complexity is low, and the description is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter described as 'Exact ObsCore obs_collection / project short name.' The description does not add further meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'aggregate' and the resource 'ObsCore products for one collection', specifying it provides counts, types, and release span. This distinguishes it from sibling tools like casda_get_product (single product) or search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for aggregating products by collection but does not explicitly state when to use this tool over alternatives like casda_search_products or casda_get_observation. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_dap_navigationGet DAP navigation linksA
Read-onlyIdempotent

Return DAP deep links and structured unsupported privileged actions.

Constructs documented public HTTPS URLs only. Does not scrape DAP HTML, accept licences, mint DOIs, assign roles, deposit Level 7 data, release observations, or launch CARTA. Read casda://dap/navigation for template summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoOptional privileged action name. Supported for structured refusal only: accept_licence, assign_project_role, level7_deposit, release_observation, mint_doi, launch_carta. Never performs HTTP mutation.
collectionNoOptional collection name for a DAP search link.
product_idNoOptional product identifier for a DAP search link.
request_idNoOptional archive data-job request_id for human follow-up guidance.
project_codeNoOptional OPAL project code for a DAP search link.
scheduling_block_idNoOptional scheduling block ID for Observation Search.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
linksNo
provenanceNo
unsupported_actionsNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. The description adds that it constructs public HTTPS URLs only and never performs HTTP mutation, providing extra behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with purpose, then limitations, then a reference. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's read-only nature, full annotations, complete schema, and presence of output schema, the description provides sufficient context including what it returns, what it doesn't do, and hints for further documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaningful context for the action parameter, listing allowed values and stating they are for structured refusal. This goes beyond the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns DAP deep links and structured unsupported privileged actions, using a specific verb and resource. It distinguishes from siblings by listing what it does not do, such as scraping HTML or performing mutations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists what the tool does not do, giving implicit guidance on when not to use it. However, it does not explicitly name sibling tools as alternatives, missing a clear when-to-use vs when-not-to-use statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_data_jobGet CASDA data jobA
Read-onlyIdempotent

Perform one uncached status check for a data job created by this server.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesData job identifier returned by this server.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
statusNo
job_kindNo
productsNo
provenanceNo
request_idNo
expiry_timeNo
download_readyNo
failure_reasonNo
retry_guidanceNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, covering safety and idempotency. The description adds behavioral context: 'uncached' implies a real-time status check bypassing cache, and 'one' indicates a single check. This provides value beyond annotations but does not fully disclose all behaviors (e.g., error handling, rate limits).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence of 12 words, front-loading the action and resource. Every word is informative, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter, high-quality annotations, and an output schema, the description sufficiently covers the purpose and key constraint. The output schema presumably documents return values, so further detail is unnecessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already describes request_id as 'Data job identifier returned by this server.' The description does not add additional meaning beyond repeating 'by this server,' so it provides no incremental value. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Perform one uncached status check for a data job created by this server.' It uses a specific verb-resource-action combination, distinguishing it from sibling tools like casda_get_data_job_results (which retrieves results) and casda_abort_data_job (which aborts). The 'uncached' and 'created by this server' add precision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Among siblings, there are multiple data job operations (get results, abort, delete) and other status checks (casda_get_auth_status, casda_get_archive_status). The description fails to specify context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_data_job_resultsGet CASDA data job resultsA
Read-onlyIdempotent

List safe result metadata for a data job without opaque download URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesData job identifier returned by this server.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
statusYes
resultsNo
provenanceNo
request_idYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the tool's safety is clear. The description adds that the results are 'safe result metadata' (non-sensitive, read-only) and explicitly says no download URLs, which enhances transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence with front-loaded verb and resource. Every word adds value, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple single-parameter schema, rich annotations, and presence of an output schema, the description covers all necessary context: what the tool returns and what it excludes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter fully described. The description adds no parameter information, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'List', the resource 'safe result metadata for a data job', and explicitly notes what it does not include ('without opaque download URLs'), distinguishing it from sibling tools like casda_download_job_results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining metadata without download URLs, and by contrasting with download URLs, it hints at when not to use it. However, it does not explicitly state alternatives or exclusivity conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_observationGet CASDA observationA
Read-onlyIdempotent

Retrieve an observation, projects, and bounded products for an ASKAP SBID or obs_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
observation_idNoExact ObsCore obs_id when not using the ASKAP SBID convenience.
scheduling_block_idNoPositive ASKAP scheduling block identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
productsNo
projectsNo
provenanceNo
observationNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, non-destructive, idempotent. The description adds that it retrieves 'projects and bounded products', which is useful context beyond annotations. However, it does not detail error conditions or behavior when both IDs are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 12 words, front-loaded with the verb. Every word adds value, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two optional parameters and an output schema, the description sufficiently explains the scope of what is returned. It covers the key aspect of retrieving multiple related entities.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description merely mentions the identifiers already documented in the schema. It adds no new semantic information about parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieve' and the resources 'observation, projects, and bounded products' for a specific identifier (ASKAP SBID or obs_id). It distinguishes from sibling tools by indicating it retrieves a bundle of related data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when needing observation with its projects and products, but does not explicitly state when to use or not use this tool versus alternatives like casda_get_project or casda_search_products.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_productGet CASDA productA
Read-onlyIdempotent

Retrieve supported ObsCore metadata for one explicit product identifier.

Access state is reported conservatively; this tool does not stage or download the product.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesExact CASDA obs_publisher_did product identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
productNo
provenanceNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds valuable behavioral context: 'Access state is reported conservatively; this tool does not stage or download the product.' This clarifies the tool's non-destructive, non-staging nature beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. Front-loaded with the main action, then behavioral caveat. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple metadata retrieval tool with output schema present, the description covers all necessary aspects: what it retrieves, the identifier scope, and the access state behavior. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter product_id described as 'Exact CASDA obs_publisher_did product identifier.' Description does not add further parameter semantics, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Retrieve' and resource 'supported ObsCore metadata' for one explicit product identifier. This distinguishes it from sibling tools like casda_search_products which search multiple products, and casda_get_observation which retrieves observation metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The mention that it does not stage or download the product implies it should be used for metadata-only purposes, but no direct comparison to siblings or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_projectGet CASDA projectA
Read-onlyIdempotent

Retrieve one project row from casda.project by OPAL code.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_codeYesExact OPAL/CASDA project code, such as AS102.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
projectNo
provenanceNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint, idempotentHint, destructiveHint) already indicate no side effects. Description adds that it retrieves exactly one row, but no additional behavioral context (e.g., permissions, null handling).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no extraneous words, conveys essential information efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple retrieval tool with output schema. Description adequately explains purpose and input. Could mention that it returns exactly one row, but overall complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and parameter description already provides example ('AS102'). Description mentions 'OPAL code' which adds slight context, but baseline 3 is appropriate since schema already does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('Retrieve'), resource ('one project row from casda.project'), and method ('by OPAL code'). It distinguishes from sibling tool 'casda_search_projects' which is for searching multiple projects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use when you have an exact OPAL code and need one specific project. However, no explicit guidance on when not to use (e.g., when you need multiple projects) or alternatives (like casda_search_projects).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_staging_statusGet CASDA staging statusA
Read-onlyIdempotent

Perform one uncached status check for a known CASDA staging request.

This tool does not continue polling after the call returns and does not download files. Alias of casda_get_data_job for full-file staging jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesArchive staging request identifier returned by this server.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
statusNo
job_kindNo
productsNo
provenanceNo
request_idNo
expiry_timeNo
download_readyNo
failure_reasonNo
retry_guidanceNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint, idempotentHint, destructiveHint) already indicate a safe read operation. The description adds value by specifying the one-time uncached nature and explicitly stating no polling or file download behavior. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action, and every word serves a purpose. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, clear annotations, output schema exists), the description covers the key behavioral aspects. It might be slightly improved by mentioning what the output contains, but with output schema present, this is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for the single parameter 'request_id'. The description reinforces that the request must be known but does not add significant new semantic information beyond the schema. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Perform one uncached status check') and resource ('known CASDA staging request'). It distinguishes from siblings by noting it is an alias of casda_get_data_job and explicitly states what the tool does not do (poll, download), which helps differentiate from other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context for when the tool should be used: for a known staging request and for a one-time check without polling. It mentions the alias relationship, which guides usage. However, it does not explicitly exclude scenarios or compare with other similar tools like casda_get_archive_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_tap_jobGet CASDA TAP jobA
Read-onlyIdempotent

Perform one uncached status check for a TAP job created by this server.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesAsync TAP job identifier returned by this server.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
statusYes
resultsNo
provenanceNo
request_idYes
expiry_timeNo
failure_reasonNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds the key behavior 'uncached status check', which is not in annotations, providing additional context about network call freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, concise and to the point, with zero wasted words. Includes essential qualifiers 'uncached' and 'one'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple status-check tool with one parameter and an output schema, the description covers the purpose and key behavioral trait (uncached). No missing context for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter (request_id) with a clear description. Schema coverage is 100%, so description adds no extra semantic value beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs a status check on a TAP job, specifying 'uncached' and 'one' check, and identifies the job as created by this server. This distinguishes it from sibling tools like casda_submit_tap_query, casda_get_tap_results, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for a fresh status check but does not explicitly state when to use this tool over alternatives like casda_get_tap_results or casda_abort_tap_job. No when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_get_tap_resultsGet CASDA TAP resultsA
Read-onlyIdempotent

Fetch bounded CSV results for a TAP job created by this server.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesAsync TAP job identifier returned by this server.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsNo
errorNo
max_rowsYes
returnedYes
provenanceNo
request_idYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description 'Fetch bounded CSV results' aligns but adds no new behavioral context (e.g., size limits, pagination, or error behavior). The description does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence conveying the core purpose without extraneous words. Every part is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and comprehensive annotations, the description sufficiently covers the tool's function and input. It could hint at the output format (CSV) but the schema likely details this. Minor gap: no mention of result limits or size, but still adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the parameter 'request_id' is already well-described in the schema. The tool description does not add additional semantics beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Fetch' and the resource 'bounded CSV results for a TAP job', distinguishing it from sibling tools like casda_get_tap_job (job metadata) and casda_tap_query (submitting queries). The title and name are consistent and informative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for fetching results after a TAP job is created, but does not explicitly state when to use versus alternatives (e.g., other TAP-related tools) or provide conditions for use. It gives context but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_list_capabilitiesList CASDA capabilitiesA
Read-onlyIdempotent

List VOSI capabilities advertised by the configured public CASDA TAP service.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
provenanceNo
capabilitiesNo

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description only restates 'list', adding no behavioral detail beyond confirming it's a list. It does not explain what VOSI capabilities entail or how the output is structured.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no extraneous words. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with both annotations and an output schema, the description is adequately complete. It tells the agent what the tool does without missing critical details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and the input schema is empty with 100% coverage. The description does not need to add parameter information; its indication that the tool takes no arguments is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'VOSI capabilities' from a specific service ('configured public CASDA TAP service'). This distinguishes it from siblings like casda_list_schemas or casda_list_tables.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternatives are provided. As a parameterless list, it's obviously always safe, but there is no guidance on how this fits into a workflow (e.g., call before queries to check available features).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_list_cataloguesList CASDA cataloguesA
Read-onlyIdempotent

List casda.catalogue product rows with stable cursor pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque next-page cursor from a previous catalogue inventory.
page_sizeNoNumber of catalogue products to return; server-bounded.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
cataloguesNo
paginationNo
provenanceNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds 'stable cursor pagination' which provides behavioral context beyond the annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint). This indicates that pagination results remain consistent across requests.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no waste. Front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and annotations cover behavior, the description is complete. It highlights the key pagination feature and does not leave significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers both parameters with descriptions (100% coverage), so baseline is 3. The description adds context about cursor stability, which enhances understanding of the cursor parameter. However, it doesn't add new info about page_size.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists catalogue product rows with stable cursor pagination. The verb 'List' and resource are specific, but it doesn't explicitly differentiate from casda_search_catalogue which also deals with catalogues.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like casda_search_catalogue. The description only states what it does, not when it's appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_list_eventsList CASDA observation eventsA
Read-onlyIdempotent

List public observation lifecycle events with bounded cursor pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque cursor from a previous events page.
page_sizeNoPage size for the public events feed.
event_typeNoOptional event type filter such as DEPOSITED or VALIDATED.
project_codeNoOptional exact project code filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
eventsNo
paginationNo
provenanceNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value by specifying 'bounded cursor pagination', which indicates pagination behavior beyond the annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence of 9 words that front-loads the core action and resource, with zero wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (list with pagination and filters) and the presence of an output schema and fully described parameters, the description is sufficient. It could mention that events are public, but the title already indicates that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description's mention of 'bounded cursor pagination' adds minimal context beyond the parameter descriptions already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists 'public observation lifecycle events' with 'bounded cursor pagination', using a specific verb and resource. It distinguishes the tool from many sibling list tools that deal with other resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool (listing events), but does not mention when not to use it or provide explicit alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_list_foreign_keysList CASDA foreign keysA
Read-onlyIdempotent

List TAP_SCHEMA foreign keys that originate from the requested table.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYesUnqualified TAP table name such as catalogue.
schema_nameYesTAP schema name such as ivoa, casda, or AS102.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
provenanceNo
table_nameNo
schema_nameNo
foreign_keysNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe read operation. The description adds limited value by specifying the scope ('originating from the requested table') but does not disclose additional behaviors like auth requirements or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that immediately conveys the action and resource. No extraneous information; every word is useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and clear annotations, the description is adequate for a simple listing tool. However, it does not clarify the direction of foreign keys (whether the requested table is the source or target), which could lead to ambiguity. The description could be slightly more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; both parameters (table_name, schema_name) have clear descriptions in the schema. The tool description does not add further semantic details beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists foreign keys from TAP_SCHEMA originating from a specific table, distinguishing it from sibling tools like casda_list_tables or casda_describe_table. However, the phrase 'originate from' could be ambiguous about whether the table is the parent or child in the foreign key relationship.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives like casda_list_tables or casda_describe_table. Usage is implied: if you need foreign keys, use this. No exclusions or alternative tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_list_image_surveysList CASDA image surveysA
Read-onlyIdempotent

List CASDA SIA 1 survey inventory entries.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
surveysNo
provenanceNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not contradict the annotations, which indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. However, it adds no behavioral context beyond what the annotations already provide. With annotations covering safety and idempotency, the description's minimal contribution is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence that wastes no words. It is front-loaded with the action ('List') and resource, making it immediately clear what the tool does. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (no parameters, read-only, with an output schema present), the description provides sufficient context. It explains the purpose succinctly. However, it could mention that no parameters are required or that it returns a list of surveys, but the presence of the output schema reduces the burden. Overall, it is complete enough for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the description does not need to provide parameter-level details. The baseline score for zero parameters is 4 because the schema trivially covers all parameters. The description adds no additional meaning about parameters, which is acceptable in this case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List CASDA SIA 1 survey inventory entries' uses a specific verb ('List') and a clearly defined resource ('CASDA SIA 1 survey inventory entries'). It effectively distinguishes this tool from siblings like 'casda_search_images' and 'casda_search_survey_images' by focusing on survey inventory entries rather than individual images.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives or when not to use it. There is no mention of context, prerequisites, or exclusions. The description simply states what the tool does without any strategic advice for the AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_list_schemasList CASDA schemasA
Read-onlyIdempotent

List TAP_SCHEMA schemas with bounded cursor pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque next-page cursor from a previous schema list response.
page_sizeNoNumber of schemas to return; bounded by server configuration.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
schemasNo
paginationNo
provenanceNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, and non-destructive behavior. Description adds pagination detail but no additional behavioral traits beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words; front-loads the primary action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full parameter schema descriptions, output schema present, and annotations covering safety, the description sufficiently completes the picture for this simple list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. Description's pagination mention adds minimal new meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists TAP_SCHEMA schemas with pagination, distinguishing it from sibling listing tools like casda_list_tables and casda_list_capabilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives; pagination hint is implicit but no explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_list_tablesList CASDA tablesA
Read-onlyIdempotent

List TAP_SCHEMA tables, optionally filtered by schema, with cursor pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque next-page cursor from a previous table list response.
page_sizeNoNumber of tables to return; bounded by server configuration.
schema_nameNoOptional TAP schema filter such as ivoa, casda, TAP_SCHEMA, or AS102.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
tablesNo
paginationNo
provenanceNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds cursor pagination and optional filtering, which is useful context but does not contradict annotations. It doesn't elaborate on behavior without filters (e.g., lists all) or pagination limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded with the main action and includes key details (filtered by schema, cursor pagination). No redundant words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, strong annotations, and presence of an output schema, the description covers the core functionality (listing with filtering and pagination). No major gaps, though it could hint at default behavior when no schema is given.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented in the schema. The description briefly mentions filtering and pagination but adds no additional semantics beyond the schema definitions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List TAP_SCHEMA tables') with optional filtering and pagination. It distinguishes from siblings like casda_list_schemas (lists schemas) and casda_describe_table (describes a specific table).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions optional schema filtering but does not explicitly guide when to use this tool vs alternatives (e.g., casda_list_schemas, casda_describe_table). No when-not-to-use or alternative naming is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_list_tap_examplesList CASDA TAP examplesA
Read-onlyIdempotent

List example ADQL queries advertised by the CASDA TAP examples endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
examplesNo
provenanceNo
content_typeNo

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, making behavioral traits clear. Description adds that it lists 'advertised' examples, which is minor context but not essential beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no unnecessary words. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with an output schema, the description fully covers what the tool does and how it operates. No additional information is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%. The description adds no parameter details but none are needed. Baseline 4 applies, and perfect clarity earns a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'list' with resource 'example ADQL queries' and source 'CASDA TAP examples endpoint'. It clearly distinguishes from sibling list tools like casda_list_capabilities or casda_list_tables.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the name and description. It is a simple list tool with no parameters, so when to use is self-explanatory. However, it does not explicitly state when to use this over other list tools or provide alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_resolve_collection_doiResolve collection DOIA
Read-onlyIdempotent

Resolve public citation metadata via DataCite or doi.org CSL-JSON.

Read-only. Never mints DOIs or calls DataCite write APIs. CSIRO DAP DOIs typically use prefix 10.25919 (labelled via is_csiro_dap). Requires CASDA_ENABLE_DOI_RESOLVE (default true).

ParametersJSON Schema
NameRequiredDescriptionDefault
doiNoDOI such as 10.25919/kqrt-pv24 or https://doi.org/10.25919/kqrt-pv24. Provide exactly one of doi, collection, or project_code.
collectionNoObsCore collection name for best-effort lookup. Does not invent a DOI when archive metadata has none.
project_codeNoOPAL project code for best-effort lookup. Does not invent a DOI when archive metadata has none.

Output Schema

ParametersJSON Schema
NameRequiredDescription
doiNo
errorNo
foundNo
recordNo
messageNo
collectionNo
provenanceNo
project_codeNo
navigation_urlNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key traits: never mints DOIs, uses specific prefix, and does not invent DOIs when none exist. Consistent with readOnlyHint annotation and adds valuable context beyond it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences efficiently convey purpose, restrictions, and input guidance. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Fully explains input options, behavioral guarantees, and environmental requirement. Output schema exists, so return values are documented elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 3 parameters with descriptions. Description adds mutual exclusivity constraint and clarifies behavior for collection/project_code lookups when DOI not found.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Resolve' and resource 'citation metadata', specifying source (DataCite or doi.org). Distinct from sibling tools which focus on data access or search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States read-only, no DOI minting, and an environment variable. Explicitly says to provide exactly one of doi, collection, or project_code. However, lacks explicit comparison to alternatives for resolving DOIs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_search_catalogueSearch CASDA catalogueC
Read-onlyIdempotent

Run a Simple Cone Search against one CASDA catalogue short-name endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
ra_degYesICRS right ascension in degrees, in [0, 360).
dec_degYesICRS declination in degrees, in [-90, 90].
catalogueYesSCS catalogue short name matching ^[A-Za-z][A-Za-z0-9._-]{0,63}$, such as racs_mid_sources_v01.
radius_degYesCone search radius in degrees; server-bounded.
max_recordsNoMaximum rows to return; bounded by server configuration.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsNo
errorNo
returnedYes
catalogueYes
provenanceNo
max_recordsYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, which fully disclose the safety profile. The description adds minimal behavioral context by naming the query type, but no further traits like result limits or authentication needs are mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but it is vague and lacks detail. It could be more informative without increasing length significantly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (astronomical cone search) and the large number of sibling tools, the description fails to provide sufficient context for an AI agent to understand the tool's purpose or usage. An output schema exists, so return values are covered, but the core functionality is under-explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already well-documented. The description adds no extra meaning beyond the schema, which is acceptable but not helpful. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool performs a 'Simple Cone Search' against a CASDA catalogue, which is a specific astronomical query. However, it does not differentiate from sibling search tools like casda_search_images or casda_search_spectra, and the term 'Simple Cone Search' may be unclear to non-experts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool instead of alternatives, such as casda_search_products or casda_search_images. No context about prerequisites or exclusions is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_search_imagesSearch CASDA imagesB
Read-onlyIdempotent

Discover images and cubes with the CASDA SIA 2 interface.

ParametersJSON Schema
NameRequiredDescriptionDefault
polNoOptional SIA 2 POL state filter such as I or IQU.
bandNoOptional SIA 2 BAND interval in metres.
timeNoOptional SIA 2 TIME interval.
ra_degNoICRS RA in degrees for CIRCLE searches.
dec_degNoICRS Dec in degrees for CIRCLE searches.
polygonNoPOLYGON vertices as [[ra, dec], ...] with at least three points.
pos_typeYesSIA 2 POS shape: CIRCLE, RANGE, or POLYGON.
ra_max_degNoRANGE maximum RA in degrees.
ra_min_degNoRANGE minimum RA in degrees.
radius_degNoCIRCLE radius in degrees; server-bounded.
dec_max_degNoRANGE maximum Dec in degrees.
dec_min_degNoRANGE minimum Dec in degrees.
max_recordsNoMaximum rows to return; bounded by server configuration.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
imagesNo
returnedYes
provenanceNo
max_recordsYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already fully cover safety traits (readOnly, idempotent, etc.). The description adds no behavioral details beyond 'discover', such as pagination, rate limits, or result handling. With annotations, the burden is partially met, but more context could improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence. It is front-loaded with the core purpose, but some important information is omitted. It effectively uses space but could be slightly more informative without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high parameter count (13) and complex usage (selecting pos_type and corresponding coordinates), the description is incomplete. It lacks any explanation of how parameters relate or how results are returned, even though the output schema exists. The description does not adequately compensate for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%—every parameter has a description. The tool description adds no further meaning beyond what the schema provides, meeting the baseline for well-documented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool discovers images and cubes via the CASDA SIA 2 interface, distinguishing it from sibling tools like casda_search_survey_images or casda_search_spectra. However, it does not elaborate on what 'images and cubes' entail, leaving some ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or context. With many sibling tools for different search types, this omission hinders tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_search_productsSearch CASDA productsA
Read-onlyIdempotent

Search product metadata with a safely generated, bounded TAP/ADQL query.

This read-only tool performs no staging, download, filesystem write, source-name resolution, or unrestricted ADQL. Spatial coordinates are ICRS degrees and frequencies are hertz.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoOne-based page within the configured bounded result window.
cursorNoOpaque next-page cursor from a previous search response.
ra_degNoICRS right ascension in degrees, in [0, 360).
dec_degNoICRS declination in degrees, in [-90, 90].
sort_byNoAllowlisted sort field: product_id, filename, file_size, observation_start, release_date, distance.product_id
page_sizeNoNumber of results to return; bounded by server configuration.
collectionNoExact ObsCore collection name.
radius_degNoCone radius in degrees; bounded by server configuration.
sort_orderNoSort direction: asc or desc.asc
source_nameNoExact CASDA target name; this tool does not resolve names.
project_codeNoExact OPAL/CASDA project code, such as AS102.
facility_nameNoExact ObsCore facility_name filter.
product_typesNoAllowlisted types: image, cube, visibility, spectrum, catalogue, weight, moment_map, cubelet, evaluation, scan.
released_onlyNoWhen true, require a non-null obs_release_date and exclude restricted access rows after the TAP fetch.
instrument_nameNoExact ObsCore instrument_name filter.
observation_endNoLatest overlapping observation date/time in ISO 8601.
frequency_max_hzNoUpper overlapping spectral frequency in hertz.
frequency_min_hzNoLower overlapping spectral frequency in hertz.
observation_startNoEarliest overlapping observation date/time in ISO 8601.
scheduling_block_idNoPositive ASKAP scheduling block identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
productsNo
paginationNo
provenanceNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Descriptions adds context beyond annotations: it is read-only, no staging/download, bounded query, coordinate system (ICRS degrees), and frequency units (hertz). This aligns with annotations (readOnlyHint true, destructiveHint false) and provides useful behavioral detail, though it could mention pagination behavior more explicitly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading purpose and listing exclusions. It is concise and efficient with no fluff. Slight improvement could be structure (e.g., bullets), but it is well within acceptable range.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (20 parameters, pagination, output schema exists), the description is brief. It does not mention pagination (page/cursor) or result limits, nor how to combine parameters. While output schema covering return values reduces burden, some contextual gaps remain for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description does not add significant meaning beyond the schema; it restates coordinate units which are already in parameter descriptions. No extra semantics are provided, so score remains at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches product metadata with a safely generated TAP/ADQL query. It distinguishes from siblings like casda_search_catalogue by specifying it is read-only and lists what it does not do (no staging, download, etc.), making the purpose specific and well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for searching product metadata and notes it is read-only, but it does not explicitly state when to use this tool versus alternatives like casda_search_images or casda_search_spectra. No explicit exclusions or alternative names are provided, so guidance is adequate but not comprehensive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_search_projectsSearch CASDA projectsA
Read-onlyIdempotent

Search casda.project with optional exact filters and cursor pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque cursor from a previous projects page.
page_sizeNoPage size for bounded project listing.
short_nameNoExact project short name / ObsCore collection label.
project_codeNoExact OPAL/CASDA project code, such as AS102.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
projectsNo
paginationNo
provenanceNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, openWorldHint, etc. but the description adds 'cursor pagination' and 'optional exact filters', which are behavioral details beyond annotations. Contradiction is false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, 10 words, front-loaded with key concepts. Efficient but could briefly mention when to use exact filters or the role of cursor.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema exists and annotations cover safety, the description explains search with filters and pagination. Some missing context on cursor opaqueness, but overall complete for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with good descriptions for all 4 parameters. The description adds minimal extra meaning, summarizing filters and pagination, which is adequate but not adding significant value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches 'casda.project' with filters and cursor pagination. The verb 'Search' and resource are specific, but it does not distinguish from sibling search tools like casda_search_catalogue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as casda_get_project. Does not specify when to prefer exact filters or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_search_spectraSearch CASDA spectraC
Read-onlyIdempotent

Discover spectra with the CASDA SSA interface.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandNoOptional SSA BAND interval in metres.
timeNoOptional SSA TIME interval.
ra_degYesICRS right ascension in degrees, in [0, 360).
dec_degYesICRS declination in degrees, in [-90, 90].
size_degYesSSA SIZE search radius in degrees; server-bounded.
max_recordsNoMaximum rows to return; bounded by server configuration.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
spectraNo
returnedYes
provenanceNo
max_recordsYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, which cover safety traits. The description adds the SSA interface protocol but does not disclose other behaviors like pagination, result format, or server-side constraints beyond what schema provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, but it lacks sufficient detail. While not verbose, it could include more information without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the presence of an output schema and high schema coverage, the description is minimal and does not explain the SSA interface or the search's scope. It is insufficient for a tool with many siblings and complex parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are fully documented. The tool description does not add any additional meaning beyond the schema; baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Discover spectra' with a specific verb and resource, and mentions the CASDA SSA interface for context. However, it does not differentiate from sibling tools like casda_search_images or casda_search_catalogue, which also involve discovery.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., casda_create_spectrum, casda_search_images). No when-not or context exclusions provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_search_survey_imagesSearch CASDA survey imagesB
Read-onlyIdempotent

Discover survey images with the CASDA SIA 1 interface.

ParametersJSON Schema
NameRequiredDescriptionDefault
ra_degYesICRS right ascension in degrees, in [0, 360).
surveyYesSurvey code from casda_list_image_surveys, such as RACS-Low.
dec_degYesICRS declination in degrees, in [-90, 90].
size_degYesSIAP1 SIZE search box in degrees; server-bounded.
max_recordsNoMaximum rows to return; bounded by server configuration.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
imagesNo
returnedYes
provenanceNo
max_recordsYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description adds minimal behavioral context beyond mentioning the SIA 1 interface. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence. It is front-loaded and wastes no words, but could be slightly more informative without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description lacks context about the result format, limitations, or typical use cases. More guidance would be needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema descriptions are detailed. The tool description adds no additional parameter semantics beyond what is already in the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool discovers survey images using the CASDA SIA 1 interface, which is clear but does not differentiate from the sibling casda_search_images, which might serve a similar purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like casda_search_images or casda_list_image_surveys. The description lacks any contextual use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_stage_pawseyStage CASDA products to PawseyA

Submit one Pawsey pull staging job via DataLink pawsey_async_service.

Requires authentication and CASDA_ENABLE_STAGING (same flag as WEB full-file staging). Distinct from casda_stage_products: results are Pawsey-network restricted. Response includes human_gate_warnings; licence/HPC confirmation must be completed by a human in DAP — this server never auto-accepts terms. Reuse data-job status/download tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idsYesExplicit CASDA product identifiers for Pawsey network staging. Empty input is rejected; duplicates are removed.
allow_duplicateNoAllow a new request for the same active product set when a new idempotency key is used.
idempotency_keyNoCaller-supplied idempotency key; a UUID is generated when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
reusedNo
statusNo
job_kindNo
productsNo
provenanceNo
request_idNo
submitted_atNo
idempotency_keyNo
human_gate_warningsNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=false, idempotentHint=false), the description adds critical behavioral details: the tool submits a job (side effect), requires human-in-the-loop for terms acceptance, and returns human_gate_warnings. It also notes that results are Pawsey-network restricted, which is not captured by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise (3 sentences) and front-loaded with the main action. However, it packs several details (authentication, flag, sibling distinction, human confirmation, response hints) which could be more structured. Still, every sentence adds necessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential aspects: what the tool does, prerequisites (auth, flag), differentiation from a sibling, and a key behavioral constraint (human confirmation). It mentions the response includes human_gate_warnings, and given an output schema exists, it does not need to detail return values further. A slight gap is not mentioning the output schema structure, but that's acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the baseline is 3. The description adds value by stating that empty input is rejected and duplicates are removed for product_ids, and that a UUID is generated if idempotency_key is omitted. This goes beyond the schema's descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool submits a Pawsey pull staging job via DataLink pawsey_async_service, specifying the verb 'submit' and the resource 'one Pawsey pull staging job'. It explicitly distinguishes from casda_stage_products by noting the network restriction, ensuring no confusion with siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: it requires authentication and the CASDA_ENABLE_STAGING flag. It also explains when not to use it (for general staging, use casda_stage_products) and mentions that licence/HPC confirmation must be done by a human, never auto-accepted. This gives clear context for agent decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_stage_productsStage CASDA productsA

Submit one guarded archive-side staging request for explicit products.

This state-changing network operation requires authentication and CASDA_ENABLE_STAGING. It enforces configured product-count and estimated-size limits. It starts the confirmed archive job but does not poll continuously or write local files.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idsYesExplicit CASDA product identifiers. Empty input is rejected; duplicates are removed.
allow_duplicateNoAllow a new request for the same active product set when a new idempotency key is used.
idempotency_keyNoCaller-supplied idempotency key; a UUID is generated when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
reusedNo
statusNo
job_kindNo
productsNo
provenanceNo
request_idNo
submitted_atNo
idempotency_keyNo
human_gate_warningsNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate state-changing, non-destructive, non-idempotent behavior. The description adds key context: requires auth and specific config, enforces limits, starts job but does not poll or write files. This is beyond annotations, though it could mention error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with purpose. Each sentence adds value, though terms like 'guarded' and 'archive-side' could be slightly redundant. Overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the presence of annotations and output schema, the description covers behavioral traits well. It explains limits and non-polling nature but omits a direct reference to the status-checking sibling (casda_get_staging_status). Still fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter described. The tool description does not add extra meaning to parameters beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Submit one guarded archive-side staging request for explicit products,' which specifies the action (submit), resource (archive-side staging request), and scope (explicit products). This distinguishes it from sibling tools like casda_stage_pawsey (stages to Pawsey) and retrieval tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions prerequisites (authentication, CASDA_ENABLE_STAGING) but does not provide when-to-use or when-not-to-use guidance relative to siblings. It implies usage for staging explicit products but lacks explicit alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_submit_tap_querySubmit CASDA async TAP queryA

Create and start one async TAP job for validated SELECT-only ADQL.

Requires CASDA_ENABLE_ADVANCED_ADQL. Create and RUN are never automatically retried.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSELECT-only ADQL submitted as an async TAP/UWS job.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
statusYes
provenanceNo
request_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations give readOnlyHint=false and destructiveHint=false, but the description adds that 'Create and RUN are never automatically retried', which is not covered by annotations. It also implies the tool expects pre-validated ADQL, adding behavioral context beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states the function, second gives requirements and retry behavior. No wasted words, front-loaded with the core purpose. Excellent conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter and existence of output schema, the description covers the main purpose, a precondition, and retry policy. It omits error handling or chaining with result retrieval tools, but for a submission tool, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already describes the query parameter as 'SELECT-only ADQL submitted as an async TAP/UWS job.' The tool description adds 'validated' and the precondition, but these are marginal additions. Baseline 3 is appropriate as the description adds limited value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create and start one async TAP job for validated SELECT-only ADQL', specifying the verb (create, start), resource (async TAP job), and constraint (SELECT-only ADQL). This differentiates it from siblings like casda_tap_query (likely sync) and casda_validate_adql (only validation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a precondition ('Requires CASDA_ENABLE_ADVANCED_ADQL') and a behavioral note ('Create and RUN are never automatically retried'), providing context for when to use the tool. It does not explicitly compare to alternatives, but the async nature and SELECT-only restriction imply usage situations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_tap_queryRun CASDA TAP queryA
Read-onlyIdempotent

Execute one validated, bounded sync TAP query.

Requires CASDA_ENABLE_ADVANCED_ADQL. Rejects mutations, comments, multi-statement input, and non-allowlisted table references.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSELECT-only ADQL validated and executed via sync TAP.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsNo
errorNo
max_rowsYes
returnedYes
provenanceNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only and idempotent. The description adds behavioral details beyond annotations, such as rejecting certain inputs and being 'bounded' (likely size/rate limits), which helps the agent understand constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the core action, and every word contributes meaning. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and comprehensive annotations, the description covers the essential purpose, constraints, and input requirements. Could optionally mention result format or limits, but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with a description for the only parameter. The tool description adds no additional semantic information beyond what the schema already provides, so baseline score 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair 'Execute one validated, bounded sync TAP query' that clearly distinguishes it from sibling tools like casda_validate_adql (validation only) and casda_submit_tap_query (likely async).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the requirement for 'CASDA_ENABLE_ADVANCED_ADQL' and lists rejected inputs (mutations, comments, multi-statement, non-allowlisted tables), providing clear usage context. It could mention when to use alternatives like casda_submit_tap_query.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_validate_adqlValidate CASDA ADQLA
Read-onlyIdempotent

Validate ADQL against the SELECT-only policy without contacting CASDA.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCandidate ADQL SELECT statement to validate locally.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
queryYes
validNo
max_rowsYes
provenanceNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already note readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that validation occurs locally without contacting CASDA, which is valuable behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter, high schema coverage, and presence of an output schema, the description fully covers the tool's purpose and behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'query' has a description that clarifies it is a candidate ADQL SELECT statement for local validation, adding meaning beyond the schema property name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool validates ADQL against a SELECT-only policy and does so without contacting CASDA. This distinguishes it from siblings like casda_tap_query or casda_build_adql.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (local validation before submission), but does not explicitly state alternatives or when not to use. However, given the sibling tool names, the use case is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

casda_verify_fileVerify local CASDA downloadA
Read-onlyIdempotent

Re-verify checksum and length of an existing file under the download root.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath under CASDA_DOWNLOAD_DIR of an existing downloaded file.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
existsYes
checksumNo
local_pathYes
provenanceNo
size_bytesNo
content_length_verifiedNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds specific behavioral detail: it re-verifies checksum and length. No contradictions, and the description enriches the agent's understanding beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that immediately conveys the tool's purpose. No extraneous words. Front-loaded with the action (re-verify) and scope (existing file under download root).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, idempotent, read-only, with output schema), the description is fully adequate. The output schema covers return value details. No missing behavioral or contextual information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. The parameter 'path' is described in the schema as 'Path under CASDA_DOWNLOAD_DIR of an existing downloaded file.' The description repeats the 'under the download root' concept, adding no new meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'Re-verify' and resource 'checksum and length of an existing file under the download root'. It clearly distinguishes from sibling tools like casda_download_product (downloads) and casda_get_product (metadata retrieval).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (re-verify a downloaded file) but provides no explicit when-to-use, when-not-to-use, or alternative tools. No contraindications or prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 45 tool updatesv0.1.0
    • First observedcasda_abort_data_job
    • First observedcasda_abort_tap_job
    • First observedcasda_build_adql
    • First observedcasda_create_cutout
    • First observedcasda_create_manifest
    • First observedcasda_create_spectrum
    • First observedcasda_delete_data_job
    • First observedcasda_delete_tap_job
    • First observedcasda_describe_table
    • First observedcasda_download_job_results
    • First observedcasda_download_product
    • First observedcasda_get_archive_status
    • First observedcasda_get_auth_status
    • First observedcasda_get_collection
    • First observedcasda_get_dap_navigation
    • First observedcasda_get_data_job
    • First observedcasda_get_data_job_results
    • First observedcasda_get_datalink
    • First observedcasda_get_observation
    • First observedcasda_get_product
    • First observedcasda_get_project
    • First observedcasda_get_staging_status
    • First observedcasda_get_tap_job
    • First observedcasda_get_tap_results
    • First observedcasda_list_capabilities
    • First observedcasda_list_catalogues
    • First observedcasda_list_events
    • First observedcasda_list_foreign_keys
    • First observedcasda_list_image_surveys
    • First observedcasda_list_schemas
    • First observedcasda_list_tables
    • First observedcasda_list_tap_examples
    • First observedcasda_resolve_collection_doi
    • First observedcasda_search_catalogue
    • First observedcasda_search_images
    • First observedcasda_search_products
    • First observedcasda_search_projects
    • First observedcasda_search_spectra
    • First observedcasda_search_survey_images
    • First observedcasda_stage_pawsey
    • First observedcasda_stage_products
    • First observedcasda_submit_tap_query
    • First observedcasda_tap_query
    • First observedcasda_validate_adql
    • First observedcasda_verify_file

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have clearly distinct purposes. The only notable overlap is that casda_get_staging_status is explicitly noted as an alias of casda_get_data_job for full-file staging jobs, which could cause minor confusion. Other search, retrieval, and management tools are well-separated.

Naming Consistency5/5

All tool names follow a consistent 'casda_<verb>_<noun>' pattern in snake_case, with verbs like get, search, list, create, abort, delete, etc. There is no mixing of conventions, and the naming is predictable.

Tool Count3/5

With 45 tools, the surface is large but arguably justified given the breadth of CASDA operations (search, staging, downloads, TAP, data jobs). However, it differs from the typical 3-15 tool ideal and could be streamlined by consolidating some functions.

Completeness4/5

The tool set covers core workflows: metadata search, product retrieval, staging, downloading, and job management. Minor gaps exist, such as no tool to list all active data jobs or to update staged requests, but these are not critical for most use cases.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables discovery of HEPData records, tables, and data access with read-only operations and export links.
    9
    GPL 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying of the Cassini-Huygens mission dataset with tools for listing, searching, counting, aggregating, and browsing activities.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that provides tools to query 17+ astronomical databases (e.g., SIMBAD, VizieR, Gaia) via HTTP/TAP APIs, enabling AI applications to access astronomical data through natural language.
    13
    2
    BSD 3-Clause

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jbwod/CASDA-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server