Skip to main content
Glama
iftahs
by iftahs

pixinsight-mcp

Give an AI agent full control of PixInsight — from raw subs to a finished image, with eyes.

Developed by Iftah Saar · iftah.dev

License: MIT Node ≥ 20 PixInsight 1.9.4 MCP Tests

M31 — 29 × 180 s (87 min), ZWO ASI2600MC Pro · ZWO FF70 · AM5N · ASIAIR. Blink-culled, WBPP-stacked, DBE → SPCC → denoise → MaskedStretch → HDR → star reduction, all driven through this server by Claude; final touch-up in Photoshop.


Contents


Related MCP server: Fiji MCP Server

What it does

PixInsight has no API. This project gives it one — an MCP server that an AI agent (Claude Code, Claude Desktop, any MCP client) drives with 97 tools:

🔎 Inventory

Parses FITS headers in Node (no PixInsight needed), groups lights/darks/flats/bias by camera, gain, offset, exposure, temperature and target, and explains its calibration matching — CMOS-correct (no bias when darks match).

👁 Eyes

Every step can be looked at: render_preview, crop_preview, compare_previews, blink_frames return JPEGs as MCP images. Statistics, histograms, star FWHM/eccentricity give the numbers.

🧹 Blink culling

A contact sheet of every sub with background, star count and gradient metrics; suspects flagged. The agent looks and drops clouds, dew, trails.

🧱 Stacking

PixInsight's own WBPP (default) in a second instance with exactly the matched calibration groups — or a native chain: calibration → CFA cosmetic correction → debayer → SubframeSelector → StarAlignment → LocalNormalization → ImageIntegration → DrizzleIntegration. Async jobs with live per-frame progress.

🎨 Post-processing

DBE with automatic samples, BN, plate solving (offline Gaia), SPCC, denoise, MaskedStretch, HDR, masked local contrast, curves, hue-weighted saturation, star reduction, masks, rotate/crop, apply_process for anything else. Every destructive step checkpoints first.

📓 Provenance

save_project writes the XISF with embedded history, a manifest and a human-readable PROCESSING.md of every step and parameter.

🧽 Housekeeping

Working files live next to the object (<target>/working-files); intermediates are deleted as soon as the next stage succeeds. No 50 GB surprises.


How it works

flowchart LR
    A[AI agent<br/>Claude Code] -- MCP / stdio --> B[Node MCP server<br/>97 tools]
    B -- jobs/*.json --> C[(bridge dir)]
    C -- claim / results / logs --> D[PJSR daemon<br/>inside warm PixInsight 1.9.4]
    D -- heartbeat 2 s --> C
    B -- WBPP automation --> E[second PixInsight<br/>instance]
    B -- FITS headers,<br/>matching, masters cache --> F[(working-files)]
  • One long-lived PixInsight runs pjsr/daemon.js (#engine v8) and polls a job directory. The filesystem is the transport: boring, debuggable, survives crashes.

  • Image windows stay open between calls; tools address them by view id.

  • Long operations return a job_id; the console log is streamed to disk and parsed into current/total progress. job_wait blocks up to five minutes; PI_BUSY protects the single-threaded daemon, also across server processes.

  • Modal dialogs are suppressed (noGUIMessages) and a silent console is reported as a hint, so the agent never hangs on a hidden message box.


Quick start

Requirements: Windows (tested on 11), PixInsight 1.9.4, Node ≥ 20. Optional: BlurXTerminator / NoiseXTerminator / StarXTerminator (detected, with native fallbacks).

git clone https://github.com/iftahs/pixinsight-mcp
cd pixinsight-mcp
npm install
npm run build

Create pixinsight-mcp.config.json (or ~/.pixinsight-mcp.json, or PIMCP_CONFIG=<path>):

{
  "piExe": "C:/Program Files/PixInsight/bin/PixInsight.exe",
  "dataRoot": "C:/Users/me/Astro/Astronomy",
  "requireFlats": true,
  "rig": { "pixelSizeUm": 3.76, "focalLengthMm": 490, "cameraGainEPerAdu": 0.25, "bayerPattern": "RGGB" }
}

Register with Claude Code (.mcp.json):

{
  "mcpServers": {
    "pixinsight": {
      "command": "node",
      "args": ["<repo>/dist/index.js"],
      "env": { "PIMCP_CONFIG": "<repo>/pixinsight-mcp.config.json" }
    }
  }
}

Install skill/SKILL.md as a Claude skill — it is the agent-facing workflow guide (also served as the MCP resource pi://skill). Then just ask: "process the M31 folder".

Key

Default

Meaning

piExe

PixInsight default path

Executable

dataRoot

Raw data. Never written to.

workLayout

"target"

Working files at <object>/working-files (parent of a Lights/ folder); "workdir" for a central dir

stackingEngine

"wbpp"

"native" for the tool chain

wbppParams

{}

Extra WBPP automation parameters

confirmOnWarnings

true

Refuse to stack on mismatched/missing calibration until acknowledged

requireFlats

true

Refuse calibration without a master flat unless forced

keepIntermediates

false

Keep calibrated/registered files after each stage

excludeDirNames

working-files, …

Folders skipped by scan_frames

includeAdpScripts

true

Compile ImageSolver/AnnotateImage into the daemon

allowRawScripts

true

Enable pi_run_pjsr

autoLaunch

true

Start PixInsight on demand

tolerances

0.5 % / 2 °C / 5 °C / 14 d / 200 steps

Matching tolerances

rig

ASI2600MC + FF70

Pixel size, focal length, e⁻/ADU

Environment overrides: PIMCP_PI_EXE, PIMCP_DATA_ROOT, PIMCP_WORKDIR, PIMCP_REQUIRE_FLATS, PIMCP_ALLOW_RAW_SCRIPTS, PIMCP_AUTO_LAUNCH.


House rules baked in

These came out of real sessions and are enforced in code, not just documented:

Rule

Where

Working files next to the object, never in the raw folders, intermediates deleted as stages complete

workLayout, keepIntermediates, cleanup_working_files

Look before stacking: blink contact sheet → drop bad subs

blink_frames, exclude_frames

Stop rule: mismatched or missing calibration (dark temperature > 2 °C, dark scaling, no flats) → refuse until the user has been told and agrees

match_calibration.needs_confirmation, pipeline_runNEEDS_CONFIRMATION

WBPP is the stacking engine unless asked otherwise; exact matched groups; platesolve=false

stackingEngine

CMOS calibration: matched darks → dark + flat only, no bias, no dark optimisation

matching/match.ts

Every destructive step checkpoints; restore_checkpoint/undo roll back

pjsr/ops/postprocess.js

A PROCESSING.md and a 16-bit TIFF finish every image

save_project, write_processing_log


A session, end to end

pi_status                              daemon up, modules, Gaia
scan_frames                            light_01 M 31 30×180 s g100 · dark_05 180 s g100 0 °C · …
match_calibration light_01             dark_05 (Δ 0.0 °C, ok) · no flats → needs_confirmation → ask user
blink_frames light_01                  contact sheet: #1 hazy (bg +21 %, stars −50 %)
exclude_frames [1]
pipeline_run light_01 (acknowledge)    WBPP in M 31/working-files/wbpp → master_light view
gradient_correction DBE → background_neutralize → plate_solve → color_calibrate SPCC → denoise
stretch masked → hdr_compress → range_mask + local_contrast → scnr → saturation → curves
reduce_stars → rotate 180
save_project → save_image tif 16-bit → cleanup_working_files

1:1 detail: dust lanes and the HDR-compressed core.


The default processing recipe

The recipe that produced the image above lives in skill/SKILL.md and is what the agent follows unless told otherwise:

  1. gradient_correction { method: "DBE" } — DynamicBackgroundExtraction with automatically placed background samples (stars and object rejected)

  2. background_neutralizeplate_solvecolor_calibrate { method: "SPCC" } against the local Gaia DR3/SP database

  3. denoise { strength: 0.3 } (NoiseXTerminator if present, else MLT), verified at 1:1

  4. stretch { method: "masked", target_background: 0.15 } — MaskedStretch keeps star cores small

  5. hdr_compresslocal_contrast through a range_mask of the object only

  6. scnr → hue-weighted saturation (blue/cyan for galaxies, red/magenta for emission nebulae) → curves

  7. reduce_stars (StarMask-protected morphological erosion) → rotate / crop for framing

  8. save_project (+ PROCESSING.md) → save_image { format: "tif", bit_depth: 16 } → cleanup


Tool catalogue

pi_status pi_capabilities pi_start_session pi_list_sessions pi_use_session pi_end_session pi_console_log pi_run_pjsr pi_restart pi_stop · job_status job_wait job_log job_cancel list_jobs

scan_frames group_files fits_header match_calibration list_masters · blink_frames exclude_frames

build_master_bias build_master_dark build_master_flat calibrate_lights cosmetic_correction debayer · measure_subframes select_subframes register local_normalization integrate drizzle_integrate fast_integrate · pipeline_run pipeline_status wbpp_run wbpp_status

list_windows open_image close_window duplicate_window image_statistics histogram image_keywords render_preview crop_preview compare_previews measure_stars set_screen_stretch save_image checkpoint restore_checkpoint undo list_checkpoints

apply_process process_params gradient_correction plate_solve annotate color_calibrate background_neutralize scnr deconvolve denoise remove_stars stretch curves saturation reduce_stars rotate resample crop auto_crop pixel_math linear_fit sharpen hdr_compress local_contrast combine_stars extract_channels convert_to_gray invert

star_mask range_mask pixelmath_mask apply_mask mask_info binarize morphology blur · configure_gaia gaia_info · save_project write_processing_log cleanup_working_files

Resources: pi://session/current, pi://previews/{name}, pi://jobs/{id}/log, pi://masters, pi://skill. Prompts: process-session, inspect-frame.


Calibration matching (CMOS)

Pair

Exact

Tolerance

light ↔ dark

INSTRUME, GAIN, OFFSET, binning

EXPTIME ± 0.5 %; CCD-TEMP graded ok ≤ 2 °C · acceptable ≤ 5 °C · poor beyond (nearest set chosen, flagged for confirmation)

light ↔ flat

INSTRUME, binning, FILTER

warn if DATE-OBS > 14 d or FOCUSPOS > 200 steps apart

flat ↔ flat-dark

INSTRUME, GAIN, OFFSET, binning

EXPTIME ± 0.5 %

any ↔ bias

INSTRUME, GAIN, OFFSET, binning

Decision tree: matched darks → dark + flat only (bias is inside the dark; masterBias=off, optimizeDarks=off). Exposure mismatch + allow_dark_scaling → bias + optimisation, flagged second-best. Flats always calibrated with a flat-dark (preferred) or bias, never the light dark. No darks → bias + flat with mandatory cosmetic auto-detect. Light groups never split on temperature; drift is reported instead. Masters are content-addressed and reused.


Gaia catalog for offline plate solving and SPCC

Download the Gaia DR3/SP small set (4 .xpsd files, ~11 GB) from pixinsight.com/dist and run configure_gaia { dir }. plate_solve then uses GaiaDR3SP_XPSD locally — ImageSolver's automatic mode only probes DR3/EDR3/DR2 and otherwise falls back to VizieR, which fails on machines with a broken TLS chain. gaia_info tells you what is configured.


Development

npm test                                      # 46 unit tests, no PixInsight
npm run fixtures                              # synthetic RGGB fixtures under tests/fixtures/data
PI_INTEGRATION=1 npm run test:integration     # 5 end-to-end tests incl. chaos kill (~2 min)
npx tsx scripts/smoke.ts pi_status '{"launch":true}'
npx tsx scripts/pipeline-smoke.ts '{"light_group_id":"light_01","max_frames":4,"force":true}'

pjsr/reference/*.txt holds the default toSource() of every wrapped process as dumped from PixInsight 1.9.4 — the source of truth for parameter names (pjsr/reference/dump-process-params.js regenerates it). After editing anything under pjsr/, call pi_restart.


PJSR lessons learned

  • #engine v8 is required for modern syntax and to #include PixInsight's ImageSolver library. Under V8: process enums are statics (ImageIntegration.Average), 64-bit counters are BigInt, View.viewById returns null, Histogram is new Histogram(bins) + generate(image), StarDetector is native (including pjsr/StarDetector.jsh shadows it and breaks ImageSolver).

  • The preprocessor treats /* inside a // comment as a block-comment start, and substitutes macro names even after a dot (PIMCP.const.ColorSpace_GrayPIMCP.const.0).

  • SubframeSelector.measurements is read-only and weighting expressions evaluate to 0 from scripts → weights are computed in Node and stamped as SSWEIGHT.

  • DynamicBackgroundExtraction executes from its data table (normalised coordinates); samples is the GUI table (symmetries 0, axialCount 3..24, isFixed numeric).

  • Two daemons on one bridge make jobs alternate between instances; the daemon now exits when another heartbeat is fresh.

  • Modal dialogs block the daemon silently; every process runs with noGUIMessages = true.

  • WBPP automation: outputDirectory= (not outputDir), platesolve=false to avoid its interactive solver.

  • Image.resample(w, h) takes scale factors, not sizes.


Safety

Outputs are refused under dataRoot or any scanned root except the object's working-files; nothing is overwritten (save_image needs overwrite:true, masters are content-addressed); inspection works on clones; fewer than 3 frames are refused without force; destructive tools checkpoint first; one PixInsight job at a time; mismatched calibration stops the pipeline until acknowledged.

License

MIT © 2026 Iftah Saar

Available Tools

92 tools
annotateannotateB
Read-only

Render an annotated JPEG (Messier/NGC/named stars/constellations/grid) of a plate-solved view to confirm the target. Non-destructive.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
layersNo
max_edgeNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, and the description adds the non-destructive label plus the plate-solved prerequisite and JPEG output format. It does not describe what happens with unsolved inputs or output delivery, but the annotation profile covers the key safety concerns.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every phrase contributes useful context about the operation, content, and safety.

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 0% parameter documentation, the description leaves important gaps: the meaning of max_edge, the available layer strings, and the format or location of the rendered JPEG are not specified. The purpose is clear, but an agent cannot fully determine call semantics.

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%, so the description carries the burden for explaining id, layers, and max_edge. It only hints at possible layer values by listing annotation types, leaving id and max_edge effectively unexplained.

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 specifies a verb ('Render'), resource ('annotated JPEG'), content types ('Messier/NGC/named stars/constellations/grid'), and purpose ('to confirm the target'). It is distinguishable from generic preview tools, though it does not explicitly contrast itself with sibling tools.

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

Usage Guidelines3/5

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

The phrase 'to confirm the target' offers an implied use case after plate solving, but there is no explicit guidance about when to choose annotate over render_preview or compare_previews, nor any exclusions or alternatives.

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

apply_maskapply_maskA

Attach (or remove with remove:true) a mask view to an image window; subsequent processes on that view are masked. inverted:true protects where the mask is bright.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
removeNo
mask_idNo
visibleNo
invertedNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate a mutating, non-destructive operation. The description adds meaningful behavioral detail: the effect on subsequent processes and the inverted masking semantics. It does not contradict annotations and gives useful context beyond the structured fields.

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

Conciseness5/5

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

The description is a single, efficient sentence with parenthetical clarifications. It front-loads the core action and adds the inverted behavior without wasted words.

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

Completeness3/5

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

The description covers the main behavior well, but it omits explicit semantics for visible and the conditions under which mask_id is needed (especially in remove mode). Since there is no output schema and parameters are weakly documented, these gaps leave some ambiguity for correct invocation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explicitly explains remove and inverted, but id, mask_id, and visible are left to inference. While id and mask_id are somewhat inferable from context, visible is not addressed, and the relationship between remove and mask_id is unclear.

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 states a specific verb (attach/remove), a resource (mask view to an image window), and the consequence (subsequent processes are masked). It also distinguishes itself from mask creation siblings like star_mask or range_mask by focusing on applying an existing mask to a window.

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

Usage Guidelines4/5

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

The description provides clear operational context: attach a mask view, remove it with remove:true, and use inverted:true to protect bright regions. It does not explicitly name alternatives or state when not to use the tool, but the usage context is clear enough for an agent to select it appropriately.

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

apply_processapply_processA
Destructive

Generic fallback: apply ANY installed PixInsight process by name to a view (or globally when id omitted) with a flat params object using exact PJSR parameter names (see process_params). Enum values may be given as strings (e.g. 'WinsorizedSigmaClip'). Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
paramsNo
processYes
checkpointNoWrite an .xisf checkpoint before running (default true)
ignore_unknownNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false, so the mutation risk is established. The description adds meaningful context: global application when id is omitted, requirement for exact PJSR parameter names, enum string handling, and the 'Checkpoints first' instruction. It does not describe failure modes or return behavior, but enough behavioral context is added beyond annotations.

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

Conciseness5/5

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

Three dense sentences, each earning its place: the fallback role, the invocation mechanics, and the checkpoint warning. It is front-loaded with the most important framing and contains no filler.

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

Completeness4/5

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

For a generic, schema-light tool, the description covers invocation scope, parameter naming conventions, enum handling, and safety behavior. It also references process_params for further detail. The only notable omission is the semantics of ignore_unknown, but the overall guidance is sufficient for an agent to attempt correct invocation.

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

Parameters4/5

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

Schema coverage is only 20%, and the description compensates by explaining 'process' (applied by name), 'id' (omitting it means global), and 'params' (flat object, exact PJSR names, enums as strings). The reference to process_params is helpful. However, 'ignore_unknown' is left unexplained, which prevents a higher score.

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 ('apply'), resource ('any installed PixInsight process by name'), and scope ('to a view or globally when id omitted'). The 'Generic fallback' label distinguishes it from the many dedicated process tools in the sibling list, so an agent immediately knows this is the catch-all path.

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 'Generic fallback' clearly implies it should be used when no dedicated tool applies, and it points to process_params for exact parameter names. It does not explicitly enumerate when-not-to-use conditions, but the fallback framing provides adequate context.

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

auto_cropauto_cropA
Destructive

Trim registration edges: finds rows/columns with > max_zero_fraction zero pixels and crops them (+pad). dry_run reports the rect only. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
padNo
dry_runNo
thresholdNo
checkpointNoWrite an .xisf checkpoint before running (default true)
max_zero_fractionNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true, and the description adds useful behavioral detail beyond that: dry_run only reports the rect, while a real run crops and is preceded by a checkpoint. This is meaningful disclosure for a mutating 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?

The description is short and front-loaded: the algorithm comes first, then dry_run behavior, then checkpointing. The fragment 'Checkpoints first' is slightly ambiguous but still compact and useful.

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

Completeness3/5

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

For a destructive 6-parameter tool with no output schema, the description covers the main behavior and dry-run semantics but misses threshold and id. It also does not say what a non-dry-run call returns or how the crop is applied to the image.

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

Parameters3/5

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

With only 17% schema description coverage, the description does much of the work, explaining max_zero_fraction, pad, dry_run, and checkpoint. However, it omits threshold entirely and does not clarify id, leaving two parameters effectively unexplained.

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 operation (trim registration edges) and explains the exact criterion: rows/columns with > max_zero_fraction zero pixels are cropped with padding. This clearly distinguishes auto_crop from generic siblings like crop and crop_preview.

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

Usage Guidelines4/5

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

The description gives clear context for when the tool applies: trimming registration edges. It also advises using dry_run to preview the rect and checkpointing first. However, it does not explicitly contrast with crop or other crop-like siblings.

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

background_neutralizebackground_neutralizeB
Destructive

BackgroundNeutralization (equalize channel backgrounds) — linear stage. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
paramsNoExtra raw PixInsight process parameters (exact PJSR names)
checkpointNoWrite an .xisf checkpoint before running (default true)
reference_idNo
background_highNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating operation. The description adds the 'Checkpoints first' warning, which is valuable behavioral context for a destructive operation. However, it doesn't disclose what exactly gets modified (e.g., does it replace the image's background model, alter pixel values irreversibly?) or whether it requires a specific image state. The description adds some value beyond annotations but not rich behavioral detail.

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 extremely concise: one sentence with a parenthetical clarification and a two-word usage warning. Every word earns its place, and the key information (what it does, when it applies) is front-loaded. The 'Checkpoints first' warning is a critical addition that justifies its placement.

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 destructive linear-stage tool with 5 parameters and no output schema, the description is somewhat thin. It tells the agent what the tool does and that checkpoints are needed, but it doesn't explain the parameter semantics (especially reference_id and background_high), what the expected input image state is, or what the result looks like. The sibling list includes gradient_correction and color_calibrate, which are related but the description doesn't disambiguate. It's adequate but has clear gaps.

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

Parameters3/5

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

Schema description coverage is 40%, meaning the schema documents some parameters (id, params, checkpoint, reference_id, background_high) but the description itself adds no parameter-level meaning beyond the schema. The description's 'equalize channel backgrounds' hints at what background_high might control, but it doesn't explain the relationship. With 40% coverage, the description partially compensates but doesn't fully bridge the gap for undocumented parameters like reference_id and background_high.

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: 'BackgroundNeutralization (equalize channel backgrounds) — linear stage.' This clearly identifies the tool as applying PixInsight's BackgroundNeutralization process to equalize channel backgrounds, and the 'linear stage' qualifier distinguishes it from tools used later in the processing pipeline. It doesn't explicitly name a sibling alternative, but the parenthetical and stage qualifier provide enough differentiation.

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

Usage Guidelines3/5

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

The description gives a clear context signal: 'linear stage' implies this should be used during the linear phase of processing, and 'Checkpoints first' gives a usage prerequisite. However, it doesn't explicitly state when not to use it or name alternative tools (e.g., gradient_correction, color_calibrate) that might be confused with it. The guidance is implied rather than explicit.

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

binarizebinarizeC
Destructive

Binarize a (mask) view at a threshold. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
thresholdNo
checkpointNo

TDQS

C2.9/5.0
Behavior3/5

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

The annotations already disclose destructiveHint=true, so the description does not need to repeat that the operation modifies data. The 'Checkpoints first' instruction adds useful context that a checkpoint should be created before invoking the tool, which is a behavioral safeguard. However, it does not describe what actually happens to the view, whether it is modified in place, or what the result looks like.

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 very short and puts the core action first: 'Binarize a (mask) view at a threshold.' The second sentence is also brief, but 'Checkpoints first' is ambiguous enough that it slightly hurts the overall clarity. Still, there is no wasted text.

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 destructive tool with no output schema and three undocumented parameters, the description is incomplete. An agent needs to know what id refers to, how threshold values behave, what the checkpoint parameter does, and what side effects occur. Only the destructive hint and a vague checkpoint warning are available.

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%, so the description should compensate by explaining id, threshold, and checkpoint. It only alludes to threshold and gives a cryptic 'Checkpoints first' reference, leaving the meaning of the checkpoint parameter and the id parameter largely unstated. Parameter names are suggestive but not sufficient for correct invocation.

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 operation ('Binarize') on a resource ('a (mask) view') with a defined condition ('at a threshold'), so an agent can tell this is a thresholding operation rather than a generic image process. It does not explicitly distinguish it from sibling tools like convert_to_gray or range_mask, but the binarize/threshold phrasing is clear enough for basic selection.

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 phrase 'Checkpoints first' gives a sequencing instruction but no real when-to-use guidance or comparison with alternatives. It does not explain when binarize should be preferred over pixel_math, range_mask, apply_mask, or other image-processing siblings, and it does not state any exclusion conditions.

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

blurblurB
Destructive

Gaussian convolution (soften masks). Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
sigmaNo
checkpointNo

TDQS

B3.3/5.0
Behavior4/5

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

The annotations mark the tool as destructive (destructiveHint=true), and the description reinforces this by warning to 'Checkpoints first' – implying the operation overwrites/mutates and can be undone via checkpoint. It adds context about the destructive nature and a recommended safety step, but doesn't detail what exactly gets destroyed.

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

Conciseness5/5

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

The description is extremely short with no filler; it packs the core action and a key caveat into two fragments. It is efficient, though slightly cryptic.

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 three parameters and no output schema, the description should compensate by explaining parameter meaning and return behavior. It fails to do so, leaving the agent with incomplete knowledge to invoke the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain any of the three parameters (id, sigma, checkpoint). The agent gets no semantic information about what id represents, what sigma range is expected, or what the checkpoint flag controls.

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 the operation as 'Gaussian convolution' with the target explicitly being masks ('soften masks'). The purpose is identifiable from the name and description, but it does not distinguish itself from sibling tools such as denoise or sharpen.

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 only instruction is 'Checkpoints first,' which tells the agent to ensure a checkpoint exists before calling. No alternatives or when-to-use guidance is provided relative to sibling tools, leaving selection inference to the agent.

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

build_master_biasbuild_master_biasA

Integrate bias frames into a master bias (average, Winsorized/percentile rejection by count, no normalization). Cached by fingerprint; returns instantly on a hit. Async unless wait:true.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoBlock until done (bias is fast)
filesNoExplicit file list
forceNo
group_idNoGroup id from scan_frames (alternative to files)
rejectionNo

TDQS

A3.9/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the sparse annotations: caching by fingerprint, instant returns on cache hits, and async execution unless wait:true. It also discloses the rejection method. However, it does not state what is returned on a miss or whether an existing master bias is overwritten.

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?

Three tight, information-dense sentences with no filler. The core operation is front-loaded, followed by caching behavior and async semantics. Every sentence contributes useful information.

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 tool with 5 parametersaching, and async behavior, but critical invocation details remain unclear: what force does, what a non-cached response looks like, and how rejection values are specified. Since there is no output schema and annotations are minimal, these gaps matter.

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 60%, so the schema covers some parameters. The description adds semantics for wait ('async unless wait:true') and hints at rejection ('percentile rejection by count'), but it does not explain force or enumerate valid rejection values, leaving gaps for the less-documented parameters.

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

Purpose5/5

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

States a specific verb ('Integrate') and resource ('bias frames into a master bias'), and distinguishes the algorithm ('average, Winsorized/percentile rejection by count, no normalization'). This clearly separates it from sibling tools like build_master_dark and build_master_flat.

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

Usage Guidelines3/5

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

The description implies usage by naming the bias-frame-to-master-bias purpose, but it does not explicitly say when to choose this tool over build_master_dark or build_master_flat. There are no exclusion conditions or alternative recommendations, so usage guidance is only implied.

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

build_master_darkbuild_master_darkA

Integrate darks into a master dark. Do NOT pass master_bias unless you will use dark optimisation (CMOS rule: bias lives inside the dark). Cached by fingerprint. Async: returns job_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNo
filesNoExplicit file list
forceNo
group_idNoGroup id from scan_frames (alternative to files)
rejectionNo
master_biasNo

TDQS

A4.1/5.0
Behavior4/5

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

The description discloses behavior beyond the annotations: it is 'Cached by fingerprint' and 'Async: returns job_id.' These are genuinely useful execution traits that the annotations do not convey. It stops short of detailing whether cached results bypass processing or what failure modes exist, but it adds meaningful context.

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

Conciseness5/5

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

Four short sentences, each earning its place: the core action, a critical parameter warning, a caching note, and the async interface. Information is front-loaded, with the primary purpose first and the most important caveat second. There is no filler or repetition.

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

Completeness3/5

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

The description covers the essential execution model (async, job_id, caching) and one critical parameter, but it does not fully compensate for the missing schema descriptions of wait, force, and rejection. With six parameters and no output schema, an agent may still be uncertain about how to request synchronous execution or control rejection behavior.

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 only 33%, so the description carries a heavier responsibility. It does add value for master_bias by stating when it should not be passed and why. However, parameters like wait, force, and rejection remain undocumented in both the schema and the description, leaving the agent to infer their meaning.

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 opens with a specific verb and resource: 'Integrate darks into a master dark.' It clearly identifies what the tool does and is easily distinguished from sibling tools like build_master_bias and build_master_flat by the resource it produces (a dark master) and the input it integrates.

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

Usage Guidelines4/5

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

The description gives clear operational guidance: it explicitly warns not to pass master_bias unless using dark optimisation, explaining the CMOS rule that 'bias lives inside the dark.' It does not explicitly compare to sibling build tools, but the rule is a strong usage constraint that helps an agent decide when and how to invoke this tool.

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

build_master_flatbuild_master_flatA

Calibrate flats with a master flat-dark (preferred) or master bias, then integrate multiplicatively (EqualizeFluxes rejection normalization). Never calibrate flats with the light master dark. Cached. Async.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNo
filesNoExplicit file list
forceNo
group_idNoGroup id from scan_frames (alternative to files)
rejectionNo
master_biasNo
master_flat_darkNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only indicate non-read-only and non-destructive, so the description adds useful behavioral context: cached, async, and multiplicative EqualizeFluxes rejection normalization. It does not describe what artifact is produced or returned, but it goes beyond the annotation baseline.

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?

Three short sentences deliver the core operation, the critical warning, and the async/cached behavior with no filler. The information is front-loaded and every sentence earns its place.

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

Completeness2/5

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

For a 7-parameter tool with no output schema and low schema coverage, this description is incomplete. It omits the meaning of wait despite being async, does not explain force or rejection, and does not clarify the files/group_id alternatives or what the tool returns.

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 29%, so the description must compensate, but it only clarifies the role of master_flat_dark and master_bias. It does not explain wait, force, rejection, or the relationship between files and group_id, leaving several parameters under-specified.

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 operation: calibrating flats using a master flat-dark or master bias, then integrating multiplicatively. This is clear enough to distinguish it from build_master_bias and build_master_dark, though it does not explicitly differentiate it from calibrate_lights.

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?

It gives clear input guidance: prefer a master flat-dark, fall back to a master bias, and never use the light master dark. It does not explicitly compare this tool to sibling calibration/integration tools, but the stated preference and hard negative are actionable.

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

calibrate_lightscalibrate_lightsA

ImageCalibration of light frames (CFA-aware) with master dark/flat (+bias only for dark scaling). Refuses without a master flat unless config requireFlats=false or force:true. Outputs /work/calibrated/*_c.xisf. Async with per-frame progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoExplicit file list
forceNo
out_dirNo
group_idNoGroup id from scan_frames (alternative to files)
master_biasNo
master_darkNo
master_flatNo
calibrate_darkNoSubtract bias from the master dark before use (only with optimize_darks)
optimize_darksNoDark scaling (requires master_bias); default false
output_pedestalNoDN pedestal added to outputs (0 default)

TDQS

A4.1/5.0
Behavior4/5

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

The description adds meaningful behavior beyond the generic annotations: it discloses the CFA-aware nature, the requirement for a master flat, the output location pattern, and that execution is async with per-frame progress. This gives the agent useful operational expectations without contradicting the readOnlyHint/destructiveHint annotations.

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

Conciseness5/5

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

The description is compact and front-loaded: the first sentence states the core operation, and subsequent sentences provide constraints, output, and async behavior. Every sentence adds operational value with no filler or repetition.

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 tool with 10 parameters and no output schema, the description covers the main workflow, output destination, and async behavior. However, it does not explain how out_dir interacts with the session path, how files and group_id selection are expected to work, or how outputs relate to previously calibrated files. These gaps make it adequate but not fully complete.

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 description compensates for the 50% schema coverage by clarifying the roles of master dark, master flat, master bias (only for dark scaling), and force. It also implies out_dir semantics via the output path. Some parameters like out_dir remain ambiguous, but the core master/force relationships are meaningfully explained beyond the schema.

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

Purpose5/5

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

The description names a specific process ('ImageCalibration'), the exact resource ('light frames'), and key characteristics ('CFA-aware', uses master dark/flat). It is clearly distinguished from sibling tools like build_master_dark, debayer, or cosmetic_correction because it targets the calibration step for light frames.

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

Usage Guidelines3/5

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

The description implies when to use the tool by specifying that it calibrates light frames with master dark/flat, and it provides a failure condition ('Refuses without a master flat unless config requireFlats=false or force:true'). However, it does not explicitly mention alternatives or when not to use it, such as when only cosmetic correction or debayering is needed.

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

checkpointcheckpointA

Write an .xisf checkpoint of a view into the session's checkpoints/ dir; returns the path for restore_checkpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
labelNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate the tool is not read-only and not destructive. The description adds useful behavioral detail beyond that by specifying the side effect: writing an .xisf file into the checkpoints directory and returning a path for later restore. It does not cover naming/overwrite behavior, but annotations reduce the burden.

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 packs in the action, file format, target directory, and return value. It is front-loaded with the core operation and contains no filler.

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 simple two-parameter tool, the description is reasonably complete: it states what is written, where, and what is returned. However, it leaves parameter meanings implicit, especially 'label', and provides no explicit when-to-use guidance. This is adequate but has clear gaps.

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%, so the description must compensate. It hints that a 'view' is the subject, which loosely maps to the required 'id' parameter, but it never explains what 'id' identifies or what the optional 'label' means. This is partial guidance at best.

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

Purpose5/5

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

The description uses a specific verb ('Write'), names the concrete artifact ('.xisf checkpoint of a view'), and states the destination ('session's checkpoints/ dir'). It also connects the tool to restore_checkpoint, clearly distinguishing it from siblings like restore_checkpoint or list_checkpoints.

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 'returns the path for restore_checkpoint' gives clear contextual guidance: this tool is for creating a restore point that will later be used by restore_checkpoint. It does not explicitly list alternatives/exclusions, but the intended workflow is clear enough for an agent to choose it over unrelated save operations.

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

cleanup_working_filescleanup_working_filesA
Destructive

Delete intermediate directories in the current working dir (calibrated, cosmetic, debayered, weighted, registered, lnorm, wbpp, quicklook) keeping master/, checkpoints/, previews/, project/, pipeline/. dry_run lists what would go.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
also_previewsNo
also_checkpointsNoAlso delete checkpoints/ (rollback points)

TDQS

A4/5.0
Behavior4/5

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

The destructiveHint annotation already signals a destructive tool. The description adds value beyond that by enumerating which directories will be deleted, which are kept, and by revealing that dry_run lists the targets without deleting. This gives agents useful optional context beyond the annotation.

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 one dense sentence, front-loaded with the action, and every part directly contributes to the usage: what gets deleted, what gets kept, and the dry-run option. There is no redundancy or verbosity.

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

Completeness4/5

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

For a simple deletion tool with no output schema, the description covers the most important operational facts: exact directory list, retained directories, and dry-run. But it leaves also_previews/also_checkpoints a bit under-specified and does not mention what happens if a directory is missing. It still gives enough to call it safely.

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 only 33%, so the description needs to compensate. It does add meaning to dry_run by explaining its behavior (lists what would go), but remaining parameters (also_previews, also_checkpoints) are only hinted at indirectly via the keep-list. This is adequate but incomplete.

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

Purpose5/5

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

The description uses a specific verb ('Delete') with an explicit resource (intermediate directories in the current working dir) and enumerates the exact directories to remove and preserve. It clearly identifies its scope and is not ambiguous against any sibling tool.

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

Usage Guidelines3/5

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

The description implies its use for clearing intermediate processing directories while preserving masters and outputs, and the dry_run instruction hints at a how-to-list step. However, it never explicitly states when to use it vs alternatives or what conditions make this the right cleanup tool.

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

close_windowclose_windowA
Destructive

Close an image window (force: discard unsaved changes, default true).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
forceNo

TDQS

A4/5.0
Behavior4/5

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

The annotations already flag destructiveHint=true and readOnlyHint=false. The description adds concrete behavioral context: force defaults to true and discards unsaved changes, which warns the agent about the destructive default beyond what the annotations state.

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 compact sentence that front-loads the action and packs the force semantics into a parenthetical. Every word earns its place.

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

Completeness4/5

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

For a simple close operation, the description plus annotations cover the safety-critical behavior and the default. It does not state what force=false does or where id comes from, but these are minor gaps given the simple schema and absence of nested/output schemas.

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

Parameters3/5

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

The schema has zero descriptions for the two parameters, so the description must compensate. It usefully explains force (discard unsaved changes, default true), but it does not explain id, which is required.

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

Purpose5/5

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

The description uses a specific verb and direct object ('Close an image window'), and the parenthetical clarifies the force parameter. It is clearly distinguished from sibling operations like open_image, duplicate_window, and list_windows even without naming them.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternative routing is provided; the tool does not mention list_windows for obtaining an id or saving before closing. The use case is strongly implied by the operation name, so an agent can infer it, but there is no stated guidance.

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

color_calibratecolor_calibrateA
Destructive

SPCC (default; needs plate solution + internet, defaults tuned for a Sony OSC sensor with UV/IR cut) → PCC fallback → ColorCalibration (no astrometry). Optionally neutralizes background. Linear data only. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
methodNo
paramsNoExtra raw PixInsight process parameters (exact PJSR names)
checkpointNoWrite an .xisf checkpoint before running (default true)
narrowbandNo
limit_magnitudeNo
white_referenceNo
neutralize_backgroundNo
background_reference_idNo

TDQS

A4.1/5.0
Behavior5/5

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

The description discloses external prerequisites (plate solution + internet), sensor-specific default tuning (Sony OSC with UV/IR cut), the fallback chain between methods, and the linear-data-only restriction. This goes well beyond annotations (destructiveHint true) by explaining what the tool actually does and what it needs before running. No contradiction with annotations.

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

Conciseness4/5

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

The description is compact at about 36 words and front-loads the method flow, then optional behavior, input constraint, and safety. The arrow notation is dense but every clause earns its place, balancing information density with brevity.

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 complex tool with 9 parameters and no output schema, the description covers the critical decision path: method selection, prerequisites, linear data, and checkpointing. It is enough to invoke minimally with just an id. It leaves advanced parameter semantics ambiguous, but those are optional and the core operation is sufficiently specified.

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

Parameters3/5

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

Only 2 of 9 schema properties have descriptions (22% coverage), so the description must compensate. It does clarify the method parameter (default SPCC, fallback chain) and the neutralization behavior, but leaves narrowband, limit_magnitude, white_reference, and background_reference_id unexplained in both schema and description. This is partial, not full, compensation.

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 the tool's purpose through named PixInsight color-calibration processes (SPCC, PCC, ColorCalibration) and mentions optional background neutralization. It distinguishes itself from siblings like background_neutralize by placing color calibration at the core. However, it never explicitly states a verb phrase like 'calibrate colors', relying on the tool name and process names to convey purpose.

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

Usage Guidelines4/5

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

The description provides explicit fallback routing: SPCC by default (requiring plate solution + internet), PCC as fallback, and ColorCalibration when no astrometry is available. It also restricts input to linear data and instructs checkpointing first, establishing clear usage windows. It does not explicitly contrast the whole tool against sibling tools such as background_neutralize or plate_solve, leaving some selection inference to the agent.

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

combine_starscombine_starsC
Destructive

Screen-blend a stars image back onto a starless image (PixelMath), optionally into a new view.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_idNo
stars_idYes
star_boostNo
starless_idYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds little beyond that. It mentions 'optionally into a new view' but does not clarify default behavior (whether it overwrites the starless image) or any side effects. No contradiction, but no added disclosure of behavioral traits.

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

Conciseness3/5

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

The description is a single sentence and is concise, but it is so brief that it sacrifices necessary detail. It is not bloated, but the sparseness is a weakness rather than a strength.

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 4 parameters, destructive behavior, no output schema, and no parameter descriptions, a one-sentence description is inadequate. It lacks information about return values, edge cases, or how the parameters interact, making it incomplete for an agent to call correctly.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides no explanation of the parameters. While starless_id and stars_id are somewhat self-explanatory, star_boost and new_id have no meaning from the description alone. The tool completely fails to convey parameter semantics.

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

Purpose4/5

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

The description clearly states the operation: 'Screen-blend a stars image back onto a starless image (PixelMath)' with a specific verb and resources. It distinguishes this from generic pixel_math by naming the specific image types involved, though it does not explicitly contrast with siblings like remove_stars.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention when this is appropriate (e.g., after remove_stars), nor any prerequisites or exclusions. The description only states what it does, not when it should be chosen.

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

compare_previewscompare_previewsA
Read-only

Side-by-side JPEG of two views (or a view and a checkpoint file) with the same stretch — before/after checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_aYes
id_bNo
rectNo[x, y, width, height] in image pixels
linkedNo
path_bNoCheckpoint/file to compare against instead of id_b
label_aNo
label_bNo
stretchNo
max_edgeNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate a read-only, non-destructive operation. The description adds useful behavioral context: the output is a JPEG, it is side-by-side, it uses a shared stretch, and it supports comparing against a checkpoint file. No contradiction with annotations exists.

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

Conciseness5/5

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

Single concise sentence with the core purpose front-loaded and no filler. It earns its place by specifying output format, input scope, comparison style, and intended use.

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?

The tool has 9 parameters and no output schema, yet the description only covers the high-level purpose. Important invocation details such as how id_b and path_b interact, what labels mean, what max_edge controls, and how linked behaves are absent, making it incomplete for an agent to reliably call the tool.

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 low at 22%, so the description must compensate, but it only vaguely explains id_a/id_b as views and stretch as 'same stretch'. Parameters like linked, max_edge, label_a, and label_b receive no meaningful explanation, leaving significant ambiguity for correct invocation.

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

Purpose5/5

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

The description clearly states a specific function: producing a side-by-side JPEG comparison of two views or a view and a checkpoint file. The 'same stretch' and 'before/after checks' details differentiate it from single-view preview tools like render_preview.

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

Usage Guidelines4/5

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

The description explicitly frames the tool as for before/after checks, which is a clear usage context. It does not name an alternative tool for single-view rendering, but the two-view/checkpoint comparison scope makes the intended use clear.

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

convert_to_grayconvert_to_grayA
Destructive

Convert a view to grayscale in place. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
checkpointNoWrite an .xisf checkpoint before running (default true)

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark the tool as destructive, but the description adds meaningful behavioral context: 'in place' tells the agent the original view is mutated, and 'Checkpoints first' discloses the safety workflow. This goes beyond the annotation alone and helps an agent understand the operational impact.

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

Conciseness5/5

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

The description is two short, purposeful phrases with no filler. The core action is front-loaded, and the checkpoint note adds critical safety information without bloating the text.

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

Completeness4/5

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

For a simple view-conversion tool, the essential behavior—what is transformed, in-place mutation, and checkpoint-before-run—is covered. There is no output schema, but 'in place' implies no separate returned image. Minor gaps remain around failure behavior and what happens to the existing view, but these are not critical for a tool this simple.

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

Parameters3/5

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

The schema documents the checkpoint parameter, and the description's 'Checkpoints first' reinforces the sequencing. The description also implies that 'id' refers to a view, partially compensating for the missing schema description. However, it does not explain the id format or its precise role, leaving a modest gap given 50% schema coverage.

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

Purpose5/5

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

The description clearly states the action ('Convert'), the resource ('a view'), and the mode ('to grayscale in place'), making the tool's purpose unambiguous. It is semantically distinct from sibling operations like invert, binarize, or extract_channels, so an agent can recognize what this tool does 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 Guidelines3/5

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

The intended use is implied: use this when a view should be converted to grayscale. However, the description gives no explicit guidance on when to prefer this over alternative operations, nor does it mention exclusions or conditions that would make it inappropriate.

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

cosmetic_correctioncosmetic_correctionA

CosmeticCorrection on calibrated (still mosaiced, cfa:true) frames: hot pixels from the master dark and/or auto-detect (sigma). Run BEFORE debayer. Async with per-frame progress; ~120 s for 30 frames.

ParametersJSON Schema
NameRequiredDescriptionDefault
cfaNodefault true (OSC)
waitNo
filesYes
out_dirNo
cold_autoNo
hot_sigmaNodefault 3.0
auto_detectNoAuto sigma detection (default true)
master_darkNo
hot_dark_levelNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so no contradiction. The description adds valuable context beyond annotations: it operates on calibrated cfa:true frames, is async with per-frame progress, and has an approximate duration. It does not disclose exact side effects on files, but that is partially covered by annotations and the correction nature.

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

Conciseness5/5

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

Two sentences with no filler. The key facts — purpose, input state, ordering, async, and timing — are front-loaded and every clause earns its place.

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

Completeness3/5

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

For a 9-parameter tool with no output schema, the description covers the key preconditions and timing but omits any indication of return values, output location, or the role of several parameters. It is sufficient to invoke the tool blindly but not to fully understand the operation's result.

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 only 33%, so the description must compensate. It explains the two detection paths (master_dark and auto_detect/hot_sigma) and mentions cfa:true. But parameters like files, out_dir, wait, cold_auto, and hot_dark_level remain unexplained in both schema and description, leaving gaps for a 9-parameter tool.

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 states a specific verb+resource: 'CosmeticCorrection on calibrated (still mosaiced, cfa:true) frames' with the specific goal of fixing hot pixels via master dark and/or sigma auto-detect. It also distinguishes itself from the debayer sibling by explicitly ordering 'Run BEFORE debayer.'

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

Usage Guidelines4/5

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

The description gives clear context: it is for calibrated, still mosaiced frames and must run before debayer. It also notes async behavior and typical runtime. However, it does not state when not to use this tool or name alternative tools beyond the debayer ordering.

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

cropcropC
Destructive

Crop to rect [x, y, w, h]. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
rectYes
checkpointNoWrite an .xisf checkpoint before running (default true)

TDQS

C2.9/5.0
Behavior1/5

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

The description implies a destructive state-changing operation by advising 'Checkpoints first', and the checkpoint parameter reinforces this. This directly contradicts the readOnlyHint:true annotation, making the behavioral contract inconsistent. The description itself does not state that it mutates the target image or what else changes.

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

Conciseness5/5

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

Two short sentences with the core operation first and no redundant wording. It is appropriately concise and front-loaded.

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 rect semantics are present, but the description omits what id refers to, what the tool returns, and the full side-effect picture. The checkpoint hint is useful but does not resolve the ambiguity of which image is being cropped or whether the operation is reversible beyond that checkpoint.

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

Parameters3/5

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

The description adds meaning for the rect parameter by defining x, y, w, h. However, id is not explained in either the schema or the description, and checkpoint is already documented in the schema. With only 33% schema description coverage, this is only partial compensation.

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 specifies the operation ('Crop') and the target shape ('rect [x, y, w, h]'), so an agent knows what the tool does. It doesn't explicitly say which image or window the crop applies to, and it doesn't distinguish itself from crop_preview or auto_crop, but the rect format gives enough core purpose clarity.

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 about when to use this tool instead of the many crop/processing siblings such as crop_preview or auto_crop. 'Checkpoints first' is a safety/workflow instruction, not a usage-selection guideline, so the agent is left to infer context.

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

crop_previewcrop_previewA
Read-only

1:1 (or zoomed) JPEG of a region — for star shapes, halos, ringing, noise texture. Defaults to a 512 px box at the image centre. Pass center [x,y] or rect. zoom >1 magnifies.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
rectNo[x, y, width, height] in image pixels
sizeNo
zoomNo
centerNo
stretchNo
stf_from_cropNoCompute the stretch from the crop instead of the full image

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the operation read-only and non-destructive. The description usefully adds that the output is a JPEG, that the default view is a 512 px center box, and that zoom > 1 magnifies. It does not explain stretch behavior or how the JPEG is returned, but the annotation-covered safety profile lowers the burden.

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 short and front-loaded: it states the output type and purpose first, then packs defaults, coordinate options, and zoom behavior into three tight sentences. Every clause adds operational value, and there is no redundant filler.

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?

Core invocation details are present — required id context, center/rect alternatives, default box size, and zoom semantics — and annotations cover the safety profile. However, the `stretch` parameter is unexplained and, with no output schema, the description does not state whether the JPEG is returned inline, as a path, or as a saved artifact, leaving some ambiguity for an agent.

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

Parameters3/5

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

The description adds meaning for center, rect, zoom, and the default size semantics, all of which the schema largely leaves undocumented. However, with only 29% schema coverage, the unexplained `stretch` enum (stf/hard/none) is a notable gap, and `stf_from_crop` is only covered by the schema. The description partially compensates but does not fully explain all parameters.

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

Purpose4/5

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

The description identifies a specific resource and outcome — a '1:1 (or zoomed) JPEG of a region' — and gives a concrete inspection use case ('for star shapes, halos, ringing, noise texture'). It is clear about what the tool produces, though the verb is implicit and it does not explicitly contrast with sibling render/crop tools.

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

Usage Guidelines4/5

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

The description communicates the intended context: pixel-level visual inspection of stars and artifacts, which implies when to use it versus full-frame rendering or statistical measurement. It does not mention exclusions or name alternatives like render_preview or crop, but the context is clear and not misleading.

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

curvescurvesA
Destructive

CurvesTransformation: explicit curves per channel ({K:[[0,0],[0.3,0.35],[1,1]], S:…}) or convenience contrast (-1..1) / brightness (-1..1). Non-linear stage. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
curvesNo
contrastNo
brightnessNo
checkpointNoWrite an .xisf checkpoint before running (default true)

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the basic behavioral profile is covered. The description adds that it is a non-linear stage and says 'Checkpoints first', reinforcing the destructive nature and suggesting safe usage. It does not contradict annotations and adds moderate context.

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

Conciseness4/5

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

The description is very short and front-loaded with the core purpose and parameter format. Each clause contributes: transformation type, parameter format, stage, and checkpoint instruction. Minor structural issues include fragmentary phrasing ('CurvesTransformation:') and the terse 'Checkpoints first' that could be clearer, but overall it is efficient and relevant.

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

Completeness3/5

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

Given the complexity of the tool (5 parameters, nested objects, no output schema) and low schema documentation, the description handles the main options but still lacks important context. It does not state how the parameters interact (e.g., whether curves and contrast can be combined), what the 'id' refers to, or what happens to the target image beyond being destructive. The 'non-linear stage' and 'checkpoints first' give pipeline context, but significant gaps remain.

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

Parameters4/5

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

Schema coverage is only 20%, so the description carries the main semantic burden for parameters. It explicitly provides the structure of the curves parameter with a concrete example, and specifies the valid ranges for contrast and brightness (-1..1). It also implies an 'or' relationship between explicit curves and convenience adjustments, which is not clear from the schema alone. It does not explain the 'id' parameter, but the description compensates for the low schema coverage.

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

Purpose4/5

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

The description states a clear operation: applying explicit curves per channel or convenience contrast/brightness, and identifies it as a non-linear stage. It provides a concrete example of the curves format, which distinguishes it from a vague image operation. It does not explicitly differentiate from sibling tools, but the meaning 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 Guidelines3/5

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

The description indicates the tool is a non-linear stage in a processing pipeline and instructs 'Checkpoints first', which is a clear operational guideline. It mentions the convenience contrast/brightness as an alternative to explicit curves, but does not specify when to choose this tool over sibling tools like stretch or saturation. Exclusions and alternatives to other tools are not explicitly stated.

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

debayerdebayerA

Debayer CFA frames (pattern Auto reads BAYERPAT; ASI2600MC = RGGB) with VNG (default) / SuperPixel / Bilinear. Run AFTER cosmetic correction. Async with per-frame progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNo
filesYes
methodNo
out_dirNo
patternNo

TDQS

A3.7/5.0
Behavior3/5

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

The description meaningfully adds behavior beyond the annotations by stating 'Async with per-frame progress.' It also warns about source-pattern handling ('Auto reads BAYERPAT'). However, it does not disclose what side effects occur on disk, how output paths are determined, or what happens if no pattern can be detected, so the behavior is only partially transparent.

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?

Every sentence in the description earns its place: action, allowed methods, default, pipeline position, and async behavior are all packed into two short lines. It is structured and front-loaded, with no filler or repetition of the schema.

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

Completeness2/5

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

For a five-parameter tool with no output schema and 0% schema descriptions, the description is not complete enough for an agent to invoke it correctly without guessing at files, wait, and out_dir semantics. The workflow ordering and async note help, but the lack of output/behavior detail and parameter guidance leaves important gaps.

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%, and the description must compensate for five parameters. It does enrich two of them: 'VNG (default)' clarifies the method enum and 'pattern Auto reads... ASI2600MC = RGGB' explains the pattern default, but files, wait, and out_dir receive no semantic guidance.

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 operation ('Debayer CFA frames'), the input resource, and the algorithm choices, with a concrete pattern example (ASI2600MC = RGGB). It also places the tool in the pipeline ('Run AFTER cosmetic correction'), which clarifies it among the large set of sibling image-processing tools.

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

Usage Guidelines4/5

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

The description explicitly says when to call it ('Run AFTER cosmetic correction') and indicates the default method, which is a clear workflow placement. It does not explicitly exclude any alternative or describe when another tool should be used, but the pipeline ordering is enough to remove a major ambiguity in this processing chain.

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

deconvolvedeconvolveA
Destructive

BlurXTerminator if installed (correct_only mode for the linear stage), else native Richardson-Lucy Deconvolution with a PSF sized from measured FWHM (conservative, deringing on). Check crop_preview for dark rings afterwards. Checkpoints first. Async-ish (can take minutes).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
methodNo
paramsNoExtra raw PixInsight process parameters (exact PJSR names)
fwhm_pxNo
checkpointNoWrite an .xisf checkpoint before running (default true)
iterationsNo
adjust_halosNo
correct_onlyNo
sharpen_starsNo
deringing_darkNo
sharpen_nonstellarNo

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already mark the tool destructive and non-readonly, and the description adds substantial behavioral context: it is async-ish, can take minutes, checkpoints first, deringing is on, and dark-ring artifacts should be inspected afterward. Nothing in the description contradicts the annotations.

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

Conciseness5/5

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

Three dense sentences: implementation selection, post-check advice, and execution behavior. Every sentence carries useful information with no filler or repetition.

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

Completeness3/5

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

The description covers algorithm, fallback, safety, artifact checking, and timing, which is strong for a mutating async tool. But with no output schema and an 'async-ish' promise, it does not specify what the tool returns, how to monitor completion, or whether it modifies the image in place; the agent must infer these from sibling job/status tools.

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

Parameters3/5

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

With schema coverage at only 18%, the description partially compensates by connecting fwhm_px to measured FWHM, clarifying correct_only mode, and describing the BXT/native fallback relevant to method. However, most parameters—iterations, adjust_halos, sharpen_stars, sharpen_nonstellar, and deringing_dark—receive no semantic explanation in either the schema or the description.

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

Purpose5/5

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

The description states a concrete operation—deconvolution—and goes beyond the name by specifying exact implementation details: BlurXTerminator when available, otherwise native Richardson-Lucy with a PSF derived from measured FWHM. This is specific enough to distinguish it from sibling sharpening/blurring tools.

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

Usage Guidelines4/5

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

The description gives clear context for choosing the internal mode (BXT if installed, native fallback) and targeted workflow advice such as using correct_only for the linear stage and checking crop_preview for dark rings. It stops short of explicitly saying when to prefer deconvolve over sharpen or other alternatives, so it is not a full when/when-not guide.

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

denoisedenoiseB
Destructive

NoiseXTerminator if installed, else MultiscaleLinearTransform (linear data) / TGVDenoise (non-linear) with a strength 0..1. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
detailNoNXT detail 0..1
methodNo
paramsNoExtra raw PixInsight process parameters (exact PJSR names)
denoiseNoNXT denoise 0..1
strengthNo
checkpointNoWrite an .xisf checkpoint before running (default true)

TDQS

B3.4/5.0
Behavior3/5

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

It adds context about algorithm fallback behavior and the checkpoint-before-running step, which complements the destructiveHint annotation. But it does not disclose that the tool likely modifies the active image, what the operation produces, or the full impact of the checkpoint behavior.

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 terse sentences convey the key algorithm-selection logic and a critical safety instruction with no filler. Every clause carries information, and the most important behavioral detail is front-loaded.

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?

The description is too cryptic for a destructive, 7-parameter tool with a nested params object and no output schema. It omits the target of the operation, the conditions for using denoise versus its many siblings, and the post-operation state, leaving substantial gaps for an agent to fill.

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

Parameters3/5

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

The description adds meaning to the strength and NXT-specific parameters by linking them to linear/non-linear algorithm selection. It does not explain the id, params object, or checkpoint parameter beyond the schema's own descriptions, and with only 57% schema coverage, this is only partial compensation.

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 specific denoising processes (NoiseXTerminator, MultiscaleLinearTransform, TGVDenoise) and a strength range, so an agent can infer the tool's purpose. It does not explicitly state 'denoise the active image' or differentiate from sibling processing tools, leaving some ambiguity.

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

Usage Guidelines3/5

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

The description gives explicit internal selection rules: use NXT if installed, else MLT for linear data or TGV for non-linear, plus a 'checkpoints first' instruction. However, it does not explain when to choose denoise over sibling tools like deconvolve or blur, nor when it should not be used.

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

drizzle_integratedrizzle_integrateA

DrizzleIntegration from .xdrz files (written by register and updated by integrate). Needs dithered subs; scale 1 (CFA-free super-sampling of rejection) or 2. Async.

ParametersJSON Schema
NameRequiredDescriptionDefault
outNo
scaleNo
kernelNo
keep_openNo
xdrz_filesNoDefault: registration drizzle files
drop_shrinkNodefault 0.9
use_local_normalizationNo

TDQS

A3.5/5.0
Behavior4/5

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

'Async' is a genuine behavioral disclosure not present in the annotations, warning the agent that completion must be checked separately rather than awaited synchronously — important because readOnlyHint=false only signals a non-read operation, not asynchronicity. The note that inputs come from register and are updated by integrate adds useful lifecycle context. It is consistent with the annotations and contradicts nothing, though it stops short of describing side effects or how completion is signaled.

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?

Three short sentences, each adding distinct information: input source, prerequisite plus scale semantics, and async behavior. No filler or repetition of the tool name, and the key constraint is front-loaded. The dense parenthetical 'CFA-free super-sampling of rejection' sacrifices readability, so it is efficient but not maximally clear.

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 an asynchronous tool with seven parameters and no output schema, key operational facts are missing: how an agent detects completion (siblings job_status and job_wait exist but are not referenced), what the result is and where it is written, and the meaning of four parameters. The description covers the input source and one prerequisite, which is insufficient for a tool of this complexity.

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

Parameters3/5

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

With only 29% schema description coverage, the description carries much of the parameter-documentation burden and does add real value for scale, glossing the cryptic 1/2 enum values as 'CFA-free super-sampling of rejection' versus 2. It also clarifies the origin and default of xdrz_files through its workflow sentence. But out, kernel, keep_open, and use_local_normalization remain unexplained in both schema and description, so the compensation is only partial.

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 concrete process — DrizzleIntegration — and its input resource (.xdrz files), and situates it in the pipeline by noting these files are 'written by register and updated by integrate,' which distinguishes it from siblings like integrate and fast_integrate. However, the noun phrasing 'DrizzleIntegration' instead of an explicit verb such as 'perform' or 'combine,' plus dense jargon like 'CFA-free super-sampling of rejection,' makes the purpose less accessible to a non-domain agent.

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 requirement of 'dithered subs' is an implicit precondition that tells an agent when this tool is appropriate, but the description never explicitly contrasts it with alternatives such as integrate, fast_integrate, or local_normalization. There is no 'use X instead when...' routing guidance. The mention of the register-to-integrate file lifecycle implies a workflow position, but leaves the decision of when to choose this over plain integrate to inference.

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

duplicate_windowduplicate_windowA

Deep-copy a view into a new window (no history). Use before experimenting.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
new_idNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already signal mutation without destruction; the description adds 'deep-copy' and 'no history', explaining the key effect on the new window and implying the original view is left intact. It does not contradict the annotations and adds useful behavioral nuance beyond readOnlyHint/destructiveHint.

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

Conciseness5/5

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

Two short clauses communicate the action, an important behavioral caveat, and a usage tip with no filler. Front-loaded action and caveat make it highly scannable.

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

Completeness3/5

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

The description covers purpose and primary behavior, and annotations cover the safety profile. However, with no output schema and no parameter explanation, an agent still lacks explicit documentation for the required id and optional new_id, so completeness is partial.

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?

The two parameters, id and new_id, have no schema descriptions and the description does not mention them. An agent must infer from property names alone that id identifies the source view and new_id names the new window; this is likely but undocumented.

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 precise action ('deep-copy a view into a new window') and an explicit qualifier ('no history') that distinguishes it from simple open/close window tools. The phrase 'Use before experimenting' reinforces that this is a duplication action for safe exploration. No ambiguity about the core operation.

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?

'Use before experimenting' is a clear directive for when to invoke the tool. It does not name alternative tools or explicitly exclude cases, but the experimental-safety context is sufficient for a simple utility.

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

exclude_framesexclude_framesA

Drop frames (by blink index) from the light group before stacking. The exclusion list is applied by pipeline_run / stack. Pass an empty list to clear.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
indexesYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark the tool as non-read-only and non-destructive. The description adds that the change is deferred until pipeline_run/stack and is reversible by passing an empty list, which is useful behavioral context beyond the annotation flags.

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 compact sentences front-load the core action and then state timing and clearing behavior. Every clause contributes meaningful information without padding.

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

Completeness4/5

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

For a simple two-parameter tool with no output schema, the description covers the essential behavior, timing, and reset path. It is nearly complete, though the optional reason parameter is not described and persistence/save implications are left implicit.

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

Parameters3/5

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

With 0% schema description coverage, the description must carry parameter meaning. It does clarify that indexes are blink indices and that an empty list clears exclusions, but it leaves the optional 'reason' parameter entirely unexplained.

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 opens with a specific verb and resource: 'Drop frames (by blink index) from the light group before stacking.' This clearly identifies the tool's function and distinguishes it from frame-review tools like blink_frames or scan_frames by tying the action to a stacking exclusion list.

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?

It gives explicit context for use: the exclusion list is 'applied by pipeline_run / stack,' so agents know this tool configures a future step rather than acting immediately. It also explains how to clear the list, but it does not explicitly name an alternative or say when not to use it.

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

extract_channelsextract_channelsC

ChannelExtraction (RGB / CIE L / …) into new views.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
prefixNo
channelsNo
color_spaceNo

TDQS

C2.8/5.0
Behavior3/5

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

Annotations mark the operation as non-read-only and non-destructive, and the description adds the useful behavioral detail that results are placed into new views. However, it does not disclose side effects, required input state, or failure behavior.

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

Conciseness3/5

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

The description is short and front-loaded with no filler, but it reads more like a label than an explanatory definition. It is concise without being informative.

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, no parameter documentation, and no usage guidance, the one-phrase description leaves an agent guessing about inputs and expected behavior. It provides only the high-level result of producing new views.

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%, so the description must compensate, but it only hints at channel/color-space content. It does not explain id, prefix, or the expected values for channels and color_space.

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 channel extraction into new views and names example channel types (RGB / CIE L), making the tool's purpose reasonably clear. It does not use a direct verb phrase, but it is specific enough to distinguish from general image-processing siblings.

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 about when to use this tool versus alternatives, and no exclusions or prerequisites are mentioned. The intended usage must be inferred from the tool name and context.

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

fast_integratefast_integrateA

Quick-look stack with FastIntegration (registration + integration in one pass, no drizzle, no LN). Good for a 2-minute sanity check of a night's data. Async.

ParametersJSON Schema
NameRequiredDescriptionDefault
outNo
filesYes
keep_openNo
referenceNo

TDQS

A3.5/5.0
Behavior3/5

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

The description adds some behavioral context beyond annotations, notably that the operation is asynchronous and performs registration and integration in a single pass. However, it does not describe side effects, output behavior, or what happens to input files, which would be useful given readOnlyHint=false.

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

Conciseness5/5

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

The description is three short sentences with no filler. It front-loads the core purpose of the tool, then explains scope and usage context, and ends with the async qualifier. Every sentence earns its place.

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

Completeness2/5

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

While the purpose and usage context are clear, the description is incomplete for a tool with four parameterscars and zero schema descriptions. No output schema exists, and the agent is left without parameter semantics, prerequisites, or expected outcomes, making correct invocation uncertain.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no explanation of any of the four parameters: files, out, keep_open, or reference. This leaves the agent without meaningful guidance for constructing a valid invocation.

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 ('Quick-look stack'), a specific method (FastIntegration), and explicitly states what is included (registration + integration in one pass) and excluded (no drizzle, no LN). This clearly distinguishes it from related siblings like integrate, drizzle_integrate, and register.

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?

It gives explicit context for when to use the tool: 'Good for a 2-minute sanity check of a night's data.' It does not name alternatives or explicitly state when not to use it, but the quick-look framing implies it is not for full-quality final integration.

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

fits_headerfits_headerA
Read-only

Raw FITS header cards of one file plus the parsed frame record (no PixInsight needed).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context: the output includes raw header cards plus a parsed frame record stored elsewhere, and that no PixInsight session is required. It does not go deeper into things like encoding, error conditions, or limits, but for a simple read-only tool this is reasonable.

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 filler. It front-loads the main output and adds the important 'no PixInsight needed' qualification without redundancy.

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 tool with one parameter knob, strong read-only annotations, and a clear output statement, the description covers the essential decision and invocation context. It explains what the caller receives and hints at the non-PI prerequisite. A slightly more explicit statement about 'path' being a filesystem path would make it complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for the undocumented 'path' parameter. It clarifies that the parameter refers to a single file whose header cards will be returned, which is helpful. It does not specify path format, file type validation, or whether directories are acceptable, leaving some ambiguity.

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 the resource ('Raw FITS header cards of one file') and the second output ('the parsed frame record'), making the tool's purpose clear. It lacks an explicit verb like 'get' or 'read', but the meaning is unambiguous. It does not explicitly distinguish itself from siblings such as image_keywords, though 'no PixInsight needed' hints at a key difference.

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

Usage Guidelines3/5

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

The phrase 'no PixInsight needed' implies this tool is appropriate when the caller wants FITS header data without running a PixInsight session. However, it does not explicitly state when to prefer this over sibling tools like image_keywords or when not to use it. The guidance is present but largely implied.

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

gradient_correctiongradient_correctionA
Destructive

Remove light-pollution gradients on a LINEAR image. method 'DBE' (DynamicBackgroundExtraction with automatically placed background samples, stars/object rejected; the user's preferred method), 'GradientCorrection' (default when DBE not requested), or 'ABE'. Checkpoints first. Look at the preview afterwards; dry_run reports the DBE sample layout.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
scaleNoGradientCorrection scale (default 5)
degreeNoABE polynomial degree (default 4)
methodNo
paramsNoExtra raw PixInsight process parameters (exact PJSR names)
radiusNoDBE sample radius px
dry_runNo
smoothingNoDBE model smoothing (default 0.25)
toleranceNoDBE: reject samples brighter than background by this many sigma (default 2)
checkpointNoWrite an .xisf checkpoint before running (default true)
correctionNo
samples_per_rowNoDBE grid density (default 10)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark this as destructive, and the description reinforces this with 'Checkpoints first.' It also discloses the dry_run behavior (reports DBE sample layout) and the expected post-invocation action (look at the preview). This is useful behavioral context beyond the annotations.

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

Conciseness5/5

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

Three compact sentences carry the core action, method selection, and workflow guidance without repetition. The method parenthetical is dense but every clause earns its place, and the most critical safety instruction appears early.

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 destructive 12-parameter tool with no output schema, the description supplies method routing, workflow state, and safety behavior. Minor gaps remain around the exact meaning of subtract versus divide correction and the role of the required id, but an agent has enough context to invoke and validate the operation correctly.

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

Parameters4/5

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

Schema coverage is 67%, so the description must add value. It clarifies the method enum values, their defaults and preferences, explains what dry_run reports, and introduces checkpoint behavior. It does not explain the correction subtract/divide enum, which would help the agent choose correctly, but the covered parameters are substantially enriched.

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 opens with a specific verb and resource: 'Remove light-pollution gradients on a LINEAR image.' It meaningfully distinguishes the tool from sibling operations like background_neutralize and color_calibrate by focusing on spatial gradients rather than color casts, and it differentiates internal methods (DBE, GradientCorrection, ABE).

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?

It gives explicit selection guidance: DBE is the user's preferred method, GradientCorrection is the default when DBE is not requested, and ABE is an alternative. It also tells the agent to checkpoint first and inspect the preview afterwards. It does not, however, state when to avoid this tool in favor of a sibling like background_neutralize.

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

group_filesgroup_filesB
Read-only

File paths of a frame group from the last scan.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds one behavioral constraint: the frame group must come from the last scan. It does not describe the exact return structure, path format, or behavior for an invalid group_id, but the annotations reduce the burden.

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

Conciseness4/5

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

The description is a single concise sentence with no filler or repeated information from the schema. It places the key scoping detail ('from the last scan') at the end, but the sentence is short enough that this is not a significant issue.

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 simple read-only tool with one parameter, the description gives the core return concept (file paths) and an important scope limitation (last scan). However, with no output schema, it does not specify whether the result is a list, how paths are formatted, or what happens when group_id does not match the last scan. It is minimally adequate but not fully complete.

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%, so the description carries the burden of explaining group_id. It only says 'a frame group,' which weakly maps group_id to a frame group identifier. It does not explain how to obtain group_id, what values are valid, or how it relates to the last scan.

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 the resource and scope: the file paths belonging to a frame group from the last scan. Although it lacks an explicit verb like 'get' or 'list,' the noun-phrase form still communicates a retrieval action. It is specific enough to distinguish from scan_frames and other frame-processing siblings.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions. The phrase 'from the last scan' implies a temporal constraint, but the agent is left to infer that this tool is for retrieving paths after a scan. There are no named sibling alternatives or conditions.

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

hdr_compresshdr_compressB
Destructive

HDRMultiscaleTransform to recover bright cores (galaxy cores, nebula centres) on a non-linear image. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
layersNo
paramsNoExtra raw PixInsight process parameters (exact PJSR names)
checkpointNoWrite an .xisf checkpoint before running (default true)
iterationsNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, and the description's 'Checkpoints first' instruction aligns with and reinforces that destructive behavior, adding practical advice. It also clarifies the intended image state (non-linear) and the target (bright cores), which goes beyond the annotation. No contradiction; the description adds extra behavioral context without conflicting with structured hints.

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

Conciseness5/5

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

The description is two concise sentences with no fluff. The purpose is stated first, followed by a critical prerequisite ('Checkpoints first'). Every word earns its place, and the structure front-loads the core function.

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 5 parameters, nested objects, and no output schema, this description is too brief. It provides purpose and a precondition but omits essential details: how the image is modified, what the parameters do, return behavior, and when it is appropriate relative to other processing steps. The annotations cover destructiveness but not operational completeness. Given the tool's complexity, key information is missing.

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 40% (only 'params' and 'checkpoint' have descriptions). The description does not explain any parameters—neither id, layers, iterations, nor the semantics of the params object. Since coverage is low (<50%), the description should compensate, but it is silent on parameters, leaving the agent to infer from names alone. This is a clear 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 clearly states the tool applies HDRMultiscaleTransform to recover bright cores (galaxy cores, nebula centres) on non-linear images. It names a specific verb, algorithm, and target, making the purpose unambiguous. It does not explicitly differentiate from siblings, but the specialized nature (HDRMultiscaleTransform for bright cores) is distinct enough among the many processing tools.

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

Usage Guidelines3/5

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

The description provides a usage context: it is meant for non-linear images and advises 'Checkpoints first,' implying a pre-execution safety step. However, it does not explicitly state when to use this tool versus alternatives (e.g., other HDR or stretching tools) or when not to use it. The guidance is present but shallow, lacking exclusions or comparisons.

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

histogramhistogramB
Read-only

Per-channel histogram counts (default 256 bins) for a view. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
binsNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the 'Read-only' statement adds little. The description does add useful context: histograms are per-channel and default to 256 bins. However, it does not disclose return format, behavior when bins is omitted, or how channels are represented.

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 very short and front-loaded with the core purpose. The final 'Read-only' is somewhat redundant with the readOnlyHint annotation, but it does not add meaningful bloat. Overall it is efficient and scannable.

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 simple read-only tool with two parameters, the description gives enough to guess the basic call, but it lacks details about the return structure, channel ordering, or how the bins parameter is applied. With no output schema, a bit more context about the returned histogram data would improve completeness.

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 0%, so the description must compensate. It adds meaning for bins by noting the default of 256, and 'for a view' gives some context for the id parameter. However, it does not explicitly define id as a view identifier or explain how bins affects the output beyond bin count.

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 that the tool produces per-channel histogram counts for a view and mentions the default of 256 bins. It lacks an explicit verb like 'compute' or 'return,' and it does not explicitly distinguish itself from close siblings such as image_statistics, but the histogram concept is specific enough to be identifiable.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like image_statistics or scan_frames. It only says 'for a view' and 'Read-only,' which implies a safe inspection use case but does not state exclusions or mention a better-suited sibling.

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

image_keywordsimage_keywordsB
Read-only

FITS keywords, XISF properties and astrometric solution summary of an open view.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds useful context about what data is returned and that it concerns an open view. It does not describe output structure, error conditions, or how the view is selected, but the read-only safety profile is already covered by annotations.

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

Conciseness5/5

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

The description is a compact, front-loaded phrase with no filler or redundant content. Every word contributes to identifying the resource and the returned data categories.

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 simple read-only tool with one parameter and no output schema, the description provides the essential domain context and data categories. However, it leaves the id parameter semantics underspecified and does not describe expected return structure, which keeps it from being fully complete.

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?

The input schema provides no description for the single required 'id' parameter and schema coverage is 0%. The description implies that the id refers to an open view, which is helpful, but it does not explain where such an id comes from, its format, or how it maps to a specific view.

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 the resource (an open view) and the specific data returned (FITS keywords, XISF properties, astrometric solution summary), making the tool's purpose understandable despite lacking an explicit verb. It is distinguishable from many siblings by naming these metadata categories, though it does not explicitly contrast with fits_header.

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 'of an open view' supplies an implied prerequisite, indicating the tool applies to a currently open view rather than an arbitrary file. However, it gives no explicit guidance about when to choose this over related tools like fits_header or image_statistics, and no exclusions are stated.

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

image_statisticsimage_statisticsA
Read-only

Per-channel median, MAD, mean, σ, min/max, clipped-black and saturated counts/percent, MRS noise estimate, SNR proxy, background neutrality ratios, linear guess. Read-only. Use after every stretch/sharpen step.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
rectNo[x, y, width, height] in image pixels
clip_lowNoValue at/below which pixels count as clipped (default 0)
clip_highNoValue at/above which pixels count as saturated (default 1)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, and the description repeats 'Read-only' without adding much beyond that. It adds some context by framing the tool as a post-processing check, but it does not disclose new behavioral traits like side effects, rate limits, or data dependencies.

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 compact and front-loads the metric list, which is the core value. The 'Read-only' phrase is redundant with annotations but harmless; overall every sentence contributes.

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

Completeness3/5

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

The description lists the expected output metrics, which is helpful since there is no output schema, but it does not explain how the 'id' parameter selects the image or that 'rect' restricts the region. For a tool with four parameters and rich output, this is adequate but not fully complete.

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

Parameters3/5

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

Schema coverage is 75% with direct descriptions for rect, clip_low, and clip_high; the remaining id parameter lacks schema guidance and is not clarified in the description. The description's mention of clipped and saturated counts loosely relates to clip thresholds, but it does not explain parameter meaning beyond the schema.

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

Purpose4/5

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

The description clearly identifies the tool as computing per-channel statistics (median, MAD, mean, σ, min/max, clipped counts, noise estimate, etc.), which makes the purpose obvious. It does not name a sibling tool explicitly, but the metric list differentiates it from tools like histogram or measure_stars.

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

Usage Guidelines4/5

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

The description gives explicit usage context with 'Use after every stretch/sharpen step,' which tells agents when to call it. It does not name alternatives or state when not to use it, but the timing guidance is clear and operational.

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

integrateintegrateA

ImageIntegration of registered frames → master light .xisf. Rejection auto by count (<8 Percentile, 8–20 Winsorized, >20 LinearFit), normalization additive+scaling (or LocalNormalization when .xnml given/available), weights from SSWEIGHT keyword or PSF signal weight. Reports rejected-pixel % (high = clouds/satellites/bad frame). Refuses < 3 frames without force. ALWAYS async.

ParametersJSON Schema
NameRequiredDescriptionDefault
outNo
filesNoDefault: registered outputs
forceNo
weightsNodefault SSWEIGHT if weighted frames were used, else PSFSignalWeight
keep_openNoKeep the integration window open as a view (default true)
rejectionNo
sigma_lowNo
sigma_highNo
lnorm_filesNo
drizzle_filesNoDefault: .xdrz next to registered frames when present
normalizationNo
large_scale_clip_highNo
rejection_normalizationNo
use_local_normalizationNodefault: true if local_normalization ran

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already indicate non-read-only and non-destructive, and the description adds significant behavioral context: it states 'ALWAYS async' (a critical execution trait), the refusal condition for fewer than 3 frames, and that it reports rejected-pixel percentage (useful for diagnosing input quality). These go beyond the sparse annotations, though it doesn't describe all side effects or output details.

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 dense single sentence packed with information, avoiding fluff. It front-loads the primary purpose and then cascades through algorithmic rules. While it's structured as a run-on, it is still efficient and every clause contributes meaning. It could benefit from bullet points, but for the information density it remains concise.

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

Completeness3/5

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

Given the tool's complexity (14 parameters, no output schema, sparse annotations), the description covers the core algorithmic decisions and key constraints but leaves many parameters unexplained (e.g., sigma_low, sigma_high, lnorm_files, drizzle_files, large_scale_clip_high). An agent may struggle with advanced configurations, but the description is sufficient for standard integration tasks with defaults.

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?

With schema description coverage at only 36%, the description compensates by explaining key parameters: rejection algorithm based on frame count, normalization behavior (additive+scaling or LocalNormalization), and weight source (SSWEIGHT or PSF). It also explains the 'force' param via the refusal condition. However, it doesn't cover many other parameters like sigma_low, drizzle_files, or keep_open, so it's not complete but does add substantial value for critical parameters.

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

Purpose4/5

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

The description clearly states 'ImageIntegration of registered frames → master light .xisf', identifying the verb (integrate), resource (registered frames), and output (master light). It is specific and unambiguous, but it does not explicitly differentiate from siblings like fast_integrate or drizzle_integrate, so it earns a 4 rather than a 5.

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

Usage Guidelines2/5

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

The description provides operational constraints ('Refuses < 3 frames without force', 'ALWAYS async') but offers no guidance on when to choose this tool over alternatives such as fast_integrate or drizzle_integrate. There is no mention of when-not or preferred alternatives, leaving selection entirely to the agent's inference.

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

invertinvertA
Destructive

Invert a view (useful on masks). Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
checkpointNoWrite an .xisf checkpoint before running (default true)

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already flag destructive behavior (destructiveHint: true). The description adds the useful behavioral note that a checkpoint happens first, which complements the destructive annotation rather than contradicting it. It does not go into further depth about in-place modification, but the simple nature of 'invert' makes that less critical.

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

Conciseness5/5

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

The description is extremely concise, with two short sentences that each carry useful information. There is no filler or redundancy, and the core 'invert a view' purpose is front-loaded.

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

Completeness4/5

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

For a simple single-resource operation, the definition is nearly complete: purpose, target use, destructive safety, and a checkpoint instruction are all present. The main gap is that 'id' is not described, but its role is inferable from 'view' and the required parameter is clearly named in the schema.

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?

The description adds no real meaning beyond the input schema. 'Checkpoints first' merely echoes the checkpoint parameter's existing schema description, and the required 'id' parameter is left completely undescribed in both the schema and the description. With 50% schema coverage, the description should compensate but does not.

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?

'Invert a view (useful on masks)' states a specific verb and resource, and the parenthetical gives a concrete use case. It is not tautological and is distinct enough from the many sibling image-processing tools, though it does not explicitly name a sibling alternative.

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

Usage Guidelines4/5

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

The description indicates which target it is useful for ('masks') and provides the operational guidance 'Checkpoints first,' which is especially relevant because the annotations mark this as destructive. It lacks an explicit when-not-to-use or comparison to alternatives, so it stops short of a 5.

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

job_canceljob_cancelA
Destructive

Request cancellation. Per-frame operations (calibrate, register, cosmetic, debayer, normalize) stop at the next frame; a running ImageIntegration cannot be interrupted (use pi_stop mode:'kill').

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already indicate destructiveHint=true, but the description adds essential behavioral nuance: cancellation is not instantaneous for per-frame operations and is impossible for ImageIntegration. This gives the agent the critical context it needs beyond the annotation.

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 deliver the core purpose, the behavioral scope, and the alternative tool with no wasted words. The primary action is front-loaded, and the exception is stated immediately after.

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 single-parameter cancellation tool with no output schema, the description covers purpose, cancellation semantics, and the key alternative. It does not mention what response or status is returned, but that is a minor gap given the simplicity of the operation and the availability of separate job_status/job_wait tools.

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%, so the description must compensate for the undocumented job_id parameter. It does not explain how to obtain or format job_id, nor does it state that it is the identifier of the job to cancel. The meaning is inferable from the tool name, but the description itself adds no parameter-level guidance.

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 opens with a specific verb and resource ('Request cancellation') and then clarifies the exact behavior: per-frame operations stop at the next frame, while ImageIntegration is not interruptible. It explicitly distinguishes this tool from pi_stop, so an agent can identify it among the many sibling tools.

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

Usage Guidelines5/5

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

The description gives clear when-to-use guidance by naming which jobs can be canceled (per-frame operations) and explicitly stating that a running ImageIntegration cannot be interrupted, directing the agent to 'use pi_stop mode:"kill"'. This is an explicit exclusion and alternative in one concise statement.

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

job_logjob_logB
Read-only

Tail of the PixInsight console log for a job (streams live while running). Also extracts ImageIntegration rejection lines when present.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
job_idYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool's safety is clear. The description adds valuable behavioral context: it streams live while running and extracts rejection lines when present. This goes beyond the annotations and helps the agent understand what to expect. However, it does not mention behavior when the job is not running or error handling, which prevents a higher score.

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 exceptionally concise: two sentences with zero fluff. The main purpose is front-loaded, and the extra rejection-line extraction detail is added without redundancy. Every word earns its place.

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

Completeness3/5

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

For a simple tool with no output schema, the description covers the core functionality (tail of log, streaming, rejection lines) but leaves gaps: it does not describe the return format (e.g., plain text, structure), behavior when the job finishes, or how to interpret rejection lines. Given the availability of sibling tools like pi_console_log, more clarity on when this is the right tool would improve completeness.

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?

The input schema has 0% description coverage, so the description must explain both parameters. It implicitly explains job_id via 'for a job', but it does not explain the 'tail' parameter at all. The description says 'Tail of the console log' but does not clarify that the 'tail' parameter controls the number of lines returned. This is a significant gap given the lack of schema descriptions.

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

Purpose4/5

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

The description clearly states it is a tail of the PixInsight console log for a job, with the additional feature of extracting ImageIntegration rejection lines. The verb 'tail' and resource 'console log for a job' are specific, and the scope is unambiguous. It does not explicitly differentiate from sibling tools like pi_console_log, but the 'for a job' qualifier provides some distinction.

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 guidance on when to use this tool versus alternatives such as pi_console_log or job_status. The description implies usage for monitoring a job's log output ('streams live while running') but does not state when not to use it or mention any alternative. This leaves the agent to 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.

job_statusjob_statusA
Read-only

Status, progress (current/total, percent, ETA) and result of an async job. Poll every 10–30 s for long jobs, or use job_wait.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark it read-only and non-destructive; the description adds that it is non-blocking and meant to be polled, and enumerates the progress/result fields returned. This is useful context not present in the annotations. It does not detail failure/error semantics, but for a read-only status check that is a minor 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?

Two short sentences front-load the returned data and then give the polling cadence/alternative. Every phrase earns its place, with no boilerplate or repetition of the title.

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?

It covers what the tool returns (status, progress fields, result), how often to poll, and the blocking alternative, which is adequate to call it correctly. There is no output schema, so the explicit progress/result list is valuable. It omits status enumerations and error cases, but those are not essential for a simple polling call.

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

Parameters3/5

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

The only parameter, job_id, has no schema description (0% coverage), but its purpose is closely inferable from the tool description's reference to 'an async job'. The description does not explicitly state that job_id must be the ID returned when launching the job, so it only partially compensates for the low schema coverage. The single self-evident parameter keeps this from being a 2.

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 the tool as returning status, progress (current/total, percent, ETA), and result for an async job, which is specific enough to distinguish it from a generic status endpoint. It also names job_wait as the blocking alternative, making the boundary with a key sibling clear. It lacks an explicit verb like 'get' or 'retrieve', and does not separate it from job_log, so not a perfect 5.

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

Usage Guidelines5/5

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

It gives concrete polling guidance ('Poll every 10–30 s for long jobs') and explicitly points to job_wait as the alternative when blocking is preferred. This tells the agent both how and when to invoke it. No exclusion criteria are given, but the core routing question is answered.

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

job_waitjob_waitA
Read-only

Block up to max_seconds (≤ 300) for a job to finish; returns the final result or the latest progress. Prefer this over tight job_status polling.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
max_secondsNo

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already declare read-only and non-destructive behavior, and the description adds the blocking nature, the max_seconds bound, and what it returns. It does not detail timeout or error behavior, but the core non-obvious behavior is clearly disclosed.

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

Conciseness5/5

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

The description is two sentences with no filler. The most important behavioral point, blocking and the time bound, is front-loaded, and the guidance about job_status polling is concise.

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

Completeness4/5

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

For a simple read-only wait tool with no output schema, the description covers the main behavior, the key parameter, and the alternative tool. It does not describe the exact shape of the return value or failure cases, but these are less critical given the annotations and the tool's simplicity.

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

Parameters3/5

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

The input schema provides only names, types, and constraints but no semantic explanations. The description adds meaning for max_seconds ('Block up to max_seconds') but leaves job_id unexplained, though its purpose is inferable from the tool name. This is partial compensation for the 0% schema description coverage.

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

Purpose5/5

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

The description uses a specific verb ('Block') with a clear resource ('a job') and describes the outcome: it returns the final result or latest progress. It also distinguishes this tool from job_status by framing it as a waiting operation rather than a polling check.

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

Usage Guidelines4/5

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

The description explicitly says 'Prefer this over tight job_status polling,' giving the agent direct guidance on when to select this tool over its nearest sibling. It does not spell out a when-not-to-use case, such as 'if you only need current status without waiting,' so it falls just short of a 5.

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

linear_fitlinear_fitB
Destructive

LinearFit the view to a reference view (match channel/sessions). Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
checkpointNoWrite an .xisf checkpoint before running (default true)
reference_idYes

TDQS

B3.1/5.0
Behavior3/5

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

The description's 'Checkpoints first' adds a warning that aligns with the destructiveHint annotation, providing actionable pre-call guidance. However, it does not state what exactly is mutated or what a linear fit does to the view beyond 'match channel/sessions.' Since annotations already declare destructiveness, this partial addition earns a 3.

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 concise, two-clause sentence captures the core action and immediate safety warning. No extra words, front-loaded with the purpose. It is clear and 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?

Given the tool's complexity (3 params, destructive behavior, no output schema), the description is minimal but still lacks clarity on what exactly gets transformed and how 'match channel/sessions' translates into action. It does not clarify the process enough for an agent to anticipate consequences beyond the checkpoint hint.

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 33% (only 'checkpoint' has a description). The tool description fails to explain the id, reference_id, or checkpoint semantics in more detail; 'reference view' hints at reference_id but does not elaborate on the id field or checkpoint meaning. This leaves critical parameters underdocumented.

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 ('LinearFit the view') and a target ('a reference view (match channel/sessions)'). It tells the agent what the tool does and its scope, but does not explicitly distinguish it from siblings like match_calibration. Still clear enough for an agent to infer the operation.

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 match_calibration or register. 'Checkpoints first' is a caution, but it does not explain when the tool is appropriate or when another tool should be chosen instead.

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

list_checkpointslist_checkpointsB
Read-only

Checkpoint files in the current session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds the session-scoped nature of checkpoints, but it does not describe output format, ordering, or how results relate to restore_checkpoint.

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 short phrase with no wasted words. It is easy to scan, but it is a sentence fragment rather than a complete instruction, which slightly reduces structural quality.

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, read-only list tool with non-destructive annotations, the description is mostly complete. It names the resource and scope, though it could better specify what data is returned for each checkpoint and how the list supports restore_checkpoint.

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 and schema description coverage is 100%, so there is no parameter information the description must add. The parameterless baseline 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 phrase 'Checkpoint files in the current session' identifies the resource and scope, and the tool name supplies the 'list' verb. It is distinguishable from siblings like checkpoint, restore_checkpoint, and undo, though the description itself omits an explicit verb.

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

Usage Guidelines2/5

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

No guidance is given for when to use this tool versus alternatives such as restore_checkpoint or checkpoint. The only contextual hint is 'current session', which is scope information but not usage guidance.

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

list_jobslist_jobsA
Read-only

List jobs submitted by this server process (id, op, status, progress).

ParametersJSON Schema
NameRequiredDescriptionDefault
active_onlyNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the scoping detail that jobs are 'submitted by this server process' and lists the returned fields, which is useful. It does not disclose behavior like whether active_only defaults to false, pagination, or ordering, but the annotations lower the bar.

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

Conciseness5/5

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

One sentence, front-loaded with the verb and resource, and includes the key output fields. No wasted words.

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

Completeness3/5

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

For a simple list tool with one optional boolean parameter and read-only annotations, the description is mostly adequate. However, it does not explain the meaning of active_only or the return format beyond field names, and there is no output schema. Given the low complexity, this is a minor gap, but the description could be more complete by noting the default behavior of active_only.

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 0%, so the description must compensate for the single parameter 'active_only'. The description does not mention active_only at all, leaving its meaning to the schema (which only says it's a boolean). Since there is only one parameter and its name is fairly self-explanatory, the gap is moderate, but the description adds no parameter-level meaning.

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 ('List') and resource ('jobs submitted by this server process') and includes the fields returned (id, op, status, progress). It is clear about what the tool does, though it does not explicitly differentiate from sibling tools like job_status or job_wait, which are also job-related.

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

Usage Guidelines3/5

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

The description implies usage: it lists jobs submitted by this server process, which suggests it is for viewing jobs from the current process. However, it does not explicitly state when to use this tool versus alternatives like job_status (for a specific job) or job_wait (to wait for completion). The context is clear but exclusions are absent.

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

list_masterslist_mastersB
Read-only

Master library contents (content-addressed by camera/gain/offset/binning/exposure/temperature/source frames).

ParametersJSON Schema
NameRequiredDescriptionDefault
gainNo
kindNo
cameraNo
exptimeNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare this a read-only, non-destructive operation, so the description only needs to add context. It adds the content-addressing key set, but it also mentions dimensions not present in the input schema (offset, binning, temperature, source frames), which slightly muddies expected behavior; return format and filtering semantics are not disclosed.

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 compact sentence with no filler. The key scoping idea is front-loaded, and the parenthetical adds detail without bloating the description, though starting with an explicit verb would improve structure.

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 read-only list operation with no output schema and optional parameters, this is minimally adequate. It fails to state whether the parameters act as filters, what the returned master entries include, or how the listed addressing dimensions relate to the schema, leaving some ambiguity.

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%, so the description carries the burden of explaining the four parameters. It provides a general 'content-addressed by...' clue and names camera/gain/exposure, but it does not map parameters to behavior, clarify that all are optional filters, or explain 'kind'.

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 the resource (master library) and the operation (return its contents), and the parenthetical clarifies the addressing scheme. It is clearly distinct from sibling tools like build_master_bias or list_jobs, though it omits an explicit imperative verb like 'List'.

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 about when to use list_masters versus alternatives such as match_calibration, scan_frames, or the build_master_* tools. The usage context is only implied by the name and the words 'master library contents', with no conditions or exclusions.

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

list_windowslist_windowsB
Read-only

Open image windows/views: id, size, colour space, bit depth, file path, linear guess, astrometric solution, mask.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already signal read-only/non-destructive behavior. The description adds a concrete return contract by naming the fields provided (linear guess, astrometric solution, mask, etc.), which is useful beyond the annotations. It does not discuss edge cases like no open windows, but that is a modest gap for a no-argument read-only 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?

The description is very short with no redundant words or filler. However, the opening fragment is grammatically ambiguous, sacrificing clarity for brevity, so it is not a perfect 5.

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 parameterless, read-only list operation, the field list plus annotations give an agent most of what it needs. The main omission is an explicit statement that the tool enumerates all currently open windows/views, which would have removed the ambiguity around 'Open image windows/views'.

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 and the schema coverage is complete, so there is no parameter-semantic burden on the description. The zero-parameter baseline of 4 applies.

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

Purpose3/5

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

The description identifies the resource ('image windows/views') and the returned fields (id, size, colour space, bit depth, file path, linear guess, astrometric solution, mask), but it never uses an explicit verb like 'list' or 'return'. The opening phrase 'Open image windows/views' can be read as a noun phrase or as an action, which creates ambiguity and does not clearly distinguish it from open_image.

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 about when to use this tool, what conditions apply, or which alternatives to choose. Given many sibling tools (open_image, duplicate_window, image_keywords), an agent is not told why list_windows is the right selection.

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

local_contrastlocal_contrastB
Destructive

LocalHistogramEqualization (non-linear). Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
amountNo
radiusNo
checkpointNoWrite an .xisf checkpoint before running (default true)
slope_limitNo

TDQS

B3.1/5.0
Behavior3/5

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

The annotation already marks the tool as destructive, and the description adds a practical safety-related instruction to checkpoint first. It does not contradict the annotations, but it gives little additional behavioral detail about what the equalization actually changes or how it affects the image.

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 extremely short, front-loads the core algorithm, and includes the operational warning 'Checkpoints first' without wasted words. It is more terse than ideal, but every part earns its place.

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

Completeness2/5

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

For a destructive image-processing tool with five parameters and no output schema, this description is incomplete. It conveys the algorithm and a checkpoint prerequisite, but omits parameter semantics, expected effects, and any guidance on selecting or invoking the operation correctly.

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 20%: only 'checkpoint' is documented. The description does not explain the meaning, units, defaults, or relationships of 'amount', 'radius', or 'slope_limit', so it fails to compensate for the schema's low coverage. This leaves an agent with little semantic grounding for the key adjustment parameters.

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

Purpose4/5

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

The description identifies the operation as LocalHistogramEqualization and notes it is non-linear, which clearly signals local-contrast enhancement through histogram equalization. It lacks an explicit verb and does not distinguish itself from siblings like local_normalization, but the intent is not vague or tautological.

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 instruction 'Checkpoints first' provides a clear procedural prerequisite, which is useful for a destructive operation. However, it does not explain when to choose this tool over alternatives such as local_normalization, curves, or stretch, so the when-to-use context is only implied.

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

local_normalizationlocal_normalizationB

LocalNormalization (.xnml) of registered frames against the reference; feeds integrate/drizzle for gradient-aware normalization. Async, per-frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoDefault: registered outputs
scaleNodefault 256
out_dirNo
referenceNoDefault: registered reference frame

TDQS

B3.4/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the description is not contradicting them. The description adds useful behavioral context: it is async and per-frame, and it produces .xnml files. However, it does not disclose what happens to existing outputs, whether it overwrites files, or what the output format/return value is.

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

Conciseness4/5

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

The description is two sentences with no filler. It front-loads the core purpose and adds the async/per-frame behavior efficiently. It could be slightly more structured, but it earns its place.

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

Completeness3/5

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

For a tool with 4 optional parameters and no output schema, the description gives enough to understand the general purpose and pipeline position. However, it lacks details on how the tool reports completion (async), what the .xnml output is used for, and whether there are any side effects on existing files. An agent might need to inspect the schema or logs to fully understand the behavior.

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 75%, so the schema already documents most parameters. The description adds context that 'files' defaults to registered outputs and 'reference' defaults to the registered reference frame, which is helpful. However, it does not explain the meaning of 'scale' or 'out_dir' beyond what the schema provides.

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

Purpose4/5

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

The description states a specific verb ('LocalNormalization') and resource ('.xnml' files of registered frames against the reference), and mentions it feeds integrate/drizzle. It is clear enough to distinguish from siblings like gradient_correction or integrate, though it doesn't explicitly name a sibling alternative.

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

Usage Guidelines3/5

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

The description implies usage context: it operates on registered frames and feeds integrate/drizzle, so an agent can infer when to call it. However, it does not explicitly state when to use this tool versus alternatives like gradient_correction or integrate, nor does it mention prerequisites or exclusions.

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

mask_infomask_infoA
Read-only

Which mask (if any) is attached to a window and whether it is enabled/inverted.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds useful behavioral context by stating that the tool reports whether a mask is present ('if any') and whether it is enabled/inverted, going beyond the annotations.

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

Conciseness5/5

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

A single, compact sentence that packs in the key facts: the resource (window), the queried attribute (attached mask), and the specific details (enabled/inverted). There is no redundant or filler content.

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

Completeness3/5

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

For a simple one-parameter read-only query, the description covers the return concept reasonably well even without an output schema. However, it omits explicit parameter semantics and any usage context, leaving minor but real gaps for an agent deciding whether and how to call it.

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

Parameters3/5

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

There is only one parameter, id, with no schema description and 0% schema_description_coverage. The description implies that id refers to a window because it says 'attached to a window', but it does not explicitly state that id is the window identifier. This is inferable but not fully explicit.

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 what is reported: which mask is attached to a window and its enabled/inverted state. It lacks an explicit imperative verb such as 'get' or 'list', but the query phrasing makes the purpose unambiguous and distinguishes it from mask-creation or mask-application siblings like apply_mask and star_mask.

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 about when to call this tool instead of related mask tools such as apply_mask, star_mask, or range_mask. The description states what it reports but not the situations in which an agent should prefer it, nor any exclusions or alternatives.

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

match_calibrationmatch_calibrationA
Read-only

For a light group from the last scan: choose darks/flats/flat-darks/bias with the matching rules (exact INSTRUME/GAIN/OFFSET/binning, EXPTIME ±0.5 %, temperature graded ok/acceptable/poor), and output the CMOS calibration policy (dark+flat without bias when darks match; bias+optimizeDarks only for dark scaling; flats with flat-dark or bias). Returns reasoning, warnings and blocking issues. Show the plan to the user before stacking.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoProceed even without flats when requireFlats is on
light_group_idYes
allow_dark_scalingNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark it as read-only and non-destructive, so the bar is lower. The description adds useful behavior beyond that: it returns reasoning, warnings, blocking issues, and mandates showing the plan to the user. It clarifies algorithmic behavior and output properties without contradicting the readOnlyHint.

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 information-dense but well-organized, with the core purpose first, the matching criteria explicit, and the return/workflow behavior listed compactly. Each sentence adds needed value, even the policy and warning details.

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, so the description carries the burden of explaining return information, and it does so at a reasonable level by naming reasoning, warnings, and blocking issues. It is complete enough to guide correct invocation, though the exact structure of returned policy/warnings is left to runtime discovery.

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 only 33%, so the description must compensate for the otherwise undocumented light_group_id and allow_dark_scaling. It partially does so by explaining the calibration policy and when dark scaling applies, but it adds little explicit meaning for the force parameter and no direct explanation of light_group_id beyond the general statement.

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

Purpose5/5

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

The description uses specific verbs and resources: it chooses darks/flats/flat-darks/bias for a light group and outputs a CMOS calibration policy. It clearly distinguishes this from calibrate_lights and list_masters by explaining the matching rules and planning role.

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?

It explicitly scopes the tool to 'a light group from the last scan' and instructs to 'show the plan to the user before stacking', providing clear workflow context. It does not name alternative tools or say when not to use it, but the context is strong enough for an agent to infer the intended call timing.

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

measure_starsmeasure_starsA
Read-only

Objective star quality of a view: count, median FWHM (px and arcsec if pixel_scale given), eccentricity, centre vs edge FWHM, brightest stars. Uses StarDetector + DynamicPSF (Moffat). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
fit_psfNo
pixel_scaleNoarcsec/px; default from rig config
sensitivityNo
max_psf_fitsNo

TDQS

A3.7/5.0
Behavior5/5

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

Annotations already declare read-only and non-destructive behavior, lowering the bar. The description adds substantial context beyond that: it names the underlying algorithms (StarDetector + DynamicPSF/Moffat), discloses conditional behavior (FWHM in arcsec only if pixel_scale is provided), and enumerates the computed metrics. This goes well beyond what annotations alone convey.

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 tight and front-loaded: the objective and metric list lead, followed by algorithm details and the read-only flag. Every sentence adds value except the redundant 'Read-only' restating the annotation, which is minor. No filler or irrelevant content.

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

Completeness3/5

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

The tool has five parameters and no output schema, so the description carries the burden of making the invocation clear. It succeeds in explaining the algorithm and conditional FWHM units, but leaves four parameters under-explained and does not describe the return format. This makes it minimally viable but not fully complete.

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 20%, with pixel_scale being the only parameter described in the schema. The description clarifies pixel_scale's optional effect on output units, but provides no additional meaning for id, fit_psf, sensitivity, or max_psf_fits. Given the low coverage, the description fails to compensate for the four undocumented parameters.

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

Purpose4/5

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

The description clearly states the tool's objective: assessing star quality of a view by listing concrete metrics (count, median FWHM, eccentricity, centre vs edge FWHM, brightest stars). This gives a specific, non-vague purpose that distinguishes it from generic pixel statistics tools like image_statistics, though it does not explicitly name a sibling alternative.

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

Usage Guidelines3/5

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

The description implies usage: when you need quantitative star-quality metrics for a view, this is the tool. However, it provides no explicit when-to-use guidance, no exclusions, and does not mention alternatives such as measure_subframes, which could also be relevant for star measurements.

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

measure_subframesmeasure_subframesA

SubframeSelector measurement of (debayered) frames: FWHM, eccentricity, SNR weight, PSF signal weight, star count, median, noise per frame, plus spread statistics. Stored in the session for select_subframes. Async.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNo
filesYes
camera_gainNoe-/ADU; default from rig
pixel_scaleNoarcsec/px; default from rig

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate this is a mutating operation (readOnlyHint=false) and not destructive. The description adds valuable behavioral context: it is asynchronous, stores results in the session, and requires debayered frames. It does not detail side effects on existing session data or failure behavior, but the async disclosure and session-storage note go beyond the annotations.

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

Conciseness5/5

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

Three sentences with no filler. The core action and metrics are front-loaded, the session-storage side effect is stated, and the async behavior is a single word at the end. Every sentence earns its place.

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

Completeness4/5

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

For a 4-parameter tool with no output schema, the description covers the main inputs' purpose, the async behavior, and the downstream consumer. It does not specify the return value or how to retrieve results, but the session-storage note and sibling select_subframes imply the workflow. The missing wait parameter semantics is a minor gap given the async disclosure.

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 50%: files and wait lack descriptions, while camera_gain and pixel_scale have descriptions. The description does not explain the files parameter's format or the wait parameter's semantics, so the agent must infer them. However, the description's mention of 'default from rig' for camera_gain and pixel_scale adds context beyond the schema, and the overall purpose clarifies what files refers to.

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 states a specific verb ('measure') and resource ('(debayered) frames'), and enumerates the exact metrics computed (FWHM, eccentricity, SNR weight, etc.). It also names the downstream consumer (select_subframes), which distinguishes it from sibling tools like measure_stars and image_statistics.

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

Usage Guidelines4/5

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

The description implies the tool is a prerequisite for select_subframes and notes it operates on debayered frames, giving clear context for when to use it. It does not explicitly state when not to use it or name alternatives, but the sibling list and the explicit 'Stored in the session for select_subframes' provide adequate routing guidance.

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

morphologymorphologyA
Destructive

MorphologicalTransformation (Dilation/Erosion/Opening/Closing/Median) — grow/shrink masks. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
sizeNo
amountNo
operatorNo
checkpointNo
iterationsNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds the concrete behavioral instruction 'Checkpoints first,' which tells the agent to preserve state before a mutation. It does not fully describe in-place modification or failure modes, but it extends the annotation coverage without contradicting it.

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 very short and front-loaded with the operation type and purpose, and the checkpoint warning earns its place. However, it is terse enough that an agent may still need to inspect the schema or sibling tools for parameter semantics.

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 six parameters, zero schema description coverage, no output schema, and a destructive hint, the description is incomplete. A correct invocation requires knowing what id refers to, how size relates to the structure element, what amount/iterations mean, and how the checkpoint parameter behaves—none of which are covered.

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%, so the description must compensate, but it only hints at operator meaning (Dilation/Erosion/Opening/Closing/Median) while leaving size, amount, iterations, checkpoint, and id unexplained. It does not clarify the distinction between amount and iterations or the effect of checkpoint as a 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 resource (masks) and the action (grow/shrink) and lists specific operators (Dilation/Erosion/Opening/Closing/Median), making it reasonably clear among mask-related siblings. It is less crisp than a full verb+object sentence, but it distinguishes morphology from binarize, blur, and mask creation tools.

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

Usage Guidelines4/5

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

The description gives clear operational context: use it to grow or shrink masks, and checkpoint before running because the operation is destructive. It does not explicitly name alternatives or exclusions, but the tool's purpose is distinctive enough that the main usage is evident.

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

open_imageopen_imageA

Open an image file (FITS/XISF/TIFF/…) in PixInsight as a view. Returns the view id, dimensions, FITS keywords. The window stays open for later tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoDesired view id (letters, digits, underscore)
pathYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only provide basic hints (readOnly=false, destructive=false, openWorld=false), so the description adds meaningful behavioral context: it opens a persistent view window, returns view id/dimensions/FITS keywords, and keeps the window available for later tools. No contradiction with annotations exists.

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

Conciseness5/5

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

Two concise sentences front-load the core action and format list, then add return values and persistence. Every clause earns its place with no redundancy or filler.

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

Completeness4/5

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

For a simple two-parameter tool, the description is sufficiently complete: it covers the operation, supported formats, return values, and persistence for downstream tools. There is no output schema, so mentioning the return contents is valuable; only minor details like path requirements or default view naming are absent.

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 50%: the 'id' parameter has a description, while 'path' has none. The description partially compensates by listing accepted file formats (FITS/XISF/TIFF) and implying 'path' identifies an image file, but it does not add detail about path semantics or the optional id behavior beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource: 'Open an image file ... in PixInsight as a view.' It also names supported formats and distinguishes the operation from siblings by emphasizing it opens a view rather than processing or saving data. The return values and window persistence further anchor its identity.

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

Usage Guidelines4/5

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

The description clearly implies when to use the tool: when an image file needs to be opened as a view for subsequent tools, explicitly noting 'The window stays open for later tools.' It does not name alternatives or exclusions, but the intended context is evident from the phrasing and sibling list.

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

pi_capabilitiespi_capabilitiesA
Read-only

Which optional processes/scripts exist in this PixInsight (BlurXTerminator, NoiseXTerminator, StarXTerminator, StarNet, GraXpert, WBPP, ImageSolver, SPCC…). Tools fall back automatically when something is missing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already mark this as a safe, read-only operation. The description adds behavioral context by noting that downstream tools fall back automatically when an optional process is missing, which informs an agent about the operational impact of a missing capability.

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

Conciseness5/5

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

Two sentences with no filler; the core purpose is front-loaded and the fallback behavior is a single useful addendum. Every sentence earns its place.

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

Completeness4/5

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

For a parameterless capability-discovery tool, the description tells the agent what will be reported (which processes/scripts exist) and the fallback implication. It does not describe a return format, but no output schema exists and the tool's complexity is low, so this is a minor gap.

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 and schema coverage is 100%, so there is no parameter meaning for the description to add. The baseline of 4 applies because no parameter information 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?

The description states a clear introspective purpose: enumerating which optional PixInsight processes/scripts exist, with concrete examples (BlurXTerminator, NoiseXTerminator, etc.). It distinguishes itself from process-running siblings by focusing on existence rather than execution, though it does not explicitly name an alternative.

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 context is implied: call this to discover which optional processes are available before relying on them. The fallback note ('Tools fall back automatically when something is missing') provides a reason to check, but no explicit when-to-use/when-not-to-use guidance or named alternatives is given.

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

pi_console_logpi_console_logA
Read-only

Tail of the PixInsight console output captured for the most recent (or given) job.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNo
job_idNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and destructiveHint, so safety is covered. The description adds 'captured' and 'tail', indicating a stored, truncated snapshot rather than live output. It doesn't disclose edge cases like invalid job_id or default line count, but this is acceptable given annotations.

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

Conciseness5/5

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

Single sentence, front-loaded with the resource and scope, no filler. Every word earns its place.

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

Completeness4/5

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

For a simple read-only tool with two optional params and no output schema, the description tells the agent what it returns (tail of console output) and how to select the job. Minor omissions like default line count and behavior with no job are low-risk and partially covered by the schema's min/max constraints.

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

Parameters3/5

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

With 0% schema coverage, the description carries the burden. It maps 'lines' to the tail length and 'job_id' to the 'given job' selection, but doesn't explicitly document defaults, optionality, or the 1–2000 range. The parameter names plus this context make the tool usable, but the description adds only partial parameter meaning.

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?

Description clearly identifies the resource (PixInsight console output) and scope (most recent or given job), with 'Tail' indicating a truncated read. It is not a tautology and can be distinguished from job_log/job_status by its focus on console output, though it doesn't explicitly name alternatives.

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?

It implies usage when you need the tail of console output for a job, and clarifies the job selection ('most recent or given'). However, it gives no explicit when-to-use or when-not-to-use guidance and doesn't differentiate from sibling tools like job_log or pi_status.

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

pi_end_sessionpi_end_sessionB

End the current session; optionally close all image windows in PixInsight.

ParametersJSON Schema
NameRequiredDescriptionDefault
close_windowsNo

TDQS

B3.1/5.0
Behavior2/5

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

With only readOnlyHint=false and destructiveHint=false, the annotations provide no meaningful behavioral detail. The description states the action but does not disclose whether ending a session is reversible, whether unsaved work or open windows are affected when close_windows is not true, or what side effects occur beyond ending the session.

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 focused sentence that front-loads the primary action and then mentions the optional parameter. There is no wasted wording.

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 simple one-parameter, no-output-schema tool, the description covers the essential action and optional behavior. It is not fully complete because it omits return-value expectations, prerequisites, and what happens when there is no active session, but these gaps are minor given the tool's simplicity.

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

Parameters3/5

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

The schema only defines close_windows as a boolean with no description; the tool description partially compensates by indicating that closing image windows is optional. However, it does not explicitly state the meaning of true versus false or the default behavior when the parameter is omitted.

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

Purpose4/5

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

The description clearly states the verb ('End') and the resource ('the current session') and adds the optional window-closing behavior. However, it does not explicitly differentiate itself from sibling tools like pi_stop or pi_restart, so it is clear but not fully distinguished.

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

Usage Guidelines2/5

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

No guidance is given about when to use pi_end_session instead of related tools such as pi_start_session, pi_use_session, pi_stop, or pi_restart. The description does not mention whether an active session is required or what happens if one is not active.

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

pi_list_sessionspi_list_sessionsA
Read-only

List sessions in the workdir and which is current.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with those. It adds useful behavioral context by specifying the scope ('in the workdir') and that the listing includes current-session status, which is beyond the structured annotations.

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

Conciseness5/5

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

A single sentence that front-loads the action and resource, then adds the distinguishing detail about the current session. Every word earns its place with no redundancy.

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

Completeness5/5

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

For a zero-parameter, read-only listing tool with annotations covering safety and an empty input schema, the description is fully sufficient. An agent can understand what will happen and what aspect of state is inspected without any missing pieces.

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 is nothing for the description to explain. The baseline of 4 applies since there is no parameter ambiguity to resolve.

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 states a specific verb ('List'), a specific resource ('sessions'), and adds the useful qualifier 'in the workdir and which is current.' This clearly distinguishes the tool from session-manipulation siblings like pi_start_session, pi_use_session, and pi_end_session.

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

Usage Guidelines3/5

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

The description makes clear when to call it – when you need to enumerate sessions and identify the current one. However, it does not explicitly mention alternatives or state when not to use it, so the routing guidance is implied rather than explicit.

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

pipeline_runpipeline_runA

One call from raw lights to a master light. engine 'wbpp' (default): PixInsight's WeightedBatchPreprocessing in a separate instance with exactly the matched calibration groups, then the master is opened in the daemon and WBPP intermediates are deleted. engine 'native': plan → masters (cached) → calibrate → cosmetic (CFA) → debayer → measure → select (SSWEIGHT) → register (+drizzle data) → local normalization → integrate [→ drizzle]. Frames dropped with exclude_frames (after blink_frames) are honoured. Working files go to /working-files. Runs in the background; poll pipeline_status. Resumable with resume_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoProceed despite blocking plan issues (e.g. no flats when requireFlats)
engineNoDefault: config stackingEngine (wbpp)
drizzleNo
min_starsNo
rejectionNo
resume_idNo
max_framesNoOnly the first N lights (quick end-to-end smoke test)
fwhm_factorNoReject FWHM > factor×median (default 1.25)
master_biasNo
master_darkNo
master_flatNo
wbpp_paramsNoWBPP automation parameters, e.g. {autocrop:true, localNormalization:false}
drizzle_scaleNo
exclude_filesNo
skip_cosmeticNo
debayer_methodNo
light_group_idNoFrom scan_frames (required unless resume_id)
max_eccentricityNo
allow_dark_scalingNo
keep_intermediatesNoKeep calibrated/cosmetic/debayered/weighted/registered files (default: config keepIntermediates=false: deleted as soon as the next stage succeeds)
rejection_warn_pctNo
skip_local_normalizationNo

TDQS

A4.2/5.0
Behavior5/5

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

The description discloses behaviors that annotations do not convey: WBPP intermediates are deleted, working files go to <target dir>/working-files, execution is asynchronous, and the run is resumable. It also clarifies that frames dropped via exclude_frames are honored. No contradiction with the annotations.

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

Conciseness5/5

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

The purpose is front-loaded in the first sentence, and every subsequent sentence adds a distinct fact: engine behavior, native pipeline stages, excluded frames, working files, background execution, and resumability. It is dense but justified by the tool's complexity.

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

Completeness3/5

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

The description covers the core workflow, engine differences, deletion behavior, background execution, and resumability. However, with 22 parameters and no output schema, it omits the return value or pipeline identifier needed for polling, and it does not state prerequisites like light_group_id or the need for a prior scan_frames/plan.

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 32%, so the description needed to compensate for the many undocumented parameters. It adds meaning for engine and resume_id, and hints at working-file behavior, but most parameters (force, min_stars, rejection, drizzle_scale, skip_cosmetic, etc.) remain unexplained in both schema and description.

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

Purpose5/5

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

Opens with a specific purpose: 'One call from raw lights to a master light.' It then differentiates the two engine modes ('wbpp' vs 'native') and describes the full pipeline stages, which clearly separates it from sibling step-by-step tools like calibrate_lights or wbpp_run.

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?

Provides clear usage context: this is the end-to-end pipeline tool, supports two engine choices, runs in the background, requires polling pipeline_status, and can be resumed with resume_id. It does not explicitly state when not to use it versus the individual step tools, so it stops short of full alternative guidance.

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

pipeline_statuspipeline_statusA
Read-only

Progress of a pipeline_run: current stage, per-stage status, live job progress, warnings, master light path/view id, integration rejection stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
pipeline_idNoDefault: most recent pipeline in the session

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description need not repeat that. It adds value by detailing the kind of progress information returned, which goes beyond a generic 'get status' and gives the agent a concrete sense of the output content.

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: it opens with the resource ('pipeline_run') and immediately enumerates the info returned. No filler, every phrase earns its place.

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

Completeness5/5

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

For a simple read-only status tool with one optional parameter and no output schema, the description is fully complete: it names the resource, lists the output categories, and the annotations cover safety. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

The lone pipeline_id parameter already has a description in the schema ('Default: most recent pipeline in the session'), covering 100% of parameters. The tool description adds no further nuance about the parameter, so the baseline 3 applies.

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

Purpose5/5

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

The description clearly states the tool reports progress of a pipeline_run, listing specific elements (current stage, per-stage status, live job progress, warnings, master light path/view id, integration rejection stats). This distinguishes it from sibling status tools like job_status or pi_status by making the resource and scope explicit.

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

Usage Guidelines4/5

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

The description clearly implies usage: call this to get progress of a pipeline_run. It states the scope precisely but does not explicitly name alternatives or exclusions, unlike job_status or wbpp_status. That is clear context without explicit routing, so a 4 fits.

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

pi_restartpi_restartA
Destructive

Kill PixInsight and relaunch the daemon (picks up daemon code changes; open windows are lost).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds specific behavioral context by warning that open windows are lost, which goes beyond the generic destructive flag. It also clarifies the restart semantics (kill then relaunch), providing useful safety information for the agent.

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 that front-loads the key action ('Kill PixInsight and relaunch the daemon') and then packs the rationale and caveat into the remainder. There is no wasted wording, and every clause adds value.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, no output schema), the description covers the essential context: what it does, why it is useful, and a key side effect. It does not mention return values, but that is not critical for a restart operation. The presence of the destructive annotation and the explicit warning about windows make it sufficiently complete.

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 the input schema is empty and schema coverage is 100%. Per the baseline for 0-parameter tools, a score of 4 is appropriate because there are no parameter semantics to elaborate on, and the description does not need to add anything.

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 states a specific action ('Kill PixInsight and relaunch the daemon') and its purpose ('picks up daemon code changes'). This clearly distinguishes it from siblings like pi_stop, which would only stop, and pi_start_session, which manages sessions. The verb-resource pairing 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 Guidelines4/5

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

The description implies when to use the tool: after daemon code changes, to apply updates. It also warns about destructive consequences ('open windows are lost'). However, it does not explicitly state when not to use it or contrast with alternatives like pi_stop, leaving some inference to the agent.

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

pi_run_pjsrpi_run_pjsrA

Escape hatch: run arbitrary PJSR (PixInsight JavaScript) inside the warm PixInsight instance. Assign result = ... to return JSON. Helpers: PIMCP.win.view(id), PIMCP.stf, PIMCP.preview.render(view,{out_path}), PIMCP.K.{GRAY,RGB,REAL,INTEGER,NOSWAP} (macros are not visible to eval). Gated by config allowRawScripts.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYes
timeout_msNo
script_argsNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations only provide readOnlyHint=false, destructiveHint=false, openWorldHint=false, leaving room for the description to add behavioral context. It does add gate to config, helpers, and the 'macros are not visible to eval' detail, but it does not disclose the potentially destructive/generalized consequences of arbitrary code execution or side effects beyond 'run'. This is adequate but not thorough for a code-execution 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?

The description is front-loaded with the 'Escape hatch' context and each sentence contributes distinct information: what it runs, how to return data, about helper functions, and the configuration gate. It has no wasted or redundant phrases and stays under four sentences.

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 low-level escape hatch with no output schema, it explains the return convention and gives helper hints, covering the tool's core contract. But it omits examples, doesn't explain `script_args` or `timeout_ms`, and doesn't describe error behavior or caveats—gaps that matter when executing arbitrary code.

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% with three parameters, so the description must compensate. It clarifies that `script` holds the PJSR code and that `result = ...` returns JSON, but it completely ignores `timeout_ms` and `script_args`. The description provides only partial semantic meaning for the parameters.

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

Purpose5/5

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

The description explicitly identifies the verb ('run'), the resource ('arbitrary PJSR'), and the context ('inside the warm PixInsight instance'). The label 'Escape hatch' sets it apart from the specialized sibling tools like process_params and pixel_math. Agents can distinguish this tool from all other operations without inspecting its 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?

'Escape hatch' clearly signals that this is the fallback when standard operations don't cover a case, and 'Gated by config allowRawScripts' adds an explicit availability condition. However, it doesn't name specific alternative tools or explicitly state 'when not to use' scenarios, only clear context with no exclusions.

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

pi_start_sessionpi_start_sessionA

Create a new processing session (an output namespace under the workdir: work/, previews/, checkpoints/). Sessions persist across server restarts; the latest is current.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoHuman label, e.g. target name
target_dirNoDirectory of the object's lights; working files go to <target_dir>/working-files (workLayout 'target')

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only indicate this is not read-only, not open-world, and not destructive. The description adds meaningful behavioral detail beyond that: sessions create an output namespace under specific directories, persist across restarts, and make the latest session current. This helps the agent understand side effects and lifecycle behavior.

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 compact sentences deliver the core action, the namespace structure, and the persistence/current-session behavior with no filler. The essential purpose is front-loaded, and every clause adds value.

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

Completeness4/5

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

For a simple create operation with two optional, fully documented parameters and no output schema, the description covers the main facts an agent needs: what is created, where it lives, and its persistence/current-session effect. It lacks only an explicit pointer to sibling tools for session switching, which is a minor gap.

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 schema already explains both 'name' and 'target_dir' clearly, including the target_dir working-files behavior. The description adds no new parameter-level meaning, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a new processing session.' It adds concrete detail about what a session is (an output namespace under work/, previews/, checkpoints/) and notes persistence and current-session semantics, which clearly distinguishes it from sibling tools like pi_list_sessions, pi_use_session, and pi_end_session.

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 useful context about sessions persisting and the latest being current, but it never says when to create a new session versus using or ending an existing one. Sibling tools like pi_use_session and pi_end_session exist, yet no alternative or exclusion is mentioned, leaving the agent to infer the appropriate workflow.

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

pi_statuspi_statusA
Read-only

Daemon/PixInsight liveness, version, installed optional modules (BXT/NXT/SXT…), open windows, current session, active job. Call first. Does not launch PixInsight unless launch:true.

ParametersJSON Schema
NameRequiredDescriptionDefault
launchNoLaunch PixInsight if not running (default false)

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive, and the description adds meaningful behavioral context beyond that: it may inspect daemon/PixInsight state but will not launch PixInsight unless explicitly requested via launch:true. 'Call first' is also a useful operational behavior for a status probe. This conflicts with no annotation.

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 compact and dense, with the core status payload front-loaded, followed by the critical 'call first' directive and the launch caveat. Every clause earns its place and no information is repeated from the schema.

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

Completeness4/5

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

For a simple read-only polling tool with one optional parameter and no output schema, the description covers what data is returned, when to call it, and the only side-effect worth knowing. It is complete enough for an agent to invoke correctly; a small gap is that it does not describe the exact response shape or how to interpret daemon vs. PixInsight liveness separately.

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

Parameters3/5

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

The schema already fully documents the single launch parameter with a clear description, so baseline credit is appropriate. The description reinforces the parameter's meaning by stating the launch side effect, but it does not add significant new detail beyond the schema.

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

Purpose4/5

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

The description clearly enumerates what the tool reports: daemon/PixInsight liveness, version, installed optional modules, open windows, session, and active job. This exceeds a vague label and orients the agent to what 'status' means for this tool. It loses a point because it lacks a fetch/retrieve verb, but the enumerated payload makes the purpose unambiguous.

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?

'Call first' is explicit, practical usage guidance that tells the agent to invoke this tool before other operations. It also clarifies that the tool does not launch PixInsight unless launch:true, which prevents an unexpected side effect. However, it does not explicitly say what to do if the daemon is not running or which sibling to use next.

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

pi_stoppi_stopA
Destructive

Stop the daemon loop (PixInsight stays open) or kill the PixInsight process (mode:'kill' — loses unsaved windows; the only way to abort a running ImageIntegration).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNodaemon

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false, and the description adds valuable behavioral context: 'PixInsight stays open' for daemon, 'loses unsaved windows' for kill, and the unique capability to abort ImageIntegration. This goes well beyond what the annotations alone provide.

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

Conciseness5/5

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

Single sentence, front-loaded action, and a parenthetical that packs both consequence and exception into minimal space. Every word earns its place.

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

Completeness5/5

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

For a one-parameter tool with strong annotations and no output schema, the description covers the action, the two modes, the key safety hazard (unsaved windows), and a special use case (aborting ImageIntegration). Nothing an agent needs to call it correctly is 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?

With 0% schema description coverage, the description carries the semantic burden. It explains the 'kill' mode effect and contrasts it with daemon mode; the default value is left to the schema, but no critical parameter meaning is missing.

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 states a specific verb ('Stop') and distinguishes two resources: the daemon loop and the PixInsight process. It also makes the mode distinction explicit, so an agent can tell what this tool does 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?

The description gives clear context: daemon mode stops the loop while keeping PixInsight open, and kill mode is 'the only way to abort a running ImageIntegration.' It doesn't explicitly name sibling alternatives like pi_restart, but the when-to-use guidance is strong enough to route an agent.

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

pi_use_sessionpi_use_sessionB

Switch the current session to an existing one (resume work).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate the operation is neither read-only nor destructive. The description adds that it switches state and is meant for resuming work, but it does not explain what happens to the previously current session, whether unsaved state is preserved, or how invalid ids are handled. With annotations present, this is adequate but not rich.

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

Conciseness5/5

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

The description is extremely concise, with no filler or redundant phrasing. It is front-loaded with the action and object, and the parenthetical adds useful intent without bloating the text.

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 simple one-parameter tool with no output schema, the description conveys the core action and purpose. However, it lacks guidance on where to obtain the session id and what happens to the current session, so an agent may not fully understand the operational context.

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?

The schema has a single required 'id' parameter with no description, and schema coverage is 0%. The description only indirectly suggests that 'id' identifies the existing session via 'an existing one', but it never explicitly states that id is the target session id, where it comes from, or what format is expected.

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 ('Switch') and clearly identifies the resource ('the current session') and the target state ('an existing one'). The parenthetical 'resume work' reinforces the intent and helps distinguish this from pi_start_session and pi_end_session, though it does not name them 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?

The phrase 'resume work' implies this tool is for switching back to an existing session rather than creating a new one, which gives implicit usage context. However, there is no explicit when-to-use or when-not-to-use guidance, and it does not direct the agent to alternatives like pi_list_sessions or pi_start_session.

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

pixel_mathpixel_mathB
Destructive

PixelMath expression on a view ($T = target; other view ids usable). new_id creates a new image instead of replacing. Checkpoints first when in place.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
new_idNo
rescaleNo
truncateNo
checkpointNoWrite an .xisf checkpoint before running (default true)
expressionYes
expression_bNo
expression_gNo

TDQS

B3.3/5.0
Behavior4/5

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

The description supplements the destructiveHint=true annotation by explaining that the tool replaces the view in place unless new_id is supplied, and mentions checkpointing for in-place runs. This adds useful behavioral context beyond the annotations, though it doesn't fully spell out overwrite consequences or expression channel handling.

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

Conciseness4/5

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

The description is concise and front-loaded with the core function, then adds key behavioral details in short sentences. The phrase 'Checkpoints first when in place' is slightly awkward and ambiguous, which prevents a perfect score.

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 destructive tool with 8 parameters, no output schema, and low schema coverage, this description is insufficient for fully informed invocation. It captures the main operation and safety-related behavior, but omits meaning for several parameters and any indication of return or side effects.

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?

With only 13% schema description coverage, the description carries a heavy burden for explaining parameters. It clarifies id via $T and other view ids, new_id via replacement behavior, and checkpoint, but leaves expression, expression_b, expression_g, rescale, and truncate effectively unexplained.

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 that the tool applies a PixelMath expression to a view, identifies $T as the target, and allows other view ids. This is specific enough to distinguish it from image-processing siblings like pixelmath_mask, though 'PixelMath expression' could be slightly more explicit about what it does to pixels.

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

Usage Guidelines3/5

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

The description implies the tool is for applying PixelMath expressions to views and gives the new_id vs in-place distinction. However, it does not explicitly state when to prefer this tool over alternatives such as apply_process or pixelmath_mask, and the 'Checkpoints first when in place' line is more instruction-like than a clear usage policy.

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

pixelmath_maskpixelmath_maskC

Mask from a PixelMath expression evaluated on the view ($T), e.g. 'iif($T>0.2,1,0)'. Returns mask_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
mask_idNo
rescaleNo
expressionYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, so the agent knows this is a write operation. The description adds that evaluation happens on $T and that a mask_id is returned, but it does not explain side effects on the view or whether the existing mask is replaced. With annotations present, the description supplies some behavioral context but not comprehensive details.

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 sentence with an example, front-loaded with the core operation. It is concise with no redundant words.

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

Completeness2/5

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

With four parameters, two required, and no output schema, the description is incomplete. It omits explanations for 'id' and 'rescale', lacks usage guidance, and does not specify behavioral details beyond the basic creation, so an agent may not be fully equipped to call the tool correctly.

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%, so the description must compensate. It only explains 'expression' with an example and mentions 'mask_id' as output. It does not clarify 'id' or 'rescale', leaving half the parameters undocumented.

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

Purpose4/5

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

The description clearly states the tool creates a mask from a PixelMath expression on the view ($T), with a concrete example. It identifies the resource (mask) and operation (create), but does not explicitly differentiate from sibling mask tools like star_mask or range_mask.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as star_mask or range_mask. The example implies usage, but there is no explicit context, exclusions, or mention of alternative tools.

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

plate_solveplate_solveA

ImageSolver astrometric solution (needed by SPCC/PCC and annotate). Seeds RA/DEC/focal/pixel size from FITS keywords; pass them if headers lack them. Needs internet for the Gaia/VizieR catalog. Non-destructive (adds metadata).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
raNodegrees
decNodegrees
forceNo
magnitudeNo
pixel_sizeNoµm; default rig
focal_lengthNomm; default rig
distortion_correctionNo

TDQS

A4.1/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing that the operation requires internet access for Gaia/VizieR, seeds values from FITS keywords, and modifies metadata non-destructively. This gives an agent important behavioral context that the annotations alone do not provide, and it does not contradict the annotations.

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

Conciseness5/5

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

Three short, information-dense sentences. The primary purpose is front-loaded, followed by parameter guidance, external dependency, and side-effect profile. Every sentence earns its place with no redundancy.

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

Completeness3/5

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

Given 8 parameters, no output schema, and partial schema coverage, the description is not fully complete. It covers the main purpose, dependencies, and side effects, but omits the meaning of several parameters (force, magnitude, distortion_correction) and gives no sense of failure modes or return behavior.

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 50%, and the description adds meaningful context for ra, dec, focal_length, and pixel_size by explaining they are seeded from FITS keywords and only need to be passed when headers lack them. However, force, magnitude, and distortion_correction remain unexplained in both schema and description, leaving a clear semantic 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 identifies the tool as an 'ImageSolver astrometric solution' and connects it to downstream consumers (SPCC/PCC and annotate), making its function clear. It lacks a strong imperative verb like 'Computes' or 'Solves', but the resource and role are specific enough to distinguish it from siblings.

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

Usage Guidelines4/5

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

The description states that the solution is needed by SPCC/PCC and annotate, implying it should be run before those steps. It also gives actionable guidance: pass RA/DEC/focal/pixel size if FITS headers lack them. It doesn't explicitly discuss alternatives or when not to use it, so it falls short of a 5.

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

process_paramsprocess_paramsA
Read-only

Default parameter listing (toSource) of a PixInsight process — discover exact parameter names for apply_process.

ParametersJSON Schema
NameRequiredDescriptionDefault
processYes

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already establish readOnly=true and destructive=false. The description adds useful beyond-that behavior: it returns the default toSource parameter listing, not current session state, and that this is the exact format needed for apply_process.

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

Conciseness5/5

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

One sentence, no filler. The primary notion ('parameter listing (toSource)') is front-loaded and the practical purpose follows immediately. Every word earns its place.

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

Completeness4/5

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

For a one-string-parameter read-only helper without an output schema, the description is largely complete: it states the input domain, the return style, and the downstream consumer. It omits failure conditions or session prerequisites, but those are secondary for this simple 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?

With 0% schema description coverage, the description must carry the meaning of the single 'process' parameter. It does indicate that the parameter names a PixInsight process, which is meaningful, but it offers no examples or expected naming conventions. This is adequate, not rich.

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 resource ('parameter listing of a PixInsight process') and a specific function ('discover exact parameter names'), then ties it directly to apply_process. This distinguishes it from every sibling tool, none of which is about parameter discovery.

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 'exact parameter names for apply_process' clearly marks this as the discovery/preparation step before calling apply_process. It does not enumerate alternatives or exclusions, but the context is strong enough for an agent to know when it applies.

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

range_maskrange_maskA

Luminance range mask (RangeSelection on a stretched gray copy): low/high 0..1, fuzziness, smoothness, invert. Returns mask_id (new view).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
lowNo
highNo
invertNo
mask_idNo
stretchNo
fuzzinessNo
smoothnessNo

TDQS

A3.7/5.0
Behavior4/5

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

It adds valuable behavior beyond annotations: it internally operates on a 'stretched gray copy', performs RangeSelection, and produces a new view via mask_id. It does not detail side effects or permission needs, but the annotations are not contradicted and the new-view statement implies non-destructive behavior.

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 entire description is one dense sentence that front-loads the core concept, parameter hints, and return value with no filler. Every part adds useful information.

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

Completeness3/5

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

Given eight parameters, no output schema, no per-parameter schema descriptions, and only weak annotations, the description is adequate but has clear gaps: it omits id semantics and stretch, and does not explain the mask_id input/output ambiguity. It covers the core workflow, but not enough to fully specify a correct invocation without domain 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?

With 0% schema description coverage, the description partly compensates by specifying low/high ranges (0..1) and naming fuzziness, smoothness, and invert. However, the required id parameter is never explained, stretch is not mentioned, and mask_id is described as a return value even though it also appears as an input property.

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 ('Luminance range mask') and method ('RangeSelection on a stretched gray copy'), and states an output ('Returns mask_id (new view)'). It is clear enough to distinguish from star/pixelmath masks, but it lacks an explicit imperative verb such as 'Creates'.

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 'Luminance range mask' implies when the tool is appropriate, and the parameter list suggests selection by luminance values. However, it does not state conditions, prerequisites, or contrast with sibling mask tools like star_mask and pixelmath_mask, leaving the choice largely to inference.

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

registerregisterB

StarAlignment of frames to a reference (default: highest-weight approved frame from select_subframes). Writes *_r.xisf and .xdrz drizzle data. Async, per-frame progress, cancellable.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoDefault: weighted files from select_subframes
out_dirNo
referenceNo
interpolationNo
generate_drizzleNodefault true
distortion_correctionNo

TDQS

B3.3/5.0
Behavior4/5

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

Beyond the annotations, the description discloses that the tool writes *_r.xisf and .xdrz drizzle files, and that it is asynchronous, shows per-frame progress, and is cancellable. These are meaningful operational behaviors not captured in the structured annotations. No contradiction exists with readOnlyHint, openWorldHint, or destructiveHint.

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

Conciseness4/5

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

The description is three concise sentences: purpose first, output artifacts second, and operational behavior third. No filler or redundancy, and the structure is easy to scan.

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 six parameters, no output schema, and low schema coverage, the description leaves important details vague, such as parameter options, expected return value, and behavior of interpolation/distortion correction. It mentions output files but not enough for an agent to make correct parameter choices.

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 33%, covering just files and generate_drizzle. The description adds only the default reference source and mentions drizzle data output, but leaves out_dir, reference, interpolation, and distortion_correction completely unexplained. It fails to compensate for the low schema coverage.

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 operation: StarAlignment of frames to a reference, and names the default reference from select_subframes. It also states output artifacts, distinguishing it from integration or calibration tools. It does not explicitly differentiate from an 'align' sibling, but the phrasing is clear enough for an agent to infer the purpose.

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?

It provides context by referencing select_subframes as the default reference source, implying a typical pipeline position after frame selection. However, it does not explicitly state when to use this tool vs alternatives or give exclusion criteria, leaving the guidance partial.

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

remove_starsremove_starsA
Destructive

StarXTerminator / StarNet2 → starless view (in place) + stars view. Returns NOT_INSTALLED if neither exists (this rig: none installed). Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
linearNo
paramsNoExtra raw PixInsight process parameters (exact PJSR names)
unscreenNo
checkpointNoWrite an .xisf checkpoint before running (default true)
stars_imageNo

TDQS

A3.6/5.0
Behavior5/5

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

It discloses important behavioral traits beyond the destructiveHint annotation: the operation is 'in place', it writes/respects checkpoints ('Checkpoints first'), and it can return NOT_INSTALLED when dependencies are absent. This gives an agent critical operational expectations.

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?

Three short sentences deliver substantive information with no filler. The main behavior, dependency caveat, and checkpoint requirement are all front-loaded and each sentence earns its place.

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

Completeness2/5

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

For a tool with 6 parameters, no output schema, and low schema documentation coverage, this description is too sparse to be fully actionable. It omits parameter meanings, success return behavior, and prerequisites beyond the checkpoint hint.

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 33%, and the description does not compensate for the undocumented id, linear, unscreen, or stars_image parameters. It only indirectly hints at output behavior ('+ stars view') and checkpointing, leaving most parameter semantics unexplained.

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 operation: running StarXTerminator/StarNet2 to produce a starless view in place plus a stars view. It clearly identifies the tool's purpose and output, though it does not explicitly contrast with sibling tools like combine_stars or star_mask.

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?

It provides some usage context: 'Checkpoints first' and a NOT_INSTALLED caveat for this rig. However, it does not explicitly state when to use this tool over alternatives or when not to use it.

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

render_previewrender_previewA
Read-only

LOOK AT THE IMAGE. Renders a JPEG preview of a view (auto-stretched by default for linear data) and returns it inline as an image plus its file path. Never modifies the view. stretch: 'stf' (AutoSTF), 'hard' (aggressive), 'none' (as-is, for already stretched images).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
rectNoOptional sub-region
linkedNoLinked RGB stretch (default true; false shows colour balance issues)
stretchNo
max_edgeNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces this with 'Never modifies the view'. It also adds useful behavioral context not in annotations: auto-stretch behavior by default, the stretch mode semantics, and the inline image plus file-path return. No contradiction exists.

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

Conciseness4/5

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

The description is compact and information-dense, front-loading the core purpose before parameter details. The all-caps 'LOOK AT THE IMAGE.' is slightly noisy but does not seriously hurt clarity.

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

Completeness3/5

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

Given a moderate parameter count and no output schema, the description covers the key behavioral contract and return format, but it leaves parameter semantics for id and max_edge to inference. It is usable, though not fully self-sufficient for an agent unfamiliar with the domain.

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 only 40%, but the description compensates partially by explaining the stretch enum values and default behavior. However, id and max_edge remain under-documented, and the description does not clarify how rect or linked behave beyond their schema descriptions. This is partial compensation, not complete.

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 states a specific action ('Renders a JPEG preview of a view'), the return format ('inline as an image plus its file path'), and explicitly notes it never modifies the view. This clearly distinguishes it from processing or cropping tools without needing to open 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 Guidelines3/5

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

The description implies usage for visually inspecting a view, especially with auto-stretched linear data, but does not explicitly contrast it with sibling tools like crop_preview or compare_previews. There is no when-not-to-use guidance, leaving some routing to inference.

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

resampleresampleB
Destructive

Resize by factor (integer downsample uses IntegerResample average) or to width×height. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
widthNo
factorNo
heightNo
checkpointNoWrite an .xisf checkpoint before running (default true)
interpolationNo

TDQS

B3.4/5.0
Behavior3/5

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

With destructiveHint=true and readOnlyHint=false, the annotation already flags mutation; the description adds the IntegerResample average behavior for integer downsampling and a checkpoint warning. However, it does not disclose what is modified (e.g., whether the original image is replaced) or the effect of supplying both factor and dimensions.

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

Conciseness5/5

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

Two short sentences carry the central modes, algorithm, and a safety directive with no filler. The information is front-loaded and every phrase earns its place.

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

Completeness2/5

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

For a destructive 6-parameter tool with no output schema and low schema coverage, this description is too thin. It omits the meaning of the required id parameter, valid interpolation options, and outcome/return behavior, so an agent would still need to guess important invocation details.

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 only 17%, so the description must compensate. It does clarify the relationship among factor, width, and height and gives an algorithm detail for integer factors, but it leaves id and interpolation completely unexplained and does not specify valid interpolation values or the interplay of width and height.

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 operation with a specific verb ('Resize') and defines two concrete modes — by factor or to width×height — plus the algorithm used for integer downsampling. The resource is not explicitly stated as 'image', but the tool name and the imaging-tool sibling context make it unambiguous.

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?

'Checkpoints first' provides a clear prerequisite for using this destructive tool, but the description does not state when to choose resample over alternatives or what conditions select factor vs width/height mode. Usage context is implied rather than explicit.

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

restore_checkpointrestore_checkpointA
Destructive

Roll back: load a checkpoint .xisf into the view in place (same id) or as a new window if the id is not open.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
pathYes

TDQS

A3.5/5.0
Behavior4/5

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

The description adds meaningful behavioral detail beyond the destructiveHint annotation: it explains that the checkpoint is loaded into the existing view in place when the id is open, or into a new window otherwise. It does not explicitly warn about losing unsaved changes, but the in-place wording plus the annotation cover that risk.

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 conveys the action, resource, and the two key behavioral branches. Every word earns its place, with no redundant or vague filler.

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

Completeness3/5

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

The description is adequate for understanding the core behavior and the conditional window behavior, and annotations cover the destructive nature. However, with no output schema and no explicit parameter documentation, the agent still lacks full clarity on how to supply 'path' and 'id' correctly.

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%, and the description never explicitly defines the 'path' or 'id' parameters. It indirectly suggests path is a .xisf checkpoint file and id is a window identifier, but it leaves the required/optional relationship and parameter meanings mostly to inference.

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

Purpose4/5

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

The description names a specific action ('roll back'), a specific resource ('checkpoint .xisf'), and the intended destination ('the view'). It also distinguishes in-place replacement from opening a new window, making the tool's purpose clear beyond its name.

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 'Roll back' prefix gives useful when-to-use context, but the description does not explicitly contrast this tool with siblings like undo, checkpoint, list_checkpoints, or open_image. The agent must infer when to choose restore_checkpoint over those alternatives.

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

saturationsaturationA
Destructive

ColorSaturation boost (amount -1..1, default 0.3) or explicit hue curve. Non-linear stage. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
curveNo
amountNo
checkpointNoWrite an .xisf checkpoint before running (default true)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, and the description adds useful behavioral context by stating 'Non-linear stage' and emphasizing 'Checkpoints first', which signals that the operation mutates pixel data and should be preceded by a checkpoint. It does not contradict the annotations.

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

Conciseness5/5

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

The description is extremely compact—two short sentences with no filler. It front-loads the core purpose and each remaining clause ('Non-linear stage', 'Checkpoints first') adds distinct operational information.

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

Completeness3/5

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

The description gives enough to start using the tool cautiously, especially with the checkpoint warning and mode hints. But it omits the meaning of the required id parameter, does not explain curve pair semantics, and offers no routing to alternatives, which leaves meaningful gaps for a four-parameter destructive 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?

With schema description coverage at only 25%, the description does useful work by defining amount's range and default (-1..1, 0.3) and characterizing curve as a hue curve. However, it leaves the required id parameter undocumented and does not clarify how amount and curve interact when both are provided.

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 the operation as a color saturation boost with two modes (amount or explicit hue curve), so an agent can infer what the tool does. However, it uses a noun phrase rather than a specific verb like 'apply' or 'adjust', and it does not explicitly distinguish itself from sibling tools such as curves or color_calibrate.

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 'Non-linear stage' gives clear workflow context for when the tool is appropriate, and 'Checkpoints first' states a prerequisite. It does not name alternatives or list exclusions, but the usage context is explicit enough to guide selection.

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

save_imagesave_imageA

Save a view to disk. Format by extension: .xisf (lossless, recommended), .fit, .tif, .png, .jpg. bit_depth 8/16 for tif/png. Output must be under the workdir (never in source folders).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
pathNoDefault: <session>/work/<id>.xisf
formatNo
bit_depthNo
overwriteNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate a write operation (readOnlyHint=false). The description adds useful behavioral context: the output path restriction and the format/bit_depth rules. It does not disclose overwrite behavior or what happens if the file exists without overwrite=true, which is a significant gap for a save 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?

The description is compact and front-loaded with the primary action. Each sentence provides specific, non-redundant information: the action, format rules, bit_depth restriction, and a critical path constraint. No filler or repetition.

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 5-parameter tool with no output schema, the description covers some important behaviors (format, bit_depth, output location) but leaves gaps: the meaning of id, overwrite semantics, and what happens when format is omitted or conflicts with the extension. It is adequately informative but not fully complete.

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

Parameters3/5

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

Schema description coverage is only 20% (only path has a description). The description adds meaning for format (extension-based) and bit_depth (8/16 for tif/png), partially compensating for the schema gap. However, it does not explain the id parameter or overwrite semantics, leaving key parameters undocumented.

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: 'Save a view to disk.' This clearly distinguishes it from related tools like save_project (which saves a project) and open_image (which loads). It is not a vague or tautological description.

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

Usage Guidelines3/5

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

The description gives practical guidance on format selection and a path constraint ('Output must be under the workdir, never in source folders'). However, it does not explicitly state when to use this tool instead of alternatives like save_project or checkpoint, nor does it provide exclusion conditions.

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

save_projectsave_projectA

Save the processing 'project': the view as XISF (PixInsight embeds the processing history), companion views (masks/stars), every checkpoint reference and the tool history as manifest.json under /project/. PixInsight .xosm projects cannot be written by scripts.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
also_viewsNo

TDQS

A3.9/5.0
Behavior4/5

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

The description discloses meaningful behavior beyond the bare annotations: it writes a view as XISF with embedded processing history, saves companion views, checkpoint references, and tool history as manifest.json under a specified directory, and explains why .xosm cannot be used. It does not mention overwrite behavior or whether existing project files are replaced, but the artifact and location details are substantial.

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

Conciseness5/5

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

The description is two dense sentences with no filler. The first sentence front-loads the tool's purpose and artifact list, and the second provides a critical limitation. Every clause adds information.

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 three parameters, zero schema descriptions, no output schema, and no supplemental annotations, the description does not fully explain required inputs or expected behavior. It describes what is saved and where, but omits parameter semantics and what happens on success or failure, making it insufficient 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 0%, so the description must compensate for the undocumented parameters. It hints that 'companion views (masks/stars)' may relate to also_views, but it does not explain the meaning of id or name, nor how they affect the save location or manifest content. This leaves an agent unable to confidently construct correct parameters.

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

Purpose5/5

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

The description uses a specific verb ('Save') with a clear resource ('the processing project') and enumerates the exact artifacts: XISF view, companion views, checkpoint references, and manifest.json. It is easily distinguished from sibling tools like save_image or checkpoint because it describes a project-level save operation.

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

Usage Guidelines4/5

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

The description clearly conveys that this tool persists the full processing project state, and explicitly notes that .xosm projects cannot be written by scripts. However, it does not explicitly state when to prefer this over save_image or checkpoint, or when not to use it, though the project-level scope provides strong implied guidance.

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

scan_framesscan_framesA
Read-only

Inventory a folder tree of FITS files WITHOUT PixInsight: parses headers, classifies light/dark/flat/bias (IMAGETYP → ASIAIR path → filename), groups by camera/gain/offset/exposure/temperature/target, reports counts and total integration. Result is cached in the session for match_calibration. The scanned root becomes write-protected.

ParametersJSON Schema
NameRequiredDescriptionDefault
rootNoFolder to scan; default: config dataRoot
recursiveNo
include_framesNoInclude per-file records (large); default false

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, destructiveHint=false, openWorldHint=false), the description discloses a significant side effect: 'The scanned root becomes write-protected.' It also reveals caching behavior and the fact that PixInsight is not invoked. These are exactly the kind of behavioral details that annotations do not provide, and no contradiction exists.

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

Conciseness5/5

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

Three tightly packed sentences deliver the purpose, key processing logic, caching, and side effect with zero filler. The most important information is front-loaded, and every clause adds value.

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

Completeness4/5

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

Given the complexity of the tool (folder traversal, classification, caching, write-protection) and the absence of an output schema, the description covers the critical behaviors well. It explains what is reported, how results are cached, and that the root becomes write-protected. However, it does not describe how to retrieve the cached result or what the output structure looks like, leaving a small completeness gap.

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 67%: root and include_frames have descriptions, while recursive does not. The description adds context about the scanning/classification process but does not clarify the recursive parameter or explicitly map include_frames to the reported output. It gives general meaning to the inventory operation but fails to fully compensate for the undocumented recursive parameter.

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

Purpose5/5

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

The description uses the specific verb 'inventory' with a clearly defined resource ('folder tree of FITS files'), then enumerates the exact processing steps (header parsing, classification, grouping, reporting). It explicitly distinguishes itself from PixInsight-based workflows and from sibling tools like fits_header by noting it operates on an entire folder tree and caches results for match_calibration. This leaves no ambiguity about what the tool does.

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

Usage Guidelines4/5

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

The description provides clear context by stating 'Result is cached in the session for match_calibration', which tells an agent to run this before using match_calibration. The 'WITHOUT PixInsight' phrase also hints that it is an alternative to PI-based processing. However, it does not explicitly name sibling alternatives or specify when not to use this tool (e.g., for single-file inspection use fits_header).

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

scnrscnrB
Destructive

SCNR green (or other colour) cast removal, non-linear stage typically. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
colorNo
amountNo
checkpointNoWrite an .xisf checkpoint before running (default true)
protectionNo
preserve_lightnessNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, and the description adds an actionable warning to checkpoint first before running. It also adds the non-linear stage context, which helps the agent understand expected usage without contradicting the annotations.

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

Conciseness5/5

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

The description is two short sentences, each earning its place by communicating either the core purpose or an essential usage warning. It is front-loaded, free of filler, and appropriately sized for a focused process tool.

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

Completeness2/5

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

For a destructive six-parameter image operation with no output schema, this description is incomplete. It omits most parameter semantics, does not explain return behavior, and fails to provide comparison guidance against sibling color-processing tools.

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 for the many undocumented parameters. It only hints at the color parameter by saying 'green (or other colour)' and provides no explanation of amount, protection, or preserve_lightness.

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

Purpose4/5

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

The description states the tool performs SCNR color-cast removal, specifically for green or other colors, and identifies the typical non-linear workflow stage. It is reasonably clear, but it does not explicitly distinguish itself from sibling tools like color_calibrate or background_neutralize.

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?

It gives some contextual guidance by saying 'non-linear stage typically' and 'Checkpoints first,' which implies when and with what precaution to use it. However, it does not name alternatives or define when to choose this tool over similar color-adjustment siblings.

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

select_subframesselect_subframesA

Approve/reject measured frames with explicit limits (max_fwhm, max_eccentricity, min_stars, min_snr_weight) or relative rules (fwhm_factor × median). Returns approved/rejected with reasons and the spread, then writes SSWEIGHT into approved frames (output to /work/weighted). Be reluctant to reject with < 20 frames.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoOnly report, do not write weighted files
out_dirNo
max_fwhmNo
min_starsNo
fwhm_factorNoReject FWHM > factor × median (default 1.25 if no max_fwhm)
min_snr_weightNo
reject_indexesNoForce-reject by index
max_eccentricityNodefault 0.6

TDQS

A4.6/5.0
Behavior5/5

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

The description openly discloses that the tool writes SSWEIGHT into approved frames and specifies the output directory, which goes beyond the annotations. It also states what is returned (approved/rejected with reasons and the spread), which is especially valuable because no output schema is present.

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?

Three sentences, each carrying substantive information: what the tool does, what it returns and writes, and a caution for edge cases. No filler or redundancy.

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

Completeness4/5

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

The description conveys the input context, filtering logic, return values, side effects, and output location, which is strong given no output schema. It could more explicitly state that this step should run after measure_subframes and before integration, but 'measured frames' strongly implies that workflow position.

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?

With 50% schema coverage, the description compensates by grouping the explicit limit parameters (max_fwhm, max_eccentricity, min_stars, min_snr_weight) and explaining the relative rule as fwhm_factor × median. The schema already documents dry_run, reject_indexes, and defaults, so combined understanding of the parameters is solid.

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 operation (Approve/reject measured frames) and clearly distinguishes it from measuring or integrating tools by focusing on selection with quality limits. It lists the exact rule mechanisms, leaving no ambiguity about what the tool does.

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 'measured frames' establishes the prerequisite that measurement must already have happened, and the caution about being reluctant to reject with fewer than 20 frames is practical usage guidance. It does not explicitly name alternatives or when-not conditions, but the context is clear enough.

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

set_screen_stretchset_screen_stretchA

Apply an AutoSTF to the on-screen display of a view (non-destructive; for a human watching the PixInsight window).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
modeNo
linkedNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already include destructiveHint=false and readOnlyHint=false, and the description adds the non-destructive display-only behavior, which clarifies that pixel data is not altered. This is useful context beyond the annotations, though it does not detail side effects like resetting or linked-channel behavior.

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

Conciseness5/5

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

One concise sentence that is front-loaded with the action and target. The parenthetical clarifiers earn their place and add meaningful distinction without padding.

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?

The core purpose is clear and a minimal call with just 'id' would likely work, but the optional parameters are semantically opaque and there is no output schema. Given zero schema coverageainer, the description leaves too much unexplained for full tool usage.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no explanation of the 'id', 'mode', or 'linked' parameters. An agent cannot infer what 'mode' values like 'hard' or 'none' mean, nor what 'linked' controls, so the description fails to compensate for the empty schema.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Apply an AutoSTF to the on-screen display of a view.' It clearly differentiates from the sibling 'stretch' tool by stressing 'on-screen display' and 'non-destructive,' so an agent can tell this is a display-only operation, not a pixel-level stretch.

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 'for a human watching the PixInsight window' gives clear context for when this tool is appropriate versus a destructive stretch. It does not explicitly name alternative tools or say when not to use it, so it stops short of a 5.

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

sharpensharpenA
Destructive

UnsharpMask (luminance, deringing) for the non-linear stage; gentle defaults sigma 2 amount 0.6. Checkpoints first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
sigmaNo
amountNo
checkpointNoWrite an .xisf checkpoint before running (default true)
deringing_darkNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description need not restate that. It adds useful behavioral context by recommending a checkpoint before running, and by noting 'gentle defaults sigma 2 amount 0.6', which hints at the operation's impact. This goes beyond what annotations provide, but it does not detail side effects such as whether the image is replaced in place or if parameters are clamped.

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

Conciseness5/5

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

The description is extremely concise, two sentences, with no filler. The core operation is front-loaded, followed by defaults and a checkpoint reminder. Every word contributes value, making it an exemplar of efficient tool documentation.

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 relatively simple operation, the description covers the key points: operation type, stage, defaults, and a safety recommendation. However, it does not mention what the tool applies to (e.g., the active image/window), any return value behavior, or how parameters interact (e.g., whether amount is a multiplier percentage). Given the lack of an output schema and the moderate parameter count, a bit more context would improve completeness.

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

Parameters4/5

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

Schema coverage is low (20%) with only 'checkpoint' described. The description compensates by giving concrete defaults for sigma (2) and amount (0.6), and by stating the operation is on luminance, clarifying the context for all parameters. It does not explain deringing_dark specifically, but the overall description adds meaningful parameter context beyond the schema.

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

Purpose5/5

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

The description clearly states the tool applies an UnsharpMask on the luminance channel with deringing, and specifies it is for the non-linear stage. The verb ('UnsharpMask') and resource (luminance) are specific, and the mention of 'non-linear stage' differentiates it from linear-stage operations like stretch or curves.

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

Usage Guidelines4/5

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

The description provides context by specifying 'for the non-linear stage', which helps agents decide when to invoke this tool relative to linear adjustments. It also advises 'Checkpoints first', implying a recommended prerequisite step. However, it does not explicitly name alternative tools to avoid or conditions that would make this tool inappropriate, so it falls short of a 5.

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

star_maskstar_maskB

StarMask process → new mask view (mask_id). Use with apply_mask to protect stars during stretches/sharpening.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
layersNo
paramsNo
mask_idNo
shadowsNo
midtonesNo
smoothnessNo
large_growthNo
small_growthNo
noise_thresholdNo

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already indicate it is not read-only and not destructive, so the description needs to clarify side effects. 'New mask view (mask_id)' tells the agent that a new resource is created, but it does not disclose state changes, dependencies on existing images, or what happens to existing masks. This is thin for a mutating operation.

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

Conciseness5/5

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

Two short sentences, no filler, and the primary outcome is front-loaded. Every word earns its place.

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

Completeness2/5

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

The description covers the high-level purpose and use case but omits nearly all parameter semantics and output details. For a tool with a nested params object and nine undocumented parameters, this is insufficient for an agent to invoke it correctly with meaningful settings.

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

Parameters1/5

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

With 10 parameters and 0% schema description coverage, the description carries the burden of explaining parameters. It only mentions mask_id, and the other nine parameters such as shadows, midtones, smoothness, and noise_threshold are completely unexplained. This is a major 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 states the tool produces a new mask view with a mask_id, and identifies it as StarMask. This is specific enough to distinguish it from siblings like apply_mask or mask_info, though 'StarMask process' is slightly noun-like rather than a strong verb phrase.

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

Usage Guidelines4/5

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

The description says to use this tool with apply_mask to protect stars during stretches or sharpening. This gives a clear context for when it is appropriate, but it does not explicitly mention when not to use it or name alternatives beyond apply_mask.

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

stretchstretchA
Destructive

Linear → non-linear. method: 'sts' (AutoSTF made permanent; target_background 0.25 default, shadows_clip -2.8), 'arcsinh' (colour-preserving, stretch factor), 'masked' (MaskedStretch, star-friendly), 'mas' (MultiscaleAdaptiveStretch), 'ht' (manual shadows/midtones/highlights), 'ghs' if installed. Checkpoints first. Check clipped-black % afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
hardNo
linkedNo
methodNo
paramsNoExtra raw PixInsight process parameters (exact PJSR names)
shadowsNo
stretchNoarcsinh factor
midtonesNo
checkpointNoWrite an .xisf checkpoint before running (default true)
highlightsNo
iterationsNo
black_pointNo
shadows_clipNo
aggressivenessNo
target_backgroundNo

TDQS

A3.7/5.0
Behavior4/5

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

The description adds behavior beyond the destructiveHint annotation by stating that checkpoints are created before running and that clipped-black percentage should be checked afterward. It also discloses useful defaults and method characteristics such as 'colour-preserving', 'star-friendly', and 'if installed', which annotations alone would not provide.

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 dense and efficient, front-loading the purpose and then moving to method-specific details and workflow reminders. It contains no filler, though its telegraphic style and heavy abbreviations require domain familiarity.

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 15 parameters, destructive behavior, and no output schema, the description is too sparse to fully support correct invocation. The method-specific notes are helpful, but the lack of explanation for core parameters like id, hard, and linked leaves an agent uncertain about required setup.

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 only 20%, so the description carries added burden, and it does help by explaining the method enum and linking parameters such as stretch, shadows/midtones/highlights, target_background, and shadows_clip to specific methods. However, many parameters including id, hard, linked, iterations, black_point, and aggressiveness remain unexplained, leaving a significant semantic 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 opening 'Linear → non-linear' states the core purpose clearly, and the list of stretch methods (sts, arcsinh, masked, mas, ht, ghs) reinforces that this is a stretch tool. It does not explicitly differentiate itself from sibling tools like curves or hdr_compress, so it misses the top score.

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?

'Linear → non-linear' provides a clear precondition for when to use this tool, and the hints 'Checkpoints first' and 'Check clipped-black % afterwards' give practical invocation and verification guidance. It does not name alternative tools or explicitly state when not to use it, so it stops short of full exclusion guidance.

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

undoundoA
Destructive

Undo the last N history steps of a view (PixInsight undo stack).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
stepsNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known. The description adds that it affects the undo stack of a view, which is useful context, but it doesn't disclose side effects like whether undone steps are permanently lost or whether the view must be active. No contradiction with annotations.

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

Conciseness5/5

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

A single, compact sentence that front-loads the action and scope. Every word earns its place; no filler or repetition.

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 destructive tool with no output schema and 0% parameter coverage, the description is minimal. It explains the core action and the 'steps' parameter, but omits what 'id' refers to, what happens after undo, and any confirmation or error behavior. It is adequate for a simple operation but not fully complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains the 'steps' parameter conceptually ('last N history steps') but does not describe the 'id' parameter or its format. The description adds some meaning beyond the bare schema but leaves the key identifier parameter undocumented.

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 ('Undo') and resource ('last N history steps of a view'), and clarifies it operates on the PixInsight undo stack. It is clear about what the tool does, though it doesn't explicitly differentiate from siblings; the sibling list contains no other undo-like tool, so the risk of confusion is low.

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

Usage Guidelines3/5

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

The description implies usage context (undoing history steps in a view) but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. It is adequate but leaves the agent to infer when this is appropriate.

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

wbpp_runwbpp_runA

Cross-check: run PixInsight's own WeightedBatchPreprocessing (WBPP) in a separate PixInsight instance on a light group + calibration groups, fully automated. Slow (whole pipeline) but independent — compare its master light to ours with image_statistics/measure_stars. Extra WBPP parameters can be passed as params using WBPP automation names (e.g. generateRejectionMaps, darkExposureTolerance, smartNamingOverride).

ParametersJSON Schema
NameRequiredDescriptionDefault
dirsNoDirectories to add (all frame types inside)
filesNo
paramsNo
output_dirNo
light_group_idNo
calibration_group_idsNo

TDQS

A3.9/5.0
Behavior3/5

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

The description discloses useful runtime behavior: a separate PixInsight instance, fully automated execution, and slowness due to the whole pipeline. However, annotations are all false/neutral and carry no safety or side-effect information, and the description does not say what files it writes, whether it is asynchronous, or what happens to the current session, so some burden remains unmet.

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?

Three sentences pack purpose, tradeoff, and parameter guidance with no filler. Key behavioral cues are front-loaded before the parameter examples.

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

Completeness3/5

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

For a 6-parameter, no-output-schema tool with neutral annotations, the description covers what the tool does and roughly how to invoke it, but is silent on return value, async vs blocking behavior, status checking, and side effects on disk. An agent would have to infer these from sibling wbpp_status/job_* tools.

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 only 17%, so the description must compensate. It explains that any WBPP automation parameters can be passed via params and gives three concrete examples, and it maps light_group_id/calibration_group_ids by saying calibration groups are used. It does not explain dirs, files, or output_dir, so compensation is partial.

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+resource: run PixInsight's WeightedBatchPreprocessing in a separate instance on light+calibration groups. It also frames itself as a cross-check and says to compare outputs with image_statistics/measure_stars, so an agent can distinguish it from the many build_master*/pipeline_run siblings.

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?

Opens with 'Cross-check' and says the purpose is to independently compare its master light to ours, which is a clear usage signal for validation rather than production preprocessing. It notes the tool is slow but independent, giving a cost/benefit cue. It does not explicitly say when not to use it or name sibling alternatives, but the context is sufficient.

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

wbpp_statuswbpp_statusA
Read-only

Status of a wbpp_run (running/ok/error, log tail, master light paths).

ParametersJSON Schema
NameRequiredDescriptionDefault
wbpp_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds useful behavioral detail by enumerating the returned status states and including log tail and master light paths. There is no contradiction with annotations.

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

Conciseness5/5

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

A single, dense sentence with the core purpose front-loaded and the output specifics in a parenthetical. Every word earns its place with no filler.

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

Completeness4/5

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

For a simple one-parameter status tool with safety annotations and no output schema, the description adequately conveys what result the agent can expect. It lacks explicit guidance on invalid IDs or polling behavior, but these are minor for this tool's complexity.

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

Parameters3/5

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

With schema description coverage at 0%, the description carries the burden for explaining wbpp_id. The phrase 'Status of a wbpp_run' implies wbpp_id identifies the run, and the schema marks it required string, but the description does not explicitly say it is the ID returned from wbpp_run. Partial compensation, not full.

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 states a specific resource ('a wbpp_run') and the operation (status), with concrete output components: running/ok/error, log tail, and master light paths. This clearly distinguishes wbpp_status from sibling status tools such as job_status and pi_status.

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 intended context is clear: this is the tool for checking the status of a wbpp_run, which pairs naturally with the sibling wbpp_run tool. It does not explicitly name alternatives or exclusions, but the resource-specific wording makes when to use it unambiguous.

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. 92 tool updatesv0.1.0
    • First observedannotate
    • First observedapply_mask
    • First observedapply_process
    • First observedauto_crop
    • First observedbackground_neutralize
    • First observedbinarize
    • First observedblink_frames
    • First observedblur
    • First observedbuild_master_bias
    • First observedbuild_master_dark
    • First observedbuild_master_flat
    • First observedcalibrate_lights
    • First observedcheckpoint
    • First observedcleanup_working_files
    • First observedclose_window
    • First observedcolor_calibrate
    • First observedcombine_stars
    • First observedcompare_previews
    • First observedconvert_to_gray
    • First observedcosmetic_correction
    • First observedcrop
    • First observedcrop_preview
    • First observedcurves
    • First observeddebayer
    • First observeddeconvolve
    • First observeddenoise
    • First observeddrizzle_integrate
    • First observedduplicate_window
    • First observedexclude_frames
    • First observedextract_channels
    • First observedfast_integrate
    • First observedfits_header
    • First observedgradient_correction
    • First observedgroup_files
    • First observedhdr_compress
    • First observedhistogram
    • First observedimage_keywords
    • First observedimage_statistics
    • First observedintegrate
    • First observedinvert
    • First observedjob_cancel
    • First observedjob_log
    • First observedjob_status
    • First observedjob_wait
    • First observedlinear_fit
    • First observedlist_checkpoints
    • First observedlist_jobs
    • First observedlist_masters
    • First observedlist_windows
    • First observedlocal_contrast
    • First observedlocal_normalization
    • First observedmask_info
    • First observedmatch_calibration
    • First observedmeasure_stars
    • First observedmeasure_subframes
    • First observedmorphology
    • First observedopen_image
    • First observedpi_capabilities
    • First observedpi_console_log
    • First observedpi_end_session
    • First observedpi_list_sessions
    • First observedpi_restart
    • First observedpi_run_pjsr
    • First observedpi_start_session
    • First observedpi_status
    • First observedpi_stop
    • First observedpi_use_session
    • First observedpipeline_run
    • First observedpipeline_status
    • First observedpixel_math
    • First observedpixelmath_mask
    • First observedplate_solve
    • First observedprocess_params
    • First observedrange_mask
    • First observedregister
    • First observedremove_stars
    • First observedrender_preview
    • First observedresample
    • First observedrestore_checkpoint
    • First observedsaturation
    • First observedsave_image
    • First observedsave_project
    • First observedscan_frames
    • First observedscnr
    • First observedselect_subframes
    • First observedset_screen_stretch
    • First observedsharpen
    • First observedstar_mask
    • First observedstretch
    • First observedundo
    • First observedwbpp_run
    • First observedwbpp_status

TDQS

B3.4/5.0

Scored across 92 tools

Disambiguation5/5

Every tool targets a distinct PixInsight operation or query, with detailed descriptions that eliminate overlap between similar functions (e.g., the various integration methods). Even closely related tools like pi_console_log and job_log are clearly delineated by their scope. No two tools appear to do the same thing.

Naming Consistency5/5

Tool names follow a consistent verb_noun snake_case pattern throughout (pi_start_session, build_master_dark, render_preview, apply_process). Prefixes like pi_, job_, and list_ are used predictably to group related operations. There are no mixed conventions or cryptic abbreviations.

Tool Count1/5

At 92 tools, this is far beyond the 50+ threshold for an extreme mismatch, making it overwhelming for agents to navigate and select from. While each tool has a specific role, the sheer number is not 'well-scoped' and would likely strain context windows and decision-making. A more modular server could group these into smaller purpose-built servers.

Completeness5/5

The tool surface covers the entire astrophotography processing workflow: session/file management, calibration, stacking, integration, visual previews, masks, stretching, color calibration, and even fallback escape hatches. No obvious gaps exist for the stated purpose of controlling PixInsight. It even includes cross-check and cleanup tools, making it unusually complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    A protocol server enabling AI agents to control astrophotography equipment through the N.I.N.A. (Nighttime Imaging 'N' Astronomy) software, allowing for natural language command processing of cameras, mounts, focusers, and other astronomy equipment.
    12
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to control Fiji/ImageJ for microscopy image analysis through natural language commands, supporting operations like image opening, filtering, particle analysis, and automated workflows.
    19
    23 PyPI
    2
    BSD 3-Clause
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to interact with PixInsight's image processing capabilities through a local HTTP/SSE server, allowing listing processes, invoking them, viewing images, and more.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to control GIMP 2.10 through its Script-Fu server, providing access to the entire GIMP procedure database with a vision feedback loop for iterative editing.
    6
    AGPL 3.0