Skip to main content
Glama
inoribea
by inoribea

Astroquery MCP Server šŸš€

A Model Context Protocol (MCP) server for astroquery-cli, providing HTTP and SSE (Server-Sent Events) transport options.


Overview ✨

The aqc-mcp server provides direct HTTP/TAP API access to 17+ astronomical databases as MCP tools, allowing AI applications and other services to query astronomical data through standardized MCP protocols. Supports both HTTP and SSE transports.


Related MCP server: Astro MCP

Features 🌟

  • ⚔ MCP Protocol: Full implementation of MCP specification

  • 🌐 Multiple Transports:

    • HTTP (default)

    • SSE (Server-Sent Events)

    • Stdio (for Claude Desktop)

  • šŸ”Œ 17 Databases: Direct TAP/REST API access to major astronomical archives

  • šŸŒ Language Support: Multi-language output (English, Chinese)

  • šŸ“Š Rich Output: Formatted tables and structured results

  • šŸ”‘ ADS API Token Support: Environment variable injection for authenticated queries

  • ⚔ No Python Required: Pure Node.js/TypeScript implementation


Supported Modules 🧩

Currently implemented tools (17 astronomical databases):

General Astronomy

  • SIMBAD: Query SIMBAD astronomical database

  • VizieR: Query VizieR catalog database

  • NED: NASA/IPAC Extragalactic Database

  • ADS: NASA Astrophysics Data System queries (requires API token)

Radio & Millimeter

  • ALMA: Query ALMA observations archive

  • ESO: European Southern Observatory science archive

High Energy & X-ray

  • Fermi LAT: Fermi Large Area Telescope gamma-ray source catalog

  • HEASARC: High Energy Astrophysics Science Archive (multiple missions)

Infrared & Submillimeter

  • IRSA: NASA/IPAC Infrared Science Archive

Space Observatories

  • MAST: Barbara A. Mikulski Archive for Space Telescopes

  • ESASky: Multi-mission all-sky archive

Solar System

  • JPL Horizons: Solar system body ephemerides and state vectors

  • JPL SBDB: Small-Body Database for asteroids and comets

Exoplanets & Stars

  • Exoplanet: NASA Exoplanet Archive

  • AAVSO: Variable Star Index (VSX catalog)

  • NIST: Atomic Spectra Database for spectral lines

Optical Surveys

  • Gaia: Gaia DR3 catalog cone search and ADQL queries

  • SDSS: Sloan Digital Sky Survey (DR18)

  • Splatalogue: Spectral line database

Total: 17 databases, 30+ tools


Installation šŸ› ļø

Quick Start

Prerequisites:

  • Node.js ≄ 18.0.0

No Python dependency required - aqc-mcp uses direct HTTP/TAP APIs to astronomical services.

MCP Server Configuration

Add to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "aqc-mcp": {
      "command": "npx",
      "args": ["-y", "aqc-mcp"],
      "env": {
        "ADS_API_KEY": "your-ads-api-token-here"
      }
    }
  }
}

Without ADS token:

{
  "mcpServers": {
    "aqc-mcp": {
      "command": "npx",
      "args": ["-y", "aqc-mcp"]
    }
  }
}

Alternative: Global Install

npm install -g aqc-mcp

Then use in config:

{
  "mcpServers": {
    "aqc-mcp": {
      "command": "aqc-mcp"
    }
  }
}

Usage šŸš€

1. Start Server

HTTP Mode (default)

npm start
# or
npm run dev

Server will start on http://localhost:3000

With ADS API Token

ADS_API_KEY="your-token" npm start

Custom Port

PORT=8080 npm start

SSE Mode

MCP_TRANSPORT=http npm start

Stdio Mode (for Claude Desktop)

MCP_TRANSPORT=stdio npm run dev

2. API Endpoints

Health Check

curl http://localhost:3000/health

Server Info

curl http://localhost:3000/

SSE Connection

curl http://localhost:3000/sse

MCP Tools šŸ”§

simbad_query

Query SIMBAD astronomical database.

Parameters:

  • object_name (string, required): Object name (e.g., "M31", "NGC 1234")

  • lang (string, optional): Output language ("en", "zh", "ja")

Example:

{
  "name": "simbad_query",
  "arguments": {
    "object_name": "M31",
    "lang": "en"
  }
}

vizier_query

Query VizieR catalog database.

Parameters:

  • target (string, required): Target name or coordinates

  • radius (string, required): Search radius (e.g., "10arcsec", "0.5deg")

  • catalog (string, optional): Specific catalog name

  • lang (string, optional): Output language

Example:

{
  "name": "vizier_query",
  "arguments": {
    "target": "M31",
    "radius": "10arcsec",
    "catalog": "I/345/gaia2"
  }
}

alma_query

Query ALMA observations archive.

Parameters:

  • object_name (string, required): Object name

  • lang (string, optional): Output language

Example:

{
  "name": "alma_query",
  "arguments": {
    "object_name": "Orion KL"
  }
}

ads_query

Query NASA Astrophysics Data System.

Parameters:

  • query (string, optional): Search query string

  • latest (boolean, optional): Get latest papers

  • review (boolean, optional): Get review articles only

  • lang (string, optional): Output language

Requirements:

  • Set ADS_API_KEY environment variable before starting the server

Example:

{
  "name": "ads_query",
  "arguments": {
    "latest": true,
    "lang": "en"
  }
}

Query Gaia archive via cone search.

Parameters:

  • target (string, required): Target name or coordinates

  • radius (string, optional): Search radius (default: "10arcsec")

  • lang (string, optional): Output language

Example:

{
  "name": "gaia_cone_search",
  "arguments": {
    "target": "M31",
    "radius": "1arcmin"
  }
}

HTTP API Examples šŸ“”

Call a Single Tool

curl -X POST http://localhost:3000/tools/call \
  -H "Content-Type: application/json" \
  -d '{
    "name": "simbad_query",
    "arguments": {
      "object_name": "M31"
    }
  }'

Batch Call Multiple Tools

curl -X POST http://localhost:3000/tools/batch \
  -H "Content-Type: application/json" \
  -d '{
    "tools": [
      {
        "name": "simbad_query",
        "arguments": {"object_name": "M31"}
      },
      {
        "name": "gaia_cone_search",
        "arguments": {"target": "M31", "radius": "10arcsec"}
      }
    ]
  }'

Claude Desktop Integration šŸ–„ļø

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "astroquery": {
      "command": "node",
      "args": ["/path/to/astroquery-cli/astroquery-mcp/dist/index.js"],
      "env": {
        "MCP_TRANSPORT": "stdio",
        "ADS_API_KEY": "your-ads-api-token-here"
      }
    }
  }
}

Development šŸ”Ø

Watch Mode

npm run watch

Project Structure

aqc-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts           # Main server entry
│   ā”œā”€ā”€ tools/             # MCP tool definitions (17 databases)
│   │   ā”œā”€ā”€ index.ts       # Tool registration
│   │   ā”œā”€ā”€ simbad.ts      # SIMBAD queries
│   │   ā”œā”€ā”€ vizier.ts      # VizieR catalog queries
│   │   ā”œā”€ā”€ alma.ts        # ALMA archive queries
│   │   ā”œā”€ā”€ ads.ts         # ADS bibliographic queries
│   │   ā”œā”€ā”€ gaia.ts        # Gaia DR3 queries
│   │   ā”œā”€ā”€ aavso.ts       # AAVSO VSX variable stars
│   │   ā”œā”€ā”€ fermi.ts       # Fermi LAT gamma-ray sources
│   │   ā”œā”€ā”€ heasarc.ts     # HEASARC queries
│   │   ā”œā”€ā”€ esasky.ts      # ESASky multi-mission archive
│   │   ā”œā”€ā”€ eso.ts         # ESO science archive
│   │   ā”œā”€ā”€ exoplanet.ts   # NASA Exoplanet Archive
│   │   ā”œā”€ā”€ irsa.ts        # IRSA infrared archive
│   │   ā”œā”€ā”€ jpl.ts         # JPL Horizons & SBDB
│   │   ā”œā”€ā”€ mast.ts        # MAST space telescopes
│   │   ā”œā”€ā”€ ned.ts         # NED extragalactic DB
│   │   ā”œā”€ā”€ nist.ts        # NIST atomic spectra
│   │   ā”œā”€ā”€ sdss.ts        # SDSS optical survey
│   │   └── splatalogue.ts # Spectral line database
│   └── utils/
│       └── http.ts        # HTTP/TAP client utilities
ā”œā”€ā”€ dist/                  # Compiled JavaScript
ā”œā”€ā”€ package.json
└── tsconfig.json

Environment Variables šŸ”§

Variable

Description

Default

Required

MCP_TRANSPORT

Transport mode (http, stdio)

stdio

No

PORT

HTTP server port

3000

No

ADS_API_KEY

NASA ADS API token

-

For ADS queries


Troubleshooting šŸ”

ADS queries fail

Set the ADS_API_KEY environment variable:

export ADS_API_KEY="your-token"
npm start

Port already in use

Change the port:

PORT=8080 npm start

Query timeouts

Some astronomical databases (e.g., Fermi LAT, HEASARC) may take longer to respond. The server uses reasonable timeout values, but you can adjust them if needed by modifying the timeout parameter in the HTTP client.


License šŸ“„

BSD-3-Clause


Contributing šŸ¤

Contributions welcome! Please open an issue or PR.


Available Tools

23 tools
aavso_query_regionC

Query AAVSO VSX for variable stars in a circular region around coordinates

ParametersJSON Schema
NameRequiredDescriptionDefault
raYesRight Ascension in degrees (0-360)
decYesDeclination in degrees (-90 to 90)
langNoOutput languageen
formatNoResponse formatvotable
radiusNoSearch radius in arcminutes
max_magnitudeNoMaximum magnitude filter (brighter than)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only lookup but says nothing about authentication, rate limits, result counts, or pagination behavior that would matter for a regional catalog query.

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?

A single front-loaded sentence with the resource and spatial scope stated immediately. No filler, though it is arguably terse for a six-parameter tool.

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?

With no annotations and no output schema, the description is minimal but adequate for a simple cone search whose parameters are fully described in the schema. It leaves output format behavior and the relationship to sibling tools unexplained.

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 all six parameters including ra, dec, radius, lang, format, and max_magnitude are fully documented in the schema. The description adds no syntax or default details beyond that, so the baseline of 3 applies.

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?

States a specific verb (Query), resource (AAVSO VSX variable stars), and scope (circular region around coordinates). An agent can tell it apart from most siblings by resource, though it does not explicitly contrast with the closely-related aavso_query_star.

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?

There is no when-to-use or when-not-to-use guidance, and the obvious alternative, aavso_query_star, is not mentioned. The cone-search intent is only implied by 'circular region around coordinates'.

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

aavso_query_starC

Query AAVSO VSX (Variable Star Index) for a specific variable star by name

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput languageen
star_nameYesVariable star name or identifier (e.g., "Mira", "Delta Cephei", "SX Uma")

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it only states the lookup action. It says nothing about read-only semantics, whether name matching is exact or fuzzy, behavior when the star is unknown, rate limits, or what data is returned.

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?

A single tight sentence that front-loads the data source and the lookup key with no filler. It is efficient, though its brevity contributes to the gaps noted in other dimensions.

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?

For a 2-parameter read tool with no annotations and no output schema, the description is minimally adequate: an agent knows what to pass but not what comes back (VSX fields, ephemeris/period data) or how failures present. Some return-value context would round it out.

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%: star_name, its example values, and the lang enum with default are all documented in the schema. The description adds only 'by name', which is already implied, so it neither compensates nor detracts. Baseline 3 applies.

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?

Names a specific verb (Query), a specific resource (AAVSO VSX / Variable Star Index), and a clear scope ('a specific variable star by name'). This implicitly separates it from the region-based sibling aavso_query_region, but it never names that sibling explicitly, so differentiation is left to inference.

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?

There is no explicit when-to-use guidance, no mention of when to prefer aavso_query_region or the other catalog tools (simbad_query, vizier_query) instead, and no prerequisites noted. The phrase 'by name' is the only implied usage condition.

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

alma_queryB

Query ALMA (Atacama Large Millimeter Array) archive by object name or coordinates

ParametersJSON Schema
NameRequiredDescriptionDefault
raNoRight Ascension in degrees (0-360)
decNoDeclination in degrees (-90 to 90)
langNoOutput languageen
radiusNoSearch radius in arcminutes
targetNoObject name (e.g. "M83", "NGC 253")
max_resultsNoMaximum number of results

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it says nothing beyond the basic operation. It does not disclose that this is a read-only archive lookup, what the result payload looks like, whether pagination/max_results truncation applies, or any rate limits. A mutation-free query is implied, but nothing is explicitly stated.

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 front-loaded sentence with zero filler; the resource and lookup modes come first. Nothing is wasted and it is easy to scan.

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?

For a 6-parameter tool with zero required parameters and no output schema, the description is minimally adequate but leaves the most important ambiguity unaddressed: whether target and ra/dec are alternatives or combinable, and what a result set represents. Given the fully described schema, an agent can construct a call, but the description does not resolve the coordination gap left by having no required 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 every parameter (ra, dec, radius, target, lang, max_results) is already documented, setting the baseline at 3. The description echoes the target-vs-coordinates distinction but adds no format, default, or mutual-exclusivity detail beyond the 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 names a specific verb ('Query') and resource ('ALMA archive'), and even expands the acronym so the agent knows which observatory's data this covers. It also states the two accepted lookup modes (object name or coordinates). It stops short of differentiating itself from the many other archive/cone-search siblings such as ned_query, simbad_query, or esasky_query.

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?

There is no statement of when to use this tool versus alternatives like simbad_query (name resolution) or ned_query, nor any prerequisite guidance. The phrase 'by object name or coordinates' hints at input modes but does not tell the agent which mode to prefer or that the two are mutually exclusive. Usage is only implied.

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

esasky_queryC

Query ESASky archive for astronomical observations by position and radius

ParametersJSON Schema
NameRequiredDescriptionDefault
raYesRight Ascension in degrees (0-360)
decYesDeclination in degrees (-90 to 90)
langNoOutput languageen
radiusNoSearch radius in arcminutes
missionNoMission name: xmm, hst, alma, jwst, chandra, herschel, spitzer, suzaku, cheops, xmm-om, iso, iue, akari, or "all" for XMM defaultxmm
max_resultsNoMaximum number of results

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It doesn't disclose authentication needs, rate limits, return format, pagination behavior, or what happens with the 'all' mission option. For a query tool with zero annotation coverage, this is a significant gap.

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 efficient sentence that front-loads the action and resource. No wasted words, though it could benefit from more structure given the tool's complexity.

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?

For a query tool with no annotations, no output schema, and 6 parameters, the description is too thin. It doesn't explain return format, result limits behavior, mission defaults, or how results are structured. An agent would need to guess at important behavioral aspects.

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 the schema fully documents all 6 parameters including enums and defaults. The description adds no additional parameter meaning beyond what the schema provides. Baseline 3 is appropriate when the schema does all the heavy lifting.

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?

States a specific verb ('Query'), resource ('ESASky archive for astronomical observations'), and method ('by position and radius'). This is clear and specific, though it doesn't explicitly differentiate itself from siblings like mast_query or heasarc_query that could do similar positional searches.

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 the many sibling archive query tools (mast_query, heasarc_query, irsa_query, etc.). The positional/radius approach is implied but there's no explicit when-to-use or when-not-to-use guidance, leaving the agent to infer selection criteria.

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

eso_queryC

Query ESO (European Southern Observatory) science archive by target, instrument, or coordinates

ParametersJSON Schema
NameRequiredDescriptionDefault
raNoRight Ascension in degrees
decNoDeclination in degrees
langNoOutput languageen
radiusNoSearch radius in arcminutes
targetNoTarget object name (e.g. "NGC 1068")
instrumentNoInstrument name (e.g. "UVES", "XSHOOTER", "MUSE")
max_resultsNoMaximum number of results

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about authentication needs, rate limits, result pagination, or what the response contains. For a 7-parameter archive query with no output schema, this is a substantial gap, mitigated only by the fact that a read-only archive query is inherently low-risk.

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?

A single front-loaded sentence with zero wasted words. It is efficient, though arguably terse enough that it underspecifies rather than over-explains.

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?

With 7 parameters, no output schema, and no annotations, the description is too thin: it does not explain how target/coordinates/instrument combine, how RA-DEC-radius relate, or what results look like. An agent would need to inspect the schema and guess at behavior to invoke this correctly.

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 all 7 parameters are already documented with units and defaults. The description names the three query dimensions (target, instrument, coordinates) but adds no syntax, mutual-exclusion, or defaulting detail beyond the schema, matching the baseline for high-coverage schemas.

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?

States a specific verb (Query) and resource (ESO European Southern Observatory science archive), plus the query dimensions (target, instrument, coordinates). It is clearly distinguishable from generic siblings by naming the ESO archive, though it does not contrast itself against the many other archive queries (alma_query, mast_query, ned_query).

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 when-to-use guidance, no prerequisites, and no mention of alternatives among the crowded sibling set of archive queries. The three query modes hint at usage but do not tell an agent when ESO is the right archive versus esasky_query or alma_query.

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

exoplanet_queryC

Query NASA Exoplanet Archive for confirmed exoplanet data

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput languageen
hostnameNoHost star name (e.g. "TRAPPIST-1", "Kepler-22")
max_resultsNoMaximum number of results
planet_nameNoPlanet name (e.g. "Kepler-22 b", "TRAPPIST-1 e")

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only query but says nothing about pagination/limits, output format, the fact that all four parameters are optional, or what is returned when no filter is supplied. For a query tool with zero annotation coverage this is a meaningful gap.

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?

A single front-loaded sentence with no filler; the resource is stated immediately. It is efficient, though arguably too terse for a tool whose behavior (optional filters, defaults) needs some framing.

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?

For a 4-parameter query tool with no output schema and no annotations, the description is minimally adequate: it identifies the source and data type. It omits what happens with unfiltered queries, the default result cap behavior, and any hint at return structure, which an agent would want before calling 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 description coverage is 100%, so each parameter (lang, hostname, max_results, planet_name) is already documented with examples and defaults. The description adds nothing parameter-specific, which is acceptable given the schema does the work, so the baseline 3 applies.

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?

States a specific verb (Query) and a specific resource (NASA Exoplanet Archive for confirmed exoplanet data), and the named data source distinguishes it functionally from sibling services like simbad_query, vizier_query, and gaia_adql. It does not explicitly say how it differs from those siblings in scope or filtering, so it stops short of a 5.

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?

There is no when-to-use guidance, no alternative tools named for related tasks (e.g., host-star lookups via simbad_query), and no statement of prerequisites. The only signal is the implied 'use this for exoplanet data' from the name.

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

fermi_lat_adqlB

Execute a raw ADQL query on the Fermi LAT archive (TAP service)

ParametersJSON Schema
NameRequiredDescriptionDefault
adqlYesADQL query string
langNoOutput languageen
max_resultsNoMaximum number of results

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and mostly fails it. Naming TAP implies a standard read-only query protocol, but nothing is said about row limits, sync vs async execution, timeouts, or error behavior for arbitrary user-supplied ADQL.

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?

A single front-loaded sentence with no filler. It is efficient, though the terseness borders on under-specification for a tool that accepts arbitrary query strings.

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?

No output schema, no annotations, and an unbounded input (any ADQL string), yet the description says nothing about the return shape, result caps, or execution model. For a free-form query tool this leaves substantial 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 description coverage is 100%, so all three parameters (adql, lang, max_results) are already documented in the schema with defaults and an enum. The description adds no syntax, dialect, or limit guidance beyond that, so the baseline of 3 applies.

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?

States a specific verb (Execute) and resource (raw ADQL query on the Fermi LAT archive via TAP), which is unambiguous. It does not explicitly distinguish itself from the closest sibling, fermi_lat_catalog_query, though 'raw' hints at the difference.

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 only implied: 'raw ADQL' suggests advanced, user-authored queries, and the sibling list contains a curated Fermi catalog tool. No explicit when-to-use, when-not-to-use, or named alternative is given.

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

fermi_lat_catalog_queryC

Query Fermi LAT point source catalog (4FGL-DR4, the latest 14-year catalog)

ParametersJSON Schema
NameRequiredDescriptionDefault
raNoRight Ascension in degrees (0-360)
decNoDeclination in degrees (-90 to 90)
langNoOutput languageen
radiusNoSearch radius in degrees
targetNoTarget name (e.g., "Crab Nebula", "3C 273")
max_energyNoMaximum energy in MeV (e.g., 100000)
min_energyNoMinimum energy in MeV (e.g., 100)
max_resultsNoMaximum number of results

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, but it discloses very little: no cone search semantics, default radius (5 degrees), max_results (50), energy filtering behavior, or output format. For an 8-parameter query tool with no annotations and no output schema, this is a significant gap.

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, highly efficient sentence that front-loads the essential context (version and catalog). No wasted words.

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?

For a tool with 8 parameters, no annotations, and no output schema, the description is too thin. It lacks cone-search behavior, default radius/max_results implications, energy units and filtering, and how it differs from fermi_lat_adql. An agent would need to infer much to call it correctly.

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 the schema already documents each parameter including defaults and ranges. The description adds no meaning beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

States a specific verb (Query) and resource (Fermi LAT point source catalog), and identifies the catalog version (4FGL-DR4, 14-year) which distinguishes it from a generic catalog. However it doesn't distinguish the tool from its sibling fermi_lat_adql, which likely queries the same catalog differently.

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 only states what the tool does, with no guidance on when to use it versus alternatives. It doesn't tell the agent when to use this cone-search-style query versus the sibling fermi_lat_adql, nor when each spatial parameter (target vs ra/dec vs radius) is appropriate.

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

gaia_adqlC

Execute a raw ADQL query on the Gaia archive

ParametersJSON Schema
NameRequiredDescriptionDefault
adqlYesADQL query string
langNoOutput languageen
max_resultsNoMaximum number of results

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state that this is a read-only operation, whether authentication is required, whether the query is synchronous or asynchronous, what happens on query timeout, or how the max_results cap interacts with large result sets.

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?

A single front-loaded sentence with no wasted words. It is efficiently sized, though the brevity borders on under-specification for a raw-query tool.

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?

For a tool that executes arbitrary user-authored queries against a large archive, the description omits return format, result limits behavior, error handling, and required ADQL table/schema knowledge. With no output schema and no annotations, more context is needed than a bare one-liner.

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 the schema already documents adql, lang, and max_results. The description adds nothing about parameter syntax or usage (e.g., ADQL grammar, table names, language effect), so this sits at the baseline for fully-covered schemas.

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?

States a specific verb (Execute) and resource (raw ADQL query) scoped to the Gaia archive, so the agent knows exactly what it does. However, it does not distinguish itself from close siblings such as gaia_cone_search or irsa_tap, leaving the boundary implicit.

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?

There is no when-to-use guidance and no mention of alternatives. With siblings like gaia_cone_search (a structured positional query) and irsa_tap (another raw TAP/ADQL endpoint), the description should say when a raw ADQL query on Gaia is preferred, but it offers nothing.

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

heasarc_queryC

Query HEASARC (High Energy Astrophysics Science Archive) by object name and mission catalog

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput languageen
radiusNoSearch radius in arcminutes
missionNoMission/catalog table (e.g. "xmmmaster", "chanmaster", "swiftmastr", "rosmaster")xmmmaster
max_resultsNoMaximum number of results
object_nameYesObject name (e.g. "Crab Nebula", "Cyg X-1")

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it is a single sentence. It omits rate limits, whether the search is a positional cross-match against a specific mission table, whether results are truncated, and what the response contains. A read-only archive query is low-risk, but the description still underspecifies behavior for an agent to call it confidently.

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 front-loaded sentence with the verb, resource, and acronym expansion. No filler, no repetition of schema content, every clause earns its place.

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?

For a five-parameter astronomy archive query with no annotations and no output schema, the description should at least clarify that this is a positional cone search against a chosen mission table and what the mission default ('xmmmaster') implies. It leaves the agent to infer behavior from sibling tools and defaults, which is inadequate given the domain 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% with all five parameters documented (lang, radius, mission, max_results, object_name), so the baseline is 3. The description echoes 'object name and mission catalog' but adds no format guidance, default rationale, or valid radius/mission semantics beyond what the schema already supplies.

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?

States a specific verb (Query) plus the resource (HEASARC), spells out the acronym, and names the two selection axes (object name, mission catalog). This clearly distinguishes it from a generic query, but it does not differentiate it from cone-search siblings like simbad_query, ned_query, or vizier_query which operate on the same inputs.

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 indication of when to prefer HEASARC over the many sibling archives (irsa_query, simbad_query, esasky_query, ned_query) that also resolve an object name to coordinates. No prerequisites, no mention that it is a cone search, and no exclusions are given, so the agent must guess based on the description alone.

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

irsa_queryC

Query NASA/IPAC Infrared Science Archive (IRSA) by coordinates and catalog

ParametersJSON Schema
NameRequiredDescriptionDefault
raYesRight Ascension in degrees
decYesDeclination in degrees
langNoOutput languageen
radiusNoSearch radius in arcseconds
catalogNoIRSA catalog table name (e.g. "allwise_p3as_psd", "fp_psc" for 2MASS)allwise_p3as_psd
max_resultsNoMaximum number of results

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Query' implies a read operation, but permissions, rate limits, result format, and other behavioral traits are omitted.

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 front-loaded sentence with no filler. It is appropriately sized for a short purpose statement and every word contributes.

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?

For a six-parameter query tool in a crowded astronomy sibling set, the description lacks routing guidance, output expectations, and behavioral context. The schema covers inputs, but no annotations or output schema means the description should do more.

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 the input schema already documents all six parameters, including defaults and the catalog example. The description only mentions coordinates and catalog without adding format or default meaning beyond the 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?

States a specific verb ('Query'), resource ('NASA/IPAC Infrared Science Archive (IRSA)'), and method ('by coordinates and catalog'). It is clear what the tool does, but it does not explicitly distinguish itself from siblings such as irsa_tap or other coordinate catalog query tools.

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?

Provides no when-to-use or when-not-to-use guidance. It does not mention alternatives like irsa_tap, simbad_query, or vizier_query, leaving routing entirely to inference.

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

irsa_tapC

Execute raw ADQL query against IRSA TAP service

ParametersJSON Schema
NameRequiredDescriptionDefault
adqlYesADQL query string
langNoOutput languageen
max_resultsNoMaximum number of results

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it discloses nothing about read-only semantics, synchronous vs asynchronous execution, truncation behavior when max_results is hit, timeout or rate limits, or error handling for invalid ADQL. Only the bare fact of query execution is conveyed.

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?

A single eight-word sentence with the action and target front-loaded and zero filler. It is efficient, though so terse that it edges toward under-specification rather than optimal density.

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?

With no annotations, no output schema, and three parameters, the description should carry significantly more: result format, pagination/truncation, error behavior, and routing relative to irsa_query. As written, an agent can form the call but not predict what happens on failure or over-large result sets.

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 'adql', 'lang', and 'max_results' are already documented in the schema, which establishes a baseline of 3. The description adds nothing beyond that, e.g., no note on ADQL version limits, string escaping, or how max_results interacts with server-side truncation.

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?

Names a specific verb (Execute) and resource (raw ADQL query against IRSA TAP service), and the word 'raw' hints at a low-level counterpart to the higher-level sibling irsa_query. It does not explicitly contrast itself with that sibling, so differentiation is left to inference rather than stated.

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?

There is no guidance on when to use this tool versus irsa_query, gaia_adql, or fermi_lat_adql, and no mention of prerequisites, ADQL dialect constraints, or expected query complexity. The agent must guess that this is the escape hatch for queries the higher-level tools cannot express.

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

jpl_horizonsC

Query JPL Horizons for solar system body ephemerides, orbital elements, or state vectors

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput languageen
targetYesTarget body (e.g. "Mars", "499", "Ceres", "1P/Halley")
locationNoObserver location code (default "500" = geocentric, "500@10" = heliocentric)500
step_sizeNoStep size (e.g. "1d", "1h", "30m")1d
stop_timeNoStop time (e.g. "2024-01-02"). Defaults to start + 1 day.
start_timeNoStart time (e.g. "2024-01-01"). Defaults to today.
ephemeris_typeNoType of ephemeris dataephemerides

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it says nothing about rate limits, remote service availability, output format, or error behavior. It does imply a networked, read-only query, but that is inferred rather than stated.

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?

A single well-formed sentence with no filler, and the key capability is front-loaded. It is efficient, though quite terse for a 7-parameter tool.

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?

For a 7-parameter query tool with no annotations and no output schema, the description omits the time-range/step-size semantics, default behaviors, and expected return structure. The schema covers parameter syntax but the description leaves the overall behavior underspecified.

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 the schema already documents all 7 parameters with examples and defaults. The description's mention of the three queryable data products maps to the ephemeris_type enum but adds no syntax or format detail beyond it; baseline 3 applies.

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?

States a specific verb (Query) and resource (JPL Horizons) and enumerates the three data products available (ephemerides, orbital elements, state vectors), so the agent knows what comes back. It does not distinguish itself from the sibling jpl_sbdb, which also serves solar system bodies, so the purpose is clear but not differentiated.

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 instead of jpl_sbdb, simbad_query, or any other sibling. There are no prerequisites, exclusions, or context cues — only a statement of what can be queried.

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

jpl_sbdbC

Query JPL Small-Body Database for asteroid/comet orbital and physical data

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput languageen
physNoInclude physical parameters
targetYesTarget small body name or designation (e.g. "Ceres", "433", "1P/Halley")

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description carries the full burden but provides minimal behavioral context. It doesn't specify authentication requirements, rate limits, return format, or pagination. The only hint is that it queries orbital and physical data, but no details on how those are returned or what happens on invalid targets.

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 that front-loads the tool's purpose. Every word earns its place with no unnecessary detail.

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?

For a query tool with no annotations and no output schema, the description should at least mention expected return values or behavioral traits. It does not explain what data is returned, how it's structured, or any prerequisites. The description is too thin for a tool that likely returns complex orbital data.

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 the schema already documents all parameters (target, phys, lang) with examples and defaults. The description adds no additional meaning beyond what the schema provides. Baseline 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 a clear verb+resource: 'Query JPL Small-Body Database for asteroid/comet orbital and physical data'. It distinguishes itself from siblings (e.g., jpl_horizons, exoplanet_query) by naming the specific database and data type. It could be slightly more specific about what fields are returned, but the purpose is clear.

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 like jpl_horizons or exoplanet_query. It only states what it does, leaving the agent to infer the appropriate context. No exclusions or alternative recommendations are given.

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

mast_queryC

Search MAST (Mikulski Archive for Space Telescopes) for observations by object name or coordinates

ParametersJSON Schema
NameRequiredDescriptionDefault
raNoRight Ascension in degrees (use with dec)
decNoDeclination in degrees (use with ra)
langNoOutput languageen
radiusNoSearch radius in arcminutes
max_resultsNoMaximum number of results
object_nameNoObject name (e.g. "M31", "NGC 1068"). Use this OR ra/dec.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden of behavioral disclosure. It implies a read-only search but says nothing about rate limits, authentication, pagination, or what kind of records (spectra, images, catalogs) are returned. For a 6-parameter query tool with zero annotation coverage, this is thin.

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, well-front-loaded sentence that names the archive, the action, and the two query modes with no wasted words.

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?

With no annotations and no output schema, the description should compensate more: it omits result format, pagination behavior, and guidance on the ra/dec vs object_name choice. Given the tool's complexity and rich sibling set, this leaves the agent under-informed.

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 the schema already documents all six parameters with defaults and units. The description's 'object name or coordinates' phrasing restates the schema rather than adding format details or clarifying the mutual exclusivity beyond what object_name's description already states. Baseline 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?

States a specific verb (search), resource (MAST with expansion), and content (observations), plus the two accepted query modes (object name or coordinates). This is clear and unambiguous. However, it does not distinguish MAST from the many sibling archive queries (simbad_query, ned_query, vizier_query, irsa_query, etc.), so an agent must infer which archive to pick.

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 when-to-use guidance at all. In a sibling set crowded with archive/catalog queries, the description never says why an agent would choose MAST over NED, SIMBAD, or Vizier, nor when a cone search (ra/dec/radius) is preferred over object_name.

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

ned_queryB

Query NASA/IPAC Extragalactic Database (NED) for object information by name

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput languageen
object_nameYesObject name (e.g. "M31", "NGC 1068", "Arp 220")

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses nothing beyond the basic action: no return format, no data coverage, no rate limits, and notably omits NED's specific focus on extragalactic objects, which is critical context.

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?

A single, efficient sentence with no waste. It is front-loaded but somewhat under-specified for the tool's capabilities.

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 absence of annotations and output schema, the description is barely sufficient. It does not explain what 'object information' includes, nor does it scope NED as an extragalactic database, leaving the agent to infer from world knowledge.

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 already documents both parameters with examples and enum values. The description adds no parameter-level detail beyond what is in the schema; baseline 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?

States a specific verb (query) and resource (NED) with scope 'by name'. However, it does not differentiate from sibling name-lookup tools like simbad_query or vizier_query, which an agent could confuse with it.

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 through 'by name,' but gives no guidance on when to prefer NED over sibling astronomical databases, nor any exclusions. Adequate but with clear gaps.

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

nist_linesC

Query NIST Atomic Spectra Database for spectral line data

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput languageen
linenameNoElement/ion name (e.g. "Fe II", "H I", "Na")
max_resultsNoMaximum number of results to display
max_wavelengthNoMaximum wavelength in Angstroms
min_wavelengthNoMinimum wavelength in Angstroms

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about read-only semantics, rate limits, or result shape. It only implies a read by using 'Query', which is weak evidence for a tool with zero structured behavioral metadata.

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?

A single sentence with zero filler, and the resource is front-loaded. It is efficient, though the extreme brevity leaves no room for the usage or behavioral context an agent would benefit from.

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?

Five parameters, no annotations, and no output schema, yet the description explains nothing about what happens when optional filters are omitted, what the results contain, or how many records come back by default. For a multi-filter query tool with no structured behavioral support, this is under-specified.

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 every parameter (lang, linename, max_results, min/max_wavelength) is already documented in the schema, and the baseline of 3 applies. The description adds no format hints, unit clarifications, or guidance on optionality beyond what the schema provides.

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 pairs a specific verb ('Query') with a named resource ('NIST Atomic Spectra Database') and the data type ('spectral line data'), so the agent knows exactly what it returns. It stops short of a 5 because it gives no signal to distinguish it from the sibling 'splatalogue_lines', which serves a very similar spectral-line use case.

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?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. With 'splatalogue_lines' in the sibling list covering overlapping spectral-line territory, the absence of any routing hint is a real gap rather than a minor omission.

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

sdss_queryB

Query the Sloan Digital Sky Survey (SDSS DR18). Supports cone search, specobjid lookup, and plate/mjd/fiberid lookup.

ParametersJSON Schema
NameRequiredDescriptionDefault
raNoRight Ascension in degrees (cone search)
decNoDeclination in degrees (cone search)
mjdNoModified Julian Date
langNoOutput languageen
plateNoPlate number
radiusNoSearch radius in arcminutes (cone search, max 3)
fiberidNoFiber ID
objtypeNoFilter by object type (STAR, GALAXY, QSO) — only for specobjid/plate queries
specobjidNoSpectroscopic object ID
query_typeYesQuery type
max_resultsNoMaximum results

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not mention that queries are read-only, what authentication or network access is needed, rate limits, or that results may be truncated by max_results. It reveals only the supported lookup modes.

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 tight sentence front-loads the resource and enumerates the three modes with no filler. Every clause earns its place.

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?

The description names the query modes, which is the minimum needed to select a query_type, but with 11 parameters, no annotations, and no output schema, it leaves out return format, result limits, and safety profile. Adequate but with clear gaps for a tool of this 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%, so the schema already documents every parameter, including which apply to which query type. The description adds no parameter semantics beyond naming the three query types, which the schema already encodes as an enum. Baseline 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?

States a specific verb (Query) and resource (SDSS DR18) and enumerates three supported query modes, making the tool's scope clear. It does not, however, distinguish itself from siblings like simbad_query or ned_query that also do astronomical lookups.

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 lists query modes but gives no guidance on when to use this tool versus the many sibling astronomy query tools, nor any prerequisites or exclusions. An agent cannot tell from the text when SDSS is the right choice.

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

simbad_queryC

Query SIMBAD astronomical database by object identifier (e.g. M31, NGC 1234, Vega)

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput languageen
object_nameYesAstronomical object name or identifier

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not say whether the call is read-only, whether it returns a single record or many matches, how ambiguous names are resolved, or whether there are rate limits or auth requirements. For a read query that is likely safe, this is still a large behavioral gap.

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?

A single efficient sentence with the key identifier first and examples last; nothing is wasted. It is arguably under-specified rather than overly long, so brevity is a virtue here, not a flaw.

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?

With 2 parameters, full schema coverage, and no output schema, the description needs to carry the return-shape and disambiguation story — and it does not. It is adequate to attempt a call but leaves the agent guessing about result format and when to prefer a sibling database.

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 the schema already documents both parameters, establishing a baseline of 3. The examples (M31, NGC 1234, Vega) add a little format intuition but nothing about the lang parameter's effect on returned values.

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?

States a specific verb (Query) plus resource (SIMBAD astronomical database) and the primary lookup key (object identifier), with concrete examples (M31, NGC 1234, Vega) that make the scope unmistakable. It stops short of distinguishing itself from the near-identical sibling ned_query, which queries a different but comparable database.

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 when-to-use guidance, no exclusions, and no routing among the many name-resolution siblings (ned_query, vizier_query, simbad-adjacent catalogue tools). The use case is only implied by the phrase 'by object identifier'.

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

splatalogue_linesB

Query the Splatalogue spectral line database by frequency range. Optionally filter by chemical species name.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput languageen
chemical_nameNoFilter by chemical species name (e.g., "CO", "H2O")
max_frequencyYesMaximum frequency in GHz
min_frequencyYesMinimum frequency in GHz

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the basic query intent. It does not mention result volume (line databases can return thousands of matches), default limits, pagination, or whether output is capped, all of which materially affect how an agent should call and consume this tool.

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?

Two short, front-loaded sentences with zero filler; the core query and scope come first and the optional filter second. It is efficient, though its brevity is part of why behavioral detail is missing.

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?

There is no output schema, so the description would ideally hint at what a line record contains (frequency, intensity, quantum numbers) and roughly how many rows to expect. As written it is functional but leaves the return shape entirely unstated for a multi-parameter astronomy query.

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 units (GHz), an enum, and defaults all documented inline, so the schema does the heavy lifting. The description restates the frequency-range and chemical-name filtering but adds no syntax, format, or edge-case meaning beyond what the schema already states.

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?

States a specific verb and resource ("Query the Splatalogue spectral line database") plus the primary scope ("by frequency range"), which is enough to distinguish it from catalog/object siblings. It does not, however, differentiate itself from the closely related nist_lines line database, which is the one alternative an agent would most likely confuse it with.

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 by the required frequency-range parameters and the optional species filter, so an agent knows the shape of a valid call. There is no explicit statement of when to prefer this over nist_lines or any other line/catalog tool, and no prerequisites or exclusions are given.

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

vizier_queryB

Query VizieR catalog service. Cone search by coordinates+radius on a specific catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput languageen
radiusNoSearch radius in arcseconds
targetYesTarget name or coordinates (e.g. "M31" or "10.684 +41.269")
catalogNoVizieR catalog ID (e.g. "I/355/gaiadr3", "II/246/out")I/355/gaiadr3
max_resultsNoMaximum number of results

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It says 'Query' and 'Cone search,' implying a read-only search, but does not disclose result limits, output behavior, authentication needs, or other operational traits. Only the search method is conveyed.

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 short sentences with no waste, front-loading the service name and then the specific search method. Every sentence contributes to understanding the tool's operation.

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?

For a five-parameter query tool with full schema descriptions but no output schema and no annotations, the description covers the core operation adequately. However, it does not state what the tool returns or add any behavioral context, leaving some gaps for an agent invoking an external catalog service.

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 the schema already documents all five parameters including target, radius, catalog, max_results, and lang. The description mentions coordinates+radius and a specific catalog, which maps to some parameters but adds no syntax or format details beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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 a specific verb and resource: 'Query VizieR catalog service' and 'Cone search by coordinates+radius on a specific catalog.' It distinguishes the operation from generic catalog queries by naming VizieR and cone search, but does not explicitly differentiate from siblings such as simbad_query, ned_query, or gaia_cone_search.

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 by specifying 'Cone search by coordinates+radius on a specific catalog,' which tells an agent the required inputs and scenario. However, it provides no explicit when-to-use or when-not-to-use guidance relative to alternatives, leaving the agent to infer selection.

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.

  1. 23 tool updatesv2.1.2
    • First observedaavso_query_region
    • First observedaavso_query_star
    • First observedads_search
    • First observedalma_query
    • First observedesasky_query
    • First observedeso_query
    • First observedexoplanet_query
    • First observedfermi_lat_adql
    • First observedfermi_lat_catalog_query
    • First observedgaia_adql
    • First observedgaia_cone_search
    • First observedheasarc_query
    • First observedirsa_query
    • First observedirsa_tap
    • First observedjpl_horizons
    • First observedjpl_sbdb
    • First observedmast_query
    • First observedned_query
    • First observednist_lines
    • First observedsdss_query
    • First observedsimbad_query
    • First observedsplatalogue_lines
    • First observedvizier_query

TDQS

B3.2/5.0

Scored across 23 tools

Disambiguation4/5

Each tool maps to a distinct astronomy archive or service, so most are easily differentiated by target source. However, the IRSA pair (irsa_tap vs irsa_query) and the Gaia/Fermi ADQL vs cone/catalog pairs could cause slight confusion about which to pick for a given query.

Naming Consistency4/5

Names consistently use snake_case and generally follow a service_query or service_action pattern. Some action suffixes vary (tap, adql, cone_search, horizons, sbdb, lines), but the pattern remains readable and domain-consistent.

Tool Count3/5

At 23 tools, the set is heavy and includes multiple similar query endpoints for different archives. For a broad astronomy aggregator the breadth is defensible, but the count is above the typical well-scoped range and adds cognitive load.

Completeness4/5

The surface covers a wide range of major astronomical archives and services, with read-only queries appropriate for the domain. Minor gaps exist, such as no generic TAP discovery or data-product download, but core research workflows are well supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    An MCP server that enables LLMs to query data from various NASA APIs, allowing access to astronomical data, space weather information, Earth imagery, and exoplanet information directly from compatible AI clients.
    21
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides unified natural language access to 40+ astronomical databases and surveys including DESI, SIMBAD, SDSS, and Gaia, enabling researchers to search, retrieve, and analyze astronomical data without learning complex APIs.
    6
    -
  • A
    license
    A
    quality
    C
    maintenance
    MCP server providing AI agents with access to NASA and space/astronomy data including APOD, Mars rover photos, near-Earth asteroids, exoplanets, Earth imagery, natural events, and space weather.
    11
    MIT