aqc-mcp
Provides access to multiple NASA astrophysics data services including SIMBAD, VizieR, NED, ADS, HEASARC, IRSA, MAST, ESASky, and others, enabling queries of astronomical databases and archives through MCP tools.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aqc-mcpquery SIMBAD for M31"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-mcpThen use in config:
{
"mcpServers": {
"aqc-mcp": {
"command": "aqc-mcp"
}
}
}Usage š
1. Start Server
HTTP Mode (default)
npm start
# or
npm run devServer will start on http://localhost:3000
With ADS API Token
ADS_API_KEY="your-token" npm startCustom Port
PORT=8080 npm startSSE Mode
MCP_TRANSPORT=http npm startStdio Mode (for Claude Desktop)
MCP_TRANSPORT=stdio npm run dev2. API Endpoints
Health Check
curl http://localhost:3000/healthServer Info
curl http://localhost:3000/SSE Connection
curl http://localhost:3000/sseMCP 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 coordinatesradius(string, required): Search radius (e.g., "10arcsec", "0.5deg")catalog(string, optional): Specific catalog namelang(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 namelang(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 stringlatest(boolean, optional): Get latest papersreview(boolean, optional): Get review articles onlylang(string, optional): Output language
Requirements:
Set
ADS_API_KEYenvironment variable before starting the server
Example:
{
"name": "ads_query",
"arguments": {
"latest": true,
"lang": "en"
}
}gaia_cone_search
Query Gaia archive via cone search.
Parameters:
target(string, required): Target name or coordinatesradius(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 watchProject 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.jsonEnvironment Variables š§
Variable | Description | Default | Required |
| Transport mode ( |
| No |
| HTTP server port |
| No |
| 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 startPort already in use
Change the port:
PORT=8080 npm startQuery 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.
Links š
Available Tools
23 toolsaavso_query_regionC
Query AAVSO VSX for variable stars in a circular region around coordinates
| Name | Required | Description | Default |
|---|---|---|---|
| ra | Yes | Right Ascension in degrees (0-360) | |
| dec | Yes | Declination in degrees (-90 to 90) | |
| lang | No | Output language | en |
| format | No | Response format | votable |
| radius | No | Search radius in arcminutes | |
| max_magnitude | No | Maximum magnitude filter (brighter than) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language | en |
| star_name | Yes | Variable star name or identifier (e.g., "Mira", "Delta Cephei", "SX Uma") |
TDQS
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.
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.
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.
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.
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.
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.
ads_searchA
Search NASA ADS (Astrophysics Data System) for academic papers. Requires ADS_DEV_KEY or ADS_API_KEY env var.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language | en |
| sort | No | Sort order (e.g. "date desc", "citation_count desc") | date desc |
| query | Yes | Search query (e.g. "author:Einstein", "title:dark matter", "abs:exoplanet") | |
| max_results | No | Maximum number of results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the important authentication requirement (env var keys), which is real added value. It says nothing about rate limits, pagination, result format, or what happens with an invalid query, leaving significant gaps for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, purpose front-loaded before the operational requirement. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 4-parameter search tool with a fully documented schema and no output schema, the description covers purpose and auth but omits anything about the shape of results (fields returned, ordering behavior) or error handling. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter (query, sort, lang, max_results) is already documented with examples and defaults in the schema. The description adds no parameter-level meaning beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (NASA ADS academic papers), clearly identifying the tool as a literature search rather than a catalog/object lookup. However, it never names or contrasts itself with any sibling (e.g. simbad_query, ned_query, vizier_query), so an agent must infer that ADS is the bibliographic database and the others are object/catalog services.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes context (searching academic papers) and a hard prerequisite (ADS_DEV_KEY or ADS_API_KEY env var), which is actionable. But it gives no explicit guidance on when this tool should be chosen over the many sibling astronomy query tools, nor any exclusions.
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
| Name | Required | Description | Default |
|---|---|---|---|
| ra | No | Right Ascension in degrees (0-360) | |
| dec | No | Declination in degrees (-90 to 90) | |
| lang | No | Output language | en |
| radius | No | Search radius in arcminutes | |
| target | No | Object name (e.g. "M83", "NGC 253") | |
| max_results | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| ra | Yes | Right Ascension in degrees (0-360) | |
| dec | Yes | Declination in degrees (-90 to 90) | |
| lang | No | Output language | en |
| radius | No | Search radius in arcminutes | |
| mission | No | Mission name: xmm, hst, alma, jwst, chandra, herschel, spitzer, suzaku, cheops, xmm-om, iso, iue, akari, or "all" for XMM default | xmm |
| max_results | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| ra | No | Right Ascension in degrees | |
| dec | No | Declination in degrees | |
| lang | No | Output language | en |
| radius | No | Search radius in arcminutes | |
| target | No | Target object name (e.g. "NGC 1068") | |
| instrument | No | Instrument name (e.g. "UVES", "XSHOOTER", "MUSE") | |
| max_results | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language | en |
| hostname | No | Host star name (e.g. "TRAPPIST-1", "Kepler-22") | |
| max_results | No | Maximum number of results | |
| planet_name | No | Planet name (e.g. "Kepler-22 b", "TRAPPIST-1 e") |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| adql | Yes | ADQL query string | |
| lang | No | Output language | en |
| max_results | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| ra | No | Right Ascension in degrees (0-360) | |
| dec | No | Declination in degrees (-90 to 90) | |
| lang | No | Output language | en |
| radius | No | Search radius in degrees | |
| target | No | Target name (e.g., "Crab Nebula", "3C 273") | |
| max_energy | No | Maximum energy in MeV (e.g., 100000) | |
| min_energy | No | Minimum energy in MeV (e.g., 100) | |
| max_results | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| adql | Yes | ADQL query string | |
| lang | No | Output language | en |
| max_results | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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.
gaia_cone_searchC
Cone search on Gaia DR3 catalog by coordinates and radius
| Name | Required | Description | Default |
|---|---|---|---|
| ra | Yes | Right Ascension in degrees (0-360) | |
| dec | Yes | Declination in degrees (-90 to 90) | |
| lang | No | Output language | en |
| radius | No | Search radius in arcseconds | |
| max_results | No | Maximum number of results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral burden. It doesn't state whether this is a read-only operation, how results are returned (fields, format), any rate limits, or pagination behavior. Only the basic operation is described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficient and front-loaded with the key operation. It could be slightly more informative without losing conciseness, but it avoids waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is inadequate. It doesn't explain return values, result format, or limitations. With 5 parameters and 100% schema coverage, the agent can call it, but lacks behavioral context for correct interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meaning the schema already fully documents all 5 parameters including units and defaults. The description adds no parameter details beyond what the schema provides, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (cone search), resource (Gaia DR3 catalog), and scope (by coordinates and radius). This clearly identifies the operation, though it doesn't explicitly distinguish from siblings like gaia_adql which offer a different query mode on the same catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool vs alternatives such as gaia_adql, vizier_query, or simbad_query. The description implies a spatial search but provides no context about 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.
heasarc_queryC
Query HEASARC (High Energy Astrophysics Science Archive) by object name and mission catalog
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language | en |
| radius | No | Search radius in arcminutes | |
| mission | No | Mission/catalog table (e.g. "xmmmaster", "chanmaster", "swiftmastr", "rosmaster") | xmmmaster |
| max_results | No | Maximum number of results | |
| object_name | Yes | Object name (e.g. "Crab Nebula", "Cyg X-1") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| ra | Yes | Right Ascension in degrees | |
| dec | Yes | Declination in degrees | |
| lang | No | Output language | en |
| radius | No | Search radius in arcseconds | |
| catalog | No | IRSA catalog table name (e.g. "allwise_p3as_psd", "fp_psc" for 2MASS) | allwise_p3as_psd |
| max_results | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| adql | Yes | ADQL query string | |
| lang | No | Output language | en |
| max_results | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language | en |
| target | Yes | Target body (e.g. "Mars", "499", "Ceres", "1P/Halley") | |
| location | No | Observer location code (default "500" = geocentric, "500@10" = heliocentric) | 500 |
| step_size | No | Step size (e.g. "1d", "1h", "30m") | 1d |
| stop_time | No | Stop time (e.g. "2024-01-02"). Defaults to start + 1 day. | |
| start_time | No | Start time (e.g. "2024-01-01"). Defaults to today. | |
| ephemeris_type | No | Type of ephemeris data | ephemerides |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language | en |
| phys | No | Include physical parameters | |
| target | Yes | Target small body name or designation (e.g. "Ceres", "433", "1P/Halley") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| ra | No | Right Ascension in degrees (use with dec) | |
| dec | No | Declination in degrees (use with ra) | |
| lang | No | Output language | en |
| radius | No | Search radius in arcminutes | |
| max_results | No | Maximum number of results | |
| object_name | No | Object name (e.g. "M31", "NGC 1068"). Use this OR ra/dec. |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language | en |
| object_name | Yes | Object name (e.g. "M31", "NGC 1068", "Arp 220") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language | en |
| linename | No | Element/ion name (e.g. "Fe II", "H I", "Na") | |
| max_results | No | Maximum number of results to display | |
| max_wavelength | No | Maximum wavelength in Angstroms | |
| min_wavelength | No | Minimum wavelength in Angstroms |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ra | No | Right Ascension in degrees (cone search) | |
| dec | No | Declination in degrees (cone search) | |
| mjd | No | Modified Julian Date | |
| lang | No | Output language | en |
| plate | No | Plate number | |
| radius | No | Search radius in arcminutes (cone search, max 3) | |
| fiberid | No | Fiber ID | |
| objtype | No | Filter by object type (STAR, GALAXY, QSO) ā only for specobjid/plate queries | |
| specobjid | No | Spectroscopic object ID | |
| query_type | Yes | Query type | |
| max_results | No | Maximum results |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language | en |
| object_name | Yes | Astronomical object name or identifier |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language | en |
| chemical_name | No | Filter by chemical species name (e.g., "CO", "H2O") | |
| max_frequency | Yes | Maximum frequency in GHz | |
| min_frequency | Yes | Minimum frequency in GHz |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language | en |
| radius | No | Search radius in arcseconds | |
| target | Yes | Target name or coordinates (e.g. "M31" or "10.684 +41.269") | |
| catalog | No | VizieR catalog ID (e.g. "I/355/gaiadr3", "II/246/out") | I/355/gaiadr3 |
| max_results | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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.
23 tool updates
v2.1.2- First observed
aavso_query_region - First observed
aavso_query_star - First observed
ads_search - First observed
alma_query - First observed
esasky_query - First observed
eso_query - First observed
exoplanet_query - First observed
fermi_lat_adql - First observed
fermi_lat_catalog_query - First observed
gaia_adql - First observed
gaia_cone_search - First observed
heasarc_query - First observed
irsa_query - First observed
irsa_tap - First observed
jpl_horizons - First observed
jpl_sbdb - First observed
mast_query - First observed
ned_query - First observed
nist_lines - First observed
sdss_query - First observed
simbad_query - First observed
splatalogue_lines - First observed
vizier_query
TDQS
Scored across 23 tools
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.
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.
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.
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
Related MCP Connectors
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseBqualityCmaintenanceAn 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.216MIT
- FlicenseNot gradedqualityDmaintenanceProvides 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-
- AlicenseAqualityCmaintenanceMCP 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.11MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that wraps three NASA public APIs (Astronomy Picture of the Day, Mars rover photos, and near-Earth objects) as tools for AI assistants.-