pixinsight
This server is an MCP connector exposing ~80 PixInsight operations as tools, letting an AI agent control PixInsight for astronomical image processing, measurement, and analysis.
Image management: open, close, list, rename, clone, restore, crop, export (XISF, FITS, TIFF, PNG, JPEG) images and views.
Astrometry & calibration: plate solve (offline Gaia), copy astrometric solution, run SPCC, SPCF, MGC with filter/QE lookup.
Core processing: background extraction (ABE, GradientCorrection, BackgroundNeutralization), noise reduction (NXT, BXT, SXT), stretching (auto-stretch, robust median stretch, star stretch), curves, histogram equalization, HDRMT, LHE, deconvolution, sharpening, masking, channel combination, alignment, narrowband blending, synthetic luminance, star/color tools.
Measurement & analysis: star statistics, sharpness, ringing, clipping, uniformity, tonal presence, saturation, detail, highlight texture, etc., all returning numeric metrics.
Masking: create luminance, zone, adaptive zone masks; apply/remove/close masks.
PJSR & generic process execution: run arbitrary PJSR scripts/files, PixelMath expressions, and any PixInsight process by name.
Workspace & introspection: scan workspace for files, manage workspace folder, list processes, describe processes, inspect installation paths, list packs.
Session control: resume after pause, manage previews.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pixinsightOpen the latest FITS image and run background neutralization and histogram stretch."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PixInsight Connector
An MCP connector that lets any AI agent operate PixInsight: about 80 PixInsight operations as tools, for chat sessions and the skills that guide them. New here? Start with the Quick start.
Community project, not affiliated with or endorsed by Pleiades Astrophoto. PixInsight® is a registered trademark of Pleiades Astrophoto S.L.
The principle: a toolbox, not a pipeline
The connector knows how to operate PixInsight, never what makes a good picture. No pipeline, no ordering, no recommended values, no verdicts: every tool takes the values that shape the image as inputs, and every measurement returns numbers. The knowledge (which tools, in what order, with which values, what counts as good enough) lives in skills: markdown in your own repositories, public or private.
%%{init: {'theme': 'base', 'flowchart': {'wrappingWidth': 400, 'curve': 'basis', 'padding': 18}, 'themeVariables': {'fontFamily': "-apple-system, BlinkMacSystemFont, 'Segoe UI', Inter, Helvetica, Arial, sans-serif", 'lineColor': '#94a3b8', 'textColor': '#334155', 'edgeLabelBackground': '#e2e8f0'}}}%%
flowchart TB
classDef know fill:#0f766e,stroke:#115e59,color:#f0fdfa,stroke-width:1px,rx:12,ry:12
classDef harness fill:#475569,stroke:#334155,color:#f8fafc,stroke-width:1px,rx:12,ry:12
classDef tool fill:#1e293b,stroke:#64748b,color:#f8fafc,stroke-width:1px,rx:12,ry:12
classDef app fill:#e2e8f0,stroke:#94a3b8,color:#0f172a,stroke-width:1px
You(["You, in a chat session"]):::know
Skills("<b>The knowledge · yours</b><br/>your skills: order, values, quality gates<br/>kept in your own repositories"):::know
Harness("<b>Any MCP agent harness</b><br/>Claude Code · Codex · Cursor · Gemini CLI · …"):::harness
Tools("<b>The toolbox · this connector</b><br/>~80 PixInsight operations as MCP tools<br/>measurements return numbers, never verdicts"):::tool
Bridge("<b>File bridge + watcher script</b><br/>starts PixInsight on the first call"):::tool
PI(["PixInsight 1.9.5+"]):::app
You --> Harness
Skills -. guides .-> Harness
Harness -- MCP tool calls --> Tools
Tools --> Bridge
Bridge <--> PI
linkStyle default stroke:#8b949e,stroke-width:1.5pxRelated MCP server: toolbridge-mcp-server
Install
Needs Node 22+ and PixInsight 1.9.5+. The same three steps work whether you or your agent runs them.
1. Install the connector from npm:
npm install -g pixinsight-connector2. Register it with your agent harness as the MCP server pixinsight. Claude Code:
claude mcp add -s user pixinsight -- pixinsight-connectorAny harness configured with an mcpServers JSON file (Cursor, Windsurf, Gemini CLI, Claude Desktop, Cline, Kiro):
{ "mcpServers": { "pixinsight": { "command": "pixinsight-connector" } } }Codex, OpenCode, VS Code and Zed use other shapes; each one, and where its file lives: docs/setup.md.
3. Check the machine:
pixinsight-connector doctorPixInsight and its watcher script start on the first tool call; there is nothing else to launch. Upgrade with
npm install -g pixinsight-connector@latest. Without installing, register npx -y pixinsight-connector as the
command instead (npx fetches it from npm, so the first start needs the network). From pixinsight-mcp 1.x: point
your pixinsight entry at pixinsight-connector (not a second server) and npm uninstall -g pixinsight-mcp.
Where files go
The tools work in a target folder: the one set_workspace names, else PIXINSIGHT_CONNECTOR_WORKSPACE, else the
folder the harness started in. The connector writes only <target>/agentic/ (scratch, the bridge, call logs) and
<target>/output/, never your home folder. Details and every environment variable: docs/setup.md.
Tools, packs and skills
Tools: 78, grouped as images, processes, channels, tone, detail, masks, stars, narrowband, astrometry, measurement, preview, PJSR execution, introspection and session. Full list: docs/tools.md.
Skills hold the technique. Companion skills (environment preflight, dataset intake, a basic LRGB flow): pixinsight-connector-skills. Have one that works? Add it to COMMUNITY.md.
Packs are ES modules that add or replace tools at startup, listed in
PIXINSIGHT_CONNECTOR_PACKS. A pack is arbitrary code running with your privileges; only packs you configure load. See CONTRIBUTING.md.Models: any with vision and reliable tool calling. Start with a Sonnet-class model (Claude Sonnet 5, GPT-6 Sol, Gemini 3.8 Flash), then try cheaper ones (GPT-6 Luna, GLM-5.3-Flash, DeepSeek V4.1 Flash): prices and the list are in docs/setup.md.
Contributing
A PixInsight capability with no tool yet is one module in src/tools/, no registry: CONTRIBUTING.md.
Humans and agents are both welcome; npm test needs no PixInsight.
Cross-platform
macOS, Windows and Linux are all first-class, for running this connector and for developing it. A change that works on one OS and breaks another is a bug, not a limitation.
No shell pipelines. No
ps,grep,awk,wc,dfor&&insrc/or in npm scripts. OS-specific behaviour goes behindsrc/platform.mjs(paths) orsrc/process-probe.mjs(process inspection), one implementation per OS.No POSIX path literals. Use
path.join. Use forward slashes only when handing a path to PixInsight, which accepts them everywhere.CI runs the full suite on Linux, macOS and Windows. Green on one is not green.
Degrade, never fail. If an OS cannot supply something optional — a memory reading, a process start time — carry on without it. Never report it as a crash.
Overrides always win:
PIXINSIGHT_BINfor the executable,PIXINSIGHT_DIRfor the install root.
Tests need no PixInsight and no astronomy software, so you can develop on any of the three.
Troubleshooting
Run pixinsight-connector doctor first. Common symptoms and fixes: docs/troubleshooting.md.
Credit and license
This project began as aescaffre/pixinsight-mcp by Alain Escaffre; parts of the original file bridge and watcher script remain. MIT licensed: see LICENSE.
Available Tools
90 toolsalign_filesA
Register image files onto a reference image file with StarAlignment, file to file (no views are opened). Targets run in batches of at most batch_size (20 at most), one StarAlignment execution per batch. Registered files (.xisf) go to output_dir, which must lie inside /output (a relative path is resolved there) or the state folder. matrix_only: StarAlignment in OutputMatrix mode, reporting the registration per target without keeping any image file; its output directory is a temporary folder under /agentic/scratch/align_files that is deleted afterwards, and any file written there is listed. Per target the result gives the outputData values StarAlignment reports (output file, star pair matches, errors, transformation elements, as this PixInsight names them). Runs without geometry confirmation dialogs.
| Name | Required | Description | Default |
|---|---|---|---|
| overwrite | No | Overwrite existing registered files (default false) | |
| batch_size | No | Targets per StarAlignment execution, 1 to 20 (default 20) | |
| output_dir | No | Folder for registered files: relative to <workspace>/output, or absolute inside <workspace>/output or the state folder. Not used with matrix_only | |
| matrix_only | No | Compute the registration only; keep no image files (default false) | |
| target_files | Yes | Absolute paths of the files to register | |
| interpolation | No | StarAlignment pixel interpolation; omitted, PixInsight's default | |
| output_postfix | No | Suffix of registered file names (default "_r") | |
| reference_file | Yes | Absolute path of the reference image file | |
| distortion_correction | No | StarAlignment distortion correction; omitted, PixInsight's default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses batching (one StarAlignment execution per batch, max 20), that files are written to output_dir, that matrix_only's temp folder under scratch is deleted afterwards, and that it runs without geometry confirmation dialogs. It stops short of stating required permissions or error handling, but side effects and write locations are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose before the mode and directory details. It is dense and somewhat run-on toward the end (matrix_only and result-format clauses are long), but every sentence carries distinct operational information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations and no output schema, it covers the essentials: where outputs land, the matrix_only deletion behavior, and what the per-target result contains (StarAlignment outputData values). Minor gaps remain around permissions and failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: output_dir must lie inside <workspace>/output or the state folder, registered names follow <name><output_postfix>.xisf, and batch_size caps StarAlignment executions rather than just being a number.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Register image files onto a reference image file with StarAlignment, file to file (no views are opened).' The 'file to file / no views are opened' phrasing implicitly distinguishes it from view-based siblings like align_to_reference, so an agent can route correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the matrix_only alternative mode and output_dir placement rules, which helps mode selection. However it never states when to pick align_files over siblings such as align_to_reference or reproject_to_reference, so cross-tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
align_to_referenceA
Align a target image to a reference image using StarAlignment. The target is replaced in place with the aligned version.
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | Target view ID (replaced with the aligned version) | |
| reference_id | Yes | Reference view ID (not modified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden. It explicitly discloses that the target is replaced in place, which is a critical side effect. It does not mention other behaviors like persistence or error conditions, but the core destructive action is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, and no filler. The side effect is stated immediately after the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a simple two-parameter mutation tool. It explains what happens to the target and that the reference is untouched (via schema), and no output schema exists. It could mention prerequisites like open images, but that is not essential given the schema descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the input schema (target_id, reference_id) with 100% coverage. The tool description adds no additional parameter semantics beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('align'), the resource ('target image to a reference image'), and the method ('StarAlignment'). No sibling tool performs alignment, so it is well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when the agent wants to geometrically align one view to another, but it does not explicitly state conditions or alternatives. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_maskA
Apply a mask to a target view. The mask protects areas where it is black (0) and allows processing where it is white (1). Use inverted=true to flip this.
| Name | Required | Description | Default |
|---|---|---|---|
| mask_id | Yes | Mask view ID | |
| inverted | No | Invert the mask (default false) | |
| target_id | Yes | Target view ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral disclosure burden. It does explain what the mask does to processing (protect black, allow white) and how inverted changes it, which is valuable. However, it does not disclose whether applying a mask replaces an existing mask, whether it is reversible, or what side effects occur on the target view.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The primary action and semantics are front-loaded, and the inverted guidance is a natural follow-up. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a simple masking operation: it explains what the mask does, how the target view is affected, and how to invert. It does not mention how this interacts with downstream processing tools, but the phrase 'allows processing where it is white' implies the intended workflow. Given no output schema and a simple parameter set, this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all three parameters with 100% coverage, so the baseline is 3. The description adds meaning by clarifying the mask value semantics (0=black protects, 1=white allows) and explicitly linking inverted=true to flipping this behavior, which goes beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: applying a mask to a target view, and it explains the mask's semantics (black protects, white allows processing). It does not explicitly name a sibling alternative like remove_mask, but the core action is unambiguous enough to distinguish it from create/remove/close mask tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to restrict processing on a view, but it gives no explicit when-to-use or when-not-to-use guidance. It mentions inverted=true, a parameter directive, but does not describe when to prefer this over related tools such as remove_mask or create_luminance_mask.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_stretchA
Stretch a view in place with PixInsight's auto-stretch (the ScreenTransferFunction Auto Stretch computation), applied as a HistogramTransformation. Per channel, sigma = 1.4826 × MAD (the median absolute deviation from the median). A channel whose median is below 0.5 gets shadows clipping c0 = median + shadows_clipping × sigma, clamped to [0,1] (0 when sigma is 0), and midtones balance m = MTF(target_bg, median − c0), where MTF(m, x) = (m − 1)·x / ((2m − 1)·x − m); a channel whose median is above 0.5 is treated as inverted: highlights clipping c1 = median − shadows_clipping × sigma (1 when sigma is 0) and m = MTF(c1 − median, target_bg). linked: one transform for R, G and B, with c0 (or c1) the mean over channels of the per-channel clipping points (a channel with sigma 0 adds 0, or 1 for c1) and the mean median in place of the median; the image is treated as inverted only when every channel median is above 0.5. The defaults of shadows_clipping, target_bg and linked are PixInsight's auto-stretch defaults. Fails, changing nothing, when the clipping point leaves no range for a midtones balance.
| Name | Required | Description | Default |
|---|---|---|---|
| linked | No | Colour images: true computes one transform for R, G and B; false computes one per channel. Ignored for mono images | |
| view_id | Yes | View ID to stretch | |
| target_bg | No | Target background level, strictly between 0 and 1 | |
| shadows_clipping | No | Clipping point relative to the median, in units of sigma = 1.4826 × MAD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly. It discloses the exact formula (sigma = 1.4826 × MAD), per-channel vs linked behavior, inversion handling, clamping behavior, defaults, and failure mode ('Fails, changing nothing, when the clipping point leaves no range'). This is exemplary behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and information-rich, with every sentence contributing algorithmic detail. It is front-loaded with the main action and then details the math. It is longer than ideal, but the complexity of the algorithm justifies the length. No wasted words, though the MTF formula could be seen as heavy for a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, no output schema, no annotations), the description is remarkably complete. It covers the algorithm, parameter semantics, edge cases (sigma 0, inverted channels, linked mode), defaults, and failure behavior. An agent has everything needed to invoke it correctly and predict outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds significant meaning beyond the schema: it explains how shadows_clipping and target_bg are used in the MTF formula, how linked affects the computation, and the exact role of each parameter. It doesn't explicitly restate each parameter's type/default, but the schema already covers that. The added algorithmic context elevates it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Stretch a view in place') and resource (PixInsight's auto-stretch via ScreenTransferFunction/HistogramTransformation), and distinguishes it from generic stretch tools by specifying the exact algorithm. It clearly identifies what the tool does and how it differs from siblings like robust_median_stretch or stretch_stars.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the algorithm and defaults, and the schema notes 'linked' is ignored for mono images. It does not explicitly state when to use this tool versus alternatives like robust_median_stretch or stretch_stars, but the detailed algorithm description implies its use case (PixInsight auto-stretch). Clear context is provided, but no explicit exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_jobA
Stop a job started by run_pjsr or run_pjsr_file with async. A job PixInsight has not started yet is removed and never runs. A running job is stopped at its next processEvents() call, where an error with MCP_CANCELLED ends the script; a native process call (a single long process, a file save) cannot be interrupted, so the stop takes effect after it returns, and what the script already changed stays changed. Without job_id: the running job. job_status reports the outcome.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | The id run_pjsr returned. Omit for the running job. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: a not-yet-started job is removed and never runs, a running job stops at its next processEvents() call with an MCP_CANCELLED error, native process calls cannot be interrupted, and already-applied changes persist. These are exactly the consequences an agent needs before invoking a destructive stop.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then layered with the important state-dependent behavior. It is longer than most definitions but nearly every clause conveys a distinct operational fact; the default-target sentence could be folded in more tightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless-required cancellation tool with no output schema and no annotations, the description covers targeting, timing, interruption limits, and where to read the result. Nothing an agent needs to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter's description already states 'Omit for the running job,' which the prose merely restates. Baseline 3 applies since the schema does the work and the description adds no new syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Stop a job') and names exactly which tools create such jobs (run_pjsr, run_pjsr_file with async), so the agent can place it precisely among siblings. It also implicitly distinguishes itself from job_status, which reports rather than cancels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the trigger condition (a job started asynchronously) and the two distinct states it applies to, plus routes the agent to job_status for the outcome. It does not name an explicit when-not-to-use case, but the context is unambiguous for a one-param tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catalog_starsA
List catalogue stars over a plate-solved view from PixInsight's local Gaia database: one Gaia search centred on the image, with a radius reaching its corners (plus margin_fraction), down to mag_limit. Per star: image x, y, RA, Dec, G, BP-RP where the catalogue has them, whether it falls inside the frame, and for in-frame stars the peak luminance in a 5x5 box (with saturated = peak >= saturation_level when that is given). data_release omitted: releases are asked get-info in the order DR3/SP, DR3, EDR3, DR2 and the earliest of them that reports valid is searched; a failed search is reported, not retried on another release. supplement adds stars the catalogue lacks (marked with their name); a Gaia star within merge_px of one is replaced by it. Sorted by G, brightest at the top. The full list is written to a JSON file under /agentic/scratch/catalog; the reply carries it inline up to 200 stars.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | Plate-solved view | |
| merge_px | No | Distance in pixels within which a Gaia star is replaced by a supplement star (default 3) | |
| mag_limit | Yes | Faintest G magnitude listed | |
| supplement | No | Stars to add: [{ra, dec, mag, name}] in degrees and catalogue-band magnitude | |
| data_release | No | Gaia data release to search; omitted, the earliest valid one in the order DR3/SP, DR3, EDR3, DR2 | |
| margin_fraction | No | Extra search radius as a fraction of the centre-to-corner radius (default 0.05) | |
| saturation_level | No | Peak luminance at or above which an in-frame star is flagged saturated; omitted, no flag |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to lean on, the description carries the full behavioral burden and does so well: it discloses the data-release fallback order and that failed searches are reported rather than retried, the supplement-merge behavior with merge_px replacement, the saturated flagging rule, the G-sorted order, and the 200-star inline limit with full output written to a scratch JSON file. Failure semantics and side effects are unusually explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and search scope are front-loaded, and despite being a single dense paragraph, each clause conveys distinct information (search geometry, returned fields, release fallback, supplements, ordering, output destination). It is long but justified by the tool's complexity, with only minor packing of multiple ideas per sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with a nested supplement array and no output schema, the description fully compensates by enumerating the returned per-star fields (x, y, RA, Dec, G, BP-RP, in-frame status, peak luminance, saturation) and the file/inline output behavior. An agent has everything needed to invoke and interpret the call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the schema documents each parameter, but the description adds real semantic value beyond it: it clarifies that margin_fraction extends the center-to-corner radius, that merge_px governs replacement of a Gaia star by a supplement star, that saturation_level drives the saturated flag, and that an omitted data_release triggers an ordered fallback. This meaningfully enriches several parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('List catalogue stars over a plate-solved view from PixInsight's local Gaia database') and specifies the exact scope (one Gaia search centered on the image with a corner-reaching radius). This is clearly distinguishable from siblings like measure_stars or measure_star_layer, which measure detected stars rather than querying a Gaia catalogue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the precondition that the view must be plate-solved, but the description never states when to prefer this over alternatives such as measure_stars or run_plate_solve workflows. No explicit exclusions or alternative routing are given, leaving the agent to infer the use case from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_imageA
Clone an image to a backup view, which can be restored from later with restore_from_clone. The clone keeps the image's FITS keywords, astrometric solution and view properties.
| Name | Required | Description | Default |
|---|---|---|---|
| clone_id | Yes | Name for the clone | |
| source_id | Yes | Source view ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, and it does disclose real behavior: the clone preserves FITS keywords, astrometric solution and view properties, implying a faithful copy that leaves the source intact. It doesn't cover cost, memory duplication, or any workspace/permission constraints, so it stops short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the purpose and restore path come first, then the preserved attributes. Every clause carries information and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two documented parameters and no output schema, the description covers what the tool produces (a restorable backup view) and what it preserves. It omits whether the clone appears as a new open view or where it lives in the workspace, a minor gap for a low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both source_id and clone_id are documented), so the schema already does the heavy lifting. The description adds only the implicit framing of clone_id as a view name via 'backup view,' which is marginal beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (clone) and resource (image) and defines the outcome (a backup view). It also names the complementary sibling restore_from_clone, so an agent can distinguish this tool from other image-manipulation tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly frames the use case — creating a backup you intend to restore later — and points at restore_from_clone as the paired operation. There is no explicit when-not guidance or note about prerequisites, keeping it just below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_imageA
Close an image window to free memory.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | View ID to close |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the outcome ('free memory') but does not mention whether closing is irreversible, whether unsaved changes are affected, or any side effects on related views, clones, or masks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every word contributes meaning: the action, the target resource, and the purpose are all present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool, the description is close to sufficient. However, since there are no annotations and no output schema, a note on how to obtain view_id (e.g., via list_open_images) or the irreversible nature of closing would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents view_id with 'View ID to close', so the parameter meaning is already clear. The description adds a slight mapping between 'image window' and view_id, but no extra format, source, or usage nuance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Close'), a clear resource ('image window'), and a rationale ('to free memory'). It is immediately distinguishable from sibling tools like close_mask and open_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when an image window should be closed to release memory. However, it provides no explicit guidance about alternatives, such as using close_mask for masks, or what not to use this tool for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_maskA
Close and delete a mask window to free memory.
| Name | Required | Description | Default |
|---|---|---|---|
| mask_id | Yes | Mask view ID to close |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the operation is destructive ('delete') and why it exists (free memory), which covers the key trait. However, it omits details like irreversibility, potential errors for invalid mask_id, or any effect on the underlying image, leaving some unknowns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 10-word sentence that is front-loaded with the primary action and resource, immediately followed by the purpose. Every word earns its place; there is no redundant terminology or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with full schema coverage and no output schema, the description provides everything an agent needs to invoke it correctly: what action to take, on what resource, and why. The only minor gap is absence of a note on side effects beyond memory usage, but that does not hinder correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — 'mask_id' is already documented as 'Mask view ID to close'. The description's mention of 'mask window' aligns with the schema but adds no new semantic detail beyond what the input schema already provides, hence the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses explicit action verbs 'close and delete' with a specific resource ('mask window') and even states the purpose ('to free memory'). This clearly differentiates it from siblings like remove_mask or close_image, making the tool's unique role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to free memory' implies a usage context (when the mask window is no longer needed and resources should be released), but the description does not explicitly state when to choose this tool over alternatives such as close_image or remove_mask, nor does it provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
combine_channelsA
Combine 3 mono views into a single RGB color image using ChannelCombination. All 3 views must have identical dimensions. Returns the view ID of the combined image.
| Name | Required | Description | Default |
|---|---|---|---|
| b_view_id | Yes | Blue channel view ID | |
| g_view_id | Yes | Green channel view ID | |
| output_id | Yes | Desired output view ID (the combined image is renamed to this) | |
| r_view_id | Yes | Red channel view ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses the dimension precondition and the return value, but doesn't state whether the input views are modified or destroyed, or whether the operation is reversible. It implies creation of a new view (via 'renamed to'), but doesn't explicitly confirm the inputs are untouched. This is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loaded with the purpose, then the constraint, then the return value. There is no fluff or redundant information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (4 required params, no output schema, no annotations), the description covers the essential points: purpose, constraint, and return. It doesn't mention error conditions or side effects, but those are implied by the dimension constraint. Compared to the calibration example for update_drive (which lacked permissions and reversibility), this is more complete because it gives the return and the key precondition. It's sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameters with descriptions (100% coverage), but the tool description adds a cross-parameter constraint: all three view IDs must have identical dimensions. This is not in the schema and adds meaning beyond what the schema provides. The description also clarifies the return value, which relates to the output_id parameter. So it adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Combine), the resource (3 mono views), the result (single RGB color image), and the method (ChannelCombination). It also names the return value. This clearly distinguishes it from siblings like lrgb_combine, which combines luminance with color, and create_luminance_mask, which does something different.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when you have three mono views of identical dimensions and want to combine them into RGB. It doesn't explicitly mention alternatives or exclusions, but the purpose is clear enough that an agent would know when to select it. However, it doesn't say 'use this instead of lrgb_combine' or 'not for combining luminance', so it's not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_imagesA
Compare two open views of the same width, height and channel count, pixel by pixel, over the whole image or a rectangle. Per channel: maximum, mean and 99th-percentile absolute difference, and the fraction of samples outside [0, 1] in each view. "identical" is true when every absolute difference is 0. The 99th percentile is taken over at most 2,000,000 evenly spaced samples (p99Samples says how many); maximum and mean use every sample. Neither view is changed.
| Name | Required | Description | Default |
|---|---|---|---|
| rect | No | Optional region [x0, y0, x1, y1] in pixels, x1/y1 exclusive | |
| view_id | Yes | First view (A) | |
| reference_id | Yes | Second view (B), compared against A |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that neither view is mutated, that maximum and mean use every sample while p99 is taken over at most 2,000,000 evenly spaced samples, and defines when "identical" is true. It omits any note on error behavior for mismatched views, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the metrics, then the sampling caveat and the non-mutation guarantee in a single efficient closing sentence. Dense but every clause carries information; the nested quantifier/percentile detail is a touch heavy but justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values — and it enumerates them: per-channel max, mean, 99th-percentile absolute difference, fraction outside [0, 1], the "identical" flag, and p99Samples. An agent knows exactly what it will get back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents view_id, reference_id, and rect (including exclusive x1/y1). The description restates the whole-image-vs-rectangle choice and defines A/B roles implicitly, adding only marginal meaning beyond the schema — the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource — pixel-by-pixel comparison of two open views — plus the dimensional precondition (same width, height, channel count). This clearly distinguishes it from siblings like get_image_stats or measure_sharpness, which operate on a single view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the applicable context (two open views of matching geometry, whole image or a rect) but never explicitly says when to pick this tool over alternatives or what to do if the views differ in size. Usage is implied rather than stated, so it lands at minimum-viable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continuous_clampA
Compress bright values in place above a knee that varies per pixel. A luminance image (Rec.709 weights for colour) is blurred with a Gaussian of sigma blur_sigma and divided by its maximum, giving L in [0,1]; the knee is min_clamp + (max_clamp − min_clamp)·(1 − L), so it equals min_clamp where L = 1 and max_clamp where L = 0. mode soft: a value above the knee becomes knee + headroom·(1 − exp(−rate·(value − knee)/headroom)); mode hard: min(value, knee). The same expression is applied to every channel and the result is truncated to [0,1].
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | soft: exponential compression above the knee; hard: values above the knee are set to the knee | |
| rate | No | Soft mode, required there: steepness of the exponential compression | |
| view_id | Yes | Target view to clamp (modified in place) | |
| headroom | No | Soft mode, required there: the most the output can exceed the knee | |
| max_clamp | Yes | Knee where the blurred luminance is 0 | |
| min_clamp | Yes | Knee where the blurred luminance is at its maximum | |
| blur_sigma | No | Gaussian blur sigma of the luminance mask, in pixels; omitted = max(60, round(image width / 100)) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and fully pays it: it reveals in-place mutation, Rec.709 luminance weighting, Gaussian blur normalization, the exact knee formula, both mode equations, per-channel application, and final truncation to [0,1].
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main intent is front-loaded, and the remaining sentences are dense with necessary mathematical detail rather than filler. Despite its length, it is an efficient specification for a complex operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The algorithmic behavior and all seven parameters are covered, and in-place modification makes a return-value description less important. The formula, modes, parameter roles, and side effects are self-contained enough for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds substantial parameter meaning: it maps min_clamp/max_clamp to the knee endpoints, explains blur_sigma's role in the mask, and defines how rate and headroom shape the soft-mode curve. This goes well beyond the short schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: it compresses bright values in place above a per-pixel knee. The detailed luminance/blur/knee formula further distinguishes this from generic curve/clamp siblings, so an agent can tell exactly what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance or alternatives. It never says when continuous_clamp should be chosen over run_curves, run_pixelmath, or auto_stretch, and it does not mention prerequisites or excluded cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continuum_subtract_haA
Subtract the scaled R channel of an RGB view from an Ha view, in place. Ha = max(0, Ha - continuum_factor * R). Runs as 64-bit PixelMath truncated to [0,1]; reports the new median and max.
| Name | Required | Description | Default |
|---|---|---|---|
| ha_id | Yes | Ha view (mono), modified in place | |
| rgb_id | Yes | RGB view whose R channel is subtracted (same dimensions) | |
| continuum_factor | Yes | Multiplier on R subtracted from Ha |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does well: it discloses in-place mutation, the exact mathematical operation, 64-bit PixelMath execution, truncation to [0,1], and the reported median and max. It does not cover failure modes, but core behavior is clearly visible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences capture the operation, the exact formula, the processing mode, and the result reporting. There is no filler, and the action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description provides enough operational detail to invoke the tool: the in-place target, the source channel, the factor semantics, numeric clamping, and the reported outputs. It omits explicit error cases and alternative-selection guidance, but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the meaning of continuum_factor and the roles of ha_id and rgb_id through the formula, but adds little beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: subtract the scaled R channel from an Ha view, in place. The explicit formula Ha = max(0, Ha - continuum_factor * R) makes the operation unambiguous and distinguishes it from related narrowband tools like ha_inject_red.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. With a large sibling set containing similar narrowband operations, an agent gets no routing help beyond inferring from the formula.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_astrometric_solutionA
Copy the astrometric solution (WCS) and observation keywords from a source image file to a target view. Source and target must have the same dimensions; the target's pixels are unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | Target view ID to receive the WCS | |
| source_file | Yes | Absolute path to the source image file that carries the WCS |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It discloses that the target's pixels are unchanged and that dimensions must match, which is useful. However, it doesn't state whether the target's existing WCS is overwritten, whether observation keywords are merged or replaced, or whether the source file must be open. These are meaningful behavioral gaps for a metadata-mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core action is front-loaded, the constraint is stated, and the non-destructive nature is clarified. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with full schema coverage, the description is mostly complete. The main gaps are behavioral: overwrite semantics for existing WCS/keywords and whether the source must be an open image or just a file path. These are relevant for an agent deciding whether to call this tool and what to expect afterward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds the relationship between them (source carries the WCS, target receives it) and the dimension constraint, but doesn't add format or path details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Copy'), a specific resource ('astrometric solution (WCS) and observation keywords'), and the source/target relationship. It also clarifies what is NOT copied ('the target's pixels are unchanged'), which distinguishes it from image-copying tools like clone_image or crop_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear precondition ('Source and target must have the same dimensions') and implies the use case: transferring WCS/observation metadata from a file to a view. It doesn't explicitly name alternatives like run_plate_solve, but the sibling list shows plate solving is the alternative for creating a WCS, while this tool copies an existing one. The context is clear enough for an agent to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_adaptive_zone_masksA
Create three masks from percentiles of the image's own luminance. Subject pixels are those brighter than the background median + 5 MAD, sampled inside a circle of radius 0.35 * min(width, height) around their brightness-weighted centroid. Core = above the subject percentile 85 + 10 * core_bias; shell = a triangular ramp between the 25th percentile and the core level, peaking at their midpoint; outer = subject level up to the 25th percentile. Each is feathered over 20 px outside the circle and Gaussian-blurred with sigma 5, 10 and 20. Creates views azone_core, azone_shell and azone_outer, replacing views of those names; fewer than 50 sampled subject pixels is an error.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | Source view the masks are computed from | |
| core_bias | No | Position of the core threshold on its 0-1 scale: 0 = percentile 85, 1 = percentile 95 (default 0.5, the middle of the scale) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly. It discloses the exact mathematical thresholds (median + 5 MAD, percentile 85 + 10 * core_bias), the sampling circle radius, feathering and blur parameters, the fact that it replaces existing views of those names, and the error condition (fewer than 50 sampled subject pixels). This is exemplary behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and information-rich, with every sentence contributing a specific algorithmic detail. It is front-loaded with the core purpose and then details the mask construction. It could be slightly more structured (e.g., separating the error condition), but it is appropriately sized for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (three masks, multiple thresholds, blur, view replacement), the description is remarkably complete. It covers inputs, algorithm, outputs, side effects (replacing views), and error conditions. No output schema exists, but the description fully explains what the tool creates, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining how core_bias shifts the core threshold on the percentile scale (0 = percentile 85, 1 = percentile 95) and how view_id is the source for the masks. It doesn't restate the schema but enriches it with the algorithm's context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and resource ('three masks from percentiles of the image's own luminance'), and names the exact output views (azone_core, azone_shell, azone_outer). It clearly distinguishes itself from the sibling create_zone_masks by specifying the adaptive, luminance-based algorithm and the three named outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need adaptive zone masks based on the image's own luminance distribution. It does not explicitly state when not to use it or name alternatives like create_zone_masks, but the detailed algorithm and output names make the usage context clear. A brief exclusion note would push it to 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_luminance_maskB
Create a luminance mask from a color view: Y = 0.2126R + 0.7152G + 0.0722B, then an optional blur and shadow clip.
| Name | Required | Description | Default |
|---|---|---|---|
| blur | No | Blur sigma applied to the mask (default 5) | |
| gamma | No | Gamma curve applied to the mask (default 1.0) | |
| mask_id | Yes | Name for the mask | |
| clip_low | No | Shadow clip threshold, below which the mask is 0 (default 0.10) | |
| source_id | Yes | Source color view ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses the mathematical operation and optional processing steps (blur and shadow clip), which is useful. However, it doesn't mention that this creates a new mask view (mutation), potential side effects on existing masks, or whether the operation is reversible. Basic behavioral context is present but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence that packs the core formula, optional processing, and the purpose. It is efficient and begins with the primary action. Could arguably be split for readability, but it's not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and no annotations, the description is reasonably complete for a creation tool. It explains the main calculation and optional post-processing, but lacks details on what happens to existing masks, potential required prerequisites (e.g., a color view must be open), and clear usage context. It's sufficient but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds formula details (Y = 0.2126R + 0.7152G + 0.0722B) and mentions blur and shadow clip, which map to blur and clip_low parameters. But it doesn't explain the gamma parameter or how the shadow clip threshold is applied beyond the schema's description. Baseline 3 is appropriate since schema covers most semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb, resource (luminance mask), and the underlying math formula, plus optional blur and shadow clip. It distinguishes from create_zone_masks and create_adaptive_zone_masks by implying a luminance-based mask rather than zone masks, though it doesn't explicitly name the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like create_adaptive_zone_masks or create_synthetic_luminance. The description implies a use case (creating a luminance mask from a color view) but doesn't state when it's preferred or when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_synthetic_luminanceA
Create a mono view from a weighted sum of Ha and OIII. It is ha_weight * Ha + oiii_weight * OIII, replacing any view of that name; with max_value the result is min(…, max_value); it is then truncated to [0,1]. Reports the new view's median and max.
| Name | Required | Description | Default |
|---|---|---|---|
| ha_id | Yes | Ha view (mono) | |
| oiii_id | Yes | OIII view (mono, same dimensions) | |
| ha_weight | Yes | Multiplier on Ha | |
| max_value | No | Optional: upper cap on the result. Omitted = truncation to [0,1] only | |
| output_id | No | Name of the view to create; omitted = SYNTH_L | |
| oiii_weight | Yes | Multiplier on OIII |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the exact calculation, the replacement of an existing view of the same name, the optional max_value cap, truncation to [0,1], and the reported median/max statistics. This is substantive but stops short of describing edge cases or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the purpose and formula, and the second covers capping, truncation, and output reporting. Every sentence contributes meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no output schema, the description covers the core formula, optional cap, truncation behavior, view replacement, default naming, and returned statistics. It is nearly complete; only minor details like handling of invalid dimensions or negative weights are absent, but these are inferable from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by explaining how ha_weight and oiii_weight combine, how max_value caps the result, and the default output name. This goes beyond the schema's field-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a mono view from a weighted sum of Ha and OIII, with a precise formula. It does not explicitly compare itself to sibling tools such as lrgb_combine or pixelmath_new_image, so it lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like lrgb_combine, pixelmath_new_image, or other view-creation tools. The intended use is only implied by the formula and the tool name, not stated explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_zone_masksA
Create core, shell and halo masks from three fixed luminance thresholds. Luminance is the Rec.709 luma of a color view, the samples of a gray one: core = above core_clip, shell = shell_clip to core_clip, halo = halo_clip to shell_clip, each ramped linearly from 0 to 1 across its band and Gaussian-blurred with sigma 8, 12 and 20. Creates views mask_core, mask_shell and mask_halo, replacing views of those names. Requires halo_clip < shell_clip < core_clip < 1.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | Source view the masks are computed from | |
| core_clip | Yes | Luminance above which a pixel is in the core mask (0-1) | |
| halo_clip | Yes | Luminance above which a pixel, up to shell_clip, is in the halo mask (0-1) | |
| shell_clip | Yes | Luminance above which a pixel, up to core_clip, is in the shell mask (0-1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It goes well beyond the schema by explaining how masks are computed, that they are linearly ramped and Gaussian-blurred with specific sigmas, and that views mask_core, mask_shell, and mask_halo are created and replaced. This is unusually transparent about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient: the first sentence states the core action, the second provides the algorithm details, and the final sentence states the required constraint. Every clause contributes useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description is remarkably complete. It names the output views, describes the computation, discloses the replacement behavior, and mandates the threshold ordering. An agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the parameter meanings by mapping each clip threshold to its band, but it does not add substantial new meaning beyond the schema's own parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description leads with a specific verb and resource: 'Create core, shell and halo masks from three fixed luminance thresholds.' It clearly distinguishes this tool from sibling tools like create_adaptive_zone_masks by emphasizing 'fixed' thresholds and naming the exact masks produced.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear operational context: it defines the three threshold bands, the linear ramp, the Gaussian blur sigmas, and the required ordering halo_clip < shell_clip < core_clip < 1. It does not explicitly name alternatives or state when not to use it, but the 'fixed thresholds' phrasing implies the contrast with an adaptive sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crop_imageA
Crop pixels off the edges of an image, in place. Amounts are pixels to remove from each side. All four amounts 0 (or omitted) runs nothing and leaves the image, and its astrometric solution, unchanged. Crop runs with noGUIMessages, so PixInsight writes its warnings to the Process Console instead of opening a confirmation dialog. A crop deletes the image's astrometric solution (PixInsight behaviour); the result says when one was removed.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Pixels to remove from the top edge | |
| left | No | Pixels to remove from the left edge | |
| right | No | Pixels to remove from the right edge | |
| bottom | No | Pixels to remove from the bottom edge | |
| view_id | Yes | View ID to crop |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses in-place mutation, the noGUIMessages behavior routing warnings to the Process Console, and the destructive side effect of deleting the astrometric solution. It stops short of stating limits (e.g., cropping past image bounds) or auth/permission needs, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each carrying distinct payload, with the core operation front-loaded before the side-effect details. Slightly dense but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the important behaviors (in-place edit, astrometric-solution loss, no-op case) and hints at the result reporting a removed solution. Missing only edge-case limits and failure conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, giving a baseline of 3, and the description adds real meaning: it clarifies the amounts are pixels removed per side and that the zero/omitted default across all four amounts produces no change. This relational/edge-case semantics goes beyond the per-field schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (crop) and resource (image edges), plus the scope constraint 'in place.' An agent can distinguish it from siblings like resample_image or reproject_to_reference without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes the no-op case (all amounts 0 or omitted leaves the image unchanged), which is useful behavioral guidance, but never names an alternative tool or states when to prefer this over resampling/reprojecting. Usage 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.
describe_processA
Describe one PixInsight process by its PJSR constructor name: whether it can run on a view and/or globally, its current parameter values and their types, and any named numeric constants it exposes for those parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | PJSR process constructor name, e.g. "SCNR". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It conveys that the tool is introspective ('Describe... whether it can run...') and lists what data is inspected, which implies a read-only operation. However, it never explicitly states that it does not execute or modify the process, and it does not describe error behavior for unknown constructor names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence with no filler. The core action and scoping ('Describe one PixInsight process by its PJSR constructor name') are front-loaded, and every subsequent clause adds a distinct piece of expected output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter introspection tool with no output schema, the description does a good job enumerating what will be returned: view/global execution capability, parameter values/types, and named constants. It would be more complete if it stated the result format or behavior for invalid/unavailable process names, but an agent can still call the tool correctly from this description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines 'name' as a PJSR process constructor name. The description repeats this and adds only a concrete example ('SCNR') and a link to the returned information, which is helpful but not substantial new semantic content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Describe', and a specific resource, 'one PixInsight process by its PJSR constructor name'. It enumerates the exact information returned (view/global run capability, parameter values/types, numeric constants), which clearly differentiates it from execution-oriented siblings like run_process or enumeration-oriented list_processes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is given. The description does not say when to prefer describe_process over list_processes, run_process, or run_pjsr, nor does it mention any prerequisites or common scenarios such as inspecting a process before running it. The agent is left to infer the tool's role from its name and output description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamic_narrowband_blendA
Add Ha and OIII (mono views) to an RGB view in place, through a temporary luminance mask. R += ha_strength * Ha; B += oiii_strength * OIII; G += f * ha_strength * g_ha_fraction * Ha + (1 - f) * g_strength * OIII, with f = (OIIIHa)^(1-OIIIHa). Each channel above max_output becomes max_output + (x - max_output) * rolloff. The mask is the Rec.709 luminance of the target, Gaussian-blurred with sigma mask_blur, then 0 below mask_clip and (x - mask_clip) / (1 - mask_clip) above it; it is removed afterwards. Runs as 64-bit PixelMath truncated to [0,1]; reports the median and the R and B maxima.
| Name | Required | Description | Default |
|---|---|---|---|
| ha_id | Yes | Ha view (mono, same dimensions) | |
| oiii_id | Yes | OIII view (mono, same dimensions) | |
| rolloff | Yes | Fraction of the excess above max_output that is kept | |
| mask_blur | Yes | Gaussian sigma (pixels) of the luminance mask blur | |
| mask_clip | Yes | Mask level below which the blend does not apply; 0 = no clip | |
| target_id | Yes | Target RGB view, modified in place | |
| g_strength | Yes | Multiplier on OIII in the G term | |
| max_output | Yes | Per-channel level above which the soft clamp compresses | |
| ha_strength | Yes | Multiplier on Ha added to R | |
| g_ha_fraction | Yes | Fraction of ha_strength applied to Ha in the G term | |
| oiii_strength | Yes | Multiplier on OIII added to B |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the transparency burden and succeeds: it discloses that the target is modified in place, the mask is temporary and removed afterward, the computation runs in 64-bit PixelMath truncated to [0,1], and it reports median and channel maxima. This is exactly the kind of behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: summary, explicit channel formulas, soft-clamp behavior, mask construction, mask removal, numeric precision, and output reporting. No filler, no redundancy, and the most important behavioral facts come first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-required-parameter tool with no annotations and no output schema, this description is remarkably complete. It fully specifies the algorithm, the mask lifecycle, the numeric domain, and the reported output values, leaving no critical ambiguity for an agent deciding whether and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description significantly enriches parameter meaning by embedding each parameter in the actual equations (e.g., g_ha_fraction's role in the G term, rolloff as the fraction of excess kept, mask_blur as Gaussian sigma). This bridges the gap between telling an agent what a parameter is and how it behaves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise statement: 'Add Ha and OIII (mono views) to an RGB view in place, through a temporary luminance mask.' This names the specific operation, resources, and mechanism, and is clearly distinguishable from siblings like ha_inject_red or lrgb_combine.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The detailed math and mask behavior make the intended use context unambiguous: this is the tool for a dynamic Ha+OIII blend into RGB with a luminance mask. However, it does not explicitly compare itself to alternatives (e.g., ha_inject_red, synthetic luminance) or state 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.
ensure_dirA
Create a folder, with any missing parents, inside the workspace's output folder or state folder. A relative path is resolved under /output; an absolute one must lie inside /output or the state folder (/agentic by default), and a path anywhere else is refused. An existing folder is left as it is. Returns the absolute path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Folder path: relative to <workspace>/output, or absolute inside <workspace>/output or the state folder |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses parent creation, relative vs. absolute path resolution, refusal of out-of-scope paths, idempotent behavior for existing folders, and the return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences with no waste. The core action and path behavior are front-loaded, and the return value is stated last as useful closing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter directory-creation tool with no annotations and no output schema, the description is complete: it covers path rules, idempotency, side effects, and the return value. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single parameter is already fully documented in the schema. The description reinforces the path rules but adds no syntax or format details beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: create a folder, including missing parents, within the workspace output or state folder. It is unambiguous and clearly distinguishable from the many process-running and image-operation siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the allowed path scopes and that paths outside them are refused, plus that an existing folder is left alone. It does not explicitly name alternatives or say when this tool should be preferred over other filesystem-related tools, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_imageA
Write an image to a file in the workspace's output or state folder. A relative file_path is resolved under /output; an absolute one must lie inside /output or the state folder (/agentic by default), and a path anywhere else is refused. Format comes from the extension: .tif/.tiff, .png, .jpg/.jpeg, .xisf, .fits. TIFF and PNG default to 16-bit, JPEG to 8-bit; use 32 for float. The file keeps the image's FITS keywords, astrometric solution and view properties (formats that cannot store them drop them). The working image is not changed. Missing parent folders are created.
| Name | Required | Description | Default |
|---|---|---|---|
| bits | No | Sample depth for tif/png/xisf/fits (default 16 for tif/png, 32 otherwise) | |
| view_id | Yes | View ID to export | |
| file_path | Yes | Output file path: relative to <workspace>/output, or absolute inside <workspace>/output or the state folder |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so well: it discloses the path sandbox and refusal behavior, that the working image is unchanged, that parent folders are auto-created, and that FITS keywords/astrometric solutions/view properties are preserved or dropped depending on format. These are non-obvious behavioral traits an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a dense single paragraph but every sentence carries load and the core action is front-loaded. Length is justified by the amount of genuinely useful constraint detail, though it could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, and the description fully compensates by covering path rules, format-from-extension mapping, bit-depth defaults, metadata preservation, and non-mutation of the source image. Nothing an agent needs to call it correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds real meaning: relative paths resolve under <workspace>/output, absolute paths must lie in output or the state folder, and bit-depth defaults per format map onto the 'bits' enum. It goes beyond restating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Write an image to a file in the workspace's output or state folder," which clearly distinguishes it from read-only image tools and from preview siblings like save_preview. An agent can identify the core action 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives detailed conditional rules for path resolution and format selection, which implicitly guides correct invocation, but it never states when to prefer this tool over alternatives such as save_preview or save_and_show_preview. Usage is implied rather than explicitly contrasted against siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_pseudo_oiiiA
Create a mono view from the B channel of an RGB view minus its scaled R channel. OIII = max(0, B - continuum_factor * R); any view of that name is replaced. Reports the new view's median and max.
| Name | Required | Description | Default |
|---|---|---|---|
| rgb_id | Yes | Source RGB view | |
| output_id | No | Name of the view to create; omitted = OIII_pseudo | |
| continuum_factor | Yes | Multiplier on R subtracted from B |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It transparently warns that any existing view of the target name is replaced, explains the clipping behavior, and states that median and max are reported. It does not state whether the source view remains untouched, but the creation semantics imply it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: the first states the action, the second gives the formula and destruction warning, and the third states what is returned. There is no filler and no unnecessary restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description provides the algorithm, the destructive side effect, and the returned statistics. The only missing context is a prerequisite that the source view be a valid RGB view, which is lightly implied by the schema parameter description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning by tying continuum_factor to the formula, clarifying output_id replacement when the view already exists, and explaining that the result is mono and clipped, which goes beyond the raw parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation ('Create a mono view'), gives the exact formula (max(0, B - continuum_factor * R)), and states the output type. It does not explicitly differentiate from siblings like continuum_subtract_ha, but the B-minus-scaled-R formula makes the intent clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear algorithm and result, so the use case (extracting pseudo-OIII from an RGB view) is inferable. It does not, however, state when to prefer this over sibling tools such as continuum_subtract_ha or dynamic_narrowband_blend, so explicit routing guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_filtersA
Search PixInsight's built-in filter and camera QE database by name (case-insensitive substring). A grouped name also matches each name it stands for ("Sony IMX411/455/461/533/571" matches "IMX533"); results are ordered exact name, then substring, then grouped-name matches. Use it to pick exact names for run_spfc or run_spcc. Sensor QE curves have channel Q.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | e.g. "Astronomik", "Ha", "IMX533", "Chroma" | |
| channel | No | Optional: R, G, B, L, PAN (multiband OSC) or Q (sensor QE) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses case-insensitive substring matching, grouped-name expansion with a concrete example, result ordering (exact, substring, grouped), and that Q channel curves are returned. It does not mention cost, limits, or result size, but for a read-only search this is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with what and how it matches, then the routing advice, then a niche detail. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param read-only lookup with no output schema, the description covers matching behavior, ordering, and when to use it. It could say what a result row contains (name only? name+QE curve?), which would matter for an agent parsing the response, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100% with examples for both params, so baseline is 3; the description adds real meaning beyond the schema, namely the case-insensitive substring semantics of 'query' and the grouped-name matching rule, plus the Q-channel note relevant to 'channel'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (search) and resource (PixInsight's built-in filter and camera QE database) with the exact lookup key (name, case-insensitive substring). An agent can distinguish it from all the run_*/measure_* siblings at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the purpose: 'Use it to pick exact names for run_spfc or run_spcc,' which maps this lookup tool onto the two downstream tools that consume its output. It does not state when-not to use it, but for a benign lookup tool the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_image_dimensionsA
Get dimensions, channel count, and color status for one or more views. Every channel must have identical dimensions before ChannelCombination.
| Name | Required | Description | Default |
|---|---|---|---|
| view_ids | Yes | View IDs to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral burden. The verb 'Get' signals a read-only operation, and the output scope is clear, but the description does not disclose behavior for missing/invalid view IDs, whether multiple views are validated independently, or what 'color status' precisely means. For a simple getter this is acceptable but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the main function, and then adds a single high-value domain constraint. Every sentence earns its place; there is no fluff or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with no output schema, the description is largely sufficient: it states the resource, scope, and an important use condition. It could mention error behavior or return shape, but those are minor for this simple API.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the only parameter, view_ids, with the schema already saying 'View IDs to check.' The description adds that it works for 'one or more views' and connects the parameter to the ChannelCombination precondition, but it does not add significant format or semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get dimensions, channel count, and color status for one or more views.' This clearly identifies what the tool returns and is distinct from sibling tools like combine_channels or get_image_stats, so an agent can select it accurately without 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete usage context: 'Every channel must have identical dimensions before ChannelCombination,' which implies this tool is the right precondition check before combine_channels. It does not explicitly name alternatives or say when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_image_statsB
Get image statistics: median, MAD, min, max, per-channel medians, and per channel the fraction of samples at exactly 0 and at exactly 1 (clampFractions).
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | PixInsight view ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses what is computed (median, MAD, min/max, per-channel medians, clampFractions), which is meaningful behavioral detail, but says nothing about cost, whether the view must be open, or side effects. Adequate but leaves gaps for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence lists the verb, resource, and all returned statistics with zero padding. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the exact returned values including the non-obvious clampFractions. It is close to complete for a read-only stats tool, missing only access/prerequisite context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (view_id) and schema description coverage is 100%, with the schema documenting it as a PixInsight view ID. The description adds no further parameter meaning, which matches the baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (image statistics) and enumerates the exact statistics returned. It is distinct from measurement siblings like measure_sharpness or measure_saturation, though it does not explicitly say how it differs from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to prefer this tool over the many measure_* siblings (measure_core_clipping, measure_clipped_blocks, etc.), nor any prerequisites such as the view needing to be open. Usage is only implied by the tool name and stat list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ha_inject_luminanceA
Raise the luminance of an RGB view in place where Ha exceeds it, keeping colour ratios. With Y the Rec.709 luminance, each channel is multiplied by (Y + strength * max(Ha - Y, 0)) / Y. Runs as 64-bit PixelMath truncated to [0,1].
| Name | Required | Description | Default |
|---|---|---|---|
| ha_id | Yes | Ha view (mono, same dimensions) | |
| strength | Yes | Fraction of the Ha excess over the luminance that is added | |
| target_id | Yes | Target RGB view, modified in place |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does well: it discloses in-place modification, the exact per-channel formula, 64-bit PixelMath execution, and truncation to [0,1]. It does not mention edge cases like no-op behavior when Ha never exceeds Y, but the core mutation behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose, then gives the formula and execution detail. Every sentence carries meaningful information; there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter in-place transform with no output schema, the description is nearly complete: it defines the operation, the math, the precision, and the clipping behavior. A minor gap is that it does not state prerequisites like the target being an open RGB view or the result of the in-place operation, though these are partially implied by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters clearly. The description adds the formula context around 'strength' and the Rec.709 luminance definition, but it does not substantially enrich parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Raise the luminance'), a precise resource ('an RGB view'), and the exact condition ('where Ha exceeds it'). It distinguishes itself from sibling ha_inject_red by targeting luminance while preserving colour ratios, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the mechanism but gives no explicit guidance on when to use this tool versus alternatives like ha_inject_red, extract_pseudo_oiii, or create_synthetic_luminance. Usage context is only implied by the mathematical behavior, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ha_inject_redA
Add Ha to the red channel of an RGB view in place, where Ha exceeds R by a given fraction. Where Ha > R * (1 + brightness_limit), R becomes R + strength * (Ha - R); elsewhere R, and G and B everywhere, are unchanged. With max_output and rolloff, R above max_output becomes max_output + (R - max_output) * rolloff. Runs as 64-bit PixelMath truncated to [0,1]; reports the new R maximum and the image median and max.
| Name | Required | Description | Default |
|---|---|---|---|
| ha_id | Yes | Ha view (mono, same dimensions) | |
| rolloff | No | Fraction of the excess above max_output that is kept; given together with max_output | |
| strength | Yes | Fraction of the Ha excess over R added to R | |
| target_id | Yes | Target RGB view, modified in place | |
| max_output | No | Optional: R level above which the soft clamp compresses; given together with rolloff. Omitted = no clamp | |
| brightness_limit | Yes | Ha is added only where Ha > R * (1 + brightness_limit) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the operation modifies the target in place, runs as 64-bit PixelMath truncated to [0,1], and reports the new R maximum and image median/max. With no annotations provided, this is substantial behavioral disclosure. It could add side-effect warnings (e.g., irreversible modification) but the in-place mutation is already stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each dense with information: the core transformation, the optional clamp, and the execution/reporting behavior. No filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no output schema and no annotations, the description covers the transformation, the optional clamp, the in-place behavior, and the reported outputs. It does not explicitly state prerequisites (e.g., matching dimensions, mono Ha view) but the schema already notes 'same dimensions' for ha_id. The main gap is lack of explicit warning about irreversibility, but the in-place statement covers the critical part.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters. The description adds the formula context that ties the parameters together (e.g., how strength and brightness_limit interact), but it does not add per-parameter details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add Ha to the red channel'), the resource (RGB view), the condition (where Ha exceeds R by a given fraction), and the exact transformation formula. It clearly distinguishes itself from the sibling ha_inject_luminance by targeting the red channel rather than luminance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the mathematical condition and the optional clamp behavior, giving an agent enough context to decide when to use it. It does not explicitly name alternatives or state when not to use it, but the precise formula and the sibling name ha_inject_luminance make the intended use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_environmentA
Report what this PixInsight installation has, by asking PixInsight. gaia: Gaia get-info for DR2, EDR3, DR3 and DR3/SP (valid, database files, magnitude range, mean spectra) and a 0.1-degree search on the lowest valid release. mars: one MultiscaleGradientCorrection run per MARS file (from PixInsight settings, or mars_files) on a temporary synthetic plate-solved image; per file: readable, missing or corrupt, and how many MARS reference images cover the probe position. xterminators: BlurXTerminator, NoiseXTerminator and StarXTerminator run once each on a temporary 64x64 image; reports version, ML model version and gpu/cpu from their console banner (null when not printed). system: free and total memory, free space on the workspace volume. Temporary images are closed; open images are not touched. Without ra_deg/dec_deg the probe position is RA 0, Dec 0 and coverage is reported as null.
| Name | Required | Description | Default |
|---|---|---|---|
| ra_deg | No | Probe position right ascension, degrees [0, 360). Given with dec_deg. | |
| dec_deg | No | Probe position declination, degrees [-90, 90]. Given with ra_deg. | |
| sections | No | Sections to run (default: all) | |
| mars_files | No | Absolute .xmars paths to test instead of the configured ones |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses side effects (temporary synthetic/64x64 images are created and then closed), an explicit safety guarantee ('open images are not touched'), per-file error semantics (readable/missing/corrupt), and the null-coverage fallback when ra_deg/dec_deg are omitted. This is exactly the behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then one clause-group per section, so the structure is scannable despite being a dense single paragraph. It is appropriately sized for a four-section diagnostic, though the run-on enumeration of per-section behaviour could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must describe return content, and it mostly does: magnitudes/spectra for gaia, per-file status and coverage for mars, version/model/gpu-cpu for xterminators, memory and disk for system. A few return details (e.g. precise field names, failure modes when PixInsight sections error) remain implicit, keeping it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so baseline is 3, but the description adds real meaning: it explains that sections default to all, that mars_files overrides the configured MARS files, and that omitting the ra/dec pair makes the probe position (0,0) and coverage null. This goes beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear specific verb and resource: 'Report what this PixInsight installation has', and enumerates exactly what is probed (gaia, mars, xterminators, system). It is easy to distinguish from measure_* tools, but it never names its closest siblings (pixinsight_info, workspace_info, list_packs), leaving differentiation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a one-shot diagnostic and explains each section's behavior, but it never states when to run it versus alternatives like pixinsight_info or workspace_info, nor any prerequisites or warnings about cost. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_statusA
Report on a job started by run_pjsr or run_pjsr_file with async: its state (queued, running, ending = stopped in PixInsight with its result not yet collected, done, failed, cancelled, stopped), elapsed time, seconds since the running script last called processEvents(), its latest mcpProgress() text, and, once it has ended, its result or error and PixInsight console errors. Without job_id: the running job, else the most recent one. Read-only; it does not use PixInsight, so it answers while a job runs.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | The id run_pjsr returned. Omit for the running or most recent job. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it declares the tool read-only, explains that it does not use PixInsight and therefore answers while a job runs, and enumerates every state value plus the ancillary data (elapsed time, processEvents interval, mcpProgress text, result/error, console errors).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense but well-structured sentence lists the return fields, followed by a short default-behavior sentence and a short read-only caveat; nothing is redundant, though the first sentence is long enough to be slightly heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must cover both behavior and return shape; it does, describing the state set, timing metrics, progress text, and terminal result/error content. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single job_id parameter is fully documented there. The description's note that omitting job_id returns the running or most recent job restates the schema rather than adding format or ID-provenance detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (report on) and resource (a job started by run_pjsr/run_pjsr_file with async), and enumerates the exact fields reported, so an agent can distinguish it from cancel_job or wbpp_status without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger (a job started by run_pjsr or run_pjsr_file using async) and explains the no-argument default behavior. It never names an explicit alternative sibling (e.g., cancel_job, wbpp_status) or states when not to use it, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_fitB
Run LinearFit to scale a linear image to match a reference view. The reference is not modified.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | PixInsight view identifier. | |
| reject_low | No | Low rejection threshold. | |
| reject_high | No | High rejection threshold. | |
| reference_id | Yes | Reference view ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing side effects. It only states that the reference is not modified, but it never states that the target view is modified in place, what happens to rejection thresholds, or how failures are reported. This is a meaningful transparency gap for a process that likely mutates the input view.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The primary action is stated first, and the important caveat about the reference view is included succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutating process with no annotations and no output schema, so the description must do more. It omits whether the target view is changed in place, what the result of the operation is, and any guidance on how reject_low/reject_high affect the fit. The description is too sparse to fully support correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters and their defaults. The description adds only the conceptual purpose of view_id and reference_id ('match a reference view') but no additional format, interaction, or edge-case details, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names a specific process (LinearFit), states its action ('scale a linear image'), and identifies the target/reference relationship. It also distinguishes an important boundary ('The reference is not modified'). It does not explicitly differentiate from the similarly named sibling align_to_reference, but the 'scale' wording implies intensity matching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context for when to use the tool: when a linear image needs intensity scaling to match a reference view. However, it gives no when-not-to-use guidance and does not explicitly route away from sibling tools such as align_to_reference, leaving the comparison to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_open_imagesA
List all currently open images in PixInsight with their dimensions and color status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. 'List' makes the read-only nature clear, and the description states what data is returned. It does not discuss empty states, ordering, or failure behavior, but these are minor for a simple inventory operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the action and resource, and every word contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list operation, the description is nearly complete: it identifies the resource and the returned attributes. It does not describe output serialization or edge-case behavior, but these are not necessary for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty, so there are no parameter semantics for the description to add. It correctly avoids inventing parameters, and 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List all currently open images in PixInsight'. It also specifies the returned data ('dimensions and color status'), and this distinguishes it from sibling tools like get_image_dimensions, which target a single image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: use this tool when you need an inventory of open images. However, the description does not explicitly state when to prefer this over alternatives such as get_image_dimensions or workspace_info, and it gives no exclusions or routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_packsA
List the runtime tool packs discovered at server startup, with load status, tool counts, why any pack was skipped, and which core tools packs replaced. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the transparency burden and does so well: it explicitly declares 'Read-only' and notes that the listing reflects server startup discovery, implying a static snapshot rather than live state. It also pre-announces the diagnostic content (load status, why skipped), which sets expectations beyond the empty schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one well-structured sentence that front-loads the primary purpose, then adds the specific details in a parallel clause and closes with a one-word safety qualifier. Every segment earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only listing tool with no output schema, the description is sufficient: it specifies the full scope of returned information (status, counts, skip reasons, replacements) and the read-only nature. An agent can invoke and interpret the result without needing further clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is an empty object with 100% schema description coverage, so the baseline for parameter semantics is 4. The description reinforces that no input is needed by focusing entirely on the returned information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('runtime tool packs discovered at server startup'), a specific action ('List'), and enumerates the exact information returned (load status, tool counts, skip reasons, replaced core tools). This clearly distinguishes it from sibling tools like list_processes or workspace_info, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the tool's intended context clear by scoping it to startup-discovered runtime tool packs, so an agent knows when it applies. However, it does not explicitly name alternatives such as list_processes or pixinsight_info or state when not to use this tool, leaving that distinction implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_processesA
List every PixInsight process available on this installation, by its PJSR constructor name (e.g. "SCNR", "PixelMath"). Read-only; classifies by prototype chain and never instantiates a process to build the list.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it explicitly discloses that the operation is read-only, that it classifies by prototype chain, and that it never instantiates a process. This goes beyond the basic 'list' phrasing and gives meaningful behavioral assurance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose and output, the second adds behavioral detail. There is no filler, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only listing tool with no output schema, the description is complete. It explains what is listed, the output format, examples, and the internal method, which gives an agent everything needed to invoke and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so the description does not need to explain parameter meanings. The description adds useful context about what the returned names represent, which is sufficient for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact action ('List every PixInsight process available on this installation') and the output format ('PJSR constructor name'), with concrete examples like 'SCNR' and 'PixelMath'. This clearly distinguishes it from sibling tools such as list_open_images or describe_process, which operate on different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear that this tool is for enumerating all installed processes, which is a distinct use case. It does not explicitly name alternative tools or exclusion criteria, but the context and scope are clear enough for an agent to select it when needing the full process list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lrgb_combineA
Replace the lightness of an RGB view with a grayscale L view using LRGBCombination, in place on the RGB view. Only the L channel is enabled, so the RGB view keeps its own color channels. lightness and saturation are LRGBCombination's transfer-function midtones balances mL and mc (0.5 leaves that component unchanged). When linear_fit_reject_high is given, the call also runs LinearFit on the L view (modified in place, ahead of the combination) against a temporary luminance image 0.2126 R + 0.7152 G + 0.0722 B of the RGB view; when it is omitted, no LinearFit runs. Chrominance noise reduction and highlight clipping are left at PixInsight's defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| l_id | Yes | Grayscale luminance view ID with the same dimensions as rgb_id | |
| rgb_id | Yes | RGB color view ID (modified in place) | |
| lightness | Yes | Midtones balance of the lightness transfer function (LRGBCombination mL), 0 to 1 | |
| saturation | Yes | Midtones balance of the saturation transfer function (LRGBCombination mc), 0 to 1 | |
| linear_fit_reject_high | No | LinearFit rejectHigh for the fit of L to the RGB luminance; omitted = no LinearFit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses key behaviors: in-place modification of the RGB view, the conditional LinearFit on the L view (with a modified-in-place note), the effect of lightness/saturation values (0.5 leaves unchanged), and that chrominance noise reduction and highlight clipping remain at defaults. This is thorough and goes beyond basic parameter descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and well-structured, with each sentence adding new information. It front-loads the primary purpose, then clarifies channel behavior, parameter semantics, conditional logic, and defaults. No repetition or fluff; all parts contribute to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool without an output schema, the description covers the operation, side effects, and parameter behavior thoroughly. However, it does not explicitly state what the tool returns or whether it returns a modified view or a status. Given its in-place nature, this is a minor gap, but with no output schema, a note on return behavior would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is 100%, the description adds significant meaning beyond the schema. It explains the relationship of lightness and saturation to mL/mc, the neutral value 0.5, and provides a detailed explanation of the optional linear_fit_reject_high parameter (what it does, what it fits against, and the coefficient formula). This is invaluable for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Replace the lightness of an RGB view with a grayscale L view') and the specific process (LRGBCombination). It is unambiguous about the operation and distinguishes it from generic combine tools by describing the in-place modification and the L channel handling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the operation but does not explicitly state when to use this tool over alternatives. It mentions conditional behavior for the optional parameter, but no direct comparison to sibling tools (e.g., combine_channels, run_pixelmath). Usage context is implied through the detailed description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_bright_chromaA
Measure chroma, (max - min) / max, of the bright pixels of a colour view: every 8th pixel whose mean of R, G and B is above brightness_threshold. Returns JSON: median_chroma, mean_chroma, p25_chroma, p75_chroma, bright_pixel_count. A mono view is an error.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | Colour view to measure | |
| brightness_threshold | Yes | Mean of R, G and B above which a pixel is measured |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden, and it succeeds: it reveals the sampling scheme (every 8th pixel), the selection condition, the exact return JSON keys, and the mono-view error condition. This gives an agent a clear model of what will happen when the tool is invoked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the essential information with no filler: formula, pixel filtering, output shape, and error condition. The metric definition is front-loaded and the return format follows logically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description lists the exact JSON fields returned. Both required parameters are documented, the sampling behavior is specified, and the only obvious error case (mono view) is stated. For a simple read-only measurement tool with two parameters, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers both parameters with 100% description coverage, so the baseline is 3. The description largely restates the schema's meaning for brightness_threshold and view_id, adding only the sampling behavior rather than new per-parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation (measure chroma), a precise metric formula ((max - min) / max), a target population (bright pixels in a colour view), and an explicit sampling rule (every 8th pixel). This clearly differentiates it from sibling measurement tools and 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is reasonably implied: call this when you need chroma statistics from bright pixels of a colour view, and the description explicitly warns that a mono view is an error. However, it does not compare against similar siblings such as measure_saturation or measure_uniformity, nor does it state when one should be chosen over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_clipped_blocksA
Count image blocks with pixels above a level. Tiles the image in block_size px blocks and samples every 3rd pixel; a sample counts when its luminance or any channel is above level, and a block counts when more than block_fraction of its samples do. Returns JSON: blocks_over, total_blocks, locations (up to 10 counted blocks in descending fraction order: x, y, fraction). luminance is 0.2126R + 0.7152G + 0.0722B.
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | Pixel level; a sample whose luminance or any channel is above it counts | |
| view_id | Yes | View to measure | |
| block_size | No | Block edge in pixels (default 50) | |
| block_fraction | Yes | Fraction of a block's samples (0-1) that must be above level for the block to count |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly. It discloses the sampling strategy (every 3rd pixel), the counting condition (luminance or any channel above level), the block_fraction threshold, and the exact JSON return format including the luminance formula. This provides an agent with full visibility into the tool's behavior and approximation nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense paragraph that efficiently conveys the purpose, algorithm, and output. It is front-loaded with the core purpose and then details the method and return format. While not overly long, it packs a lot of information; it could be slightly more structured with bullets but remains readable and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (tiling, sampling, threshold, output), the description covers all essential aspects: the algorithm, the parameters, the output schema (even without an output schema, it explains the JSON fields), and the luminance formula. An agent has everything needed to call this tool correctly and interpret results. No major gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are described. The description adds significant value by explaining how parameters interact: block_size default (50), block_fraction as a 0-1 fraction, and the sampling rule that ties level to the counting condition. This goes beyond the schema's basic descriptions and clarifies the algorithm's dependency on these inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb (count) and resource (image blocks above a level). It distinguishes from sibling measurement tools by specifying the exact counting method and output structure. An agent can immediately understand what this tool does and how it differs from measure_core_clipping or measure_uniformity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the internal algorithm and output but does not explicitly state when to use this tool versus alternatives. It implies usage for detecting clipped or bright regions but lacks guidance on when to prefer it over other measurement tools. There is no 'when not to use' or reference to siblings, leaving the agent to infer the best context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_core_clippingA
Measure how much of the brightest region is above a level. Around the brightest 64 px block (mean luminance), counts pixels with any channel above level in a 128 px box (every 2nd pixel) and a 32 px box (every pixel), both centred on that block and held inside the image. Returns JSON: fraction_above_wide, fraction_above_inner, peak (largest luminance in the wide box), core_center [x, y], wide_box, inner_box. luminance is 0.2126R + 0.7152G + 0.0722B.
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | Pixel level; a pixel with any channel above it is counted | |
| view_id | Yes | View to measure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It thoroughly explains the algorithm: how the brightest block is found, how boxes are sampled (every 2nd pixel vs every pixel), that boxes are centered and clamped to the image, and the exact output fields including the luminance formula. It does not explicitly state it is read-only, but the measurement nature and lack of mutation verbs make this clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and information-rich, with every sentence serving a purpose: defining the measurement, specifying the algorithm, and listing return values. It is not overly verbose, but the technical detail makes it slightly longer than the minimum; still well-organized and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a measurement tool with only two parameters and no output schema, the description is complete: it defines the sampling strategy, the exact return fields, and the luminance formula. An agent can invoke it correctly without additional information, making it self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both level and view_id have descriptive comments. The description adds the luminance formula and algorithmic context but does not materially extend the parameter meanings beyond what the schema already states. Baseline 3 is appropriate as the schema already carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: it measures how much of the brightest region exceeds a given level, with precise algorithmic details (64px block, 128px and 32px boxes, sampling pattern). This distinguishes it from sibling measurement tools like measure_clipped_blocks or measure_highlight_texture, which target different phenomena.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for what the tool measures but does not explicitly compare it to alternatives or state when not to use it. It implies usage for clipping analysis in the brightest region, but an agent would need to infer selection from the tool name and description rather than explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_highlight_textureA
Measure the texture of the bright subject zone. Subject pixels have luminance above median + 5 x (median |luminance - median| on a 32 px grid). The ROI is a circle around the luminance-weighted centroid of compact subject pixels (8 px grid, at least 2 of 4 neighbours 3 px away also subject), radius = their 90th-percentile distance held to [50 px, 0.45 x min(width, height)]. The shell zone is the P20..P92 band of the subject pixels in the ROI (every 4th pixel). local_stddev = median luminance stddev of 16 px blocks in the ROI whose samples are at least 40% shell; tonal_span = P90 - P10 of the shell pixels; gradient_energy = mean Sobel energy on shell pixels. With reference_id, the reference is measured over the same ROI and retention is current / reference for each value (null where the reference value is at most 0.0001, or 0.001 for tonal_span). Returns JSON: current, reference, retention, shell_zone, roi, shell_pixel_count, block_count. Fewer than 100 subject pixels in the ROI of either view is an error. luminance is 0.2126R + 0.7152G + 0.0722B.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | View to measure | |
| reference_id | No | Optional second view measured over the same ROI, for the retention ratios |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description fully discloses the operation: subject-pixel criteria, ROI construction, shell-zone definition, metric formulas, reference-handling behavior, error thresholds, and the luminance formula. This goes well beyond a simple 'measure texture' statement and leaves little hidden behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, and every subsequent sentence provides a necessary computational detail. The description is long, but the algorithmic complexity justifies its length; there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description lists the returned JSON keys, explains the reference/retention semantics, and states the error condition. Some minor ambiguity remains about how 'current' maps to the three metrics, but the description is sufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters completely, so the baseline is 3. The description adds material meaning for reference_id by specifying that the reference is measured over the same ROI and that retention ratios are computed with null-rules, and it also clarifies the error condition involving either view. This exceeds the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and target: 'Measure the texture of the bright subject zone.' It then enumerates exact metrics and a precise subject-pixel definition, so an agent can tell what resource is being measured. However, it does not explicitly differentiate this from sibling measurement tools such as measure_subject_detail or measure_sharpness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternative measurement tools, nor are there exclusions or prerequisites. The algorithmic detail implies a bright-zone texture context, but there is no explicit selection heuristic for an agent to follow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_ringingA
Measure concentric oscillation around the brightest region. The centre is the middle of the brightest 64 px block (mean luminance); the radial luminance profile is averaged over 36 angles for radii 1..150 px (held inside the image). Along the profile, derivatives within ±0.001 carry no sign; at each sign change the summed |derivative| of the run it ends is its amplitude, and it is counted when that amplitude is above min_amplitude. Returns JSON: oscillations, max_amplitude (of the counted ones), center [x, y], profile_sample (the profile at radii 1..30). luminance is 0.2126R + 0.7152G + 0.0722B.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | View to measure | |
| min_amplitude | Yes | Amplitude (summed |derivative| of a run) above which a sign change is counted as an oscillation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the algorithm step-by-step (centre definition, radial profile, sign-change counting), output JSON structure, and the luminance formula. However, it does not explicitly state that the tool is read-only or has no side effects, though 'measure' implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and logically ordered: purpose, algorithm, output, formula. Each sentence carries technical substance with no filler, though it is longer than strictly necessary. The main purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully explains the algorithm and return values (oscillations, max_amplitude, center, profile_sample), compensating for the lack of an output schema. It does not cover edge cases (e.g., empty region, brightness threshold) or failure modes, but given the tool's complexity, it is comparatively complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant meaning beyond the schema: it explains min_amplitude as 'summed |derivative| of a run' and how it filters oscillations, and clarifies view_id as the target image. This algorithmic detail is not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Measure concentric oscillation around the brightest region.' It provides detailed algorithmic context, but does not explicitly differentiate from sibling tools like measure_stars or measure_sharpness, leaving some ambiguity about when this specific measurement is intended.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus its many siblings (e.g., measure_uniformity, measure_core_clipping). No exclusions or alternative routing are mentioned; usage context must be inferred from the name and algorithm.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_saturationA
Measure HSV saturation, (max - min) / max, of subject pixels of a colour view: every 8th pixel whose luminance is above the luminance of the channel medians + 5 x (median |luminance - that| on a 32 px grid). Returns JSON: median, p90, p99, max, subject_pixel_count. A mono view is an error. luminance is 0.2126R + 0.7152G + 0.0722B.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | Colour view to measure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does so by disclosing the exact sampling strategy, luminance formula, output JSON fields, and error condition for mono views. It does not explicitly state it is read-only, but 'Measure... Returns JSON' strongly implies no mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two dense sentences with no filler. Every clause provides necessary technical detail: formula, sampling, output, error condition, and luminance coefficients.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so listing the exact JSON fields is essential and provided. The error condition, sampling rule, and formula fully equip an agent to invoke and interpret the result for a single-argument tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter view_id already has a basic description. The tool description adds meaningful semantics: the view must be a colour viewcars and mono views are invalid, which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Measure HSV saturation' of subject pixels in a colour view. It includes the exact formula and the return values, making it clearly distinct from sibling measurement tools like measure_bright_chroma or measure_uniformity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states this applies to colour views only and that a mono view is an error, which is a strong when-not signal. It does not explicitly name sibling alternatives, so guidance on when to prefer this over measure_bright_chroma or measure_subject_detail is absent, but the technical definition gives sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_sharpnessA
Measure sharpness as the mean Sobel gradient energy (gx² + gy²) of luminance over every 4th pixel of a region. The region is roi_x/roi_y/roi_w/roi_h when all four are given (it must lie inside the image), else the central half of the image in each dimension. Returns JSON: sharpness, samples, roi {x, y, w, h}. luminance is 0.2126R + 0.7152G + 0.0722B.
| Name | Required | Description | Default |
|---|---|---|---|
| roi_h | No | Region height in pixels | |
| roi_w | No | Region width in pixels | |
| roi_x | No | Region left edge in pixels (all four ROI values together, or none: the central half) | |
| roi_y | No | Region top edge in pixels | |
| view_id | Yes | View to measure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure: it names the exact algorithm, the pixel sampling strategy, ROI fallback behavior, output JSON structure, and luminance weighting. This is far more transparent than typical tool descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences deliver the formula, ROI behavior, and return format without redundancy. Critical information is 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a measurement tool with no output schema and no annotations, the description is complete: algorithm, sampling, ROI semantics, constraints, and return fields are all specified. Nothing essential is missing for correct invocation and interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds genuine meaning by explaining that ROI parameters must all be provided together or omitted for the central-half default, and that the region must lie inside the image.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Measure sharpness' via a precise formula (mean Sobel gradient energy). It also clarifies the region selection rules eliminating ambiguity against other measure_* sibling tools like measure_uniformity 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's purpose clearly implies when to use it: when sharpness of a region or central half is needed. However, it does not explicitly compare to sibling tools or state when not to use it, leaving alternatives to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_star_layerA
Measure a star layer (a mostly black view holding stars). Over every 4th pixel whose largest channel is above 0.005 (nonzero_pixel_count), reports the fraction whose largest channel is above each of the given levels, the interquartile range of their HSV saturation (color_diversity), and the median (max - min) / max of the 20 brightest by R+G+B (bright_star_chroma). Also the largest channel value (max) and the image median (the mean of the channel medians for colour). Returns JSON: max, median, fraction_above {level: fraction}, color_diversity, bright_star_chroma, nonzero_pixel_count.
| Name | Required | Description | Default |
|---|---|---|---|
| levels | Yes | Pixel levels; for each, the fraction of star pixels whose largest channel is above it is reported | |
| view_id | Yes | Star layer view to measure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and succeeds: it discloses the subsampling scheme ('every 4th pixel'), the selection threshold ('largest channel ... above 0.005'), the precise diversity and chroma formulas, and the exact JSON return fields. No contradiction with annotations since none exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and nearly every clause earns its place given the tool's six outputs. However, the opening sentence is a long run-on with nested parentheticals; tighter sentence structure would merit a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description rightly specifies the full return JSON, the sampling behavior, and the metric definitions, so an agent can call the tool correctly from text alone. Minor gaps remain: expected value range for levels and prerequisites for producing a star layer are not stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds only modest param-level meaning: it ties levels to the fraction_above {level: fraction} output key structure, but otherwise largely restates what the schema already says about view_id and levels.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Measure') and a defined resource ('a star layer (a mostly black view holding stars)') and enumerates the exact metrics computed: fraction above levels, color_diversity, bright_star_chroma, max, and median. The algorithmic specificity distinguishes it from the sibling measure_stars without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The star-layer definition implies the intended input context, but the description never states when to choose this tool over siblings like measure_stars, measure_sharpness, or measure_bright_chroma, and gives no exclusions or alternatives. Usage context is present only implicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_starsA
Measure the stars of a view by pixel sampling. Candidates are local maxima of luminance found by a 16 px grid scan above median + 5 x MAD, refined within 5x5, de-duplicated within 20 px (at most 100 kept); the 30 brightest are measured. FWHM of a star = 2 x the mean radius, over the four axis directions (up to 10 px), where luminance drops below half its peak, located to a fraction of a pixel by linear interpolation between the samples either side; colour diversity of a star = max - min of its peak RGB divided by the largest channel. Returns JSON: median_fwhm_px, color_diversity (median), stars_found, stars_measured, median_peak, p25_peak, background_median, star_background_contrast (median_peak / background_median, 0 when background_median <= 0.001), and up to 10 samples of each. luminance is 0.2126R + 0.7152G + 0.0722B.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | View to measure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the sampling method, thresholds, de-duplication, FWHM calculation, color diversity, and the exact return fields. It lacks explicit side-effect or error info but is highly transparent about its process and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but each sentence adds necessary technical detail. The purpose is front-loaded, followed by a logical breakdown of the algorithm and return values. It is dense but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description is exceptionally complete. It defines the algorithm, thresholds, return fields, and even the luminance formula, leaving no ambiguity for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes view_id as 'View to measure' with 100% coverage. The description does not add any extra semantics, format constraints, or usage hints for this parameter. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Measure the stars of a view by pixel sampling' with a specific verb and resource. It goes further to describe the exact algorithm, distinguishing it from sibling measurement tools like measure_star_layer or measure_ringing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention conditions, exclusions, or trade-offs. An agent would have to infer its use case from the technical details alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_subject_detailA
Measure subject brightness, detail and contrast. The image is split into 32 px blocks; a block is subject when its luminance median is above median + 8 x 1.4826 x MAD. subject_brightness = median of subject block medians; background_median = median of the other block medians; contrast_ratio = subject_brightness / background_median (0 when that is at most 0.001); detail_score = mean Sobel energy of luminance over every 4th pixel of up to 50 subject blocks; subject_count = subject blocks; subject_threshold = median + 3 x 1.4826 x MAD. Returns JSON: subject_brightness, detail_score, contrast_ratio, subject_count, background_median, subject_threshold. luminance is 0.2126R + 0.7152G + 0.0722B.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | View to measure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden and delivers extensively: the 32px block segmentation, the subject-selection threshold (median + 8 × 1.4826 × MAD), exact formulas for every metric, the contrast_ratio edge case (0 when at most 0.001), the returned JSON keys, and the Rec. 709 luminance weights. This is far beyond what annotations would typically provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, followed by a methodical progression: algorithm, metric definitions, edge case, return format, luminance formula. Every sentence earns its place for a tool this complex, though the density of mathematical detail (constants, Sobel sampling, formula chains) pushes it near the upper bound of length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no annotations and no output schema, the description is complete: it defines the computation, handles edge cases, enumerates all six JSON return values, and gives the luminance formula needed to interpret results. An agent can invoke the tool and correctly interpret its output with nothing else.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single view_id parameter, so the schema already documents what it is ("View to measure"). The description adds no additional per-parameter meaning, but with full coverage the baseline of 3 is appropriate — nothing critical is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence "Measure subject brightness, detail and contrast" pairs a specific verb with a specific resource, and the algorithmic detail (subject vs. background blocks) makes it unmistakably distinct from sibling tools like measure_stars, measure_sharpness, and measure_uniformity. An agent can tell exactly what this tool quantifies and which siblings it does not overlap with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied through the metric definitions — an agent can infer this tool is for subject/background analysis, not star measurement or sharpness measurement. However, with roughly ten measure_* siblings, the description never explicitly states when to choose this tool or names alternatives to exclude, leaving routing to inference rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_tonal_presenceA
Measure subject and background tones. Every 8th pixel is subject when its luminance is above the background (luminance of the channel medians) + 5 x (median |luminance - background| on a 32 px grid) and at least 2 of its 4 neighbours 3 px away are too; every other sample is background. separation = subject median / background median; core_brightness = mean of the brightest 5% of subject samples; core_to_disk = core_brightness / subject median; faint_structure_visibility = (subject P10 - background P90) / background P90; subject_fraction = subject samples / all samples; roi_mode is compound_roi when a second luminance-weighted cluster, outside 0.15 x width of the centroid and holding over 15% of the weight, lies more than 0.25 x width away, else single. Denominators are held to at least 0.001. Returns JSON: separation, subject_median, background_median, core_brightness, faint_structure_visibility, core_to_disk, subject_fraction, roi_mode, subject_pixel_count. luminance is 0.2126R + 0.7152G + 0.0722B.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | View to measure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does an unusually thorough job: it specifies pixel classification thresholds, all output metrics, denominator clamping, and the exact luminance formula. The only gap is that it never explicitly states whether the operation is read-only or modifies the view, which is relevant given annotations are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence carries substantive algorithmic content; it is front-loaded with the core purpose and then systematically details the calculation. It could be more readable with structure, but for the complexity involved there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully enumerates return fields, defines formulas, handles edge cases like denominators clamped to 0.001, and specifies the luminance formula, compensating for the lack of an output schema. It is incomplete only in not stating prerequisites or when to select this tool among the extensive sibling measurement family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single parameter view_id by describing it as 'View to measure', so the baseline is 3. The description adds no additional parameter-level guidance, such as whether the view must be open or what type of image is expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Measure subject and background tones', and then provides a precise algorithm and metric definitions. It does not explicitly contrast itself with sibling measurement tools, but the subject/background framing and metric names make the tool's function reasonably unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for measuring tonal separation between subject and background, but it gives no explicit guidance on when to use this tool versus the many sibling measure_* tools, nor any prerequisites or exclusions. An agent would have to infer selection criteria from the algorithm alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_uniformityA
Measure background uniformity via 4-corner median stddev. Lower score means more uniform.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | PixInsight view ID | |
| sample_size | No | Corner sample size in pixels (default 200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden Committee. It goes beyond the schema by explaining the computation method ('4-corner median stddev') and the score direction ('Lower score means more uniform'). However, it does not disclose failure modes, return format details, or explicitly confirm read-only behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core purpose and score interpretation are front-loaded, and every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple two-parameter measurement, and the description covers what is measured, the method, and how to interpret the result. The lack of an output schema is partly offset by the word 'score', though an explicit return-type note would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both view_id and sample_size are already documented. The description does not add meaning beyond the schema; it merely implies the corner-sampling context that the schema already states for sample_size.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Measure'), a clear resource ('background uniformity'), and a distinctive method ('4-corner median stddev'). This distinguishes it from sibling measurement tools such as measure_stars, measure_ringing, and measure_sharpness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over the many other measure_* siblings, nor any preconditions like needing an open view. The intended use is only implied by the tool name and the phrase 'background uniformity'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
multi_scale_enhanceA
Masked three-scale LocalHistogramEqualization on a view, in one call, with an optional HDRMultiscaleTransform pass. The mask is the image lightness (CIE L* for colour, the image itself for mono) mapped as max((L - mask_clip_low) / (1 - mask_clip_low), 0), raised to the power 1/mask_gamma and blurred with a Gaussian of sigma mask_blur (0 = no blur). LHE then runs at the large, mid and fine radius in that order through the mask; the large and mid scales use lhe_slope_limit, the fine scale lhe_fine_slope_limit; other LHE parameters are PixInsight's defaults. Giving hdrmt_layers adds an HDRMultiscaleTransform pass through the same mask. The mask is closed afterwards. Reports a detail score before and after: the mean squared Sobel gradient of luminance (Rec.709 weights) over pixels brighter than median + 8 x 1.4826 x MAD, sampled every 8 pixels.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | View ID to enhance (modified in place) | |
| mask_blur | Yes | Gaussian blur sigma of the mask in pixels (0 = no blur) | |
| mask_gamma | Yes | Mask gamma: the rescaled mask is raised to the power 1/mask_gamma (1 = unchanged) | |
| hdrmt_layers | No | HDRMultiscaleTransform number of layers. Giving it runs the HDRMT pass; omitted, no HDRMT runs | |
| mask_clip_low | Yes | Lightness mapped to 0 in the mask; values above it are rescaled to 0-1 | |
| hdrmt_inverted | No | HDRMT inverted iterations (needs hdrmt_layers; omitted = PixInsight default) | |
| lhe_mid_amount | Yes | Mid-scale LHE amount, 0 to 1 | |
| lhe_mid_radius | Yes | Mid-scale LHE kernel radius in pixels | |
| lhe_fine_amount | Yes | Fine-scale LHE amount, 0 to 1 | |
| lhe_fine_radius | Yes | Fine-scale LHE kernel radius in pixels | |
| lhe_slope_limit | Yes | LHE contrast slope limit of the large and mid scales | |
| hdrmt_iterations | No | HDRMT number of iterations (needs hdrmt_layers; omitted = PixInsight default) | |
| lhe_large_amount | Yes | Large-scale LHE amount, 0 to 1 | |
| lhe_large_radius | Yes | Large-scale LHE kernel radius in pixels | |
| hdrmt_to_lightness | No | HDRMT toLightness: on a colour image, apply the transform to the lightness only (needs hdrmt_layers; omitted = PixInsight default) | |
| lhe_fine_slope_limit | Yes | LHE contrast slope limit of the fine scale | |
| hdrmt_median_transform | No | HDRMT median transform instead of the wavelet transform (needs hdrmt_layers; omitted = PixInsight default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and exceeds it: it gives the exact mask formula using mask_clip_low, mask_gamma and mask_blur; describes the scale order and slope-limit assignment; explains the optional HDRMT pass; discloses that the mask is closed afterwards; and even specifies the Sobel-gradient detail score calculation. This is far beyond a generic 'enhances 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense, front-loaded paragraph: the core purpose is stated in the first sentence, then each subsequent sentence adds necessary algorithmic detail—mask construction, LHE scale behavior, optional HDRMT, mask closing, and the detail score. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter tool with no annotations and no output schema, this description is highly complete: it covers the algorithm, mask side effects, and the scoring behavior. The main gaps are that it does not specify the format in which the detail score is returned nor prerequisites such as the view needing to be open, but these are minor against the overall depth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds relational value by tying mask_clip_low, mask_gamma and mask_blur into a concrete formula, assigning lhe_slope_limit to large/mid scales and lhe_fine_slope_limit to the fine scale, and clarifying that hdrmt_layers triggers the HDRMT pass. Some HDRMT-specific parameters remain schema-only, which is acceptable given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Masked three-scale LocalHistogramEqualization on a view, in one call, with an optional HDRMultiscaleTransform pass,' which is a specific verb-resource pairing and immediately distinguishes it from sibling tools like run_lhe and run_hdrmt by emphasizing the composite, masked, multi-scale nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when a masked three-scale LHE with optional HDRMT is desired in a single call—but never explicitly names alternatives or exclusion criteria. The phrase 'in one call' hints at a separate-call alternative, but there is no direct routing guidance like 'for single-scale LHE use run_lhe.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_imageA
Open an XISF/FITS image file in PixInsight. Returns the view ID assigned by PixInsight. Automatically closes any crop_mask windows that come with XISF files.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the image file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses the return value and the notable side effect of automatically closing crop_mask windows that come with XISF files, adding value beyond the bare purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundant wording. The primary action is front-loaded, and the important side effect is included without extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one parameter and no output schema, the description is complete: it states what to provide, what happens, and what the agent will receive in return. No critical operational behavior is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the only parameter, file_path, is already documented as an absolute path. The description adds the supported file formats (XISF/FITS), but otherwise adds little beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('open'), resource ('XISF/FITS image file in PixInsight'), and the return value (view ID). This clearly distinguishes it from siblings like close_image, clone_image, and export_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: load an image file before further processing in PixInsight. However, it does not explicitly state when to choose this over alternatives or mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pixelmath_new_imageA
Run PixelMath to create a NEW image from expressions that reference other open views by id. Color "rgb" takes red/green/blue expressions; color "gray" takes a single expression. The new image is truncated to [0,1]; the reply gives, per channel, the fraction of samples that were below 0 or above 1 before truncation. When size_from has an astrometric solution it is copied onto the new image (same geometry), unless copy_astrometric_solution is false. View ids used inside expressions must be simple identifiers (rename_view renames a view). No pow() — use exp(exponent*ln(base)) or the ^ operator.
| Name | Required | Description | Default |
|---|---|---|---|
| red | No | Red channel expression (color "rgb") | |
| blue | No | Blue channel expression (color "rgb") | |
| color | Yes | ||
| green | No | Green channel expression (color "rgb") | |
| symbols | No | PixelMath symbols; constants only, e.g. "k=0.3". Symbols cannot hold images: write image expressions inline. | |
| output_id | Yes | Id for the new image | |
| size_from | Yes | A view whose width and height the new image copies | |
| expression | No | Single expression for color "gray" | |
| copy_astrometric_solution | No | Copy size_from's astrometric solution onto the new image when it has one |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: output is truncated to [0,1], the reply reports per-channel fraction of pre-truncation out-of-range samples, the astrometric solution is copied only when size_from has one (and only unless copy_astrometric_solution is false), view ids must be simple identifiers, and pow() is unavailable. These are exactly the behavioral facts an agent cannot infer from schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information-dense and front-loaded, with the tool's core action first and constraints after. It is a single long paragraph of interrelated clauses rather than a run-on, but the lack of any structural break makes it heavier to scan than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no output schema, the description supplies the return information (per-channel clipping fractions) and the key behavioral caveats, so an agent can call it correctly. It does not say what happens on failure (e.g., bad expression or unknown size_from) or whether the new image is opened/shown.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 89%, so the baseline is 3, and the description adds real meaning on top: which parameters pair with which color mode, the semantics of size_from's astrometric propagation, and that symbols may hold constants only. It does not explain expression syntax operators beyond the pow() caveat or the exact meaning of each channel expression.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run PixelMath to create a NEW image from expressions that reference other open views by id'), which separates it from run_pixelmath, run_pjsr, and the measure_* siblings at a glance. The 'NEW image' framing tells an agent this constructs a view rather than modifying one in place.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description covers in-tool conditions (color 'rgb' takes red/green/blue, color 'gray' takes a single expression) and constraints on expression syntax, but never says when to choose this tool over the sibling run_pixelmath or run_pjsr. Usage is implied by the expressions-and-new-image framing rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pixinsight_infoA
Report the resolved PixInsight installation paths for this platform and the connector version. Read-only. For live process status, use the doctor command.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the safety burden, and it explicitly labels itself 'Read-only.' It does not describe error cases or whether PixInsight must be installed, but for a zero-argument informational probe this is a meaningful and sufficient behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no waste. The core purpose is front-loaded, the read-only guarantee is immediate, and the alternative-tool pointer is kept to a single clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, zero-parameter tool with no output schema, the description tells an agent everything needed to invoke it correctly: the result content, the read-only nature, and the neighboring live-status case. Nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty and parameter coverage is 100%, so there are no parameters to document. The description adds useful context by stating what is reported (paths and connector version), which is the full semantic picture for a no-argument call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Report') and resource ('resolved PixInsight installation paths... and the connector version'). This clearly differentiates it from the many image-processing sibling tools and from the workspace-oriented info tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly redirects one relevant alternative case: 'For live process status, use the doctor command.' This tells an agent when not to use this tool and names the intended alternative, matching the best-practice pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_maskB
Remove the current mask from a view.
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | Target view ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the mask is removed, implying a destructive action, but does not disclose prerequisites (e.g., whether a mask must exist), side effects, reversibility, or what happens if no mask is present. This is minimal behavioral transparency for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. The action and object are front-loaded, and it is appropriately sized for the simplicity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description is minimally viable but leaves gaps. It doesn't mention what happens if no mask exists, whether the view must have a mask, or any error conditions. These gaps are notable because the description is the sole source of behavioral context, but they are not severe enough to make the tool unusable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the only parameter target_id is already described as 'Target view ID'. The description adds no additional meaning beyond the schema, but with full schema coverage, a baseline of 3 is appropriate – the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and the resource ('current mask from a view'), which is specific and unambiguous. However, it does not explicitly distinguish this from the sibling tool close_mask, which might also be interpreted as removing a mask from a view, so it lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as close_mask or apply_mask. The description only states what the tool does, leaving the agent to infer the appropriate context without any explicit conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_viewA
Rename an image view to a different view ID. Long XISF names can cause some PixInsight processes to fail.
| Name | Required | Description | Default |
|---|---|---|---|
| new_id | Yes | New view ID (no spaces) | |
| old_id | Yes | Current view ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action and a motivation for renaming, but does not disclose side effects, reversibility, error conditions, or the return value. For a mutation tool, this is a notable omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with two short sentences. The primary action is front-loaded, and the second sentence provides useful context about the purpose of renaming. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple rename tool with only two string parameters, the description covers the core purpose and a reason to use it. However, without annotations, it lacks details about required preconditions (e.g., view must be open), potential failure modes, or what happens after renaming. It is minimally complete but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters already described ('Current view ID' and 'New view ID (no spaces)'). The description adds no additional semantic information beyond restating the renaming action, so it meets the baseline but does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'rename' and the resource 'image view', specifying the action as changing the view ID. No sibling tool appears to offer a rename operation, so it stands out on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains a specific context for using the tool: long XISF names can cause some PixInsight processes to fail, implying renaming might help avoid this. However, it does not explicitly state when to use it vs. alternatives or provide exclusions, leaving some usage decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reproject_to_referenceA
Resample a plate-solved image onto the pixel grid of another plate-solved image, using the two astrometric solutions (PixInsight's astrometric reprojection): the result has the reference's size and solution and comes from a single interpolation of the source. Use it to bring a master from another telescope or session onto a reference grid; both views need a solution (run_plate_solve). The source is not changed; the result is a new 32-bit float view (output_id, default _reprojected). It reports the size, the time and whether the result is empty (the two fields do not overlap). Registration accuracy is set by the two solutions, so check the star-centroid residual of the result against the reference.
| Name | Required | Description | Default |
|---|---|---|---|
| clamp | No | Clamping threshold of the Lanczos and bicubic interpolations, 0 to 1 (default 0.3) | |
| view_id | Yes | Source view to reproject (needs an astrometric solution) | |
| output_id | No | View ID of the result (default <view_id>_reprojected) | |
| reference_id | Yes | View whose size and astrometric solution the result takes (needs an astrometric solution) | |
| interpolation | No | Pixel interpolation (default Lanczos3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it states the source is not changed, the result is a new 32-bit float view with a default naming convention, and the call reports size, time, and whether the result is empty when fields do not overlap. It also flags the accuracy caveat (registration set by the solutions; verify residual against the reference).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information is front-loaded (what it does, then when to use, then side effects), and every sentence adds something. It is dense but slightly over-packed into the first long sentence with nested parentheticals.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema mutation-of-a-new-view tool, the description covers prerequisites, side effects, defaults, and a summary of returned facts. It stops short of describing the return structure in detail, though the reported fields are named.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including defaults and the interpolation enum. The description adds only a behavioral note that the result comes from a single interpolation of the source, and says nothing about clamp or the enum choices beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a precise verb and resource (resample onto another image's pixel grid via the two astrometric solutions) and clarifies the outcome (result takes the reference's size and solution). It does not explicitly contrast with siblings like align_to_reference or resample_image, so an agent still has to infer the boundary between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case (bring a master from another telescope/session onto a reference grid) and a hard prerequisite (both views need a solution, run_plate_solve). It names no exclusion or alternative tool, so the when-not side is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resample_imageA
Change an image's pixel dimensions. mode "integer": IntegerResample by a whole factor (factor 2 bins 2x2 into one pixel with the given downsampling combination; enlarge: true multiplies the size instead). mode "scale": Resample by a relative factor (0.5 halves each side). mode "to_reference": Resample to exactly the width and height of reference_id. Runs in place, or on a copy named output_id that carries the keywords, astrometric solution and view properties. FITS keywords are kept. PixInsight removes the astrometric solution in these processes; the result states whether a solution was present before and after. Runs without the geometry confirmation dialog (noGUIMessages).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | integer (IntegerResample), scale (Resample by a factor) or to_reference (Resample to reference_id's size) | |
| factor | No | integer: whole bin/zoom factor >= 2. scale: relative size factor > 0 | |
| enlarge | No | integer mode: multiply the size by factor instead of dividing it (default false) | |
| view_id | Yes | View to resample | |
| output_id | No | Resample a copy with this view id instead of the view itself | |
| downsampling | No | integer mode: how binned pixels combine (default Average) | |
| reference_id | No | to_reference: the view whose width and height the result takes | |
| interpolation | No | scale / to_reference: Resample interpolation; omitted, PixInsight's default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses that it runs in place or on a copy (output_id) that carries keywords/solution/view properties, that FITS keywords are kept, that PixInsight removes the astrometric solution and reports its before/after presence, and that the geometry dialog is suppressed (noGUIMessages). This is rich, mutation-relevant detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and in-place/copy distinction are front-loaded, and every sentence carries information (mode semantics, side effects, astrometric behavior). It is a dense single block rather than cleanly sectioned, which keeps it just short of top marks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no output schema, the description covers modes, in-place vs copy behavior, preservation of keywords, astrometric-solution removal, and even what the result reports. Minor gaps remain (no pagination/return-structure concerns here, but interpolation choice reasoning against siblings is absent), so a 4.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond the schema: 'factor 2 bins 2x2 into one pixel with the given downsampling combination' concretizes integer mode, and 'enlarge: true multiplies the size instead' clarifies direction semantics the schema only states tersely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb+resource ('Change an image's pixel dimensions') and names the three operating modes, each with a concrete behavior (2x2 binning, relative factor, match reference size). An agent can distinguish this from crop_image, reproject_to_reference, and align_to_reference from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what each of the three modes does, which helps an agent pick a mode, but it never states when to prefer this tool over siblings like crop_image or reproject_to_reference, nor any prerequisites. Mode selection guidance is present; tool-vs-alternative guidance is not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_from_cloneA
Restore an image from a backup clone, replacing all changes since the clone was made.
| Name | Required | Description | Default |
|---|---|---|---|
| clone_id | Yes | Clone view ID to restore from | |
| target_id | Yes | Target view ID to overwrite |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing destructive behavior. 'Replacing all changes since the clone was made' clearly signals that the target image will be overwritten, which is essential safety information for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence states the action, source, and consequence with no wasted words. It is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive operation with no output schema, the description plus schema provide adequate context: what happens, which parameters are needed, and what the effect will be. Minor lack of explicit alternative guidance prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters are already documented in the input schema. The description adds no additional meaning beyond identifying the operation's overall purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Restore'), the resource ('an image'), and the source ('a backup clone'), while distinguishing it from sibling tools like clone_image. The phrase 'replacing all changes since the clone was made' adds a precise outcome.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: restore when you want to revert an image to a previously cloned state. However, it does not explicitly name alternatives or state when not to use it, leaving the routing decision partially inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_star_colorA
Restore the colour ratios of a reference view in the bright areas of a target, in place, keeping the target's luminance. Per channel: restored = min(reference[c] * Lt / max(Lr, 0.001), max_value), where Lt and Lr are the target's and the reference's channel means; it is weighted in linearly from 0 at reference luminance restore_start to 1 at restore_end. Runs as 64-bit PixelMath truncated to [0,1]; reports the target's median and max before and after.
| Name | Required | Description | Default |
|---|---|---|---|
| max_value | Yes | Upper cap on each restored channel | |
| target_id | Yes | RGB view to modify in place | |
| pre_star_id | Yes | Reference RGB view whose colour ratios are restored (open, same dimensions) | |
| restore_end | Yes | Reference luminance at and above which the restored colour fully replaces the target; greater than restore_start | |
| restore_start | Yes | Reference luminance at and below which the target is unchanged |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It fully delivers: it states the in-place mutation, the exact per-channel formula, linear weighting behavior, 64-bit PixelMath execution, truncation to [0,1], and the reporting of median/max before and after. This gives an agent a complete behavioral model beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause earns its place: purpose, formula, weighting, numeric precision, and reporting. It is front-loaded with the core action and then clarifies mechanics, making it efficient without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description is remarkably complete. It covers inputs, the algorithmic transformation, edge-case behavior, execution mode, and observable output (before/after stats). An agent has enough information to invoke the tool correctly and interpret its side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though schema coverage is 100%, the description adds significant semantic depth by tying parameters directly into the formula: max_value as the upper cap, restore_start and restore_end as the linear weighting range, and target_id/pre_star_id as the target and reference. It also explains edge behavior, such as the max(Lr, 0.001) denominator, which is not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Restore'), the resource ('the colour ratios of a reference view'), and the precise scope ('in the bright areas of a target'), while also noting it is in-place and preserves luminance. This clearly distinguishes it from generic tools like run_pixelmath and from other star-related tools by specifying the exact operation and domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: when you need to restore reference color ratios in bright areas while keeping the target's luminance. It does not explicitly name alternatives or provide when-not-to-use guidance, so it falls short of a 5, but the context is unambiguous enough for selection among the large sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_bridgeA
Allow PixInsight commands again after the user pressed Pause/Abort. Call ONLY when the user explicitly tells you to continue.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden for behavioral disclosure. It indicates that the tool resumes command execution after a pause/abort, which is a behavioral state change. However, it doesn't disclose side effects (e.g., whether queued commands resume automatically) or any potential state changes beyond enabling commands. A clearer note on what exactly resumes would be more helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief yet information-dense: two sentences, each earning its place. The first defines the action and context, the second specifies the prerequisite. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, state-transition tool with no output schema, the description is nearly complete. It explains the trigger condition and the effect. The only minor gap is that it doesn't describe what the user should expect after the call (e.g., a confirmation or how to verify that commands are enabled again), but given the simplicity, this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema correctly shows an empty object with 100% coverage. The description doesn't need to add parameter meaning since there are none, and it implicitly confirms that. This is a clear case where the baseline 4 is appropriate for no-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('allow') and a specific resource ('PixInsight commands'), and clarifies it is a resume operation after a pause/abort. It distinguishes itself from the broader set of process-control tools, though it doesn't name a specific sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage guidance: 'Call ONLY when the user explicitly tells you to continue,' which clearly sets the condition. It doesn't explicitly mention when not to use it beyond caveating the condition, but that is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
robust_median_stretchA
Stretch a linear view in place so its median lands on target_median. Per pass: from the median M and the unnormalized median absolute deviation D of the image (range clipping off, alpha excluded), sigma = 1.4826·D and the black point c0 = max(0, M − black_point_sigma·sigma); samples are rescaled to u = clamp((x − c0)/(1 − c0), 0, 1), and the midtones transfer function MTF(m, u) = (m − 1)·u / ((2m − 1)·u − m) is applied with the balance m solved so that MTF(m, u(M)) = target_median exactly. linked true takes one set of statistics over all channels jointly; false takes them per channel. Each further pass repeats this on the previous output, re-measuring the statistics; passes before the last run on a scratch copy, so the view is written once and is left unmodified when any pass cannot be solved (a median on the black point, e.g. D = 0). With highlight_knee h and highlight_midtones mh, values y above h become h + (1 − h)·MTF(mh, (y − h)/(1 − h)) after the last pass. The result is JSON: per pass and per statistics group M, D, sigma, c0, the rescaled median xbar and m.
| Name | Required | Description | Default |
|---|---|---|---|
| linked | No | Colour images only, required for them: true = joint statistics over all channels and one transform for all; false = statistics and transform per channel. Ignored for a grayscale image. | |
| passes | No | Number of times the whole procedure runs, each on the previous output (>= 1; omitted = 1) | |
| view_id | Yes | View to stretch (modified in place) | |
| target_median | Yes | Median of the output, strictly between 0 and 1 | |
| highlight_knee | No | Output level above which values are compressed, strictly between 0 and 1. Given together with highlight_midtones; omitted = no highlight compression. | |
| black_point_sigma | Yes | Distance of the black point below the median, in units of 1.4826·MAD (>= 0) | |
| highlight_midtones | No | MTF balance applied to the segment above highlight_knee, strictly between 0.5 and 1. Given together with highlight_knee. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so thoroughly. It discloses that the view is modified in place, that passes before the last run on a scratch copy, that the view is left unmodified when any pass cannot be solved (e.g., D = 0), and that the result is JSON with per-pass statistics. It also explains the exact mathematical transform, including the MTF function and highlight compression. This is far beyond what annotations would typically provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and information-rich, with the core purpose front-loaded in the first sentence. Every sentence adds technical detail that an agent needs to understand the algorithm. It is long, but the complexity of the tool justifies the length. It could be slightly more concise by trimming some mathematical notation, but the structure is logical: purpose, algorithm, parameters, edge cases, output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 7-parameter image processing tool with no annotations and no output schema, the description is remarkably complete. It covers the algorithm, parameter semantics, edge cases (D = 0, unsolvable passes), the in-place mutation behavior, the scratch copy behavior, and the JSON return format. An agent could invoke this tool correctly with high confidence based on the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters. The description adds significant meaning beyond the schema: it explains how black_point_sigma relates to sigma = 1.4826·D, how passes interact with the previous output, how linked affects statistics grouping, and how highlight_knee/highlight_midtones are applied after the last pass. The only minor gap is that the description doesn't explicitly restate each parameter's constraints, but the schema already does that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Stretch a linear view in place so its median lands on target_median.' It names the exact operation, the in-place mutation, and the target condition. It also distinguishes itself from siblings like run_curves, auto_stretch, and stretch_stars by describing a precise median-targeting algorithm rather than a generic stretch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the algorithm's behavior in detail, including per-pass statistics, the linked parameter for color vs grayscale, and the highlight_knee/highlight_midtones optional compression. It does not explicitly name sibling alternatives or state when to choose this over run_curves or auto_stretch, but the detailed mathematical behavior gives an agent enough context to know when this tool is appropriate. The 'linked true takes one set of statistics over all channels jointly; false takes them per channel' line is a clear usage condition for color images.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_abeB
Run AutomaticBackgroundExtractor (ABE) on a view, replacing it in place with the corrected result.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | View ID to process | |
| tolerance | No | Sample rejection tolerance (default 1.0) | |
| poly_degree | No | Polynomial degree, 1 to 6 (default 4) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It does disclose that the view is 'replacing it in place', indicating a destructive mutation, which is critical. However, it does not mention potential side effects, reversibility, or any conditions under which the operation might fail. The single disclosed behavior is important but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and side effect. It is efficient with no wasted words. However, it could slightly expand on usage context without sacrificing conciseness, so it loses a point for being too terse in an area that matters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool mutates a view and has no output schema; the description covers the core action and side effect. Yet it lacks usage guidelines and differentiation from sibling tools, which are essential for an agent to decide when to use it. The information is adequate for a trivial call but incomplete for correct selection among similar tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter (view_id, tolerance, poly_degree) already has a textual description. The tool description adds no additional meaning or context for these parameters beyond the schema. Per the rubric, the baseline is 3 when schema coverage is high and the description does not enrich the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs AutomaticBackgroundExtractor (ABE) on a view and replaces it in place, which is a specific verb-resource combination. It distinguishes from siblings like run_per_channel_abe (which processes per channel) and run_bxt (a different background extraction tool). The action and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use ABE versus alternatives such as run_bxt, run_gradient_correction, or run_background_neutralization. It does not mention prerequisites, intended context, or exclusions. An agent cannot determine when this tool is preferred over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_background_neutralizationB
Run BackgroundNeutralization to equalize the background level across channels.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | PixInsight view identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the intended effect but does not disclose that this mutates the target image, whether it is reversible, what happens on failure, or whether it requires a color image. This is a significant transparency gap for a process-invoking tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence and is easy to parse. However, the opening 'Run BackgroundNeutralization' largely repeats the tool name, so it is not maximally economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is simple and the tool is callable with just view_id, but the description lacks behavioral context and does not explain how this relates to sibling background-correction tools. Since there are no annotations or output schema, the description should have done more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: view_id is described as a PixInsight view identifier. The description adds no additional parameter meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run') and resource ('BackgroundNeutralization') with a clear outcome: equalize background level across channels. It is clear about what the tool does, but it does not differentiate it from sibling background-related tools like run_abe or run_gradient_correction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: use this when you need background levels equalized across channels. However, there is no explicit guidance about when not to use it or which alternative to choose among background/gradient-related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_bxtA
Run BlurXTerminator on a view. correct_only applies PSF correction without sharpening; otherwise sharpen_nonstellar and sharpen_stellar control sharpening strength.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | View ID to process | |
| correct_only | No | Correct-only mode: PSF correction with no sharpening | |
| sharpen_stellar | No | Stellar sharpening, 0 to 1 (default 0.50) | |
| adjust_star_halos | No | Star halo adjustment, -1 to 1 (default 0.0) | |
| sharpen_nonstellar | No | Non-stellar sharpening, 0 to 1 (default 0.50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It explains the functional modes (PSF correction vs. sharpening) but does not state whether the operation modifies the view in-place, is reversible, requires specific image conditions, or what the tool returns. It omits side effects and any state changes, which is a significant gap for a process tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The purpose is front-loaded, and the parameter clarification is concise. Every word earns its place, and the structure is efficient for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no output schema, and no annotations, the description leaves important gaps: it does not mention the adjust_star_halos parameter (though the schema covers it), does not state what happens to the view (in-place modification?), whether processing is destructive, or what the expected return value is. An agent would need to infer too much to use this confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by clarifying the conditional relationship: correct_only applies PSF correction without sharpening, and otherwise the sharpen parameters control strength. This helps the agent understand how the boolean and numbers interact, exceeding the schema's isolated definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs BlurXTerminator on a view, and distinguishes it from sibling tools like run_sxt (StarXTerminator) and run_nxt by specifying the exact process. It also names the key mode (correct_only) and the sharpening parameters, making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use correct_only versus the sharpening controls, but it does not explicitly mention when to choose this tool over alternatives such as run_sxt, run_nxt, or other processing tools. There is no exclusion or alternative recommendation, leaving some usage ambiguity in a tool list with many similar process tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_curvesA
Apply a CurvesTransformation to a view. Provide control points as [[x,y], ...] for the desired channel: "RGB" (all), "L" (lightness), "S" (saturation), "R", "G", "B".
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | Control points [[x,y], ...] from (0,0) to (1,1). Include endpoints. | |
| channel | Yes | Channel to apply the curve to | |
| view_id | Yes | View ID to process |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only restates the operation; it does not disclose whether the view is modified in place or a new view is returned, whether the operation is reversible, or what response to expect. With no annotations supplied, the description carries the full burden of behavioral disclosure and does not meet it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action first and the channel/coordinate clarification second. No filler, and each piece of information earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The required inputs are fully covered by the schema and the description, so the agent can form a valid call. However, with no output schema and no annotations, the absence of any statement about return value or side effects leaves a modest but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters, and the description adds useful semantic detail by mapping channel names to meanings ('L' = lightness, 'S' = saturation) and clarifying the coordinate-list format. This goes beyond the bare schema but is not extensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Apply a CurvesTransformation') and a clear target ('to a view'), and the subject matter is distinct from generic sibling process tools. It also enumerates channels, so the agent knows exactly what resource and mode the tool operates on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this over siblings such as run_process, run_pixelmath, or run_lhe. The description does not describe preconditions (e.g., an open view) or conditions under which curves adjustment is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_gradient_correctionB
Run GradientCorrection on a view to remove a background gradient.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | PixInsight view identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says the tool 'removes' a background gradient, which implies mutation, but it does not state whether the view is modified in place, whether the operation is reversible, or what prerequisites exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action and purpose. It contains no filler, repetition of schema details, or unnecessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool the description is minimal, but with no annotations and no output schema, it leaves important operational context uncovered. It does not explain side effects, relationship to alternative gradient-correction tools, or required view state, so an agent could invoke it in the wrong context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single parameter view_id with 100% coverage. The description adds no additional parameter semantics, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Run GradientCorrection on a view to remove a background gradient.' It clearly identifies the operation and its intended outcome. However, it does not explicitly differentiate this from sibling tools like run_abe or run_per_channel_abe that also address background gradients.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to remove a background gradient' provides an implied usage context. There are no explicit when-to-use or when-not-to-use instructions, and no alternatives are named despite many sibling tools that may overlap in purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_hdrmtA
Run HDRMultiscaleTransform on a view. Inverted mode enhances detail; normal mode compresses dynamic range.
| Name | Required | Description | Default |
|---|---|---|---|
| layers | Yes | Number of decomposition layers, 4 to 8 (default 6) | |
| view_id | Yes | View ID to process | |
| inverted | No | Inverted mode (enhances detail instead of compressing) | |
| iterations | No | Number of iterations (default 1) | |
| preserve_hue | No | Preserve hue for color images (default true) | |
| to_lightness | No | Apply to lightness only for color images (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing side effects. It explains mode effects but does not state whether the view is modified in place, whether a new view is created, or whether the operation is reversible. This is a significant gap for a processing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both informative, with the main action first and mode semantics second. There is no filler or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is somewhat thin for a six-parameter processing tool. The schema covers parameters and the description covers the algorithm and mode intent, but side effects and result behavior are left unspecified, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already documented in the schema. The description adds a little semantic context by connecting inverted mode to detail enhancement and normal mode to dynamic-range compression, but does not go beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation, HDRMultiscaleTransform, and its target, a view. It also distinguishes the two modes (inverted vs normal), so an agent can identify the tool's role among many 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mode sentence gives some selection guidance (use inverted for detail enhancement, normal for dynamic-range compression), but there is no explicit statement of when to prefer this tool over alternatives or any exclusions. Usage context is only implied by the algorithm name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_lheA
Run LocalHistogramEqualization (contrast-limited local histogram equalization) on a view. Omitted parameters keep PixInsight's defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Blend of the equalized result with the original, 0 to 1. | |
| radius | No | Kernel radius in pixels. | |
| view_id | Yes | PixInsight view identifier. | |
| slope_limit | No | Contrast slope limit. | |
| circular_kernel | No | Circular kernel (true) or square kernel (false). | |
| histogram_resolution | No | Histogram resolution: 8, 10 or 12 bits. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds the useful fact that omitted parameters use PixInsight defaults, but it does not state whether the view is modified in place, whether a new view is created, whether undo or a preview is involved, or any other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, and the core operation is front-loaded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter process tool with no output schema and no annotations, the description plus the complete schema is sufficient for basic invocation. However, it omits behavioral context such as in-place mutation, output behavior, or prerequisites, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's default-value note adds a useful behavioral hint but does not add per-parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Run'), a specific resource ('LocalHistogramEqualization'), and the target ('a view'), with a clarifying parenthetical. This makes it clearly distinct from the many generic run_* sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the process name: an agent should call this when local histogram equalization is requested on a view. The description does not explicitly state when to prefer this over alternative tools or provide exclusions, but it does add the practical note that omitted parameters fall back to PixInsight defaults.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_mgcA
Run MultiscaleGradientCorrection using the MARS reference database. The image must be plate-solved and linear; a mono image also needs the flux metadata run_spfc writes. For a mono image pass filter (L, R, G, B, Ha, OIII, SII); a mono image without filter is refused, since MGC would then fit its model against a MARS band that is not the image's. For a color image leave it out (R, G, B bands are used). MARS files default to the ones configured in PixInsight.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Mono only. One of L, R, G, B, Ha, OIII, SII | |
| view_id | Yes | View ID to process | |
| mars_files | No | Absolute .xmars paths (default: from PixInsight settings) | |
| show_model | No | Also create the gradient model window | |
| gradient_scale | No | Gradient scale in pixels (default 1024) | |
| model_smoothness | No | Model smoothness (default 1) | |
| structure_separation | No | Structure separation (default 3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the refusal condition for a mono image without a filter, the prerequisite metadata, and the default source of MARS files. It stops short of saying the target view is modified in place or what the returned result is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the operation and its hard prerequisites before the conditional filter rules. The final sentence about MARS defaults lightly repeats the schema default but is not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema process tool with 7 parameters, the description covers prerequisites, conditional parameter behavior, and defaults adequately. The remaining gap is that it never states the target view is mutated in place.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it explains that filter applies to mono only, lists the allowed values, and justifies why omitting it on mono is fatal (band/model mismatch). That reasoning is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ("Run MultiscaleGradientCorrection") and immediately scopes it with the MARS reference database. It does not, however, differentiate itself from the sibling gradient-correction tools (run_gradient_correction, run_abe, run_per_channel_abe), which an agent would need to disambiguate among.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit preconditions are given (must be plate-solved and linear; mono requires flux metadata written by run_spfc), plus a clear when-to-pass-filter rule for mono vs color and a stated refusal case with the reason behind it. This is close to a complete routing guide for the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_nxtC
Run NoiseXTerminator to reduce noise on a view.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Detail preservation, 0 to 1. | |
| denoise | Yes | Denoise strength, 0 to 1. | |
| view_id | Yes | PixInsight view identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are completely absent, so the description carries the full burden of behavioral disclosure. The description only says 'run to reduce noise', which is minimal. It does not disclose that this is a heavy computation, requires a view to be open, or what happens to the view (e.g., modifies it in place). No information about side effects, performance, or limitations. Given the absence of annotations, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff. It is concise and front-loaded with the action. However, given the lack of usage guidelines and behavior details, some additional sentences would be justified, so it could be slightly under-specified, but for what it covers, it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and a moderately complex 3-parameter set, the description is incomplete. It fails to explain the interplay between denoise and detail, the expected result (reduced noise), any prerequisites (e.g., view must be open), or how it differs from alternatives. An agent needs more context to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a description. The description adds only the context that the tool reduces noise, which implies that 'denoise' and 'detail' are noise reduction parameters. However, it does not add new meaning beyond the schema: 'detail preservation' and 'denoise strength' are self-explanatory. Baseline 3 is appropriate because the schema already explains them well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Run NoiseXTerminator to reduce noise) and the target (a view). It is specific enough to distinguish from general purpose tools like run_process or run_pjsr, though it doesn't explicitly name siblings. The verb 'run' and resource 'view' are present. Could be improved by mentioning it's specifically for noise reduction, which it already does. Distinguishes from noisy counterparts like run_sxt or run_bxt slightly, but those are similar noise reduction tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not specify when to use this tool versus alternatives like run_sxt (which is likely a synonym) or other noise reduction tools. It does not provide context on when noise reduction is appropriate or when to use other processes. No exclusions or alternatives are mentioned. This is a gap: an agent might struggle to decide between run_nxt and run_sxt if both exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_per_channel_abeA
Run AutomaticBackgroundExtractor (ABE) separately on the R, G and B channels of a color view, then recombine them into the view with ChannelCombination. ChannelExtraction writes the channels to the temporary views __pca_R, __pca_G and __pca_B; ABE subtracts its model from each in place and discards the model; the temporary views and any other view the call opened are closed afterwards. An ABE parameter that is not given is left at PixInsight's default, as run_abe does.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | RGB color view ID (modified in place) | |
| tolerance | No | ABE sample rejection tolerance for every channel (AutomaticBackgroundExtractor tolerance); omitted = PixInsight default | |
| poly_degree | No | ABE polynomial degree for every channel (AutomaticBackgroundExtractor polyDegree); omitted = PixInsight default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so excellently. It discloses that ChannelExtraction writes named temporary views, ABE subtracts its model in place and discards it, and all opened views are closed afterwards, including side effects on the target view.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, each earning its place: the first states the core operation, the second explains the intermediate and cleanup behavior, and the third clarifies default handling. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-step stateful tool with no annotations and no output schema, the description is remarkably complete. It covers the full pipeline, temporary view names, in-place mutation, model disposal, cleanup, and defaults, leaving no critical operational gap for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description reinforces that both tolerance and poly_degree apply to every channel and that omitted values follow PixInsight defaults, but this mostly echoes the schema's existing 'omitted = PixInsight default' notes rather than adding substantial new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it runs ABE on the R, G, and B channels of a color view and recombines them. It clearly distinguishes itself from sibling run_abe by explaining the per-channel workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the context: a color view, processed per-channel rather than whole-view. It references run_abe for default behavior, giving a useful point of comparison. It does not explicitly state when not to use it or name alternatives as exclusions, 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.
run_pixelmathA
Run an arbitrary PixelMath expression in place on a view. The result is truncated to [0,1]; the reply gives, per channel, the fraction of samples that were below 0 or above 1 before truncation, and their min and max. RULES: (1) NO pow() — use exp(exponent*ln(base)). (2) Channel access is $T[0] for R, $T[1] for G, $T[2] for B — NOT $T.R or $T.B. (3) For other images use viewId[0], viewId[1], viewId[2].
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | No | Symbol declarations (comma-separated) | |
| view_id | Yes | View ID to process | |
| expression | Yes | PixelMath expression using $T for current pixel value | |
| single_expression | No | Apply the same expression to all channels (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the in-place mutation, that output is truncated to [0,1], and that the reply reports per-channel out-of-range fractions plus min/max. It omits whether the underlying image data is permanently altered versus a preview copy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then behavior, then a compact numbered rule list. Dense but every sentence serves a purpose with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema and no annotations, the description covers mutation semantics, return contents, and expression syntax pitfalls. It lacks error/precondition details (e.g., whether the view must already be open) but is largely self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema by specifying channel access syntax ($T[0] vs $T.R) and viewId[0] referencing, which directly governs how the expression parameter must be written.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Run), resource (arbitrary PixelMath expression) and scope (in place on a view). The 'in place' qualifier implicitly distinguishes it from the sibling pixelmath_new_image, though that sibling is never named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is strongly implied by the operation itself, but there is no explicit when-to-use guidance and no routing to alternatives such as pixelmath_new_image for non-destructive work. The agent must infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_pjsrA
Run a PJSR (JavaScript, V8 engine) snippet inside PixInsight and return its console output. Last resort for things the other tools do not cover. Call processEvents() before each long process (BXT, NXT, SXT) so Pause/Abort works. No ES6 module syntax; the snippet is eval-ed as a script, so #include does not work and a top-level return is a syntax error; include prepends files instead. Code that does not parse is refused with its line number before anything reaches PixInsight.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | PJSR code. The value of the last expression is returned. | |
| async | No | Run as a job: the call returns a job id at once and the code runs in PixInsight in the background. job_status reports on the job and returns its result; cancel_job stops it. While a job runs, other calls that use PixInsight are refused. The running code can call mcpProgress(text) to report progress and mcpCancelRequested() to see whether cancel_job was called. | |
| include | No | Absolute paths of PJSR source files whose contents run before `code`, in this order, in the same scope, so functions they define can be called from `code`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: the snippet is eval-ed as a script, ES6 module syntax and #include fail, a top-level return is a syntax error, include prepends files, and non-parsing code is refused with a line number before reaching PixInsight. These execution and failure semantics are exactly what an agent needs before writing code.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then routing, then execution caveats, then syntax constraints, with no filler. It is dense but every sentence delivers actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers return value (console output / last expression), parse-error behavior, and execution constraints even though there is no output schema. It leaves the async job lifecycle largely to the schema, which is acceptable since the schema documents it fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents code, async, and include thoroughly (job id, job_status, cancel_job, mcpProgress, mcpCancelRequested). The description only adds the processEvents() caveat, which is behavioral rather than parameter-specific, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run a PJSR snippet inside PixInsight and return its console output'), and the note that it is a 'last resort' distinguishes it from the many dedicated run_* siblings. An agent can tell what it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing guidance: 'Last resort for things the other tools do not cover,' plus a concrete rule to call processEvents() before long processes so Pause/Abort works. It does not explicitly name run_pjsr_file as the file-based alternative, so the when-not side is slightly under-specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_pjsr_fileA
Run a PJSR (JavaScript, V8 engine) source file from disk inside PixInsight and return its console output. Same execution model as run_pjsr, with the code read from a file instead of passed inline. No ES6 module syntax; the file content is eval-ed, so #include does not work. Code that does not parse is refused with its line number before anything reaches PixInsight.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the PJSR source file. | |
| async | No | Run as a job: the call returns a job id at once and the code runs in PixInsight in the background. job_status reports on the job and returns its result; cancel_job stops it. While a job runs, other calls that use PixInsight are refused. The running code can call mcpProgress(text) to report progress and mcpCancelRequested() to see whether cancel_job was called. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that content is eval-ed, no ES6 module syntax, #include does not work, and parse failures are refused with a line number before reaching PixInsight. The async behavior (job id, background execution, blocking other PixInsight calls, mcpProgress/mcpCancelRequested) is described, though much of it is duplicated in the schema's async property.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose and the sibling comparison, then the two key execution constraints. Every sentence carries information, though the async description slightly overlaps the schema text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does state the return ('console output'), plus parse-error behavior and the async result path via job_status. Combined with 100% schema coverage, an agent has what it needs to call this correctly; only minor details (e.g., output formatting/truncation) are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already fully documented by the schema itself, including the async job semantics. The description adds execution-model context but no additional per-parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (run) and resource (a PJSR JavaScript source file from disk), and clarifies the return ('return its console output'). It explicitly distinguishes itself from the closest sibling by noting it is 'Same execution model as run_pjsr, with the code read from a file instead of passed inline.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The inline-vs-file contrast with run_pjsr gives clear routing guidance, and the async paragraph explains the job model and the sibling tools job_status/cancel_job. It lacks an explicit exclusion (e.g., 'use run_pjsr instead when the code is not on disk'), so it is strong but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_plate_solveA
Plate solve an open image with ImageSolver against the local Gaia DR3/SP database (offline). Adds the astrometric solution needed by run_spfc, run_mgc and run_spcc. Needs an approximate position (ra_deg, dec_deg; within a fraction of the field is enough) and scale (pixel_scale in arcsec/px, or focal_length_mm + pixel_size_um) unless the image keywords already carry RA, DEC and FOCALLEN/XPIXSZ. If the seeded solve fails, it is retried with the scale seed multiplied by 0.5, 2, 1/3 and 3 in turn (scale_search false tries the seed only). The result gives the solved scale from the solution, the expected scale (the seed, or the one the keywords give) and their ratio, which is far from 1 for a master a stacker resampled or drizzled. Observation time is read from DATE-OBS/DATE, else today.
| Name | Required | Description | Default |
|---|---|---|---|
| ra_deg | No | Approximate center RA in degrees | |
| dec_deg | No | Approximate center Dec in degrees | |
| view_id | Yes | View ID to plate solve | |
| pixel_scale | No | Approximate pixel scale in arcsec/pixel | |
| scale_search | No | Retry with wider scale seeds when the seeded solve fails (default true) | |
| pixel_size_um | No | Pixel size in microns | |
| observation_jd | No | Julian date of the observation (only if no DATE-OBS/DATE keyword) | |
| focal_length_mm | No | Focal length in mm (use with pixel_size_um instead of pixel_scale) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that solving is offline against a local catalog, that it mutates the image by adding an astrometric solution, and the exact retry ladder (0.5x, 2x, 1/3x, 3x, disabled by scale_search=false). It does not say whether the call blocks or runs as a background job, which matters given siblings like job_status/cancel_job.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose, then prerequisites, then fallback behavior. Six dense sentences, each carrying new information (keyword fallback, retry multipliers, ratio interpretation, time source), though the retry-ladder detail is verbose enough that it could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by explaining the returned solved scale, expected scale and their ratio, plus the failure/retry behavior. The only missing piece is execution semantics (synchronous vs job-based) for what is likely a long solve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantics beyond the schema: the tolerance on ra_deg/dec_deg, the mutual exclusivity of pixel_scale vs focal_length_mm+pixel_size_um, the meaning of scale_search=false, and the DATE-OBS/DATE fallback for the observation time.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Plate solve an open image with ImageSolver') and narrows scope to the offline local Gaia DR3/SP database. It also situates itself in the pipeline by naming the downstream consumers (run_spfc, run_mgc, run_spcc), which no sibling ambiguity leaves open.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit prerequisites: an approximate position within a fraction of the field and a scale seed, with the keyword-based exemption (RA/DEC/FOCALLEN/XPIXSZ) spelled out, plus the pixel_scale vs focal_length_mm+pixel_size_um alternative. It does not state when NOT to use it or what to do if the solve ultimately fails.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_processA
Instantiate any PixInsight process by its PJSR constructor name, assign JSON-valued parameters onto the instance, and execute it on a view (when view_id is given) or globally (when it is omitted). Generic fallback for processes with no dedicated tool. A process that has the noGUIMessages property (Crop, DynamicCrop, Resample, IntegerResample, Rotation, FastRotation, ChannelMatch and others) runs with it set to true unless params sets it, so its confirmations and warnings go to the Process Console instead of a dialog.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | PJSR process constructor name, e.g. "SCNR". | |
| params | No | Property name to JSON-valued setting, assigned on the process instance before it runs. | |
| view_id | No | View to run the process on. Omit to run the process globally instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden and does so meaningfully: it discloses the side effect of setting noGUIMessages=true for named processes (Crop, DynamicCrop, Resample, etc.), explaining that confirmations/warnings are redirected to the Process Console unless params overrides it. It does not cover error behavior, permissions, or failure modes, but this is a solid, non-obvious behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action (instantiate, assign, execute), followed by the fallback positioning and the noGUIMessages detail. The parenthetical process list is slightly verbose but earns its place as a concrete example set. Efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic exec-style tool with nested-object params, no annotations, and no output schema, the description covers purpose, scoping semantics, and a key behavioral side effect. It leaves error handling and return-value expectations implicit, but the core call-correctness information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents all three parameters (name, params, view_id). The description adds the semantic that params are 'assigned onto the instance' and that omitting view_id means global execution, but it largely echoes what the schema already states. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (instantiate a PixInsight process by PJSR constructor name, assign params, execute) and explicitly positions itself as the 'generic fallback for processes with no dedicated tool', which distinguishes it from siblings like run_mgc, run_lhe, run_bxt, run_abe, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use this tool: as a fallback when no dedicated tool exists, and describes when to pass view_id (view) vs omit it (global). It does not name a concrete alternative or list explicit exclusions, but the fallback framing gives clear selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_scnrB
Run SCNR (Subtractive Chromatic Noise Reduction) to remove a green colour cast from a view.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Green removal amount, 0 to 1. | |
| view_id | Yes | PixInsight view identifier. | |
| protection | No | Protection method. | AverageNeutral |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the high-level purpose and does not say whether the tool mutates the view in place, requires an open view, or returns any result. This is a significant transparency gap for a process-runner tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence. It introduces the acronym expansion and states the tool's purpose without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents parameters above, making invocation feasible impossible, and the purpose is clear. However, the absence of annotations and an output schema means the description should provide more context about the operation's effect on the view and any prerequisites, so the definition is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters and their defaults. The description adds no parameter-level meaning beyond the schema, which meets the baseline but does not improve it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Run') and names the exact process (SCNR), plus its intended effect ('remove a green colour cast from a view'). It is clear, though it does not explicitly differentiate itself from sibling color-correction tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when a green cast exists) but provides no explicit guidance about when to prefer it over alternatives like run_background_neutralization, restore_star_color, or run_curves. No exclusions or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_spccA
Run SpectrophotometricColorCalibration (SPCC). Requires the image to have an astrometric solution (run_plate_solve adds one) and to be linear (not stretched). Narrowband mode (narrowband_mode true) calibrates each channel as a narrow band: give the real filter centre and width per channel (red_/green_/blue_wavelength_nm and _bandwidth_nm; PixInsight's defaults are 656.3 / 500.7 / 500.7 nm and 3 nm for every band, wrong for a 5 nm H-alpha filter). The white reference matters for star colour: use a solar-type reference such as "G2V Star"; the default "Average Spiral Galaxy" makes a galaxy neutral and tints stars.
| Name | Required | Description | Default |
|---|---|---|---|
| qe_name | No | Camera QE curve name (find_filters channel Q) | |
| view_id | Yes | View ID to calibrate (must be linear, must have a WCS/astrometric solution) | |
| narrowband_mode | No | Enable narrowband mode (default false) | |
| red_filter_name | No | Measured R filter curve name, as listed by find_filters. Set all three filters and qe_name together for a full calibration. | |
| white_reference | No | White reference name from PixInsight's database, e.g. "Average Spiral Galaxy", "G2V Star" | |
| blue_filter_name | No | Measured B filter curve name, as listed by find_filters | |
| red_bandwidth_nm | No | Narrowband mode: bandwidth of the red channel's filter in nm (PixInsight default 3) | |
| blue_bandwidth_nm | No | Narrowband mode: bandwidth of the blue channel's filter in nm (PixInsight default 3) | |
| green_filter_name | No | Measured G filter curve name, as listed by find_filters | |
| red_wavelength_nm | No | Narrowband mode: centre wavelength of the red channel's filter in nm (default 656.3) | |
| blue_wavelength_nm | No | Narrowband mode: centre wavelength of the blue channel's filter in nm (default 500.7) | |
| green_bandwidth_nm | No | Narrowband mode: bandwidth of the green channel's filter in nm (PixInsight default 3) | |
| green_wavelength_nm | No | Narrowband mode: centre wavelength of the green channel's filter in nm (default 500.7) | |
| white_reference_name | No | Same as white_reference |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does add real behavioral context: linearity/WCS prerequisites, the fact that PixInsight's narrowband defaults are wrong for real filters, and the downstream effect of the white reference on star colour. It does not state whether the view is modified in place or whether a new image is produced, which is the one notable gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph that front-loads the verb and then layers prerequisites, narrowband usage, and the white-reference caveat in that order. Every sentence carries information, though the white-reference clause at the end is slightly buried and could be split for scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter calibration tool with no annotations and no output schema, the description covers prerequisites, narrowband mode and white-reference behavior well enough to invoke it correctly. It omits the in-place mutation behavior and does not address the duplicated white_reference/white_reference_name fields, which leaves minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the 3 baseline applies, but the description goes beyond it by explaining the semantics of narrowband_mode, the per-channel wavelength/bandwidth pairing, and why the default centre/width values (656.3/500.7 nm, 3 nm) are often wrong. This adds genuine meaning over the schema's field-level text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and named resource (Run SpectrophotometricColorCalibration), and distinguishes itself from the generic run_process/run_spfc siblings by naming the exact process and its calibration intent. An agent can tell this tool apart from the other run_* wrappers 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives preconditions: the image must have an astrometric solution (with a concrete pointer to run_plate_solve) and must be linear, not stretched. It also explains when to set narrowband_mode true and how to supply per-channel values. It stops short of naming when NOT to use it versus run_spfc, so it is a little less than fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_spfcA
Run SpectrophotometricFluxCalibration: writes the flux metadata that run_mgc requires. The image must be plate-solved and linear. Needs the camera QE curve (default "Ideal QE curve"; pass qe_name for the real sensor, see find_filters) and the filter curve. MONO image: pass filter (L, R, G, B, Ha, OIII, SII) and optionally filter_name (a measured curve from the database; otherwise a flat passband from wavelength_nm/bandwidth_nm is used). COLOR image: omit filter and pass red_filter_name, green_filter_name, blue_filter_name (otherwise flat R/G/B passbands).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Mono only. One of L, R, G, B, Ha, OIII, SII | |
| qe_name | No | Camera QE curve name (default "Ideal QE curve") | |
| view_id | Yes | View ID to calibrate | |
| filter_name | No | Mono: measured filter curve name from find_filters | |
| bandwidth_nm | No | Mono: filter bandwidth in nm, if filter_name is not given | |
| wavelength_nm | No | Mono: filter center wavelength in nm, if filter_name is not given | |
| red_filter_name | No | Color: measured R filter curve name from find_filters | |
| blue_filter_name | No | Color: measured B filter curve name from find_filters | |
| green_filter_name | No | Color: measured G filter curve name from find_filters |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it discloses that the tool writes metadata, has prerequisites, uses a default Ideal QE curve, and falls back to flat passbands when no measured filter curve is given. It does not mention overwrite/idempotency or possible failure modes, which keeps it slightly below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences front-load the purpose before prerequisites and options. Every clause carries information, and the MONO/COLOR split makes a 9-parameter tool navigable without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no annotations or output schema, this is unusually complete: it covers prerequisites, dependencies, parameter selection rules, and defaults. The only gap is the absence of any statement about return values, overwriting existing metadata, or failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description goes beyond the schema by explaining the MONO vs COLOR parameter family, the rule to omit filter for color images, and the flat-passband default when filter_name is absent. This is meaningful semantic guidance that cannot be fully inferred from the property descriptions alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States an action verb 'Run' with the expanded resource SpectrophotometricFluxCalibration and the concrete effect 'writes the flux metadata that run_mgc requires.' This distinguishes it from sibling calibration tools by naming its downstream consumer, so an agent can tell what it does and why.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit prerequisites ('must be plate-solved and linear'), required inputs (QE curve, filter curve), and a branching rule for mono vs color images. It also routes the agent to find_filters for curve names and positions this as the step before run_mgc, providing clear when-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_sxtA
Run StarXTerminator to separate stars from a view, replacing it in place with the starless result and producing a separate stars view. is_linear selects the unscreen mode: off for linear (pre-stretch) data, on for non-linear (stretched) data.
| Name | Required | Description | Default |
|---|---|---|---|
| overlap | No | Tile overlap (default 0.5). The former default 0.10 left a faint rectangular tile grid (cells of about 470 px) in linear starless images; 0.5 did not. | |
| view_id | Yes | View ID to extract stars from (modified in place to become starless) | |
| is_linear | Yes | Whether the image is linear (pre-stretch) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It usefully discloses the in-place mutation (view becomes starless) and creation of a separate stars view, but omits permissions, reversibility, overwrite behavior, and process cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and followed by concise parameter guidance. No wasted words or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the core operation and key side effects. However, for an in-place mutating tool it lacks prerequisites, naming/overwrite details for the stars view, and failure/undo context, leaving it only adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema for is_linear by mapping the boolean to unscreen mode (off for linear, on for non-linear), though overlap and view_id are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (run StarXTerminator) and spells out the transformation: stars separated from a view, view replaced in place with starless result, and a separate stars view produced. This clearly distinguishes it from sibling run_* and star-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides selection guidance for the is_linear parameter (off for linear, on for non-linear), but never states when to choose run_sxt over sibling star tools such as stretch_stars, star_protected_blend, or restore_star_color. No alternatives, prerequisites, or when-not conditions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_wbppA
Start WeightedBatchPreprocessing (WBPP) headless in a separate PixInsight instance (PixInsight -n --automation-mode --force-exit) over input_dirs, writing into output_dir, and return a run id at once; wbpp_status reports the run. output_dir must lie inside /output (a relative path is resolved there) or the state folder. Only the WBPP parameters given are passed; WBPP's own settings apply to the rest. Interactive local normalization and frame selection are turned off so nothing waits for a click. optimize_darks and drizzle_scale are applied to every light group by a generated pipeline-builder script. extra_params passes further WBPP automation parameters by name (BPP-Automation.js lists them). Refuses while the GUI instance runs a command for this workspace, and while an earlier run_wbpp run of this workspace is running. Tools that use the GUI instance keep working while WBPP runs.
| Name | Required | Description | Default |
|---|---|---|---|
| weights | No | Subframe weighting method, or none | |
| autocrop | No | WBPP autocrop | |
| keywords | No | Grouping keywords [{name, mode}], mode pre (calibration groups), post (integration groups) or prepost | |
| integrate | No | WBPP integrate | |
| reference | No | Automatic registration reference: one for all (auto) or one per value of reference_keyword | |
| rejection | No | Pixel rejection for lights (WBPP rejection_4) | |
| input_dirs | Yes | Folders WBPP scans recursively for lights, darks, flats and bias (WBPP dir=) | |
| output_dir | Yes | WBPP output folder: relative to <workspace>/output, or absolute inside <workspace>/output or the state folder | |
| plate_solve | No | WBPP platesolve | |
| extra_params | No | Further WBPP automation parameters, {name: value} | |
| drizzle_scale | No | Enable drizzle on every light group at this scale | |
| optimize_darks | No | Set dark optimization on every light group | |
| frame_selection | No | Frame selection filters [{metric, value, compare}], compare less or greater (non-interactive) | |
| reference_image | No | Registration reference image file (WBPP referenceImage, manual reference) | |
| reference_keyword | No | Keyword for reference auto_by_keyword | |
| image_registration | No | WBPP imageRegistration | |
| local_normalization | No | WBPP localNormalization (run non-interactively) | |
| distortion_correction | No | WBPP distortionCorrection | |
| generate_rejection_maps | No | WBPP generateRejectionMaps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so richly: it explains the separate PixInsight invocation with automation flags, asynchronous return of a run id, output_dir constraints, that only supplied WBPP parameters are passed, that interactive local normalization and frame selection are disabled, that optimize_darks and drizzle_scale apply to every light group via a generated script, and the exact refusal conditions. This is far beyond what the schema alone would convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded: the first sentence states what the tool does and that it returns a run id immediately. Every sentence adds operational detail relevant to a complex 19-parameter tool, though the dense prose could be easier to scan if split into short bullet-like clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity, 19 parameters, no output schema, and no annotations, the description is complete enough to invoke correctly. It explains the asynchronous run-id return, how to check status via wbpp_status, output_dir constraints, non-interactive behavior, parameter passing rules, and refusal conditions, while the 100%-covered schema handles per-parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema: 'Only the WBPP parameters given are passed; WBPP's own settings apply to the rest,' 'optimize_darks and drizzle_scale are applied to every light group by a generated pipeline-builder script,' and extra_params is explained as further WBPP automation parameters listed in BPP-Automation.js. These details clarify how several parameters interact with WBPP behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'Start WeightedBatchPreprocessing (WBPP) headless in a separate PixInsight instance.' It also names the sibling tool wbpp_status that reports the run, so an agent can distinguish this tool from related status and processing siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational context: output_dir must be inside <workspace>/output or the state folder, and the tool refuses while the GUI instance runs a workspace command or while an earlier run_wbpp is running. It also points to wbpp_status for run reporting. However, it does not explicitly compare run_wbpp against alternative processing tools like run_process or run_pjsr for non-WBPP workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_and_show_previewC
Alias for save_preview. Save a JPEG preview of a view and return the file path.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | No | Region [x0, y0, x1, y1] of the view in pixels (x1, y1 exclusive); the whole view when omitted | |
| label | Yes | Short label for this preview (e.g. "after_stretch", "final") | |
| stf_m | No | Bake a linked STF with this midtones balance (0 < m < 1) into the JPEG; needs stf_c0 | |
| stf_c0 | No | Shadows clipping point of the linked STF given with stf_m (0 <= c0 < 1) | |
| view_id | Yes | PixInsight view ID | |
| stf_from | No | Bake this view's STF (its display stretch) into the JPEG; the view may be view_id itself. Several previews given the same stf_from are stretched identically | |
| downsample | No | Divide width and height by this factor (>= 1). Omitted: the preview is scaled down to at most 2048 px on its longer side |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses only that the tool returns a file path; nothing is said about where files are written, whether existing previews are overwritten, or what side effects occur. For a save/write operation with zero annotation coverage, this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the alias relationship before the action. No wasted words; it is appropriately sized for what it conveys, though it is arguably too terse given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description omits the save semantics (destination, overwrite behavior) that the agent most needs. The fully documented schema compensates for the parameters, but the writing/aliasing behavior around save_preview remains unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters (crop, stf_m, stf_c0, stf_from, downsample, view_id, label) are already documented in the schema. The description adds no syntax or format detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Save a JPEG preview of a view") and explicitly identifies itself as an alias of save_preview, so an agent knows what it does. It does not explain how it differs from save_preview beyond being an alias, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no condition for choosing this over the sibling save_preview. Calling it an "alias" implies equivalence but leaves the agent to infer whether either tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_previewA
Save a JPEG preview of a view and return the file path. Optionally a crop region, a downsample factor, and an STF (display stretch) baked into the pixels: the STF of a view (stf_from) or a linked one given as stf_m and stf_c0. Without an STF the JPEG holds the view's pixel values as they are. The view itself is not changed.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | No | Region [x0, y0, x1, y1] of the view in pixels (x1, y1 exclusive); the whole view when omitted | |
| label | Yes | Short label for this preview (e.g. "after_stretch", "final") | |
| stf_m | No | Bake a linked STF with this midtones balance (0 < m < 1) into the JPEG; needs stf_c0 | |
| stf_c0 | No | Shadows clipping point of the linked STF given with stf_m (0 <= c0 < 1) | |
| view_id | Yes | PixInsight view ID | |
| stf_from | No | Bake this view's STF (its display stretch) into the JPEG; the view may be view_id itself. Several previews given the same stf_from are stretched identically | |
| downsample | No | Divide width and height by this factor (>= 1). Omitted: the preview is scaled down to at most 2048 px on its longer side |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningfully: it states the return value (file path), the non-destructive guarantee ('The view itself is not changed'), and the default behavior absent an STF ('the JPEG holds the view's pixel values as they are'). It omits details like where the file lands or overwrite behavior, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four economical sentences that are front-loaded with the primary action and outcome before detailing optional behavior. No filler, though the STF sentence is slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter write-to-disk tool with no annotations and no output schema, the description covers the return value and non-mutation well but leaves gaps on destination path, file naming/overwrite behavior, and error conditions. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, and the description adds real semantic value by explaining the STF concept (stf_from vs. the linked stf_m/stf_c0 pair) and what baking an STF does to the pixels. This goes beyond restating field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Save a JPEG preview of a view and return the file path.' An agent immediately knows the output artifact and location. However, it never distinguishes itself from close siblings like save_and_show_preview or export_image, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (previews, optional STF/downsample) but there is no explicit when-to-use statement and no named alternative for the many sibling preview/export tools. The 'Optionally...' phrasing guides parameter choices, but not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_workspaceA
Scan the working folder (recursively, any subfolder name) for XISF/FITS files and report each one's FILTER header value, geometry, exposure, whether it has an astrometric solution (WCS keywords CTYPE/CRVAL with a CD, CDELT or PC matrix, or PixInsight's PCL:AstrometricSolution properties), and its INSTRUME, TELESCOP, FOCALLEN, XPIXSZ, YPIXSZ and XBINNING keywords verbatim (null when absent). The connector's own state and output folders are not scanned. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only' and details that the scan is recursive and excludes connector folders. It also specifies that keywords are reported verbatim and null when absent, which is useful behavioral context. However, it does not mention performance implications, permissions, or the exact output structure, though the lack of side effects is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the purpose ('Scan the working folder...') before detailing specifics. Every phrase adds value—the file types, the list of attributes, the astrometric solution detection, and the exclusions. It is not overly verbose, though the long list of keywords makes it a bit dense; it could be broken into a structured list for readability, but it remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description must fully explain what the tool returns. It lists the exact header values and the astrometric solution check, plus the null-when-absent behavior. It also states the scan is recursive and read-only. This is complete enough for an agent to understand the tool's purpose and likely output, though the exact return format (e.g., JSON shape) is not specified—acceptable without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema describes none. The description adds no parameter semantics because there are none to explain. Per the rubric, with 0 params the baseline is 4. The description adds value by explaining the output rather than parameters, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb ('scan') and resource (working folder for XISF/FITS files) and enumerates exactly what it reports per file (FILTER, geometry, exposure, astrometric solution presence, and six specific keywords). It also distinguishes itself from sibling tools like find_filters by focusing on header extraction rather than filter discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the scope of the scan and what it does, but it does not explicitly say when to use this tool versus alternatives (e.g., workspace_info, find_filters). There is no mention of when not to use it or which sibling might be better for a different purpose. The only constraint given is that connector state/output folders are excluded, which is a behavioral note, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_stfA
Set the ScreenTransferFunction (display stretch) of a view without changing its pixels, and return it as rows [m, c0, c1, r0, r1] for R, G, B (K for mono) and luminance. Either copy the STF of from_view_id, or compute PixInsight's auto-stretch exactly as auto_stretch does (per channel sigma = 1.4826 × MAD; c0 = median + shadows_clipping × sigma; m = MTF(target_bg, median − c0); linked: one set of values for R, G and B from the mean clipping point and mean median). An STF is stored with the view and saved in XISF files.
| Name | Required | Description | Default |
|---|---|---|---|
| linked | No | Colour images: true computes one set of values for R, G and B; false one per channel. Ignored for mono images | |
| view_id | Yes | View whose STF is set | |
| target_bg | No | Target background level, strictly between 0 and 1 | |
| from_view_id | No | Copy this view's STF instead of computing one; target_bg, shadows_clipping and linked are then not allowed | |
| shadows_clipping | No | Clipping point relative to the median, in units of sigma = 1.4826 × MAD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses that pixels are untouched (display-only mutation), the exact return row layout, and that the STF persists with the view and in XISF files. It omits permission/error behavior, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose before the mode details, and every sentence contributes. The embedded formula is dense but justified for a precision-sensitive stretch operation, though it slightly lengthens the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description explicitly documents the return value ([m, c0, c1, r0, r1] per channel). Combined with behavior, parameter math, and persistence notes, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), but the description goes further by explaining the underlying math for shadows_clipping (sigma = 1.4826 × MAD), target_bg (MTF target), and linked (one set of R/G/B values from mean clipping point and median). This adds real meaning beyond the schema's field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set) and resource (the ScreenTransferFunction/display stretch of a view), plus a key scope qualifier (without changing its pixels). An agent can distinguish this from siblings like auto_stretch and robust_median_stretch without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly lays out the two operational modes ('Either copy the STF of from_view_id, or compute ... exactly as auto_stretch does') and the mutual exclusion captured in the schema. It gives strong context but does not explicitly state when to prefer this tool over the referenced sibling auto_stretch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_workspaceA
Set the workspace folder this session's files go under (scratch files, the bridge, call logs). path must name an existing, writable folder, absolute or starting with ~/, other than the filesystem root or the home directory itself. Returns the new workspace_info.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The folder: an absolute path, or one starting with ~/. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that this is a state-changing operation (sets the workspace), scopes the effect to session files, imposes explicit validation rules (existing, writable, not root/home), and notes the return type. This is substantial, though it does not mention failure behavior or reversibility. The stated validation and effect coverage merit a strong score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence states the primary purpose, the second covers constraints and return. Information is front-loaded and every clause earns its place. This is an exemplary concise definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter setter with no output schema, the description covers the essential points: purpose, constraints, return type, and session scope. It omits error handling details, but given the simplicity and the constraints already provided, an agent has sufficient information to call it correctly. Minor gaps remain, such as effects on existing files, but overall it is well-rounded.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes the path parameter, so baseline is 3. The description adds meaningful constraints beyond the schema: 'existing, writable', 'other than the filesystem root or the home directory itself'. This enriches the parameter's meaning and helps the agent avoid invalid inputs, exceeding what the schema alone provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'workspace folder', and specifies what files it affects (scratch files, bridge, call logs). This distinguishes it from likely read-only siblings like workspace_info or scan_workspace, leaving no ambiguity about its function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides constraints for the path (existing, writable, not root/home) and states the return value, giving some usage context. However, it does not explicitly contrast with sibling tools like workspace_info (to query) or scan_workspace (to scan), nor does it indicate when in a workflow it should be called. The intended usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shell_detail_enhanceA
Protected high-pass detail enhancement at two scales, in place. For each scale, detail = image - Gaussian blur of sigma _sigma (locally zero-mean), and result = image + _amount x detail x protection, where protection = exp(-protect_softness x max(0, L - protect_knee) / max(1 - protect_knee, 0.01)) and L is Rec.709 luminance, so the boost attenuates above protect_knee. A scale with amount 0 is skipped. Output is truncated to [0, 1]. It does not hold the peak fixed: the added detail can raise the image maximum (the result reports the image maximum before and after, from full image statistics). With mask_id the enhancement runs through that mask; with auto_zone and no mask_id it builds the adaptive shell zone mask (as create_adaptive_zone_masks with its default core_bias), uses it and closes it, and fails without changing the view if that mask cannot be built; with neither it runs unmasked. Reports before/after texture metrics over pixels between median + 5 x 1.4826 x MAD and 0.98, sampled every 8 pixels: mean squared Sobel gradient, median local standard deviation of 16-pixel blocks that are at least 30% such pixels, and the share of them where protection is below 0.5.
| Name | Required | Description | Default |
|---|---|---|---|
| mask_id | No | Mask view to enhance through (optional) | |
| view_id | Yes | View to enhance (modified in place) | |
| auto_zone | No | With no mask_id: build the adaptive shell zone mask and enhance through it. If it cannot be built the call fails and the view is not modified | |
| large_sigma | Yes | Gaussian sigma of the large-scale blur, in pixels | |
| large_amount | Yes | Large-scale detail multiplier (0 skips the scale) | |
| medium_sigma | Yes | Gaussian sigma of the medium-scale blur, in pixels | |
| protect_knee | Yes | Luminance above which the boost attenuates | |
| medium_amount | Yes | Medium-scale detail multiplier (0 skips the scale) | |
| protect_softness | Yes | Attenuation rate above protect_knee (>= 0; higher = steeper) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and covers side effects in detail: in-place modification, truncation to [0,1], failure behavior for mask building, peak not held fixed, and the exact protection formula. This is unusually transparent for a mutating image-processing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and run-on, but nearly every sentence carries needed behavioral information and it opens with the core purpose. Minor structural formatting would help readability, but content is well-earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutating tool with no annotations and no output schema, this description is remarkably complete: it covers masking modes, failure semantics, luminance math, output bounds, and the exact metrics returned. Nothing essential is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds substantial meaning: the formula linking protect_softness, protect_knee, and luminance; the rule that amount 0 skips a scale; and how auto_zone affects mask_id. This goes well beyond the baseline supplied by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line 'Protected high-pass detail enhancement at two scales, in place' uses a specific verb and resource and clearly identifies the operation. It distinguishes this from siblings like multi_scale_enhance by emphasizing two-scale, protected, and in-place behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states exactly how the tool behaves under mask_id, auto_zone, and neither, from which an agent can infer appropriate use cases. It does not explicitly say when to prefer this over sibling tools or when not to use it, so guidance remains 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.
star_protected_blendA
Blend a stars-only image into a starless one in place, as a screen blend that turns colour-preserving in bright star cores. The mode follows, per pixel, the star layer's own luminance SL (the mean of its three channels). Below core_threshold_low: per-channel screen blend 1 - (1 - target) * (1 - stars * k). Above core_threshold_high: luminance-only screen blend, the target's colour scaled by the new over the old luminance and capped at max_value. Between them the two blend linearly. k = strength * prot, where prot falls linearly from 1 at core_threshold_low to min_strength_fraction at core_threshold_high. With pre_star_id, the bright-area colour ratios of that view are then restored over the same luminance ramp (see restore_star_color). Runs as 64-bit PixelMath truncated to [0,1]; reports the target's median and max before and after.
| Name | Required | Description | Default |
|---|---|---|---|
| stars_id | Yes | Stars-only RGB view | |
| strength | Yes | Multiplier k on the star layer in the screen blend, before protection | |
| max_value | Yes | Upper cap on each channel of the colour-preserving blend, and of the colour restoration when pre_star_id is given | |
| target_id | Yes | Starless RGB view, modified in place | |
| pre_star_id | No | Optional: RGB view whose colour ratios are restored in bright areas after the blend; empty or absent = no restoration | |
| core_threshold_low | Yes | Star luminance SL at and below which the pure screen blend applies and protection is 1 | |
| core_threshold_high | Yes | Star luminance SL at and above which the pure colour-preserving blend applies and protection is min_strength_fraction; greater than core_threshold_low | |
| min_strength_fraction | Yes | Protection factor reached at core_threshold_high (strength is multiplied by it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden - and it excels. It fully discloses: in-place mutation, the exact blend formulas per luminance range, the strength/protection scaling, the optional colour restoration behavior, 64-bit PixelMath execution, truncation to [0,1], and reporting of median/max before and after. Nothing is hidden, and no contradiction exists with annotations since none are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and technical but every sentence earns its place: the core operation is front-loaded, then the luminance-dependent behavior, formulas, strength scaling, optional restoration, and execution details follow in a logical order. It is long because the tool is genuinely complex, not because of padding. A half-point is lost for the heavy formula density that could be slightly better organized into bullets or an example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, formula-driven tool with no output schema, the description is remarkably complete. It covers the response behavior (median/max reporting), side effects (in-place modification), parameter interrelationships, edge cases (threshold ramps, capping), and optional behavior (pre_star_id). An agent has everything needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds substantial meaning beyond the schema: it defines k as strength * prot, explains how prot ramps between thresholds, clarifies max_value's role as a cap in both the blend and colour restoration, and describes how pre_star_id interacts with the luminance ramp. This transforms a list of parameter names into an actionable mental model.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb ('Blend'), specific resources ('stars-only image into a starless one'), and the in-place mutation behavior. It also names the closely related restore_star_color, which helps an agent distinguish this from a sibling rather than confusing them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you want to blend a stars-only image into a starless one while protecting bright star cores. However, it does not explicitly state when not to use it or name alternatives beyond a passing reference to restore_star_color. The usage context is clear but not contrasted with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stretch_starsA
Stretch a linear star image in place with a pedestal subtraction and a repeated midtones transfer function. When the image median is above 1e-5 it is subtracted as a pedestal and the rest rescaled, max(0, (x − median)/(1 − median)); then the midtones transfer function MTF(m, x) = (1 − m)·x / ((1 − 2m)·x + m) is applied iterations times with m = midtone. Results are truncated to [0,1]. The result reports the pedestal, the final median and maximum, and high_fraction: among pixels sampled every 16 pixels whose value (the channel maximum) exceeds 0.005 before the stretch, the fraction above 0.5.
| Name | Required | Description | Default |
|---|---|---|---|
| midtone | Yes | MTF midtones balance m, strictly between 0 and 1 (m < 0.5 brightens) | |
| view_id | Yes | Star image view ID | |
| iterations | Yes | Number of times the MTF is applied (>= 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the pedestal threshold (median > 1e-5), the exact formula, truncation, and the output metrics. It clearly states the operation is a stretch and modifies the image in place. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence adds detail: algorithm steps, threshold, exact formula, and output metrics. It is front-loaded with the main purpose and then explains mechanics. No fluff, but could be slightly tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (two-step algorithm, iterations, pedestal handling) and lack of annotations or output schema, the description covers all essential behavior and return metrics. Minor gaps: no mention of required image state (e.g., must be linear) and no performance notes, but sufficient for calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 3 parameters are documented in the schema, including types and brief meanings). The description adds the m < 0.5 brightens note and clarifies the MTF application, but essentially repeats parameter meanings. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('stretch') and resource ('linear star image'), and details the exact two-step algorithm. It clearly differentiates from siblings like auto_stretch and robust_median_stretch by naming the specific transfer function and pedestal subtraction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for linear star images needing a specific midtones stretch, but does not explicitly state when to use this versus auto_stretch or robust_median_stretch. No alternatives are named or excluded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wbpp_statusA
Report a run_wbpp run: running, finished (with the PixInsight exit code) or ended without an exit record; the master files in /master; the number of .xisf files in each subfolder of /registered and /calibrated; the WBPP log files in /logs; and the last lines of the instance's console output. run_id omitted: the latest run.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | Run id from run_wbpp (default: the latest run) | |
| tail_lines | No | Console-output lines to include (default 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses the possible run states (running, finished with exit code, ended without exit record) and the full contents of what is reported. It does not cover failure modes (e.g., unknown run_id) or whether output is read-only, but for a status-report tool this is solid disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Effectively a single front-loaded sentence that leads with the action and the run states, then enumerates return contents. The long list is dense but every element earns its place; minor room for tightening.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description appropriately explains return values in detail, which is exactly what is needed here. It is largely complete, with only minor gaps around edge cases such as an invalid or missing run_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both run_id and tail_lines fully documented including defaults. The description restates the run_id default (latest run) but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Report) and resource (a run_wbpp run) and enumerates exactly what is reported: status states, exit code, master files, per-subfolder .xisf counts, logs, and console tail. This clearly distinguishes it from the sibling run_wbpp (which executes the run) and job_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides useful context that omitting run_id reports the latest run, which implicitly tells the agent this is the status-checking counterpart to run_wbpp. However, it gives no explicit when-to-use/when-not-to-use guidance, no prerequisites, and does not clarify its relationship to the sibling job_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace_infoA
Report the workspace folder, the state directories under it (scratch, bridge, logs) and the output folder. Also reports where the folder came from (set_workspace, PIXINSIGHT_CONNECTOR_WORKSPACE or the launch folder) and, when it cannot be used, why. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the operation is read-only and that it reports errors (when the workspace cannot be used). It also details what information is returned. This is adequate for a simple query tool, though it does not mention any potential side effects (there are none) or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the primary purpose and then enumerating the specific details returned. Every sentence adds value: main output, additional context (origin and error reason), and a clear read-only declaration. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description fully specifies what the tool returns (workspace folder, state directories, output folder, origin, and failure reason). An agent can confidently call this tool and interpret the result without ambiguity. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds no parameter information because none exist. This is appropriate and complete for a no-argument tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Report') and a precise resource (workspace folder, state directories, output folder, origin, and failure reason). It clearly distinguishes itself from siblings like set_workspace (which configures) and scan_workspace (which likely scans images). The purpose is unambiguous and scoped.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly conveys when to use this tool: whenever an agent needs to inspect the workspace configuration or diagnose why the workspace is unusable. It does not explicitly name alternatives or exclusions, but the context is clear from the sibling set and the read-only nature. No misleading guidance.
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.
20 tool updates
v2.4.1- Added
align_files - Added
cancel_job - Added
catalog_stars - Added
compare_images - Added
ensure_dir - Added
inspect_environment - Added
job_status - Changed
pixelmath_new_image1 field changed- added
Input schema / properties / copy_astrometric_solutionAdded value: +{ + "default": true, + "description": "Copy size_from's astrometric solution onto the new image when it has one", + "type": "boolean" +}
- Added
reproject_to_reference - Added
resample_image - Changed
run_pjsr1 field changed- added
Input schema / properties / asyncAdded value: +{ + "description": "Run as a job: the call returns a job id at once and the code runs in PixInsight in the background. job_status reports on the job and returns its result; cancel_job stops it. While a job runs, other calls that use PixInsight are refused. The running code can call mcpProgress(text) to report progress and mcpCancelRequested() to see whether cancel_job was called.", + "type": "boolean" +}
- Changed
run_pjsr_file1 field changed- added
Input schema / properties / asyncAdded value: +{ + "description": "Run as a job: the call returns a job id at once and the code runs in PixInsight in the background. job_status reports on the job and returns its result; cancel_job stops it. While a job runs, other calls that use PixInsight are refused. The running code can call mcpProgress(text) to report progress and mcpCancelRequested() to see whether cancel_job was called.", + "type": "boolean" +}
- Changed
run_plate_solve1 field changed- added
Input schema / properties / scale_searchAdded value: +{ + "description": "Retry with wider scale seeds when the seeded solve fails (default true)", + "type": "boolean" +}
- Changed
run_spcc6 fields changed- added
Input schema / properties / blue_bandwidth_nmAdded value: +{ + "description": "Narrowband mode: bandwidth of the blue channel's filter in nm (PixInsight default 3)", + "type": "number" +} - added
Input schema / properties / blue_wavelength_nmAdded value: +{ + "description": "Narrowband mode: centre wavelength of the blue channel's filter in nm (default 500.7)", + "type": "number" +} - added
Input schema / properties / green_bandwidth_nmAdded value: +{ + "description": "Narrowband mode: bandwidth of the green channel's filter in nm (PixInsight default 3)", + "type": "number" +} - added
Input schema / properties / green_wavelength_nmAdded value: +{ + "description": "Narrowband mode: centre wavelength of the green channel's filter in nm (default 500.7)", + "type": "number" +} - added
Input schema / properties / red_bandwidth_nmAdded value: +{ + "description": "Narrowband mode: bandwidth of the red channel's filter in nm (PixInsight default 3)", + "type": "number" +} - added
Input schema / properties / red_wavelength_nmAdded value: +{ + "description": "Narrowband mode: centre wavelength of the red channel's filter in nm (default 656.3)", + "type": "number" +}
- Changed
run_sxt1 field changed- changed
Input schema / properties / overlap / descriptionPrevious value: -"Star overlap parameter (default 0.10)"New value: +"Tile overlap (default 0.5). The former default 0.10 left a faint rectangular tile grid (cells of about 470 px) in linear starless images; 0.5 did not."
- Added
run_wbpp - Changed
save_and_show_preview5 fields changed- added
Input schema / properties / cropAdded value: +{ + "description": "Region [x0, y0, x1, y1] of the view in pixels (x1, y1 exclusive); the whole view when omitted", + "items": { + "type": "number" + }, + "maxItems": 4, + "minItems": 4, + "type": "array" +} - added
Input schema / properties / downsampleAdded value: +{ + "description": "Divide width and height by this factor (>= 1). Omitted: the preview is scaled down to at most 2048 px on its longer side", + "type": "number" +} - added
Input schema / properties / stf_c0Added value: +{ + "description": "Shadows clipping point of the linked STF given with stf_m (0 <= c0 < 1)", + "type": "number" +} - added
Input schema / properties / stf_fromAdded value: +{ + "description": "Bake this view's STF (its display stretch) into the JPEG; the view may be view_id itself. Several previews given the same stf_from are stretched identically", + "type": "string" +} - added
Input schema / properties / stf_mAdded value: +{ + "description": "Bake a linked STF with this midtones balance (0 < m < 1) into the JPEG; needs stf_c0", + "type": "number" +}
- Changed
save_preview5 fields changed- added
Input schema / properties / cropAdded value: +{ + "description": "Region [x0, y0, x1, y1] of the view in pixels (x1, y1 exclusive); the whole view when omitted", + "items": { + "type": "number" + }, + "maxItems": 4, + "minItems": 4, + "type": "array" +} - added
Input schema / properties / downsampleAdded value: +{ + "description": "Divide width and height by this factor (>= 1). Omitted: the preview is scaled down to at most 2048 px on its longer side", + "type": "number" +} - added
Input schema / properties / stf_c0Added value: +{ + "description": "Shadows clipping point of the linked STF given with stf_m (0 <= c0 < 1)", + "type": "number" +} - added
Input schema / properties / stf_fromAdded value: +{ + "description": "Bake this view's STF (its display stretch) into the JPEG; the view may be view_id itself. Several previews given the same stf_from are stretched identically", + "type": "string" +} - added
Input schema / properties / stf_mAdded value: +{ + "description": "Bake a linked STF with this midtones balance (0 < m < 1) into the JPEG; needs stf_c0", + "type": "number" +}
- Added
set_stf - Added
wbpp_status
78 tool updates
v2.1.0- First observed
align_to_reference - First observed
apply_mask - First observed
auto_stretch - First observed
clone_image - First observed
close_image - First observed
close_mask - First observed
combine_channels - First observed
continuous_clamp - First observed
continuum_subtract_ha - First observed
copy_astrometric_solution - First observed
create_adaptive_zone_masks - First observed
create_luminance_mask - First observed
create_synthetic_luminance - First observed
create_zone_masks - First observed
crop_image - First observed
describe_process - First observed
dynamic_narrowband_blend - First observed
export_image - First observed
extract_pseudo_oiii - First observed
find_filters - First observed
get_image_dimensions - First observed
get_image_stats - First observed
ha_inject_luminance - First observed
ha_inject_red - First observed
linear_fit - First observed
list_open_images - First observed
list_packs - First observed
list_processes - First observed
lrgb_combine - First observed
measure_bright_chroma - First observed
measure_clipped_blocks - First observed
measure_core_clipping - First observed
measure_highlight_texture - First observed
measure_ringing - First observed
measure_saturation - First observed
measure_sharpness - First observed
measure_star_layer - First observed
measure_stars - First observed
measure_subject_detail - First observed
measure_tonal_presence - First observed
measure_uniformity - First observed
multi_scale_enhance - First observed
open_image - First observed
pixelmath_new_image - First observed
pixinsight_info - First observed
remove_mask - First observed
rename_view - First observed
restore_from_clone - First observed
restore_star_color - First observed
resume_bridge - First observed
robust_median_stretch - First observed
run_abe - First observed
run_background_neutralization - First observed
run_bxt - First observed
run_curves - First observed
run_gradient_correction - First observed
run_hdrmt - First observed
run_lhe - First observed
run_mgc - First observed
run_nxt - First observed
run_per_channel_abe - First observed
run_pixelmath - First observed
run_pjsr - First observed
run_pjsr_file - First observed
run_plate_solve - First observed
run_process - First observed
run_scnr - First observed
run_spcc - First observed
run_spfc - First observed
run_sxt - First observed
save_and_show_preview - First observed
save_preview - First observed
scan_workspace - First observed
set_workspace - First observed
shell_detail_enhance - First observed
star_protected_blend - First observed
stretch_stars - First observed
workspace_info
TDQS
Scored across 90 tools
Many tools have overlapping purposes—background correction (run_abe, run_per_channel_abe, run_gradient_correction, run_mgc), detail enhancement (run_lhe, multi_scale_enhance, shell_detail_enhance), and multiple measurement/stretching tools. Descriptions are unusually detailed and help, but the sheer number of similar-sounding tools leaves real potential for misselection.
Mostly consistent snake_case with clear verb_noun patterns (run_*, measure_*, create_*, align_*, list_*), but a few noun-first info/status tools (workspace_info, job_status, pixinsight_info) and an explicit alias (save_and_show_preview) break uniformity.
90 tools far exceeds the practical 3-15 range; despite the broad PixInsight domain, many dedicated wrappers duplicate what run_process and run_pjsr can already do, making the set unwieldy for an agent.
The surface covers image I/O, processing, calibration, stacking, measurement, masks, workspace, and scripting, with generic run_process/run_pjsr fallbacks that close almost any gap. Only minor file-management operations appear absent, but agents can work around them.
Maintenance
Related MCP Connectors
Search & install 6,500+ AI agent skills from skills-hub.ai inside any MCP tool.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Connect any AI agent to 1,000+ apps and 27,000+ actions through one remote MCP server (OAuth).
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to interact with PixInsight's image processing capabilities through a local HTTP/SSE server, allowing listing processes, invoking them, viewing images, and more.-
- AlicenseNot gradedqualityCmaintenanceMCP server that bridges AI agents with external tools, APIs, databases, and services, enabling standardized tool execution and resource access.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for the INDIGO astronomy automation protocol, enabling AI agents to control telescopes, cameras, focusers, filter wheels, domes, and other observatory equipment through natural language.MIT
- FlicenseBqualityBmaintenanceThis MCP server lets AI clients inspect N.I.N.A. equipment and telemetry, write and persist observation plans, and load, run, and tear down imaging sequences. It also supports hardware actions like parking, homing, and warming the camera for complete astrophotography sessions.141-