pixinsight-mcp
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., "@pixinsight-mcpOpen the latest image and apply a screen transfer stretch so I can see it."
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-mcp
pixinsight-mcp gives an AI agent hands inside PixInsight: a toolbox of about 80 PixInsight operations exposed over MCP, used by agent chat sessions and by the skills that guide them.
It contains no processing workflow. No pipeline, no ordering, no recommended parameters, no opinion about what makes a good image. Deciding what to do is the job of you, your chat session and your own skills, and that knowledge stays in your repositories, public or private, under your control.
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#1e40af', 'primaryTextColor': '#ffffff', 'primaryBorderColor': '#1e3a8a',
'secondaryColor': '#5b21b6', 'secondaryTextColor': '#ffffff', 'lineColor': '#64748b', 'textColor': '#f8fafc', 'clusterBkg': '#1e293b', 'clusterBorder': '#475569', 'edgeLabelBackground': '#334155'}}}%%
flowchart LR
classDef yours fill:#5b21b6,stroke:#4c1d95,stroke-width:1px,color:#ffffff
classDef harness fill:#0e7490,stroke:#155e75,stroke-width:1px,color:#ffffff
classDef repo fill:#1e40af,stroke:#1e3a8a,stroke-width:1px,color:#ffffff
classDef app fill:#334155,stroke:#1e293b,stroke-width:1px,color:#f8fafc
subgraph decides["Decides what to do — yours, not this repo"]
You("You, in a chat session"):::yours
Skills("Your skills<br/>order, tuning, gotchas"):::yours
end
subgraph agent["Any MCP agent harness"]
Harness("Claude Code · Codex · Cursor<br/>OpenCode · Windsurf · VS Code<br/>Gemini CLI · Zed"):::harness
end
subgraph conn["pixinsight-mcp — this repo: operates PixInsight, nothing more"]
Tools("~80 capability tools<br/>open · stats · run_process · pixelmath<br/>masks · stretch · blend · measure"):::repo
Bridge("Bridge<br/>starts PixInsight and its<br/>script, talks over files"):::repo
end
PI("PixInsight<br/>1.9.5+"):::app
You --> Harness
Skills -.->|guides| Harness
Harness -->|MCP tool calls| Tools
Tools --> Bridge
Bridge <-->|PJSR| PIInstall
Every harness runs the same stdio process: npx -y github:mxcoppell/pixinsight-mcp (Node 22+ and git on PATH; append #<tag> to pin a release, e.g. #v1.2.1).
Nothing to clone, no path to configure: PixInsight and its watcher start on the first tool call. Check: npx -y github:mxcoppell/pixinsight-mcp doctor.
Target folder. The tools work in the folder set_workspace names, else PIXINSIGHT_MCP_WORKSPACE (~/ allowed), else the launch folder; Claude Desktop has no useful one, so set the bundle's Target folder option or call set_workspace. PixInsight cannot run a script from a path containing a comma (or a double quote), so such a target is refused: rename the folder or set PIXINSIGHT_MCP_STATE to a folder without one.
The connector writes only <target>/agentic/ (scratch, the bridge and its watcher script, logs) and <target>/output/, nothing in your home folder; PIXINSIGHT_MCP_STATE replaces agentic/ (resolved against the target; an absolute path moves it, bridge and watcher script included, outside the target: the one explicit exception); PixInsight keeps its own settings, swap and temp files where it always does (ImageSolver's star lists, for one, when run_pjsr code calls it; run_plate_solve puts them under agentic/scratch/).
Every tool call, with the PJSR it sent and PixInsight's reply, is logged as JSONL in <target>/agentic/logs/ (paths and code: check before sharing); PIXINSIGHT_MCP_LOG=0 turns this off. The log file opens in the workspace of the first call that uses one (a set_workspace is logged in the workspace it sets), so a launch folder you leave before any call uses it gets nothing; calls made before that are written into the file that opens, or nowhere if none does. workspace_info and doctor show every folder in use.
Harness | Config | Where |
Claude Code |
|
|
Codex CLI |
|
|
Cursor |
|
|
OpenCode |
|
|
Windsurf |
|
|
VS Code / Copilot |
|
|
Gemini CLI |
|
|
Zed |
|
|
Cline |
|
|
Kiro |
|
|
Claude Desktop |
|
|
Every mcpServers entry is {"pixinsight": {"command": "npx", "args": ["-y", "github:mxcoppell/pixinsight-mcp"]}},
plus an optional env. Three shapes differ: Codex is TOML under mcp_servers (underscore);
OpenCode wants command as an array; VS Code names the top-level key servers.
OS | PixInsight looked for at | Status |
macOS |
| verified |
Windows |
| unverified — set |
Linux |
| unverified — set |
Related MCP server: gimp-mcp
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.
Models
Needs | Why |
Vision — required |
|
Sonnet-class or better | weaker models lose tool-call reliability and error discipline first |
Long multi-step tool use | tens to a hundred sequential calls, some taking minutes, all state inside PixInsight |
Long context | skill text, ~80 tool schemas and a transcript of numeric results |
Closed: the Claude Sonnet/Opus, GPT-5 and Gemini Pro families. Open-weight: multimodal lines such as Kimi, MiniMax and Qwen's vision checkpoints. The trap: pick a family's multimodal checkpoint, not its coding one — top open coding models are often text-only.
Tools
78 tools. Generated by npm run docs:tools from the live catalog; do not edit by hand.
Tool | Group | What it does |
| Astrometry | Plate solve an open image with ImageSolver against the local Gaia DR3/SP database (offline) |
| Astrometry | Copy the astrometric solution (WCS) and observation keywords from a source image file to a target view |
| Channels | Combine 3 mono views into a single RGB color image using ChannelCombination |
| Channels | Align a target image to a reference image using StarAlignment |
| Channels | Run AutomaticBackgroundExtractor (ABE) separately on the R, G and B channels of a color view, then recombine them into the view with ChannelCombination |
| Channels | Replace the lightness of an RGB view with a grayscale L view using LRGBCombination, in place on the RGB view |
| Detail | Masked three-scale LocalHistogramEqualization on a view, in one call, with an optional HDRMultiscaleTransform pass |
| Detail | Protected high-pass detail enhancement at two scales, in place |
| Execute | Run a PJSR (JavaScript, V8 engine) snippet inside PixInsight and return its console output |
| Execute | Run an arbitrary PixelMath expression in place on a view |
| Execute | Run PixelMath to create a NEW image from expressions that reference other open views by id |
| Execute | 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) |
| Execute | Run a PJSR (JavaScript, V8 engine) source file from disk inside PixInsight and return its console output |
| Images | Open an XISF/FITS image file in PixInsight |
| Images | Close an image window to free memory |
| Images | List all currently open images in PixInsight with their dimensions and color status |
| Images | Rename an image view to a different view ID |
| Images | Clone an image to a backup view, which can be restored from later with restore_from_clone |
| Images | Restore an image from a backup clone, replacing all changes since the clone was made |
| Images | Crop pixels off the edges of an image, in place |
| Images | Get dimensions, channel count, and color status for one or more views |
| Images | Get image statistics: median, MAD, min, max, per-channel medians |
| Images | Write an image to a file in the workspace's output or state folder |
| Introspect | List every PixInsight process available on this installation, by its PJSR constructor name (e.g. "SCNR", "PixelMath") |
| Introspect | 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 |
| Masks | Create a luminance mask from a color view: Y = 0.2126R + 0.7152G + 0.0722B, then an optional blur and shadow clip |
| Masks | Apply a mask to a target view |
| Masks | Remove the current mask from a view |
| Masks | Close and delete a mask window to free memory |
| Masks | Create core, shell and halo masks from three fixed luminance thresholds |
| Masks | Create three masks from percentiles of the image's own luminance |
| Measure | Measure background uniformity via 4-corner median stddev |
| Measure | Measure the stars of a view by pixel sampling |
| Measure | Measure a star layer (a mostly black view holding stars) |
| Measure | Measure concentric oscillation around the brightest region |
| Measure | Measure sharpness as the mean Sobel gradient energy (gx² + gy²) of luminance over every 4th pixel of a region |
| Measure | Measure how much of the brightest region is above a level |
| Measure | Count image blocks with pixels above a level |
| Measure | Measure the texture of the bright subject zone |
| Measure | 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) |
| Measure | Measure subject and background tones |
| Measure | 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 |
| Measure | Measure subject brightness, detail and contrast |
| Narrowband | Add Ha to the red channel of an RGB view in place, where Ha exceeds R by a given fraction |
| Narrowband | Raise the luminance of an RGB view in place where Ha exceeds it, keeping colour ratios |
| Narrowband | Create a mono view from the B channel of an RGB view minus its scaled R channel |
| Narrowband | Subtract the scaled R channel of an RGB view from an Ha view, in place |
| Narrowband | Add Ha and OIII (mono views) to an RGB view in place, through a temporary luminance mask |
| Narrowband | Create a mono view from a weighted sum of Ha and OIII |
| Preview | Save a JPEG preview of a view and return the file path |
| Preview | Alias for save_preview |
| Processes | Run SCNR (Subtractive Chromatic Noise Reduction) to remove a green colour cast from a view |
| Processes | Run GradientCorrection on a view to remove a background gradient |
| Processes | Run BackgroundNeutralization to equalize the background level across channels |
| Processes | Run NoiseXTerminator to reduce noise on a view |
| Processes | Run LinearFit to scale a linear image to match a reference view |
| Processes | Run LocalHistogramEqualization (contrast-limited local histogram equalization) on a view |
| Processes | Run BlurXTerminator on a view |
| Processes | Run StarXTerminator to separate stars from a view, replacing it in place with the starless result and producing a separate stars view |
| Processes | Run AutomaticBackgroundExtractor (ABE) on a view, replacing it in place with the corrected result |
| Processes | Run HDRMultiscaleTransform on a view |
| Processes | Apply a CurvesTransformation to a view |
| Processes | Search PixInsight's built-in filter and camera QE database by name (case-insensitive substring) |
| Processes | Run SpectrophotometricFluxCalibration: writes the flux metadata that run_mgc requires |
| Processes | Run SpectrophotometricColorCalibration (SPCC) |
| Processes | Run MultiscaleGradientCorrection using the MARS reference database |
| Session | Report the resolved PixInsight installation paths for this platform and the connector version |
| Stars | Blend a stars-only image into a starless one in place, as a screen blend that turns colour-preserving in bright star cores |
| Stars | Restore the colour ratios of a reference view in the bright areas of a target, in place, keeping the target's luminance |
| Tone | Stretch a linear view in place so its median lands on target_median |
| Tone | Stretch a linear star image in place with a pedestal subtraction and a repeated midtones transfer function |
| Tone | Stretch a view in place with PixInsight's auto-stretch (the ScreenTransferFunction Auto Stretch computation), applied as a HistogramTransformation |
| Tone | Compress bright values in place above a knee that varies per pixel |
| Workspace scan | 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) |
| Server | Report the workspace folder, the state directories under it (scratch, bridge, logs) and the output folder |
| Server | Set the workspace folder this session's files go under (scratch files, the bridge, call logs) |
| Server | Allow PixInsight commands again after the user pressed Pause/Abort |
| Server | 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 |
Packs
A pack is an ES module outside this repo that adds tools, or replaces core ones, in every session. List its
folder or .mjs file in PIXINSIGHT_MCP_PACKS; list_packs and doctor show what
loaded and why. A pack is arbitrary code running with your privileges: only packs you configure load,
and nothing is ever fetched. Writing and loading one: CONTRIBUTING.md.
Skills are where technique lives — yours or the community's
The connector ships capability only: every tool takes the values that shape the picture as inputs and reports numbers, never a verdict. Which tools, in what order, with which values, and what counts as good enough is technique, and it lives in skills: markdown (a validated order, what to ask the user first, the values and thresholds to use, what to check at each step) in repositories anyone can publish or keep private. A pack can still add your own formulas as tools. A workflow that works becomes a repository others install in one line.
Have one that works? Add it to COMMUNITY.md in a one-line PR.
Contributing
A PixInsight capability with no tool yet → CONTRIBUTING.md: one module in
src/tools/, no registry.A pack or a skill → COMMUNITY.md; no connector change needed.
Humans and agents both welcome.
npm testneeds no PixInsight.
Credit, and why this was rearchitected
This project began as aescaffre/pixinsight-mcp by Alain Escaffre, who built the file-IPC bridge, the PJSR watcher, and most of the tool catalog this connector inherits. MIT then, MIT now.
That project aimed at a fully autonomous processing pipeline: connector, LLM orchestrator and a large body of processing knowledge in one repository. For a connector that meant hard-won, personal knowledge (tuned parameters, orderings, blend formulas) shared publicly rather than on its authors' terms, no install without cloning (in practice for one harness), and a 3,000-line catalog to navigate to add one tool. So the pipeline was retired and the repository split: the connector stays generic and installable; the knowledge moved to repositories its authors control.
Troubleshooting
Symptom | Cause and fix |
| Not at the default path: set |
A long call is dropped after about a minute | The harness timed out. The server sends progress keepalives only when the harness requests progress (sends a |
| A view id was mistyped or the view was closed; the error lists the views that are open |
| It needs an RA/Dec seed near the true center ( |
| PixInsight runs one script at a time: a session in another target folder (or a 1.0 session, or a long script) may hold it, so retry when it is free and restart any 1.0 session after upgrading. Or PixInsight could not open the watcher script: its Process Console says why |
| Pause/Abort was pressed in PixInsight; nothing runs until you say continue and the agent calls |
Available Tools
78 toolsalign_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.
clone_imageA
Clone an image to a backup view, which can be restored from later with restore_from_clone.
| 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 full burden. It only states the action and that the clone can be restored, but does not disclose whether the original is modified, whether clone_id must be unique, whether the image must be open, or what the clone contains (full snapshot vs reference). This is insufficient for safe invocation.
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 with no wasted words. The action is front-loaded, and the reference to restore_from_clone is scannable and relevant. It is concise without sacrificing the core message.
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 must supply enough context for correct use. It does not mention prerequisites (e.g., open image), uniqueness expectations for clone_id, or the nature of the backup (snapshot vs live copy). The tool creates a resource, so more behavioral detail is needed; the description is incomplete for a safe call.
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 both parameters ('Source view ID' and 'Name for the clone'). 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 uses a specific verb ('Clone') and resource ('image to a backup view'), and explicitly references the complementary operation restore_from_clone. This distinguishes it clearly from sibling tools like copy_astrometric_solution or align_to_reference, leaving no ambiguity about 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?
It implies a clear usage context: create a backup view that can be restored later, and names the restore counterpart. However, it does not explicitly state when to use this versus alternatives (e.g., before destructive edits) or mention any exclusions, so some inference is still required.
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.
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.
| 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?
The description discloses a critical behavioral trait: 'in place', meaning the original image is modified. With no annotations provided, this is valuable. However, it doesn't mention whether the operation is reversible, whether it affects clones, or what happens if crop amounts exceed image dimensions.
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 zero waste. The core action, the in-place behavior, and the parameter semantics are all front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 5-parameter tool with 100% schema coverage, the description is mostly complete. The main gap is the lack of behavioral details around edge cases (e.g., cropping more pixels than the image has) and whether the operation can be undone. No output schema exists, so return value behavior is not disclosed.
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. The description adds the crucial context that amounts are 'pixels to remove from each side', which reinforces the schema descriptions but doesn't add new information beyond them.
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 ('Crop'), a resource ('an image'), and the key behavior ('in place'), which clearly distinguishes it from sibling tools like clone_image or get_image_dimensions. It doesn't explicitly name a sibling alternative, but the 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 implies when to use it: when you need to remove pixels from image edges. It doesn't explicitly state when not to use it or mention alternatives like clone_image for non-destructive cropping, but the context is reasonably clear for a simple operation.
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.
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 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 present, the description carries the full burden of disclosing side effects and constraints. It explicitly says the working image is not changed, missing parent folders are created, paths outside allowed regions are refused, and bit-depth defaults vary by format. This is unusually transparent for a tool definition.
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 tight, front-loaded with the core purpose, and every sentence provides distinct value. It moves from the main action to path rules, format mapping, bit-depth defaults, and side effects without repetition 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?
The description covers path safety, supported formats, bit-depth behavior, and non-mutation of the working image, which is enough to invoke the tool correctly. It does not mention overwrite behavior or what happens on unsupported extensions or failures, and there is no output schema, so a small completeness gap remains.
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 explains how relative file_path is resolved, what absolute paths are permitted, how the extension selects the format, and what bit-depth behavior applies per format. This far exceeds the baseline expected when the schema already documents each parameter.
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 concrete verb and resource: 'Write an image to a file in the workspace's output or state folder.' It clearly identifies the tool's purpose and even scopes where output may be written)Skip. It does not explicitly distinguish itself from sibling save_preview/save_and_show_preview tools, so it falls short of a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives detailed path and format constraints but never states when to choose this tool over alternatives such as save_preview or save_and_show_preview. There is no when-to-use / when-not-to-use guidance, so an agent must infer usage from the name and general purpose.
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 "IMX455"); 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 of behavioral disclosure. It discloses ordering semantics (exact, then substring, then grouped-name matches), case-insensitivity, and the grouped-name expansion behavior. It also notes that sensor QE curves have channel Q, which is a useful behavioral detail. It does not mention pagination or result limits, but for a search tool this is reasonably 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?
Three sentences, each dense with useful information: matching semantics, ordering, grouped-name behavior, downstream usage, and the Q channel note. 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 2-parameter search tool with no output schema, the description covers matching, ordering, and downstream usage. It does not describe the result format (e.g., what fields are returned per match), but the description's stated purpose is to pick exact names, and the ordering semantics are sufficient for that. Minor gap, but overall complete enough.
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 with examples. The description adds the grouped-name matching behavior and the Q channel note, which enriches the 'query' and 'channel' semantics respectively. However, it does not add much beyond the schema's examples, so a 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 ('Search'), a specific resource ('PixInsight's built-in filter and camera QE database'), and the matching semantics (case-insensitive substring, grouped-name expansion). It also names the downstream consumers (run_spfc/run_spcc), which distinguishes it from the many measurement/process tools in the sibling list.
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 explicitly says to use it to pick exact names for run_spfc or run_spcc, which gives a clear when-to-use context. It does not explicitly state when not to use it or name an alternative lookup tool, but among the siblings there is no obvious competing search tool, so the guidance is adequate.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | PixInsight view ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits itself. It does not state that the operation is read-only or non-destructive, nor does it describe the return format, error behavior, or any side effects. The description only lists the statistics, leaving the agent uncertain about what to expect.
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 that front-loads the operation ('Get image statistics') and then lists the specific statistics. There is no unnecessary verbiage, making it easy to parse and act on.
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 getter with one parameter and no output schema, the description is moderately complete. It lists the statistics but does not indicate the return structure (e.g., JSON object, array), nor does it clarify that the operation is read-only. While not severely deficient, an agent might need more context to fully anticipate the tool's 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%, so the schema already documents view_id as a PixInsight view ID. The description adds no additional meaning about the parameter, such as how to obtain a valid view ID or whether it is optional. The baseline of 3 applies because the schema handles the documentation.
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 'Get' and resource 'image statistics', and enumerates specific statistics (median, MAD, min, max, per-channel medians). This distinguishes it from sibling tools like get_image_dimensions, but it does not explicitly name any sibling or contrast with the many measure_* tools, so it misses the full differentiator.
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 measure_uniformity or measure_stars. There are no explicit conditions, exclusions, or recommended scenarios, leaving the agent to infer usage from the tool name alone.
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.
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; 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 fully discloses the tool's behavior: pixel sampling grid size, local maxima criteria, deduplication limits, star count caps, FWHM definition, color diversity formula, luminance weights, and response fields including edge-case behavior for background_median. This is exemplary transparency.
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 front-loaded with the core purpose before diving into technical specifics. Every detail (algorithm, limits, output fields) serves a purpose, though it is a single long block rather than structured sections, so it loses one point.
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 and the absence of an output schema, the description is remarkably complete. It names every returned JSON field, explains how each is computed, states invariants like 'at most 100 kept' and the '30 brightest measured', and defines edge cases. An agent has enough information to invoke it correctly and interpret results.
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?
There is only one parameter, view_id, and the schema already covers it at 100% with 'View to measure.' The description does not add significant new semantic detail about how view_id is used beyond the schema, 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 opens with a specific verb and resource: 'Measure the stars of a view by pixel sampling.' It explains the exact algorithm and output stats, making it easy to distinguish 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?
No explicit guidance is given about when to use this tool versus alternatives such as measure_star_layer or measure_sharpness. The description is purely algorithmic and does not mention when it is the appropriate choice, nor when another measurement tool should be preferred.
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. 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" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. It discloses non-obvious constraints: expressions reference open views by id, view ids must be simple identifiers, pow() is unsupported and must be replaced via exp(ln()) or ^, and symbols can only be constants. This goes well beyond a generic 'run PixelMath' statement.
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 concise sentences, with the core purpose and key distinction front-loaded. Every sentence adds value: color behavior, identifier rules, and a math workaround. There is no filler or repetition of the input 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 an 8-parameter tool with no annotations and no output schema, the description covers the essential operational constraints and parameter relationships. It does not explain what happens on output_id conflicts or whether the new image becomes active, but the schema already documents the individual parameters, so the description is reasonably 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 already high at 88%, so the baseline is 3. The description adds meaningful parameter-level semantics by tying the color enum to which expression parameters are expected (red/green/blue vs single expression) and by giving expression-syntax constraints that are 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 opens with a specific verb and resource: 'Run PixelMath to create a NEW image from expressions that reference other open views by id.' It clearly distinguishes this tool from siblings like run_pixelmath by emphasizing the new-image behavior, and it specifies the color-mode options (rgb vs gray).
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 creation-focused use case clear and gives practical guidance about expression identifiers and color modes. However, it never explicitly names an alternative tool (such as run_pixelmath) or states when NOT to use this tool, leaving the selection decision partly to inference.
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.
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); 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 of behavioral disclosure. It usefully explains prerequisites, filter handling, and MARS file defaults, but it does not state what the tool changes in the image, whether it modifies the view in place, or what output/feedback to expect. This is acceptable but incomplete for an unsupervised 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?
The description is three sentences and wastes no words. It front-loads the core operation, then states the most decision-relevant constraints in a logical order. It could be slightly more compact, but every sentence adds value and the structure is coherent.
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 moderately complex process with seven parameters and no output schema, the description covers the key contextual needs: prerequisites, filter selection, defaults, and the data source. It omits explicit guidance on when to prefer this over run_gradient_correction or how to interpret the model window, but these are secondary to 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 coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema: it explains that filter is mono-only, that omitting it uses R/G/B bands for color images, that mars_files defaults to PixInsight settings, and that certain metadata must be present. This materially helps an agent choose parameter values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the operation ('Run MultiscaleGradientCorrection') and its data source (MARS reference database), making the tool's core purpose unmistakable. It does not explicitly contrast with sibling tools like run_gradient_correction, but the MARS-specific wording and filter-band handling set it apart enough to avoid gross confusion.
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 concrete preconditions: the image must be plate-solved and linear, and mono images require flux metadata from run_spfc. It also gives explicit filter-selection rules for mono vs. color images, which tells the agent exactly when and how to invoke the tool. It stops short of naming alternative sibling tools or exclusion criteria, but the guidance is strong.
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. 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 of disclosing behavior. It explicitly says the operation is performed 'in place on a view,' which signals mutation of the existing image, and it warns about syntax constraints that could produce incorrect results. It does not describe failure behavior or return values, but for an in-place mutation tool the key behavioral trait is disclosed.
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 purpose appears in the first sentence, followed by three short, essential rules. There is no filler or repeated schema information, and 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 complex, mutation-style tool with no annotations and no output schema, the description covers the tool's purpose, target view, and the syntax pitfalls most likely to cause incorrect invocations. The main gap is the absence of usage guidance relative to the many sibling image-processing tools, but nothing needed to construct a valid call 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 baseline is 3. The description adds critical semantic detail beyond the schema by defining the valid expression syntax for channel access ($T[0], $T[1], $T[2]), forbidding pow(), and showing how to reference other images via viewId[index]. This is exactly the kind of parameter-level guidance an agent needs.
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 action ('Run an arbitrary PixelMath expression') and a specific resource ('in place on a view'), so an agent can tell this is a PixelMath mutation tool rather than a general process or curve tool. 'In place on a view' also distinguishes it from sibling pixelmath_new_image, which creates a new 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 provides strong operational rules: no pow(), correct $T[index] channel syntax, and viewId[index] for other images. However, it never explicitly says when to choose this over run_process, run_curves, or pixelmath_new_image, and it gives no 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.
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, so #include does not work.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | PJSR code. The value of the last expression is returned. |
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 the snippet is eval-ed, that ES6 module syntax will not work, that #include is unsupported, and that console output is returned. These are exactly the hidden traits an agent needs to know before invoking an arbitrary-code 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?
Three sentences with no fluff. The core action comes first, followed by usage guidance and critical syntax limitations. Every sentence earns its place and the structure front-loads the most decision-relevant 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 single-parameter tool with no output schema, the description is complete: it explains what the tool does, when to use it, what to expect as output, how to keep long processes responsive, and what syntax limitations exist. 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 schema covers 100% of the parameter documentation, including the important detail that the value of the last expression is returned. The description reinforces this by mentioning console output but does not add substantial new meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Run a PJSR snippet inside PixInsight and return its console output.' It also differentiates itself by declaring it a 'last resort' tool relative to other tools, which clearly separates it from siblings like run_process or run_pjsr_file.
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 explicitly tells the agent when to use the tool: as a last resort for things other tools do not cover. It also provides a concrete operational guideline about calling processEvents() before long processes. It does not name specific sibling alternatives, but the exclusion 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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the PJSR source file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden and does a solid job: it reveals that the file is eval-ed, that ES6 modules are unsupported, that #include will not work, and that console output is returned. It does not discuss error handling or potential side effects of arbitrary script execution, but the most significant execution-model behaviors are disclosed.
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, each earning its place. The first states the action, environment, and output; the second distinguishes from the sibling and warns about syntax limitations. 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 one-parameter tool with no output schema, the description covers what the tool does, how it executes code, its key limitations, and its return value. It could specify error behavior or timeout characteristics, but it is sufficiently complete for an agent to select and 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 fully documents the single parameter with a clear description of an absolute file path. The tool description only restates that the code is read from a file on disk, which adds no real semantic value beyond the schema. Baseline 3 applies because schema coverage is complete.
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: running a PJSR JavaScript source file from disk inside PixInsight and returning its console output. It explicitly distinguishes itself from the sibling run_pjsr by noting the code comes from a file instead of being 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 description references run_pjsr as the same execution model and clarifies the file-vs-inline distinction, which effectively tells the agent when this tool is appropriate. It also adds important constraints about eval semantics and the lack of ES6 module syntax. It does not spell out an explicit when-not-to-use rule, but the condition is strongly implied.
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. The scale seed may be off by about 2x. 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 | |
| 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 behavioral disclosure and does so well: it specifies offline Gaia DR3/SP, tolerance of position within a fraction of the field, scale seed can be off about 2x, and DATE-OBS/DATE fallback to today. It does not describe success/failure output or side effects in more detail, but the 'adds astrometric solution' statement conveys the key 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?
Four dense sentences, purpose first, then downstream need, then parameter requirements, then tolerances and time fallback. No filler; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers purpose, prerequisites, tolerance, and time-source fallback, and the schema covers parameter details. It is slightly incomplete about observation_jd (the description's 'else today' omits that a passed Julian date can override) and doesn't explain return/error behavior, but those are minor given the schema richness.
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 documents all 7 parameters, and description adds relationships: ra_deg/dec_deg are a pair, pixel_scale is alternative to focal_length_mm + pixel_size_um, and image keywords can substitute. This adds real 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 first sentence names a precise operation, 'plate solve an open image with ImageSolver against the local Gaia DR3/SP database (offline)', and the second ties it to downstream siblings (run_spfc, run_mgc, run_spcc), making it easy to distinguish from copy_astrometric_solution and other 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?
States that the astrometric solution is a prerequisite for run_spfc/run_mgc/run_spcc and gives exact conditions for supplying position/scale versus relying on image keywords. It lacks an explicit 'use when not' clause, but 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.
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.
| 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, the description must carry behavioral disclosure. It does explain the execution model—instantiation, parameter assignment, view-scoped vs global execution—but does not disclose potential side effects, failure modes, or that running arbitrary processes can modify images irreversibly. This is a meaningful gap for a generic process runner.
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, front-loaded sentence with no wasted words. It states the core action, the parameter-assignment mechanism, the view/global execution distinction, and the tool's fallback role. Every component 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 generic tool with three well-documented parameters, this is a viable definition. However, it is missing context about what happens on invalid constructor names, whether the operation is immediately applied and destructive, and any interaction with the many sibling measurement or process-specific tools. No output schema exists, so some return-value guidance could have helped.
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 marginal framing by saying parameters are 'JSON-valued' and execution is conditional on view_id, but most of this is already present in the schema property descriptions. It does not meaningfully deepen the agent's understanding of the 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 states a specific action sequence: instantiate a process by PJSR constructor name, assign JSON parameters, and execute on a view or globally. It explicitly labels itself as the 'generic fallback for processes with no dedicated tool,' which clearly differentiates it from the many specialized run_* 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 tells the agent that this tool is the generic fallback, implying dedicated tools should be preferred when they exist. It also explains the view_id condition: provide it to run on a view, omit to run globally. It stops short of explicitly naming alternatives or stating 'use run_scnr instead for SCNR,' but the guidance 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_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).
| 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 | |
| green_filter_name | No | Measured G filter curve name, as listed by find_filters | |
| white_reference_name | No | Same as white_reference |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It states prerequisites but never explains what the tool does to the image, whether it mutates pixel values, what it produces, or what happens when prerequisites are not met. For a calibration operation this is a significant transparency 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, each earning its place: the first expands the tool abbreviation, the second provides the critical prerequisites. There is no fluff, and the most important usage condition 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 covers the key preconditions and the schema fully documents all 8 parameters, so an agent can assemble a valid call. However, with no output schema and no annotations, the description leaves out what SPCC actually changes, what the expected result is, and whether any side effects or long-running behavior should be anticipated.
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 even without additional parameter information in the description. The description adds one useful clarifying note about linearity and astrometric requirements for view_id, but it mostly repeats what the schema already states and does not materially enrich the other 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 action and resource: 'Run SpectrophotometricColorCalibration (SPCC)', which clearly identifies the tool's purpose and expands the cryptic name. It does not explicitly contrast it with siblings like run_spfc, but the unique process name makes the distinction clear enough.
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 concrete conditions for use: the image must have an astrometric solution and be linear (not stretched). It also points to run_plate_solve as the way to satisfy the astrometric prerequisite. It does not, however, describe when SPCC would be inappropriate relative to other calibration tools.
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 | Star overlap parameter (default 0.10) | |
| 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?
With no annotations provided, the description carries the burden of behavioral disclosure. It clearly states that the operation modifies the view in place and produces a new stars view, which are critical side effects. It does not mention reversibility, additional side effects, or prerequisites beyond the is_linear selection, but the key destructive 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?
Two sentences with zero wasted words. The first sentence front-loads the core purpose and side effects, while the second adds the crucial parameter guidance. Structure is optimal for scanning.
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 covers the essential what and how, including the in-place modification and the creation of a stars view. It omits how the resulting stars view is named or retrieved, which an agent might need to know to reference it later. However, the agent can likely infer or discover this through list_open_images, so the gap is minor.
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 semantic value by explaining that is_linear selects the unscreen mode ('off for linear (pre-stretch) data, on for non-linear (stretched) data'), which goes beyond the schema's simple boolean description. Overlap is not elaborated, but the default is clearly documented 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 opens with a specific verb (Run) and resource (StarXTerminator), and clearly states the action (separate stars from a view) with explicit outcomes: the view is replaced in place with the starless result and a separate stars view is produced. This distinguishes it from sibling star-processing tools by naming the exact algorithm.
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 when to use the is_linear parameter (off for linear data, on for non-linear), which guides the caller on correct invocation. However, it does not explicitly contrast run_sxt with alternatives like run_bxt or run_nxt, leaving differentiation to the tool name rather than explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_and_show_previewA
Alias for save_preview. Save a JPEG preview of a view and return the file path.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | Short label for this preview (e.g. "after_stretch", "final") | |
| view_id | Yes | PixInsight view ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It does state the operation and the return value, which adds useful behavioral context, but it does not mention whether an existing view/preview is required, whether files are overwritten, or any side effects beyond saving.
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 two short clauses: the alias relationship is front-loaded, followed immediately by the operation and return value. There is no filler or redundant wording, and every phrase 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 simple two-parameter alias tool with no output schema, the essential call contract is present: what it does, what it returns, and the required parameters are all clear. It is slightly thin on prerequisites and behavioral nuance, but it is mostly complete for an agent to select and invoke the 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%, and both parameters already have explanatory descriptions in the schema, including an example for label. The tool description adds no parameter-level detail, 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 clearly states the action ('save a JPEG preview of a view') and the return value ('return the file path'), and it opens by identifying itself as an alias for save_preview. However, it does not explain how save_and_show_preview differs from save_preview, so differentiation from the most relevant sibling is weak.
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 alias statement implies that this tool is equivalent to save_preview, which gives the agent a rough sense of when to use it, but there is no explicit when-to-use guidance, prerequisites, or exclusions. The description does not say when to prefer this tool over its sibling save_preview or over other preview-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_previewB
Save a JPEG preview of a view and return the file path.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | Short label for this preview (e.g. "after_stretch", "final") | |
| view_id | Yes | PixInsight view ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does disclose the side effect (saving a JPEG preview) and the output (returning a file path), which is meaningful. However, it omits details such as file location, naming behavior, overwrite semantics, and prerequisites like the view needing to be open.
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 with no wasted words. Every part contributes: the action, the output format, the target resource, and the return 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?
For a simple two-parameter tool the description is adequate, but it lacks usage context relative to save_and_show_preview and provides no behavioral detail about file overwrite or location. The absence of annotations and output schema means these gaps are not covered elsewhere.
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 both parameters, so the baseline is 3. The description adds no extra parameter-level meaning beyond referencing 'a view'; it does not, for example, explain how label relates to the output file path.
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 ('Save a JPEG preview of a view') and explicitly states the return value ('file path'), making the core purpose clear. However, it does not distinguish this tool from the sibling save_and_show_preview, so an agent cannot immediately tell the two 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?
There is no guidance on when to use this tool versus alternatives, nor any exclusion criteria. With a near-identical sibling named save_and_show_preview, the lack of selection guidance is a notable gap.
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_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.
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_MCP_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?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it does well: it explicitly states 'Read-only' and discloses that it reports failure reasons ('when it cannot be used, why'), covering error behavior. The scope of the report is fully enumerated. It could add detail on return format or whether it errors when no workspace exists, but for a simple info tool this is strong.
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, roughly 50 words, with the primary purpose front-loaded and every clause adding distinct information: report content, provenance, failure reporting, and the read-only flag. There is no wasted or redundant wording.
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 must carry the return-value burden, and it does: it enumerates every category of reported information (folder paths, state dirs, output folder, origin, failure reason). For a zero-parameter informational tool, this is complete; the only minor gap is not specifying the exact return format or data structure.
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 takes zero parameters (empty input schema, 100% coverage trivially), so there is nothing for the description to add beyond the schema. The baseline of 4 applies because no parameter documentation is needed or possible.
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 ('Report') and enumerates precisely what is reported: the workspace folder, state directories (scratch, bridge, logs), the output folder, the folder's origin, and failure reasons. This level of specificity makes the purpose unambiguous. It does not explicitly contrast with the closely named sibling scan_workspace, but the enumerated content makes confusion unlikely.
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 rather than stated: an agent can infer this is the tool to call when it needs workspace paths or needs to check workspace usability. However, the description never says 'use this when...' or points to an alternative (e.g., scan_workspace) for other needs. The mention of set_workspace is about provenance, not selection 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.
78 tool updates
v1.2.1- 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 78 tools
Several tools have genuinely blurred boundaries: save_preview and save_and_show_preview are exact duplicates, the measure_* family has multiple Sobel-based texture/detail/sharpness variants, and run_pjsr/run_pjsr_file plus run_process/run_pixelmath form overlapping fallback clusters. The individual descriptions are detailed, but an agent will struggle to reliably pick between these near-neighbor tools.
The dominant snake_case verb_prefix pattern (run_*, measure_*, create_*, get_*, list_*) is mostly followed, but there are clear deviations: linear_fit lacks the run_ prefix used by every other process wrapper, pixelmath_new_image sits awkwardly beside run_pixelmath, and several tools lead with the object or adjective (ha_inject_red, lrgb_combine, auto_stretch) rather than a verb. The set is readable but not consistently predictable.
At 78 tools this is an extreme count for an MCP surface, even given PixInsight's broad domain. The set contains many narrow near-variants that could be consolidated, such as 14 measure_* functions, multiple narrowband blending tools, and a duplicate preview alias. This volume will overwhelm context windows and make tool selection considerably harder.
The surface covers the main astro-image processing workflow well: opening images, measuring, stretching, background/color correction, star handling, plate-solving, masking, workspace management, and exporting. A few natural operations such as image calibration, stacking, and resampling are not first-class tools, but run_process, list_processes, and run_pjsr provide workable fallbacks.
Maintenance
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
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 gradedqualityAmaintenanceEnables AI agents to perform GIMP-style image operations such as open, resize, crop, flip, rotate, blur, desaturate, text overlay, export, and batch processing via MCP tools, supporting both mock (Pillow) and live GIMP backends.1MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that lets AI assistants drive Adobe Photoshop on Windows through ExtendScript and COM automation, offering ~122 tools for documents, layers, text, filters, color, selections, masks, layout QA, and design systems.MIT
- AlicenseBqualityAmaintenanceEnables AI agents to operate GIMP 3 end-to-end: open and inspect images, call every PDB procedure, apply GEGL filters destructively or as layer effects, measure pixels, render before/after/diff comparisons, cut out subjects with AI segmentation, and run multi-step recipes across folders.322Apache 2.0