Skip to main content
Glama

pwn-mcp-server

CI PyPI

An MCP server for pulsar wind nebulae (PWNe) and other nebulae. It lets an LLM client:

  • query catalogs: a bundled table of 37 well-studied PWNe and 16 showcase SNRs, H II regions and planetary nebulae, plus live SIMBAD, VizieR (Green's SNR catalogue, H.E.S.S. HGPS, Sharpless, WISE H II, Strasbourg-ESO PNe), the ATNF pulsar catalogue and CADC

  • render images: survey cutouts with pulsar, SNR and PWN overlays, including native-resolution Canadian Galactic Plane Survey (CGPS) 1420 and 408 MHz mosaics from CADC, multi-wavelength panels, Galactic maps with the CGPS footprint, P–Ṗ and population plots

  • compare colour spaces: the perceived colour of nebular spectra under the CIE 1931 2° and CIE 1964 10° standard observers (xy, u′v′, CIELAB, sRGB, ΔE2000, dominant wavelength), with reddening and the scotopic (rod) response

Install and run

From PyPI with uv:

uvx --from pwn-mcp-server pwn-mcp

Register it with Claude Code:

claude mcp add pwn -- uvx --from pwn-mcp-server pwn-mcp

Or run the container (stdio):

docker run -i --rm -v pwn-mcp-data:/data ghcr.io/wdconinc/pwn-mcp-server

Or from a checkout:

uv sync
uv run pwn-mcp

To inspect the tools interactively:

npx @modelcontextprotocol/inspector uvx --from pwn-mcp-server pwn-mcp

Claude Code plugin

claude-plugin/ packages the server as the pwn-nebulae Claude Code plugin, which runs it with uvx from the main branch. To try it from a checkout:

claude --plugin-dir ./claude-plugin

Configuration

Variable

Default

Meaning

PWN_MCP_OFFLINE

unset

1 disables all remote queries; only bundled data and cached results are used

PWN_MCP_TIMEOUT

30

Timeout for remote services (s)

PWN_MCP_CACHE_DIR

platform user cache dir

Cache for live queries and image cutouts (30-day TTL)

PWN_MCP_OUTPUT_DIR

$PWN_MCP_CACHE_DIR/output

Where rendered PNGs are saved

Related MCP server: astronomy-oracle

Tools

Catalogs

Tool

What it does

search_nebulae

Filter the bundled catalog by name, kind, PWN class, Galactic position, CGPS coverage, pulsar Ė

get_nebula

Full record: position, host SNR (Green), pulsar (ATNF), TeV counterpart (HGPS), CGPS coverage; live=true adds SIMBAD/VizieR/ATNF/CADC detail

cone_search

Objects around a name or position in the bundled table, Green, HGPS, Sharpless, WISE H II, PNe, ATNF

query_vizier

Whole-catalog queries with constraints, e.g. all type-F (filled-centre) remnants in Green

get_pulsar

ATNF parameters for one pulsar

cgps_coverage

Whether a position is in the CGPS 1420/408 MHz footprint; optionally list CADC products

list_catalogs

Available catalogs and provenance of the bundled tables

Images and plots (each returns a PNG plus JSON metadata, including the saved path)

Tool

What it does

list_surveys

CGPS 1420/408 MHz, CGPS+VGPS, NVSS, SUMSS, DSS2, Pan-STARRS, IPHAS/VTSS/SHASSA Hα, AllWISE, ROSAT, Fermi

render_cutout

One survey around an object, with pulsar, host-SNR outline, PWN extent and neighbours

render_multiwavelength

Panel grid of the same field in several surveys

plot_galactic_map

Plane strip or all-sky map with the CGPS footprint, optionally over all Green SNRs

plot_ppdot

P–Ṗ diagram with PWN hosts highlighted and constant B, τ_c and Ė lines

plot_population

Scatter of PWN properties (Ė, τ_c, distance, sizes in arcmin or pc, …)

Colour (CIE 1931 2° vs CIE 1964 10°)

Tool

What it does

list_spectrum_templates

H II region, planetary nebula, SNR shock, Crab filaments/synchrotron/integrated, single lines, equal-energy white

nebula_color

Colour of a template or a custom spectrum (emission lines, synchrotron, blackbody, reddening) under each observer, with differences

plot_chromaticity_comparison

xy and u′v′ diagrams with both spectral loci and the templates under each observer

plot_cmf_comparison

The x̄ȳz̄ functions of both observers with the main nebular lines marked

render_color_swatches

sRGB swatches per observer next to each spectrum

plot_nebula_spectrum

A template spectrum with each observer's ȳ(λ)

Resources: pwn://catalog/pwne, pwn://catalog/nebulae, pwn://lines, pwn://surveys, pwn://references. Prompts: summarize_pwn, compare_nebula_colors.

Notes on the science

Bundled catalog. Only names, associations and PWN class (filled-centre, composite, relic, bow-shock) in src/pwn_mcp/data/*_curated.csv are entered by hand. Every number in pwne.csv and nebulae.csv is produced by scripts/build_local_catalog.py from SIMBAD, Green's catalogue (VizieR VII/297, 2024 October version), the ATNF catalogue and the HGPS. Pulsar distances are the ATNF DIST values. PWN sizes are only filled for filled-centre remnants, where Green's diameter is the PWN size. Rebuild with:

uv run python scripts/build_local_catalog.py

CGPS. The footprint used for in_cgps is approximate: 52° ≤ l ≤ 192°, −3.5° ≤ b ≤ +5.5°, plus the high-latitude extension. Use cgps_coverage(query_archive=true) for the actual mosaics. cgps_1420 and cgps_408 cut out the DRAO mosaics at CADC (brightness temperature, K). cgps_vgps_1420 uses the IRAP/CADE HiPS.

Colorimetry. Spectra are integrated on a 0.1 nm grid against the CIE tables from colour-science. Template line strengths are representative values relative to Hβ = 100, not measurements of a specific position; references are listed per template. sRGB is defined for the 2° observer. For the 10° observer, XYZ₁₀ is treated as relative to the 10° D65 white and adapted (CAT02) to sRGB white. That makes swatches comparable, but no standard 10° sRGB exists. Line-dominated spectra are usually outside the sRGB gamut and are desaturated toward white for display (in_srgb_gamut: false). The scotopic/photopic ratio uses CIE 1951 V′(λ) and CIE 1924 V(λ). It explains why Hα-bright nebulae look grey by eye at the telescope while [O III]-bright ones look greenish.

Development

uv sync
uv run ruff check . && uv run ruff format --check .
uv run pytest              # offline unit and MCP integration tests
uv run pytest -m network   # tests that contact SIMBAD, VizieR, ATNF, CADC and hips2fits

Releases. The version comes from git tags (hatch-vcs). Pushing a tag vX.Y.Z, or creating a release in the GitHub UI, runs .github/workflows/release.yml. It builds the sdist and wheel, attaches them to the GitHub release, publishes to PyPI via trusted publishing (when the repository variable PUBLISH_TO_PYPI is true), and pushes ghcr.io/wdconinc/pwn-mcp-server:{X.Y.Z, X.Y, latest}.

License

MIT

Available Tools

20 tools
cgps_coverageB

Is a position or named object inside the Canadian Galactic Plane Survey (1420 MHz, 408 MHz, HI)? Optionally list the actual CGPS data products at CADC.

NameRequiredDescriptionDefault
bNo
lNo
raNo
decNo
nameNo
query_archiveNoAlso list CGPS products at CADC (network).

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It implies a read-only coverage check and notes that query_archive triggers a CADC network listing, but it does not state the return type, coordinate assumptions, or whether any authentication or rate limits apply.

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

Conciseness5/5

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

Two tightly written sentences, front-loaded with the core coverage predicate and followed by the optional archive behavior. No filler.

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 output schema and almost no schema parameter descriptions, the definition leaves key calling details unresolved: return shape, coordinate systems, and parameter exclusivity. It covers the high-level purpose but not enough for reliable invocation.

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

Parameters2/5

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

Schema description coverage is only 17%, with only query_archive documented. The description maps 'position' to the coordinate parameters and 'named object' to name, but it does not define b/l versus ra/dec, units, or that at least one selector is needed.

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?

Uses a clear predicate ('Is ... inside') and names the specific survey, frequencies, and optional archive listing. It does not explicitly contrast with sibling survey tools, so it is clear but not fully differentiated.

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?

Explains the core use case, a coverage test, and marks archive listing as optional. However, it gives no when-not guidance, no alternatives, and does not explain which parameter combination an agent should choose.

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

get_nebulaA

Full record for one nebula: position, PWN class, host SNR (Green catalogue), powering pulsar (ATNF: P, Ṗ, Ė, τ_c, B, distance), TeV counterpart (HGPS), CGPS coverage and the matching colour template. Unknown names fall back to SIMBAD.

NameRequiredDescriptionDefault
liveNoAlso query SIMBAD/VizieR/ATNF for extra detail.
nameYesName, alias, Green SNR id (e.g. G21.5-0.9), PSR J name or HGPS id.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the data sources and that unknown names fall back to SIMBAD, but it does not state read-only safety, error behavior, or how the live parameter changes fallback/query behavior.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and packed into a single dense sentence. The parenthetical field list is long but each clause contributes relevant return-record information.

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

Completeness4/5

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

There is no output schema, but the description compensates by enumerating the returned record fields in useful detail. It is slightly incomplete on output shape and live-query behavior, but sufficient for an agent to understand what this tool returns.

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 both parameters are already documented. The description adds only the 'unknown names fall back to SIMBAD' detail, which lightly supplements the name parameter but does not explain the live parameter's interaction with the fallback.

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

Purpose4/5

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

The description clearly states this retrieves the full record for a single nebula and enumerates the returned fields, which distinguishes it from broader search tools. However, it does not explicitly name the sibling alternative such as search_nebulae for multi-object lookup.

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 'one nebula' and the fallback note for unknown names, but there is no explicit guidance on when to use this versus search_nebulae or get_pulsar. The agent must infer the appropriate context.

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

get_pulsarB

ATNF pulsar catalogue parameters: period, Ṗ, spin-down power Ė, characteristic age, surface and light-cylinder fields, DM and distance, associations.

NameRequiredDescriptionDefault
nameYesPSR J or B name, e.g. J0534+2200 or B0531+21.

TDQS

B3.2/5.0
Behavior3/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 disclose the scope of returned quantities, which implies a read-only catalogue lookup. However it says nothing about behavior on an unknown/malformed name, whether values are derived vs measured, or units — gaps that matter for a data-lookup 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?

A single front-loaded phrase with zero filler; every token names a concrete returned quantity. It is a noun phrase rather than a sentence, which slightly weakens orientation but costs nothing in length.

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 one parameter, no output schema, and no annotations, a one-line definition leaves the agent to infer the response shape (flat key/value record? per-pulsar?), units, and failure behavior. The field enumeration compensates partially, but more is warranted for a catalogue lookup.

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

Parameters3/5

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

Schema coverage is 100% and the single 'name' parameter already documents the PSR J / B formats with examples. The description adds no further guidance on the identifier (e.g., accepting aliases or common names), so it sits at the baseline where 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?

Names the specific resource (ATNF pulsar catalogue) and enumerates the exact quantities returned (period, spin-down power, characteristic age, DM, distance, associations), which effectively tells an agent what the tool does. The verb is only implied — there is no 'retrieve/fetch' framing — but the field list makes the operation unambiguous and distinguishes it from the sibling plotting/search tools.

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

Usage 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 versus alternatives such as query_vizier, cone_search, or list_catalogs, and no prerequisites (e.g., what to do if the name is unknown or the pulsar is not in the catalogue). Usage is only inferable from the returned-field list.

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

list_catalogsA

Catalogs available to cone_search and query_vizier, plus the bundled tables.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It clarifies that bundled tables are included, which is useful, but it does not explicitly state that this is a read-only listing or describe the return format.

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 compact sentence with no wasted words, and it front-loads the key resource being listed.

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

Completeness4/5

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

For a zero-parameter listing tool with no output schema, the description is mostly sufficient: it names what will be listed and notes bundled tables. It could still be more complete by indicating the return shape or the intended discovery workflow, but it is adequate for this low-complexity tool.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter semantics for the description to add. The baseline score for a parameterless tool 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?

The description identifies a specific resource: catalogs available to cone_search and query_vizier, plus bundled tables. It is clear enough to distinguish this from search/query tools, though it is a noun phrase rather than an explicit verb and does not clarify its relationship to list_surveys.

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 mention of cone_search and query_vizier implies this is a discovery step before using those tools, but it does not explicitly say when to call it or when to prefer list_surveys. The usage is inferable rather than stated.

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

list_spectrum_templatesA

List synthetic nebular spectrum templates (H II region, planetary nebula, SNR shock, Crab Nebula filaments/synchrotron, single lines) and the known emission lines.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It conveys that this is a synthetic template/line listing and therefore likely read-only, but it does not state side effects, permissions, or output behavior beyond the content categories.

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?

It is a single efficient sentence that front-loads the action and resource. The parenthetical categories earn their place by clarifying the scope of templates.

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

Completeness4/5

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

For a zero-parameter listing tool with no output schema, the description sufficiently explains what is listed: synthetic spectrum templates across several astrophysical categories plus known emission lines. It could say more about the return structure, but the essential scope is covered.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter semantics to explain; the baseline for zero-parameter tools is 4. The empty schema is consistent with the description.

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 uses a specific verb, "List," and a specific resource, "synthetic nebular spectrum templates," and enumerates the template categories and emission lines. It is clear what the tool returns, though it does not explicitly differentiate itself from the nearby plotting or search tools.

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

Usage Guidelines2/5

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

The description does not say when to use this tool instead of alternatives such as plot_nebula_spectrum, search_nebulae, or get_nebula. Usage is only implied by the fact that it is a listing tool.

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

list_surveysA

Image surveys available to render_cutout / render_multiwavelength, with band, coverage, resolution and credit.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden; it does disclose the shape of the result (band, coverage, resolution, credit), which is genuinely useful. It says nothing about ordering, volume, or cost of the listing, and being an enumerator with no side effects the risk is low.

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

Conciseness5/5

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

A single sentence, front-loaded with the resource and its consumers, then the returned fields. Nothing redundant.

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

Completeness4/5

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

With no output schema, the description needs to say what comes back, and it does by enumerating the key fields. For a parameterless listing tool this is nearly complete; only ordering or cardinality hints are missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics to explain and the baseline is 4. The description correctly does not waste words on arguments.

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 ('surveys') and scopes it to the imaging tools that consume the result, which separates it from list_catalogs and list_spectrum_templates by subject matter. It does not explicitly name those siblings as alternatives, 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 Guidelines4/5

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

The phrase 'available to render_cutout / render_multiwavelength' makes the usage context clear: this is how you discover valid survey inputs for those render tools. There are no explicit exclusions or negative guidance, but for a zero-argument enumerator the context is sufficiently clear.

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

nebula_colorB

Perceived colour of a nebular spectrum under each observer: XYZ, xy, u'v', CIELAB, sRGB hex, dominant wavelength and purity, plus Δu'v' and ΔE2000 between observers and the scotopic/photopic ratio (rod sensitivity, relevant to visual observing).

NameRequiredDescriptionDefault
ebvNoForeground reddening E(B-V), CCM89 R_V=3.1. Omit for none.
linesNoCustom emission lines: {line key, label or wavelength in nm: relative flux}.
fwhm_kmsNoVelocity FWHM for custom lines.
templateNoTemplate key; omit to build a custom spectrum.
observersNoStandard observers to compare; default CIE 1931 2° and CIE 1964 10°.
blackbody_kNoUse a blackbody continuum (K).
include_scotopicNo
synchrotron_alphaNoRadio-to-optical spectral index α (S_ν ∝ ν^-α) for a synchrotron continuum.
continuum_fractionNoFraction of visible energy in the continuum.
apply_typical_reddeningNoUse the template's typical E(B-V) when ebv is omitted.

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the output quantities, between-observer comparisons, and scotopic/photopic ratio, but it does not describe return structure, side effects, failure modes, or how the output varies with input modes.

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?

It is a single front-loaded sentence that immediately states the core computation and then enumerates outputs. It is dense but efficient; the only minor weakness is that the long metric list is less scannable than a short structured summary.

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 tool has 10 parameters, no annotations, and no output schema, so the description must carry more context than usual. It lists the output metrics well, but does not explain the returned structure or the relationships among templates, custom lines, continua, and reddening options, leaving the agent to rely on the schema for call construction.

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 90%, so the input schema already defines nearly all parameters in detail. The description adds no parameter-level meaning beyond that, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies a colorimetric computation for nebular spectra and lists the specific quantities produced. It implicitly distinguishes itself from plotting siblings by focusing on numeric colour metrics, but it never names or explicitly contrasts with alternatives such as render_color_swatches or plot_chromaticity_comparison.

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 explains what the tool computes but gives no explicit guidance on when to choose it over sibling tools. There are no stated exclusions, prerequisites, or alternative-tool routing despite several related plotting and colour rendering siblings.

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

plot_chromaticity_comparisonC

CIE 1931 xy and CIE 1976 u'v' diagrams showing each observer's spectral locus and where each nebula template falls under each observer.

NameRequiredDescriptionDefault
reddenedNoApply each template's typical E(B-V).
observersNoStandard observers to compare; default CIE 1931 2° and CIE 1964 10°.
templatesNoTemplate keys from list_spectrum_templates.

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 disclosure burden. It never states that the tool renders/returns an image (versus numeric chromaticity data), whether the operation is read-only or costly, or how many figures are produced; it only enumerates the figure contents.

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 tightly written sentence with no padding, and the key content (both diagram types, spectral loci, templates) is front-loaded. It is efficient but too terse to carry the guidance the tool needs.

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 three optional, fully documented parameters and no output schema, the definition is minimally sufficient: an agent can infer the figure contents from the description and the parameter docs. It still omits whether the result is an image or a data structure and offers no hints about typical use, leaving the definition adequate but not complete for a visualization tool.

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

Parameters3/5

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

Schema description coverage is 100%, with defaults and enum lists already documented inline, so the schema does the heavy lifting. The description reinforces the role of 'observers' and 'templates' but adds no syntax, constraints, or format detail beyond the schema, and never mentions the 'reddened' parameter.

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 the specific output artifacts (CIE 1931 xy and CIE 1976 u'v' diagrams) and the content of each (per-observer spectral locus, template positions), which distinguishes it from siblings like plot_cmf_comparison and render_color_swatches. The only weakness is that it is a noun phrase describing the figure rather than stating the action ('generates a plot'), so the verb must be inferred from the tool name.

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 versus nebula_color, render_color_swatches, or plot_cmf_comparison, nor any statement of prerequisites or exclusions. An agent knows what the figure contains but not what situation calls for it.

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

plot_cmf_comparisonB

Overlay the x̄ȳz̄ colour-matching functions of the chosen observers, with the main nebular emission lines marked.

NameRequiredDescriptionDefault
observersNoStandard observers to compare; default CIE 1931 2° and CIE 1964 10°.

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full transparency burden. It discloses the visual content of the output (CMFs overlaid with marked nebular emission lines), which is useful behavioral context, but it does not mention return format, image output, or any operational constraints.

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

Conciseness5/5

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

The description is a single well-formed sentence with no wasted words. It front-loads the key operation and then adds the important detail about emission lines.

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 tool has one optional, fully described parameter and no output schema. The description sufficiently explains the plot content, but because there are no annotations or output schema, it should ideally state the return type or output format for an agent invoking a plotting tool.

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

Parameters3/5

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

Schema description coverage is 100%, and the single observers parameter is fully documented with enum values and a default. The description aligns with the schema by referring to 'chosen observers' but adds no syntax or selection guidance beyond what the schema already provides, so 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 gives a specific verb and resource: overlay colour-matching functions for chosen observers, with nebular emission lines marked. It is clear what the tool produces, but it does not explicitly distinguish itself from nearby plotting siblings such as plot_chromaticity_comparison.

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 states what the plot contains but gives no guidance on when to use this tool rather than plot_chromaticity_comparison, nebula_color, or render_color_swatches. There are no exclusions or contextual triggers for selecting this tool.

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

plot_galactic_mapB

Map of bundled PWNe and other nebulae in Galactic coordinates with the CGPS footprint, optionally over the full Green SNR catalogue.

NameRequiredDescriptionDefault
kindsNo
labelNopwn
highlightNo
projectionNoplane
include_green_snrsNoPlot all 310 Green SNRs in the background (network, cached).
show_cgps_footprintNo

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description should carry the behavioral burden. It does disclose that the Green SNR overlay is fetched over the network and cached, which is useful. However, it does not state the return type (image vs. data), whether the call is side-effect free, or what happens with no parameters given.

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?

It is a single, front-loaded sentence with no filler. The key content (map of what, in what coordinates, with what overlays) appears immediately. Slightly compressed to the point of omitting needed detail, but structurally efficient.

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 six-parameter, zero-required plotting tool with no output schema and no annotations, the description covers the subject matter but not the output format or the semantics of half the parameters. An agent could invoke it, but would be guessing at 'label' and 'highlight' behavior.

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

Parameters2/5

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

Schema description coverage is only 17%, so the description must compensate, but it largely does not. It implies the map content (kinds), Galactic projection, and the Green SNR and CGPS toggles, but gives no meaning for the 'label' or 'highlight' parameters, which are the least self-explanatory. Two of six parameters remain fully opaque.

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 action and resource: a map of bundled PWNe and other nebulae in Galactic coordinates, with the CGPS footprint and optional Green SNR overlay. It is distinguishable from siblings like plot_nebula_spectrum or render_cutout by being a sky-distribution plot. It does not explicitly name siblings, but the purpose is unambiguous.

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 alternatives such as cgps_coverage, render_multiwavelength, or cone_search. The only usage signal is the optional Green SNR overlay, which is more of a feature than a when-to-use rule. The agent must infer the use case.

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

plot_nebula_spectrumC

Plot a template spectrum with each observer's luminance function ȳ(λ) overlaid.

NameRequiredDescriptionDefault
ebvNo
templateYes
observersNoStandard observers to compare; default CIE 1931 2° and CIE 1964 10°.

TDQS

C2.7/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 states that a plot is produced, but does not disclose whether it returns a figure, displays it, saves a file, or how errors or missing templates are handled.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted text. It is concise, though its brevity contributes to the missing usage and parameter 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 three-parameter plotting tool with no annotations and no output schema, the description is incomplete. It omits the meaning of ebv, the template value format, and what the caller receives after plotting.

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

Parameters2/5

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

Schema coverage is low at 33%, with only the observers parameter documented in the schema. The description implicitly mentions template and observers, but never explains the ebv parameter or the expected template format, so it does not compensate for the coverage gap.

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 uses a specific verb and resource: plotting a template spectrum with observer luminance functions overlaid. This is clearer than a vague plot tool, but it does not explicitly distinguish the tool from nearby siblings such as plot_cmf_comparison or plot_chromaticity_comparison.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool, when not to use it, or which sibling should be used for related plotting tasks. The agent must infer usage entirely from the name and description.

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

plot_populationB

Scatter plot of two properties of the bundled PWNe, coloured by PWN class (e.g. Ė vs τ_c, PWN size in pc vs age). Physical sizes use the ATNF distance. Axes go logarithmic automatically when the data span more than two decades.

NameRequiredDescriptionDefault
xNochar_age_yr
yNoedot_erg_s
log_xNo
log_yNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose two useful behaviors: distances come from ATNF and axes auto-switch to log past two decades. It omits what the tool actually returns (figure object, saved file, inline image), whether all bundled PWNe are always plotted, and what explicit log_x/log_y values override.

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 tightly packed sentences with the plotting action first and the caveats (distance source, auto-log) after. Efficient, though the parenthetical examples and the physics notation add density that an unfamiliar agent must parse.

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-param visualization tool with no annotations and no output schema, the description should state the return artifact and the dataset scope ('bundled PWNe' is undefined). It covers plotting semantics adequately but leaves an agent guessing about the response.

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 0%, so the description must compensate. It does explain that x/y are selectable physical properties, that physical sizes depend on ATNF distance, and that log axes are auto-chosen — but the log_x/log_y booleans, their null default, and the default x/y pair are never addressed.

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: a scatter plot of two chosen properties of the bundled PWNe, colored by PWN class, with concrete axis examples (Ė vs τ_c, size vs age). It is clear what the tool produces, but it never distinguishes itself from siblings like plot_ppdot or plot_cmf_comparison, which appear to be special-cased population plots over the same data.

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

Usage Guidelines3/5

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

Usage is shown only through example axis pairs, implying 'use this for exploratory correlations.' There is no statement of when to prefer plot_ppdot or another sibling, and no mention of prerequisites or data scoping.

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

plot_ppdotB

P–Ṗ diagram of pulsars with the PWN-powering pulsars highlighted by PWN class, and lines of constant magnetic field, characteristic age and spin-down power.

NameRequiredDescriptionDefault
include_atnfNoShow all ATNF pulsars in grey (network, cached).

TDQS

B3.2/5.0
Behavior3/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 discloses what the plot visually contains, including PWN class highlighting and constant-field/age/spin-down lines, but it does not describe the return format or any rendering behavior.

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

Conciseness4/5

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

The description is a single dense sentence that front-loads the diagram type and then lists the additional plotted elements. It is efficient overall, though it omits useful context such as return format.

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 tool is relatively simple and the single parameter is fully documented in the schema. However, with no output schema and no annotations, the description should do more to explain the return value or what the rendered plot will be, rather than only listing plot contents.

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?

There is only one parameter, include_atnf, and the schema description coverage is 100%, so the schema already explains its meaning. The tool description adds no additional semantics about this parameter, making the baseline score of 3 appropriate.

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

Purpose4/5

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

The description clearly identifies a specific plot type (P–Pdot diagram) and its main contents, including highlighting PWN-powering pulsars by PWN class and adding lines of constant magnetic field, characteristic age, and spin-down power. It does not explicitly differentiate this plotting tool from sibling plotting tools such as plot_population or plot_galactic_map.

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 explains what the plot contains but gives no guidance on when to use this tool instead of alternatives. It does not mention prerequisites, exclusions, or sibling tools such as plot_population.

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

query_vizierC

Query a whole VizieR catalog with optional column constraints, e.g. all filled-centre (type F) or composite (type C) remnants in Green's SNR catalogue.

NameRequiredDescriptionDefault
limitNo
catalogYes
constraintsNoVizieR column constraints, e.g. {'type': 'F'} or {'type': 'C*'} on green_snr.

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 disclosure burden, yet it omits that results are capped (default limit 500, max 5000) despite 'whole catalog' implying a complete dump. It also says nothing about read-only nature, return format, or performance characteristics.

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, and the example does immediately useful work. It is efficient, though the example consumes most of the space that could have gone to limit or catalog guidance.

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 must cover behavior and results, but it never mentions result caps, the fixed catalog set, or what a record looks like. An agent calling this cannot tell that 'whole catalog' actually returns at most 500 rows by default.

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

Parameters2/5

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

Schema coverage is only 33%. The description meaningfully expands the 'constraints' parameter (column-key dict with wildcard examples), but leaves the five-value 'catalog' enum and the 'limit' cap undocumented beyond bare schema types. With this coverage, the description should compensate but only does so for one of three parameters.

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

Purpose4/5

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

States a specific verb and resource ('Query a whole VizieR catalog') and gives a concrete example of filtered querying. It implicitly separates itself from spatial siblings like cone_search by saying 'whole catalog', but never names an alternative, so an agent must infer the boundary.

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 phrase 'optional column constraints' plus the Green SNR example shows how to use filtering, but there is no explicit statement of when to prefer this over list_catalogs, cone_search, or search_nebulae, nor any exclusions. Usage is implied rather than stated.

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

render_color_swatchesB

Side-by-side sRGB swatches of each template's colour under each observer, next to its spectrum.

NameRequiredDescriptionDefault
reddenedNoApply each template's typical E(B-V).
observersNoStandard observers to compare; default CIE 1931 2° and CIE 1964 10°.
templatesNoTemplate keys from list_spectrum_templates.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does describe the output shape (swatches next to spectrum), implying a read-only rendering operation, but never confirms safety, side effects, or what the rendered output actually looks like beyond the phrase.

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 that wastes no words and leads with the deliverable. It is efficient, though it is so terse it leaves gaps filled only by the schema.

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 output schema and no annotations, the description should say more about the returned artifact and behaviour. It conveys the gist of the visual output but leaves return format, safety, and alternative-tool routing to inference.

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 all three parameters (reddened, observers, templates) are already documented in the schema. The description mirrors the schemas' meaning (templates' colour under observers) without adding format or behavioural detail beyond it, so 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?

The description states a specific verb and resource: side-by-side sRGB swatches of templates' colours under observers, plus spectra. This is distinguishable from siblings like nebula_color or plot_chromaticity_comparison, though it never names those alternatives to differentiate explicitly.

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: the description's reference to 'template's colour under each observer' hints at comparison use, and the template schema references list_spectrum_templates as the source of keys. There is no explicit when-to-use or when-to-prefer-alternative guidance.

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

render_cutoutC

Survey image around a nebula with the pulsar, host-SNR outline (Green diameter), PWN extent and neighbouring catalogued objects overlaid. CGPS images are native-resolution cutouts of the DRAO mosaics at CADC; other surveys come from CDS hips2fits.

NameRequiredDescriptionDefault
bNo
lNo
raNo
decNo
cmapNoMatplotlib colormap for single-band images.
nameNoObject name (bundled catalog or SIMBAD).
frameNogalactic
surveyNocgps_1420
stretchNo
overlaysNo
fov_arcminNoField of view; default frames the SNR/PWN.
percentileNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does add real operational context: the image is assembled from external services (CADC mosaics, CDS hips2fits) and CGPS cutouts are native-resolution rather than resampled. It stops short of stating what is returned (image bytes, file path, or figure object), whether the call is network-dependent or slow, or how overlays are drawn when coordinates cannot be resolved.

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 sentences, no filler, with the core capability front-loaded and provenance as supporting detail. Dense but every clause carries information; only mild jargon cost (PWN, SNR, CGPS assumed known).

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 12-parameter rendering tool with no annotations and no output schema, the description leaves major gaps: the return type is never stated, coordinate/frame semantics are unaddressed, and default framing behavior is only implied by the schema. It is not enough for an agent to call this confidently without reading the schema field by field.

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

Parameters2/5

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

Schema description coverage is only 25% across 12 parameters, so the description must compensate. It partly does by explaining what the overlay categories mean (pulsar, host-SNR Green diameter, PWN extent, neighbouring catalogued objects), but says nothing about the b/l vs ra/dec coordinate pairing, the frame parameter's interaction with them, survey selection trade-offs, stretch, or percentile scaling.

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 concrete capability: produce a survey image cutout around a nebula with pulsar/SNR/PWN/neighbour overlays, and names the data sources (CGPS DRAO mosaics via CADC, other surveys via CDS hips2fits). It does not, however, distinguish itself from the sibling render_multiwavelength, leaving the agent to infer 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 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, when-not-to-use, or alternative-naming guidance. The provenance sentence hints at which surveys behave differently (CGPS native-resolution vs hips2fits), but the agent gets no rule for choosing this tool over render_multiwavelength or for picking among the 13 survey options.

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

render_multiwavelengthB

Panel grid of the same field in several surveys (radio, optical, IR, X-ray, gamma-ray). Surveys that do not cover the position are shown as empty panels with the reason.

NameRequiredDescriptionDefault
bNo
lNo
raNo
decNo
nameNo
surveysNo
overlaysNo
fov_arcminNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose one genuinely non-obvious behavior — missing coverage yields empty panels with a stated reason — which is real value. It omits other essentials: how the target position is resolved, what the tool returns (image vs. URL), and whether surveys or overlays affect output size.

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 front-loaded sentences with no filler; the output shape comes first and the edge case second. It is efficiently written, though the extreme terseness leaves no room for the operational detail an 8-parameter tool needs.

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 optional parameters, zero required fields, no annotations, and no output schema, the description is too thin. It never says that a position must be supplied via name, ra/dec, or b/l, nor what the caller receives back, so an agent cannot confidently construct a call.

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

Parameters2/5

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

Schema description coverage is 0% across 8 parameters, so all semantics must come from the description, and it supplies almost none. 'The position' hints at the ra/dec/b/l/name family but never explains the alternatives or their formats, and fov_arcmin, overlays, and per-survey selection go unmentioned.

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 output artifact ('panel grid of the same field') across named wavelengths, which tells an agent what it produces. It does not differentiate from plausible siblings such as render_cutout or plot_galactic_map, so an agent must infer the boundary.

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: an agent can deduce it is for multi-survey comparison of one position. There is no explicit when-to-use, no named alternative (e.g. render_cutout for a single survey), and no stated prerequisites such as required coordinates.

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

search_nebulaeA

Search the bundled catalog of pulsar wind nebulae and showcase nebulae (SNRs, H II regions, planetary nebulae) by name, type, Galactic position, CGPS coverage or pulsar properties. Use cone_search or query_vizier for the full live catalogs.

NameRequiredDescriptionDefault
kindNopwn, snr, hii (H II region) or pn.
b_maxNo
b_minNo
l_maxNo
l_minNoGalactic longitude range (deg); wraps if l_min > l_max.
limitNo
queryNoSubstring of a name, alias, SNR, pulsar or TeV id.
in_cgpsNoInside the CGPS 1420 MHz footprint.
min_edotNoMinimum pulsar spin-down power (erg/s).
pwn_typeNo
has_pulsarNo

TDQS

A3.9/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does add one valuable behavioral fact — that this queries a bundled/static catalog rather than the live one — but says nothing about result caps (limit maxes at 500 in the schema), ordering, or what a hit record contains. Adequate, not rich, for an unannotated read tool.

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

Conciseness5/5

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

Two sentences, zero filler, with the capability stated first and the sibling routing second. Nothing is repeated from the schema or title.

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 an 11-parameter, unannotated, no-output-schema tool the description should do more: it never explains the b_* latitude bounds, the meaning of limit, or whether filters combine with AND. The bundled-vs-live distinction is the strongest addition, but key parameter semantics remain unaddressed.

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 45%, with b_min/b_max, l_max, limit, pwn_type and has_pulsar left undocumented. The description partially compensates by naming the conceptual axes (Galactic position, pulsar properties), which maps l/b ranges and min_edot/has_pulsar, but it gives no units, no explanation of pwn_type values, and no note on limit/pagination.

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

Purpose5/5

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

States a specific verb (search) and a specific resource (the bundled catalog of PWNe and showcase nebulae), and enumerates the filter axes: name, type, Galactic position, CGPS coverage, pulsar properties. The second sentence separates it from cone_search and query_vizier, so an agent can route without opening the schema.

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

Usage Guidelines4/5

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

Explicitly names the alternatives (cone_search, query_vizier) and the condition that selects them (full live catalogs vs. the bundled snapshot). It stops short of covering the other near neighbours in the sibling list, e.g. when to use get_nebula by identifier or cgps_coverage for footprint questions.

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

server_infoA

Report the server version and which optional capabilities are enabled.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/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 burden. 'Report' weakly implies a read-only operation, but nothing is said about latency, whether it touches the network, what 'optional capabilities' actually means, or what the response looks like — and there is no output schema to fill that 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 front-loaded sentence with no filler; the two things it returns (version, enabled capabilities) are stated immediately.

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 trivial zero-parameter probe this is close to sufficient, but with no output schema the description should sketch the response shape — for example how capabilities are enumerated — so an agent knows what it will receive.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema is an empty object. Baseline 4 applies.

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

Purpose5/5

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

The description names a specific verb and resource: it reports the server version and the set of enabled optional capabilities. That purpose is unmistakable and cannot be confused with any sibling, which are all astronomy data/plotting tools.

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

Usage Guidelines3/5

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

Usage is implied rather than stated — an agent can infer it should call this to discover server version or capability availability, but the description never says when to prefer it or what to do with the result. No alternatives are named, though none of the siblings compete for this job.

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. 20 tool updatesv0.1.0
    • First observedcgps_coverage
    • First observedcone_search
    • First observedget_nebula
    • First observedget_pulsar
    • First observedlist_catalogs
    • First observedlist_spectrum_templates
    • First observedlist_surveys
    • First observednebula_color
    • First observedplot_chromaticity_comparison
    • First observedplot_cmf_comparison
    • First observedplot_galactic_map
    • First observedplot_nebula_spectrum
    • First observedplot_population
    • First observedplot_ppdot
    • First observedquery_vizier
    • First observedrender_color_swatches
    • First observedrender_cutout
    • First observedrender_multiwavelength
    • First observedsearch_nebulae
    • First observedserver_info

TDQS

B3.3/5.0

Scored across 20 tools

Disambiguation4/5

Most tools have clearly distinct targets: catalog lookups (search_nebulae, get_nebula, get_pulsar, cone_search, query_vizier), image rendering (render_cutout vs render_multiwavelength), and analytics. The main softness is in the colour/spectrum cluster, where nebula_color, plot_chromaticity_comparison, plot_cmf_comparison, plot_nebula_spectrum and render_color_swatches all operate on the same observer/template space and could be mis-picked. Position-based search_nebulae versus cone_search is also close, though the bundled-vs-live distinction is stated.

Naming Consistency4/5

The dominant pattern is a clear snake_case verb_noun (list_surveys, get_nebula, render_cutout, plot_ppdot, search_nebulae, query_vizier). A handful of outliers break the pattern: cone_search is noun_verb, while server_info, cgps_coverage and nebula_color have no verb at all. Readable and predictable overall, but not fully uniform.

Tool Count3/5

20 tools is at the heavy end for a read-only data/visualisation server, and the surface is split across three sub-domains (catalog queries, image rendering, colour science). The six plot_* tools plus three colour-specific tools make the set feel like it grew by accretion rather than being tightly scoped. Each tool is individually defensible, but consolidation of the plotting/colour variants would help.

Completeness4/5

Coverage across the stated domain is strong: discovery (search_nebulae, cone_search, query_vizier), detail records (get_nebula, get_pulsar), survey discovery and coverage checks, single- and multi-band rendering, population plots, and a full spectral-to-colour pipeline. Minor gaps exist, such as no export/save path for rendered figures and no way to synthesise a custom spectrum beyond the fixed templates. Nothing that would obviously hard-block an agent.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • 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
    Accurate astronomical catalog data and observing session planner for LLM assistants. Stops hallucinated magnitudes, coordinates, and visibility.
    3
    26 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying NASA Exoplanet Archive data using ADQL TAP, planet search, composite parameters, Kepler candidates, and microlensing events.
    389 npm
    MIT
  • F
    license
    C
    quality
    B
    maintenance
    Enables querying, visualizing, and co-registering ICESat-2 ATL03 and ICESat/GLAS GLAH06 altimetry data as 3D point clouds, with plate-motion correction and Δh statistics.
    24
    1
    -