Moltline Vision Maths
Server Details
Image header probing, bbox conversion, resize plans and colour maths. 4 of 6 free.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- GarphenGate/moltline-mcp
- GitHub Stars
- 0
- Server Listing
- moltline-mcp
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: format conversion, contrast checking, detection scoring, image header probing, NMS, and resize planning. Descriptions explicitly route users away from adjacent tools (e.g. nms vs detection_metrics vs bbox_convert), leaving little room for misselection.
All names use lowercase snake_case, which is readable and consistent at the casing level. However, the grammatical patterns vary: noun_verb (bbox_convert, colour_check), noun_noun (detection_metrics), verb_noun (resize_plan), and a bare acronym (nms).
Six tools is well-scoped for a computer-vision math/preprocessing utility server. Each tool corresponds to a distinct operation in a plausible vision pipeline, with no obvious filler.
The surface covers common pre/post-processing needs: metadata probing, resize planning, box conversion, NMS, and detection metrics. Minor gaps remain, such as a direct IoU utility or broader segmentation/polygon math, but core workflows are covered.
Available Tools
6 toolsbbox_convertBbox ConvertARead-onlyIdempotentInspect
Convert bounding boxes between COCO, Pascal VOC and YOLO. FREE.
The three formats disagree on everything: COCO is [x, y, width, height], VOC is [x1, y1, x2, y2], YOLO is [cx, cy, w, h] normalised to the image. Getting this wrong produces boxes that look plausible and quietly ruin every metric. Typical input {"boxes": [[10, 20, 100, 50]], "from_format": "coco", "to_format": "yolo", "image_width": 640, "image_height": 480} returns {"boxes": [[0.0938, 0.0938, 0.1562, 0.1042]], "converted": 1, "rejected": []}.
Use whenever a dataset and a model disagree about format. Not for scoring predictions (detection_metrics) and not for removing overlaps (nms). Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""} (for example {"error": "boxes must contain at least one box"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| clip | No | When true, clamp boxes to the image bounds instead of returning them as they are. Off by default, because a box outside the image is usually a bug worth seeing. | |
| boxes | Yes | Boxes to convert, each a list of exactly four numbers in from_format, e.g. [[10, 20, 100, 50]]. | |
| to_format | Yes | The format to convert to; same three choices. | |
| from_format | Yes | "coco" for [x, y, w, h], "voc" for [x1, y1, x2, y2], or "yolo" for normalised [cx, cy, w, h]. | |
| image_width | No | Pixel width, required whenever yolo is on either side. | |
| image_height | No | Pixel height, required whenever yolo is on either side. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description goes further by documenting the non-throwing error contract ({"error": ...}, with a concrete example), the typical input/output payload, and the retry-safety guarantee after correcting input. It also flags the silent-failure hazard (boxes that "quietly ruin every metric"), which helps the agent understand the cost of bad input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then format semantics, then a concrete example, then routing rules and error behaviour — a defensible order. It is longer than strictly necessary: the paragraph on how the three formats disagree overlaps with the enum descriptions already in the schema, and the example return value duplicates what the output schema covers.
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 read-only, idempotent conversion tool with a full input schema and an output schema, the description supplies everything an agent needs: when to call it, what the payloads look like, how failures are surfaced, and that retries are safe. No gap is left that the structured fields don't cover.
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 parameter documentation is already strong. The description adds a worked example that shows all five meaningful fields in use together (including the image_width/image_height requirement when YOLO is on either side), which is more than restating the schema. It stops short of explaining the `clip` flag's behaviour, which is left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Convert bounding boxes") and enumerates the exact three formats involved, so an agent knows the operation's scope immediately. It also names the sibling tools it is not (detection_metrics, nms), making it distinguishable without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the triggering condition ("whenever a dataset and a model disagree about format") and explicitly excludes two sibling tools by name with their purposes. Nothing is left for the agent to infer about when to route here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
colour_checkColour CheckARead-onlyIdempotentInspect
Check a colour pair against the WCAG contrast thresholds. FREE.
Uses the WCAG 2 relative-luminance formula, so the number matches what an accessibility audit will report. Typical input {"foreground": "#767676", "background": "#ffffff"} returns {"contrast_ratio": 4.54, "AA": true, "AAA": false, "required": {"AA": 4.5, "AAA": 7.0}, "verdict": "Passes AA for normal text, fails AAA."}.
Use when generating or auditing an interface. Not for converting colours between spaces and not for palettes. Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""} (for example {"error": "foreground must be a hex colour like #767676"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| background | Yes | Background colour in the same notation. | |
| foreground | Yes | Text colour as hex, e.g. "#767676" or "767676" or "#777". | |
| large_text | No | True for text at least 18pt, or 14pt bold, which WCAG allows to pass at a lower ratio. Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so restating "read-only and idempotent" earns nothing. The genuinely additive disclosure is the error contract — it never raises a protocol error and instead returns {"error": ...} — plus the claim that results match what a real accessibility audit reports. Those are useful, but the section is partly spent repeating structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and the exclusion list are front-loaded and easy to scan. The "FREE." fragment and the redundant restatement of the annotation flags are mild filler, and the worked example plus a separate error example is more illustration than most agents need, but nothing is misleading.
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?
An output schema exists, so return values need no prose explanation, and the annotations already cover the safety profile. What remains — the exclusion boundary, the error-not-exception contract, and the audit-matching precision claim — is all present, leaving no gap an agent would have to discover by trial.
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 every property is documented inline, including the accepted hex variants and the 18pt/14pt-bold rule for large_text, so baseline 3 applies. The worked input/output example reinforces the input format but adds no semantics the schema doesn't already carry, and large_text's effect on the returned thresholds is only implied by the example's "required" block.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — "Check a colour pair against the WCAG contrast thresholds" — and immediately binds it to a concrete computation (WCAG 2 relative-luminance). It also excludes adjacent purposes (colour-space conversion, palette generation), so an agent can tell it apart from anything else in the toolset without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use when generating or auditing an interface" gives a positive trigger, and "Not for converting colours between spaces and not for palettes" gives explicit negatives. The error contract adds the recovery path (correct input, then retry), which is the remaining thing an agent needs to know to use it safely in a loop.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detection_metricsDetection MetricsARead-onlyIdempotentInspect
Score detections against ground truth and show the working. PREMIUM (license).
Greedy matching at the IoU threshold, highest-confidence prediction first, each ground-truth box matched at most once - the standard protocol. Reports per-class precision, recall and F1, and average precision by the all-points interpolation used by Pascal VOC 2010 onward. Typical input {"predictions": [{"box": [0,0,10,10], "label": "cat", "score": 0.9}], "ground_truth": [{"box": [1,1,11,11], "label": "cat"}]} returns {"overall": {"tp": 1, "fp": 0, "fn": 0, "precision": 1.0, "recall": 1.0, "f1": 1.0}, "per_class": {...}, "mAP": 1.0}.
Use to compare two models on the same held-out set. Not for cleaning up a single model's overlapping output first - run nms before this. Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""} (for example {"error": "ground_truth must contain at least one box"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| box_format | No | "voc", "coco" or "yolo". Default "voc". | voc |
| image_width | No | Pixel width; required for yolo boxes. | |
| predictions | Yes | Predicted boxes, each {"box": [...], "label": ..., "score": ...}. Score defaults to 1.0 when omitted. | |
| ground_truth | Yes | True boxes, each {"box": [...], "label": ...}. | |
| image_height | No | Pixel height; required for yolo boxes. | |
| iou_threshold | No | Overlap at which a prediction counts as a match. Default 0.5, the usual reporting threshold. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and non-destructive, but the description adds material context beyond them: a PREMIUM license gate, the matching algorithm and AP interpolation convention, and critically the error contract (never raises a protocol error, returns an {"error": ...} object with a fix hint) plus the retry-safety implication. That error-shape disclosure is exactly the kind of behavioral detail annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and protocol, then example, then usage guidance, then error contract — a sensible ordering. The inline example is long but the tool has no output schema documentation burden elsewhere and it disambiguates the array-of-objects params, so it largely earns its space. Minor deduction for the awkward 'PREMIUM (license).' sentence fragment interrupting the opening line.
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 scoring tool with six parameters, nested-free schema, full schema descriptions and an output schema, nothing an agent needs is missing: input shape, algorithm, metric definitions, error behavior, retry safety, and the sibling to run first are all present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description earns an extra point by giving a concrete worked input showing the actual shape of predictions entries (box/label/score with a 0.9 confidence) and the ground_truth entries, and by tying iou_threshold to the matching behavior rather than only to a range. It does not cover box_format or the yolo image_width/height requirement, which the schema handles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Score detections against ground truth') and immediately pins down the protocol (greedy matching, IoU threshold, highest-confidence first) plus the reported metrics (per-class precision/recall/F1, VOC-2010 all-points AP). No sibling tool does evaluation, and the description explicitly carves out nms as a separate prior step, so the boundary 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?
'Use to compare two models on the same held-out set' gives a positive selection criterion, and 'Not for cleaning up a single model's overlapping output first - run nms before this' gives an explicit exclusion naming the sibling to use instead. This is the when/when-not/alternative pattern at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_probeImage ProbeARead-onlyIdempotentInspect
Read an image's format and pixel size from its header alone. FREE.
Dimensions live in the first few dozen bytes of PNG, JPEG, GIF, BMP and WebP, so a base64 prefix is enough - you do not need to send the whole file, and nothing is decoded. Typical input {"data_base64": "iVBORw0KG..."} returns {"format": "png", "width": 1920, "height": 1080, "aspect_ratio": 1.7778, "aspect_label": "16:9", "megapixels": 2.07, "orientation": "landscape", "bytes_inspected": 512}.
Use to find out what you are dealing with before planning a resize. Not for pixel content - nothing here reads pixels - and not for EXIF. Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""} (for example {"error": "data_base64 must not be empty"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| data_base64 | Yes | The image file, base64-encoded. The first few hundred bytes are enough for every supported format; send a prefix rather than a large file. Data-URL prefixes like "data:image/png;base64," are accepted and stripped. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds material context: nothing is decoded, a base64 prefix suffices, and errors come back as {"error": ...} rather than protocol errors, making retry-after-correction safe. That is behavioral information annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core capability and the 'FREE' cost cue, then groups usage and error behavior cleanly. The inline input/output JSON examples are verbose but earn their place by making the prefix-only contract concrete.
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?
An output schema exists, so return values need no explanation, yet the description still shows the shape. Size limits, error contract, and read-only idempotency are all covered, leaving nothing an agent needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further by stating that only a base64 prefix is needed and by showing a concrete input example. The remaining details (data-URL stripping) live in the schema rather than the description, so it does not fully extend the single 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?
States a specific verb and resource: 'Read an image's format and pixel size from its header alone,' plus the supported formats (PNG, JPEG, GIF, BMP, WebP). It is clearly distinguishable from siblings like resize_plan and colour_check, which the description implicitly excludes ('before planning a resize', 'nothing here reads pixels').
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 when-to-use ('Use to find out what you are dealing with before planning a resize') and explicit when-not ('Not for pixel content ... and not for EXIF'). This is exactly the routing information an agent needs against sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmsNmsARead-onlyIdempotentInspect
Remove duplicate detections of the same object. PREMIUM (license).
Greedy non-maximum suppression: keep the highest-scoring box, drop everything overlapping it above the threshold, repeat. Ties break on the earlier index, so the result is deterministic rather than dependent on sort stability. Typical input {"boxes": [[0,0,10,10],[1,1,11,11],[50,50,60,60]], "scores": [0.9, 0.8, 0.7]} returns {"keep": [0, 2], "suppressed": [{"index": 1, "by": 0, "iou": 0.6807}], "kept": 2}.
Use after a detector that emits overlapping boxes. Not for scoring against ground truth (detection_metrics) and not for format changes (bbox_convert). Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""} (for example {"error": "boxes and scores must be the same length"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| boxes | Yes | Candidate boxes in box_format, e.g. [[0, 0, 10, 10]]. | |
| scores | Yes | One confidence per box, same order and same length as boxes. | |
| box_format | No | "voc", "coco" or "yolo". Default "voc". | voc |
| image_width | No | Pixel width; required for yolo boxes. | |
| image_height | No | Pixel height; required for yolo boxes. | |
| iou_threshold | No | Overlap above which the lower-scoring box is dropped. Default 0.5. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it documents the tie-breaking rule and determinism guarantee, the premium license requirement, and a precise error contract (never raises a protocol error; returns {"error": ...}) plus the safe-retry implication. These are exactly the behavioral traits annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and algorithm, then example, then usage and error handling — a sensible order with little filler. The sample return value partly duplicates the output schema, which is the only reason it falls short of 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?
For a 6-parameter algorithmic tool with a full output schema, the description covers purpose, algorithm, determinism, licensing, error behavior, and sibling routing. Return values are explained by the output schema, so the example is a bonus rather than a gap-filler; nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns more by supplying a concrete worked input and by surfacing a cross-parameter constraint the schema cannot state ("boxes and scores must be the same length"). It does not mention box_format, image_width/height, or the meaning of iou_threshold beyond "the threshold", leaving those entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Remove duplicate detections of the same object") and immediately names the algorithm (greedy non-maximum suppression) so an agent knows exactly what operation this is. It also distinguishes itself from the siblings bbox_convert and detection_metrics by name, so no schema inspection is needed to 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?
"Use after a detector that emits overlapping boxes" gives a positive trigger, and "Not for scoring against ground truth (detection_metrics) and not for format changes (bbox_convert)" gives explicit exclusions mapped to the correct alternatives. This is a full when/when-not/alternative routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_planResize PlanARead-onlyIdempotentInspect
Work out the exact scale, padding and crop for a model input size. FREE.
Returns the numbers you need to transform boxes alongside the image, which is the step that usually gets skipped. Typical input {"width": 1920, "height": 1080, "target": "yolo_640"} returns {"scale": 0.3333, "resized": [640, 360], "pad": {"left": 0, "top": 140, "right": 0, "bottom": 140}, "box_transform": "x_new = x * 0.3333 + 0; y_new = y * 0.3333 + 140"}.
Use before feeding an image to a fixed-input model. Not for finding out the image's size in the first place - that is image_probe. Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""} (for example {"error": "unknown target ; use one of or set"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "letterbox" scales to fit and pads the remainder, preserving aspect; "cover" scales to fill and crops the overflow; "stretch" distorts to fit exactly. Default "letterbox". | letterbox |
| width | Yes | Source image width in pixels. | |
| height | Yes | Source image height in pixels. | |
| target | No | A named preset: "clip_224", "vit_384", "yolo_640", "sam_1024", "sd_512", "sd_768" or "detr_800". Ignored when target_size is set. | yolo_640 |
| target_size | No | A square side length in pixels, overriding target. Use this for a size the presets do not cover. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, yet the description adds a genuinely non-obvious contract: invalid input never raises a protocol error but returns an {"error": ...} object, and retry after correction is always safe. The retry sentence partly restates the idempotentHint, which keeps this from a 5, but the error-shape disclosure is real added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then error behavior - a sensible order with no filler paragraphs. The standalone "FREE." token and the verbose rendered example are the only parts that cost space without adding 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?
The tool is non-trivial (5 params, presets, three modes) and the description covers when to call it, what the output means for downstream box transforms, and the exact error contract. An output schema exists, so return values need not be explained, yet the example still orients the 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 per-tool baseline is 3, but the worked example ({"width": 1920, "height": 1080, "target": "yolo_640"} -> scale/resized/pad/box_transform) concretizes what width, height and target actually produce and shows the default target in action. It does not add anything about mode or target_size beyond the schema, so it stays below 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: compute the exact scale, padding and crop for a model input size. It also names what it is not (image_probe) so an agent can separate it from the closest sibling without opening either 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?
"Use before feeding an image to a fixed-input model" gives the trigger condition, and "Not for finding out the image's size in the first place - that is image_probe" gives an explicit exclusion plus the alternative tool by name.
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.
6 tool updates
- First observed
bbox_convert - First observed
colour_check - First observed
detection_metrics - First observed
image_probe - First observed
nms - First observed
resize_plan
Related MCP Connectors
Image toolkit: resize, compress, crop, watermark, convert, rotate, EXIF read/strip.
Resize, convert, compress, crop and thumbnail images, and strip EXIF and GPS metadata.
Resize, compress, convert, crop, rotate, strip EXIF and watermark one image or a whole zip. Handles HEIC; outputs JPEG, PNG, WebP or AVIF; reports which metadata was removed. Free within a daily quota, no API key. The same tools run free in the browser at byondr.co/image-tools.
Resize, convert to WebP, compress, crop, rotate and strip EXIF from images
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to perform everyday image tasks over MCP, including resizing, format conversion, target-size compression, verified GPS/EXIF stripping, cropping, rotation, icon generation, contact sheets, and batch operations. Runs on Pillow alone with sandboxed directory access, atomic non-overwriting writes, decompression-bomb protection, and optional previews.MIT
- AlicenseAqualityDmaintenanceEnables comprehensive image editing operations including resizing, format conversion, cropping, compression, rotation, flipping, and batch processing. Supports JPEG, PNG, WebP, and AVIF formats with quality control and metadata extraction.817 npm19MIT
- AlicenseNot gradedqualityFmaintenanceProvides local image analysis tools using Pillow for dimensions, colors, metadata, and format conversion without external APIs.1MIT
- AlicenseAqualityCmaintenanceMCP server for raster image manipulation using Pillow and OpenCV. Enables image operations such as resizing, cropping, rotating, format conversion, filtering, and auto-enhancement via MCP tools.8MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.