image-processing
Server Details
Image processing for AI agents: resize, convert, compress, crop, and web-ready AI-generated images.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
10 toolsanalyze_imageAInspect
Analyze an image
Fetch an image from a URL or base64 and return its metadata: size in bytes, pixel dimensions, source format, and what it costs every supported vision model in tokens. Always free. Dimensions are omitted if the image header cannot be read. Also reports whether the input carries a C2PA (Content Credentials) manifest and in which container; the manifest is not validated.
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Example Response:
{
"size_bytes": 1,
"c2pa_manifest": true
}| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Image source: a public URL (https://...) or a base64-encoded string (optionally as a data URI like data:image/png;base64,...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does a solid job: it discloses that the operation is free, that dimensions may be omitted if the header cannot be read, that C2PA manifests are reported but not validated, and that the tool fetches from URL or base64. It does not cover auth/privacy caveats, but for this tool the disclosed limitations are meaningful and relevant.
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 opens with a clear one-line purpose and uses a structured responses section for practical detail. It is moderately sized and front-loaded, though the example response mentions only two of the many documented output fields, which is slightly misleading and prevents a perfect score.
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 is fairly complete: it names the main metadata fields, the cost output, the C2PA behavior, and a key failure mode (unreadable header). A minor gap is that it does not enumerate which vision models are considered, but this is not essential for invoking 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?
The input schema already documents the single 'source' parameter with good coverage, including public URL, base64, and data URI formats. The description adds little beyond repeating 'URL or base64' and does not enrich the schema's meaning, 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 uses a specific verb ('Fetch... and return') with a clear resource ('image metadata') and enumerates concrete outputs: size, pixel dimensions, source format, vision model token costs, and C2PA presence. This clearly distinguishes analyze_image from sibling transformation tools like compress_image, resize_image, and 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 implies its use case by listing what it returns—especially the free token cost estimate for vision models—and the 'Always free' note provides practical selection context. However, it does not explicitly state when not to use it or name alternatives such as estimate_cost, 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.
compress_imageAInspect
Compress an image
Re-encode an image with quality/format options to reduce file size. Supports jpeg, png, webp, tiff, gif. Instead of a q number you can set quality_target (0-1]: the smallest file with SSIM at or above the target, searched on the worker (jpeg, webp, avif; flat surcharge; outcome reported in X-Pictomancer-Quality-* headers). If the output is not smaller than the input, the request is free (X-Pig-Billed: 0) and does not consume free-tier quota. Optional enhancement modifiers: denoise (1-3), equalize, sharpen (applied denoise -> equalize -> op -> sharpen).
Responses:
200: Processed image binary (Success Response) Content-Type: application/json Content-Type: image/jpeg
Example Response:
"string"Content-Type: image/png
Example Response:
"string"Content-Type: image/webp
Example Response:
"string"| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Quality (1-100). Lower = smaller file. Typical values: 60-80 for web, 85-95 for print. Maps to libvips Q parameter. | |
| strip | No | Strip metadata (EXIF, ICC profile, etc.) from the output. Reduces file size slightly. | |
| format | No | Output format: jpeg, png, webp, tiff, gif, or avif. If omitted, the original format is preserved. | |
| source | Yes | Image source: a public URL (https://...) or a base64-encoded string (optionally as a data URI like data:image/png;base64,...). | |
| autorot | No | Apply EXIF orientation before compressing. Opt-in; default false, which preserves current byte-for-byte behavior. | |
| denoise | No | Median denoise before compressing: radius 1-3 (window 3x3 to 7x7). Opt-in; no surcharge. | |
| sharpen | No | Unsharp-mask sharpen after compressing (libvips defaults). Opt-in. | |
| delivery | No | ||
| equalize | No | Auto-contrast (histogram equalisation of the value channel; hue and saturation preserved) before compressing. Opt-in. | |
| quality_target | No | Target SSIM (0-1]: the worker searches for the smallest file that still scores at least this. Alternative to q; mutually exclusive with it. Requires an explicit format among jpeg, webp, avif. Carries a flat surcharge for the extra encodes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of behavioral disclosure. It clearly states the tool is a mutation (write) operation, describes the free-tier quota behavior (X-Pig-Billed: 0 if output not smaller), mentions the surcharge for quality_target searches, and notes the enhancement processing order. However, it does not disclose whether the input source is stored, how long results are available, or rate limits. Given the complexity, it covers the most critical behavioral traits well.
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 block of text with clear sections: purpose, format support, quality modes, free-tier rule, enhancement order. It uses clear sentences without redundancy. However, it could be more structured (e.g., bullet points for formats or modifiers). Length is justified by the tool's complexity (10 params, 3 delivery modes). 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 complex image processing tool with 10 parameters, multiple output formats, and delivery modes, the description provides substantial context beyond the schema. It explains the quality_target workflow, enhancement ordering, free-tier behavior, and format support. No output schema exists, but the description notes responses are binary images with Content-Type headers. Missing: explicit details on delivery mode semantics (inline vs PUT vs callback) — these are in the schema but the description doesn't summarize trade-offs. Overall, strong coverage for the complexity.
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 high (90%), so the baseline is 3. The description adds context by listing supported formats and explaining the quality_target workflow (SSIM target, formats supported, surcharge). It also mentions the enhancement order and free-tier behavior. However, much of the param info (q range, strip meaning, format list) is already in the schema. The description does not add value for all params (e.g., source, delivery remain schema-only). It compensates enough to stay at 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 starts with a powerful verb ('Compress') and noun ('image'), immediately followed by the mechanism ('Re-encode...to reduce file size'). It lists supported formats and distinguishes the two quality modes (q vs quality_target). The siblings include convert_image, resize_image, crop_image — this description clearly separates compression from those transformations.
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 when to use q vs quality_target (mutually exclusive, latter for SSIM-guided size reduction) and mentions optional enhancement modifiers (denoise, equalize, sharpen) and their processing order. It also notes that free-tier quota is not consumed if the output isn't smaller. However, it doesn't explicitly say when to prefer this over convert_image or optimize_for_vision, nor does it state when not to use it (e.g., for lossless color space conversion).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_imageAInspect
Convert image format
Convert an image to a different format (jpeg, png, webp, tiff, gif, avif). Optionally set quality, strip metadata, enable lossless mode (webp, avif), or tune encoder effort (avif). Instead of a q number you can set quality_target (0-1]: the smallest file with SSIM at or above the target, searched on the worker (jpeg, webp, avif; flat surcharge; outcome reported in X-Pictomancer-Quality-* headers). Optional enhancement modifiers: denoise (1-3), equalize, sharpen (applied denoise -> equalize -> op -> sharpen).
Responses:
200: Processed image binary (Success Response) Content-Type: application/json Content-Type: image/jpeg
Example Response:
"string"Content-Type: image/png
Example Response:
"string"Content-Type: image/webp
Example Response:
"string"| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Quality (1-100). Maps to libvips Q parameter. | |
| strip | No | Strip metadata (EXIF, ICC profile, etc.) from the output. | |
| effort | No | AV1 encoder CPU effort (0-9). Higher = smaller file, slower. Only applies to avif. | |
| format | Yes | Target format: jpeg, png, webp, tiff, gif, or avif. | |
| source | Yes | Image source: a public URL (https://...) or a base64-encoded string (optionally as a data URI like data:image/png;base64,...). | |
| autorot | No | Apply EXIF orientation before converting. Opt-in; default false, which preserves current byte-for-byte behavior. | |
| denoise | No | Median denoise before converting: radius 1-3 (window 3x3 to 7x7). Opt-in; no surcharge. | |
| sharpen | No | Unsharp-mask sharpen after converting (libvips defaults). Opt-in. | |
| delivery | No | ||
| equalize | No | Auto-contrast (histogram equalisation of the value channel; hue and saturation preserved) before converting. Opt-in. | |
| lossless | No | Enable lossless encoding. Only applies to webp and avif. | |
| quality_target | No | Target SSIM (0-1]: the worker searches for the smallest file that still scores at least this. Alternative to q; mutually exclusive with it and with lossless. Only for jpeg, webp, avif. Carries a flat surcharge for the extra encodes. |
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 covers delivery methods (inline, put_url, callback), security details (credentials never stored, HMAC signatures), surcharges for quality_target, and the order of modifier application. However, it does not mention idempotency, rate limits, or whether the original source is modified.
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 well-structured, starting with a brief summary followed by detailed explanations of options and delivery modes. The inclusion of response headers and example outputs is helpful. While slightly lengthy, each sentence provides necessary context, and it avoids 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 tool with 12 parameters, multiple delivery modes, and optional enhancement modifiers, the description covers most aspects comprehensively. It explains quality_target behavior, delivery authentication, and modifier order. Minor gaps include lack of explicit error response documentation, but the examples and schema cover the expected output.
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?
Despite 92% schema coverage, the description adds significant value beyond the structured schema. It explains the relationship between q and quality_target, the mutual exclusivity with lossless, the modifier pipeline order (denoise -> equalize -> op -> sharpen), and the meaning of the quality search headers. This helps the agent understand parameter interactions.
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 'Convert image format' and lists all supported formats (jpeg, png, webp, tiff, gif, avif). It distinguishes convert_image from sibling tools like compress_image, crop_image, resize_image, etc., by focusing on format conversion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does in detail but does not explicitly provide guidance on when to use this tool versus alternatives such as compress_image or optimize_for_vision. The context of siblings implies it is for format conversion, but no direct comparisons or exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crop_imageAInspect
Crop an image
Extract a rectangular region from an image, in one of three mutually exclusive modes. Manual: give the top-left corner (x, y) and dimensions (width, height) in pixels. Smart crop: give 'gravity' (attention, entropy, centre) plus width and height; the window is picked automatically, clamped to the source if the target is larger. Trim: set 'trim: true' (optional 'threshold') to remove a uniform background border via content detection; the applied rect is reported in X-Pictomancer-Trim-* headers. Optional enhancement modifiers: denoise (1-3), equalize, sharpen (applied denoise -> equalize -> op -> sharpen).
Responses:
200: Processed image binary (Success Response) Content-Type: application/json Content-Type: image/jpeg
Example Response:
"string"Content-Type: image/png
Example Response:
"string"Content-Type: image/webp
Example Response:
"string"| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Left edge of the crop rectangle in pixels. Manual mode only. | |
| y | No | Top edge of the crop rectangle in pixels. Manual mode only. | |
| trim | No | Trim mode: removes a uniform background border via content detection. Mutually exclusive with x/y/width/height/gravity. | |
| width | No | Width of the crop rectangle in pixels. Required in manual and gravity modes. | |
| format | No | Output format: jpeg, png, webp, tiff, gif, or avif. If omitted, the original format is preserved. | |
| height | No | Height of the crop rectangle in pixels. Required in manual and gravity modes. | |
| source | Yes | Image source: a public URL (https://...) or a base64-encoded string (optionally as a data URI like data:image/png;base64,...). | |
| autorot | No | Apply EXIF orientation before cropping. Opt-in; default false, which preserves current byte-for-byte behavior. | |
| denoise | No | Median denoise before cropping: radius 1-3 (window 3x3 to 7x7). Opt-in; no surcharge. | |
| gravity | No | Smart-crop mode: picks the window automatically. One of ('attention', 'entropy', 'centre'). Requires width and height; mutually exclusive with x/y and trim. A target larger than the source clamps to the source size. | |
| sharpen | No | Unsharp-mask sharpen after cropping (libvips defaults). Opt-in. | |
| delivery | No | ||
| equalize | No | Auto-contrast (histogram equalisation of the value channel; hue and saturation preserved) before cropping. Opt-in. | |
| threshold | No | Trim sensitivity (must be positive; default 10.0). Only valid together with trim: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses mutual exclusivity of modes, smart crop clamping, trim header reporting, and enhancement order. However, it omits major behavioral aspects like the delivery parameter (inline vs put_url vs callback) and autorot EXIF handling, which are important for agent usage.
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 well-structured with a summary followed by mode details and enhancements. However, the response examples are redundant and uninformative (repeated 'string' JSON), adding unnecessary length. Could be more 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 complexity (14 parameters, no output schema), the description covers modes and enhancements but fails to explain the delivery parameter, autorot behavior, or error responses. The response section is minimal and does not clarify the return format beyond 'binary' and Content-Type examples.
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 93%, so baseline is 3. The description adds value by grouping parameters into modes, clarifying mutual exclusivity, and specifying enhancement application order. It also explains gravity options and trim threshold context 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 clearly states 'Crop an image' and explains the three mutually exclusive modes (manual, smart crop, trim). It uses a specific verb-resource pair and distinguishes the tool from siblings like resize or compress by focusing on region extraction.
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 each mode (e.g., manual for explicit coordinates, smart crop for automatic window picking, trim for removing borders). However, it does not explicitly compare to sibling tools or state when not to use crop_image, leaving the selection largely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_costAInspect
Estimate the price of an operation
Returns the exact USD price this API would charge for an operation on an input of the given size, without fetching or processing anything. Free. Use it before paying: send X-Max-Cost-USD on the real request to have the API refuse (412) instead of charging more than you allowed. The list price is returned even when the request could end up free (free tier, or a compress that does not shrink the file).
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Example Response:
{
"operation": "Operation",
"price_usd": 1.0,
"base_usd": 1.0,
"surcharges_usd": {},
"size_multiplier": 1.0,
"within_free_tier": true,
"free_tier_remaining": 1,
"currency": "Currency",
"network": "Network"
}| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Requested output format; only avif changes the price. | |
| operation | Yes | Operation to price. One of resize, compress, convert, crop, optimize_for_vision, optimize_generated, pipeline. analyze is always free. | |
| operations | No | For pipeline only: the ordered operations, each {type, format?}. Volume discount applies at 3+ operations. | |
| input_bytes | Yes | Size of the input image in bytes. Get it from analyze_image (free) if you do not know it. | |
| quality_target | No | Whether the request will use quality_target (SSIM search surcharge). |
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 the tool is free, does not fetch or process anything, returns exact USD price, and explains behavior for free tier and compress operations that do not shrink the file. The response example further enriches transparency by showing fields like free_tier_remaining. It does not contradict any provided metadata.
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 relatively concise, with a few clear sentences followed by a detailed example response. While the example response is lengthy, it adds value by clarifying the return structure. Overall, the description is well-structured and avoids unnecessary verbosity, though the example could be trimmed slightly.
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 moderate complexity (5 parameters, 2 required, nested objects) and no output schema, the description is highly complete. It explains when to use it, how to use it with headers, behavior under free tier and compress, and includes a full response example with all fields. Nothing essential is missing for an AI agent to understand 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?
Schema description coverage is 100%, so baseline is 3. The description adds little beyond the schema: it mentions that only 'avif' changes price for format, which is already in the schema. No additional parameter context or examples are provided that significantly enhance understanding beyond what the schema already communicates.
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 estimates the price of an operation, using a specific verb ('Estimate') and resource ('price of an operation'). It distinguishes itself from sibling processing tools (e.g., compress_image, convert_image) by being the only cost estimation tool, and explicitly mentions it does not fetch or process anything.
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 guidance on when to use: 'Use it before paying' and explains how to integrate with X-Max-Cost-USD to limit costs. It also notes that the list price is returned even if the request would be free. However, it does not explicitly mention situations where this tool should not be used or suggest alternatives, though siblings are distinct enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_format_infoAInspect
Get supported formats and options
Returns supported output formats and their configurable options.
Responses:
200: Successful Response (Success Response) Content-Type: application/json
| 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 transparency burden. It clearly states that the tool returns supported formats and options, which implies a read-only query operation. The absence of side effects or side-channel behavior is adequately conveyed for a tool of this simplicity.
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 short but somewhat redundant: 'Get supported formats and options' and 'Returns supported output formats and their configurable options' restate the same idea. The Responses section adds standard HTTP status detail, but the first two sentences could be merged into one efficient 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 simple, parameterless query tool, the description is reasonably complete. It states the purpose and the return value. Although there is no output schema, the description explains what is returned (supported formats and options). The sibling context clarifies that this is a non-action informational tool, making the overall picture adequate.
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 accepts zero parameters, so the input schema provides no semantic content. The description correctly adds no parameter information because there is none to add. Per the rubric, a 0-parameter tool receives a baseline of 4.
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 tool's function: it gets supported formats and returns their configurable options. The verb 'Get' and the specific resource 'supported formats and options' make the purpose unambiguous, and it is distinct from sibling tools that perform image transformations.
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: given the sibling tools all perform image operations, this is evidently a query/utility tool for retrieving format information. However, there is no explicit guidance on when to use it instead of alternatives, nor any mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_pipelineAInspect
Run a multi-step image pipeline
Chain multiple operations (resize, compress, convert, crop) in sequence. The image is fetched once, then each operation is applied to the output of the previous one. Max 10 operations per pipeline.
Responses:
200: Processed image binary (Success Response) Content-Type: application/json Content-Type: image/jpeg
Example Response:
"string"Content-Type: image/png
Example Response:
"string"Content-Type: image/webp
Example Response:
"string"| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Image source: a public URL (https://...) or a base64-encoded string (optionally as a data URI like data:image/png;base64,...). | |
| delivery | No | ||
| operations | Yes | Ordered list of operations to apply sequentially. Each operation receives the output of the previous one. Max 10. |
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 key behaviors: image is fetched once, operations apply sequentially, max 10 operations, and response content types. It omits side effects like writing to PUT URLs or callbacks, but covers essential processing behavior well.
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 concise and front-loaded with the core behavior, followed by structured response examples. No wasted words; the separation of processing logic and responses aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with delivery modes and multi-step processing, and the description covers the pipeline flow and limits. Missing details like error cases and delivery side effects are partly covered by the schema, making the description adequate for selection and 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 67%, with detailed descriptions for source and operations. The description restates operation types but adds little beyond the schema. It does not clarify delivery semantics, which are complex but already well described 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?
Description clearly states 'Run a multi-step image pipeline' and details that it chains operations (resize, compress, convert, crop) in sequence. This distinguishes it from sibling single-operation tools like resize_image and compress_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 use for multi-step workflows by explaining sequencing and a 10-operation limit. It doesn't explicitly contrast with single-operation siblings, but the use case is evident from the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_for_visionAInspect
Resize an image for a vision model
Resize an image to the largest size a given vision model still benefits from, and report what it costs that model in tokens before and after. Every provider downscales oversized input before counting tokens, so this alone saves bytes and upload latency rather than tokens. Pass max_tokens to trade resolution for tokens: that lever is continuous on Claude, unavailable on OpenAI (cost follows the aspect ratio alone), and on Gemini reaches only a flat 258. An image already within budget is returned untouched and free (X-Pig-Billed: 0).
Responses:
200: Processed image binary (Success Response) Content-Type: application/json Content-Type: image/jpeg
Example Response:
"string"Content-Type: image/png
Example Response:
"string"Content-Type: image/webp
Example Response:
"string"| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Quality (1-100). Maps to libvips Q parameter. | |
| format | No | Output format: jpeg, png, webp, tiff, gif, or avif. If omitted, the original format is preserved. | |
| source | Yes | Image source: a public URL (https://...) or a base64-encoded string (optionally as a data URI like data:image/png;base64,...). | |
| delivery | No | ||
| max_tokens | No | Optional cap on what the image may cost the target model. Without it the image is resized to the model's own ceiling, which saves bytes and upload latency but no tokens, because every provider already downscales oversized input before counting. Set a budget to trade resolution for tokens. The response reports the cost actually achieved: on OpenAI it cannot be lowered by resizing at all, and on Gemini only down to a flat 258. | |
| target_model | Yes | Vision model the image is being prepared for, e.g. claude-opus-5, gpt-4o, gemini-2.5-pro. Unknown ids are rejected rather than guessed: the wrong limits would silently resize to the wrong size. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that resizing alone saves bytes/latency but not tokens, that max_tokens behaves differently across Claude/OpenAI/Gemini, and that in-budget images are returned untouched and free (X-Pig-Billed: 0). It does not discuss rate limits or auth, but those are less central here.
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 paragraph is front-loaded and dense with meaningful info about provider-specific behavior and token economics. The Responses section is slightly redundant with repeated Content-Type headers and 'string' placeholders, but it does provide return-type hints in the absence of an output 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?
Given no output schema, the description explains the outcome (resized image, token cost report, free/billed header) and includes response examples. The schema covers the remaining parameter semantics well. Minor gap: it does not detail error cases beyond the schema's note on unknown model IDs.
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 83% and parameter docs are already detailed (e.g., max_tokens and target_model). The description reinforces max_tokens behavior but adds little beyond the schema's own parameter descriptions, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resizes an image for a vision model and reports its token cost before and after. This specific verb+resource+scope distinguishes it from sibling tools like resize_image or compress_image, which do not include model-specific token reporting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: use this when preparing an image for a vision model, and explains when to pass max_tokens to trade resolution for tokens. However, it does not explicitly name alternatives or state when not to use this tool versus resize_image or compress_image, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_generated_imageAInspect
Optimize an AI-generated image for the web
The step after image generation. gpt-image, DALL-E, Flux, Midjourney and Stable Diffusion hand back 2-8 MB PNGs; this returns the same picture as a web-ready webp (default), avif, jpeg or png, metadata stripped, transparency kept on webp/avif/png. Optional max_dimension caps the longest side (never upscales); optional q or quality_target (smallest file with SSIM >= target, flat surcharge) control quality. Same price as convert. If the result is not smaller than the input it is still returned but free (X-Pig-Billed: 0). X-Pictomancer-Bytes-Before/-After/-Saved-Percent report the saving. The input's C2PA manifest, if any, is reported in X-Pictomancer-C2PA-Input but is not carried over: re-encoding invalidates it.
Responses:
200: Processed image binary (Success Response) Content-Type: application/json Content-Type: image/jpeg
Example Response:
"string"Content-Type: image/png
Example Response:
"string"Content-Type: image/webp
Example Response:
"string"| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Quality (1-100). Maps to libvips Q parameter. Omit to use the encoder default; or set quality_target instead. | |
| strip | No | Strip metadata. Defaults to true: generated images carry no EXIF worth keeping. Metadata includes any C2PA manifest, which would be invalid after re-encoding anyway. | |
| format | No | Output format: webp (default), avif, jpeg or png. webp, avif and png keep transparency; jpeg flattens it. | webp |
| source | Yes | Image source: a public URL (https://...) or a base64-encoded string (optionally as a data URI like data:image/png;base64,...). | |
| delivery | No | ||
| max_dimension | No | Cap on the longest side in pixels. Larger images are scaled down to fit, aspect ratio preserved; smaller images are never upscaled. | |
| quality_target | No | Target SSIM (0-1]: the worker searches for the smallest file that still scores at least this. Alternative to q; mutually exclusive with it. Carries a flat surcharge for the extra encodes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors without annotations: metadata stripping (including C2PA), no upscaling, surcharge for quality_target, and the 'free if not smaller' rule. It also explains security aspects of PUT/callback delivery (no credential storage, HMAC signing, SSRF whitelisting).
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, well-structured paragraph that front-loads the purpose and systematically covers options, costs, and security. It is dense but not verbose, conveying substantial information efficiently.
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 all major aspects: purpose, delivery modes, quality controls, metadata handling, cost, and response behavior (including binary output and free condition). It is complete given the tool's complexity and the provided schema, with no significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
It enriches schema descriptions with contextual details: format transparency handling, delivery mode security, and cost implications (same price as convert, flat surcharge). The description adds meaning beyond the schema, such as the condition for free result.
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's purpose: 'Optimize an AI-generated image for the web' and specifies it as the step after image generation. This distinguishes it from sibling tools like compress_image or convert_image by targeting AI-generated output and web readiness.
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 indicates when to use this tool ('The step after image generation') and compares pricing to convert, implying alternatives. It also covers delivery modes and quality controls, giving clear guidance on scenarios like async delivery via callback URLs or cost implications of quality_target.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_imageAInspect
Resize an image
Scale an image by a factor, or fill an exact box. Use 'scale' for uniform scaling, or 'scale_x'/'scale_y' for independent axes (float factors, e.g. 0.5 = half size). Alternatively set 'width'+'height' for fill mode: resize and smart-crop to those exact dimensions in one call (optional 'gravity', default attention). The two modes are mutually exclusive. Optional enhancement modifiers: denoise (1-3), equalize, sharpen (applied denoise -> equalize -> op -> sharpen).
Responses:
200: Processed image binary (Success Response) Content-Type: application/json Content-Type: image/jpeg
Example Response:
"string"Content-Type: image/png
Example Response:
"string"Content-Type: image/webp
Example Response:
"string"| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Uniform scale factor applied to both axes (e.g. 0.5 = half size). Use this for simple scaling; use scale_x/scale_y for independent axes. | |
| width | No | Target width in pixels for fill mode: resize and smart-crop to these exact dimensions in one call. Requires height. Mutually exclusive with scale/scale_x/scale_y. Upscaling is allowed. | |
| format | No | Output format: jpeg, png, webp, tiff, gif, or avif. If omitted, the original format is preserved. | |
| height | No | Target height in pixels for fill mode. Requires width. | |
| source | Yes | Image source: a public URL (https://...) or a base64-encoded string (optionally as a data URI like data:image/png;base64,...). | |
| autorot | No | Apply EXIF orientation before resizing. Opt-in; default false, which preserves current byte-for-byte behavior. | |
| denoise | No | Median denoise before resizing: radius 1-3 (window 3x3 to 7x7). Opt-in; no surcharge. | |
| gravity | No | Fill-mode smart-crop strategy: one of ('attention', 'entropy', 'centre'). Only valid together with width and height; defaults to attention. | |
| scale_x | No | Horizontal scale factor (e.g. 0.5 = half width). If only scale_x is given, scale_y defaults to the same value. | |
| scale_y | No | Vertical scale factor (e.g. 0.75 = 75% height). Optional; defaults to scale_x if omitted. | |
| sharpen | No | Unsharp-mask sharpen after resizing (libvips defaults). Opt-in. | |
| delivery | No | ||
| equalize | No | Auto-contrast (histogram equalisation of the value channel; hue and saturation preserved) before resizing. Opt-in. |
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 processing pipeline order (denoise -> equalize -> op -> sharpen), autorot behavior, opt-in features, and delivery mode details (including security considerations for put_url and callback_url). However, it does not mention error handling, size limits, or performance implications, which would be valuable 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?
The description is front-loaded with the main purpose but includes verbose response examples and some redundancy (e.g., repeating parameter details from the schema). It could be more concise by omitting the example responses or merging the mode explanations. Still, it is structured 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?
Given the complexity (13 parameters, no output schema), the description covers the main modes, modifiers, and delivery options, but it lacks explicit error scenarios, constraints (e.g., maximum image size), and a structured description of the return value beyond content type examples. It is adequate but leaves gaps an agent might need to discover through trial and error.
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 92%, so the baseline is 3. The description adds context about the two modes and the default gravity, but the schema already provides detailed descriptions for most parameters. The description does not introduce meaning beyond what the schema offers, so a 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 tool's purpose: 'Resize an image' and distinguishes two modes (scale by factor or fill exact box). It uses specific verbs like 'scale', 'fill', and 'smart-crop', and the sibling tools (e.g., crop_image, compress_image) are clearly different operations, so an agent can easily understand what this 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?
The description explains when to use the internal scale vs. fill modes and that they are mutually exclusive, but it does not provide any guidance on when to choose resize_image over sibling tools like compress_image or convert_image. An agent would need to infer the context from the tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
AI image processing: upscale, resize, crop, compress, convert file format, and generate SEO metadata
Video, audio, and image processing for AI agents: convert, transcribe, upscale - 150+ operations.
AI-agent image generation: cohesive sets & illustrations. Resize a set or export icons, free.
Generate images, GIFs, and PDFs from HTML, URLs, or templates — from your AI agent.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to perform image processing tasks such as sprite sheet splitting, resizing, cropping, and batch operations on local images.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to process images locally via file paths—converting, resizing, removing backgrounds, smart cropping, upscaling, reading or stripping metadata, and batch processing—without files ever leaving the device.MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI agents with tools to convert images between formats and inspect image metadata, enabling seamless image processing within agent workflows.253MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to resize images from a URL with configurable dimensions and convert between PNG, JPEG, and WebP formats while preserving aspect ratio, using pay-per-call x402 micropayments.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Most tools are distinct, but compress_image, convert_image, and optimize_generated_image overlap heavily: all re-encode images with format and quality options. The descriptions clarify intent, yet an agent could still struggle to pick between compressing, converting, and optimizing in some cases.
The set mostly follows a verb_noun pattern (analyze_image, compress_image, crop_image, resize_image). Minor deviations include image_pipeline, which is a noun phrase, and optimize_for_vision/optimize_generated_image, which use longer prepositional forms, but the overall pattern is predictable.
Ten tools is well within the ideal range for an image-processing server. Each tool serves a meaningful purpose, and the count feels neither bloated nor thin.
Core image operations are well covered: analyze, resize, crop, convert, compress, pipeline, plus cost/format introspection. Minor gaps like rotate/flip or explicit metadata editing are absent, but agents can accomplish most workflows with the existing surface.