mcp-registry/ai.pictomancer/image-processing · vAgent-to-agent image processing: resize, convert, compress, crop, pipeline, and
As of 2026-10-21 23:21 UTC, the Pictomancer Image Processing MCP server is up with a Glimind reliability score of 72/100 (grade C). Over the last 30 days it answered 99% of Glimind's liveness checks. It had 44 outages in 90 days, with a median recovery of 7 minutes.
Image processing for AI agents: resize, convert, compress, crop, and web-ready AI-generated images.
Claude Code
claude mcp add --transport http pictomancer-image-processing-mcp-server https://api.pictomancer.ai/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"pictomancer-image-processing-mcp-server": {
"type": "http",
"url": "https://api.pictomancer.ai/mcp"
}
}
}
Third-party server, listed as discovered. Review its source before installing.
6 tool definition(s) exceed ~1,200 tokens each (largest: crop_image, ~1,550).
Move long reference material out of descriptions (link a doc or expose a resource), drop repeated examples, and collapse large enums. Trimming these to ~600 tokens saves ~4,691 tokens every session. How to fix →
10 of 10 tool(s) carry no readOnlyHint/destructiveHint annotations.
Annotate read-only tools with {"readOnlyHint": true}. Agents and gateways can then run them without a confirmation prompt, and route around destructive ones. How to fix →
7 parameter(s) across 7 tool(s) have no description.
Add a "description" to each parameter with its format and an example ("ISO 8601 date, e.g. 2026-10-17"). This is the commonest cause of wrong arguments on the first call. How to fix →
Reachable 99.0% of the time over the last 30 days; median recovery 7 min.
Agents fail over to an alternative the first time a call fails. Add health checks and restart-on-failure, and avoid cold starts on serverless hosts.
Handshake + tools/list takes ~1,696 ms.
Serve tools/list from memory, keep the process warm, and host close to your users. Every new agent session pays this before its first call.
No tool declares an outputSchema.
Declare outputSchema and return structuredContent (MCP 2025-06-18+). Agents can then parse results without guessing, and chain tools reliably. How to fix →
Paste-ready definitions with the problems above fixed. Changes marked verify need a human look. 7 tool(s) still need parameter descriptions written by someone who knows the API. All of them as JSON: /v1/readiness/mcp-registry%2Fai.pictomancer%2Fimage-processing/fixes
{
"name": "analyze_image",
"description": "Analyze an image\n\nFetch 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.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Resp",
"inputSchema": {
"type": "object",
"title": "analyze_imageArguments",
"required": [
"source"
],
"properties": {
"source": {
"type": "string",
"title": "source",
"description": "Image source: a public URL (https://...) or a base64-encoded string (optionally as a data URI like data:image/png;base64,...)."
}
}
},
"annotations": {
"readOnlyHint": true
}
}{
"name": "convert_image",
"description": "Convert image format\n\nConvert 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 den",
"inputSchema": {
"type": "object",
"title": "convert_imageArguments",
"required": [
"source",
"format"
],
"properties": {
"q": {
"type": "integer",
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "q",
"description": "Quality (1-100). Maps to libvips Q parameter."
},
"strip": {
"type": "boolean",
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "strip",
"description": "Strip metadata (EXIF, ICC profile, etc.) from the output."
},
"effort": {
"type": "integer",
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "effort",
"description": "AV1 encoder CPU effort (0-9). Higher = smaller file, slower. Only applies to avif."
},
"format": {
"type": "string",
"title": "format",
"description": "Target format: jpeg, png, webp, tiff, gif, or avif."
},
"source": {
"type": "string",
"title": "source",
"description": "Image source: a public URL (https://...) or a base64-encoded string (optionally as a data URI like data:image/png;base64,...)."
},
"autorot": {
"type": "boolean",
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "autorot",
"description": "Apply EXIF orientation before converting. Opt-in; default false, which preserves current byte-for-byte behavior."
},
"denoise": {
"type": "integer",
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "denoise",
"description": "Median denoise before converting: radius 1-3 (window 3x3 to 7x7). Opt-in; no surcharge."
},
"sharpen": {
"type": "boolean",
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "sharpen",
"description": "Unsharp-mask sharpen after converting (libvips defaults). Opt-in."
},
"delivery": {
"type": "string",
"oneOf": [
{
"type": "object",
"title": "InlineDelivery",
"properties": {
"mode": {
"type": "string",
"const": "inline",
"title": "Mode",
"default": "inline"
}
},
"additionalProperties": false
},
{
"type": "object",
"title": "PutUrlDelivery",
"required": [
"mode",
"put_url"
],
"properties": {
"mode": {
"type": "string",
"const": "put_url",
"title": "Mode"
},
"headers": {
"anyOf": [
{
"type": "object",
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Headers",
"description": "Optional storage headers to include on the PUT call (Content-Type, Cache-Control, x-amz-acl, etc.). Whitelisted at SSRF layer."
},
"put_url": {
"type": "string",
"title": "Put Url",
"format": "uri",
"maxLength": 2083,
"minLength": 1,
"description": "Customer-signed presigned PUT URL where the optimized bytes will be written. Must be https://. Cloud credentials never reach our infrastructure; only the URL itself is used and discarded after the request."
}
},
"additionalProperties": false
},
{
"type": "object",
"title": "CallbackDelivery",
"required": [
"mode",
"callback_url"
],
"properties": {
"mode": {
"type": "string",
"const": "callback_url",
"title": "Mode"
},
"secret": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Secret",
"description": "Optional HMAC secret. When set, we sign the POST body with HMAC-SHA256 and send 'X-Pig-Signature: sha256=<hex>'. Used per request and never stored. Recompute the HMAC on your endpoint to authenticate the callback (constant-time compare)."
},
"headers": {
"anyOf": [
{
"type": "object",
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Headers",
"description": "Optional headers to include on the POST call (Content-Type, Cache-Control, x-amz-*, etc.). Whitelisted at SSRF layer."
},
"callback_url": {
"type": "string",
"title": "Callback Url",
"format": "uri",
"maxLength": 2083,
"minLength": 1,
"description": "Customer endpoint where the optimized bytes will be POSTed. Must be https://. For async/large jobs. We send an X-Pig-Sha256 header of the body so the receiver can verify integrity. No credentials are stored on our side; secure the endpoint with a token in the URL itself."
}
},
"additionalProperties": false
}
],
"title": "delivery",
"discriminator": {
"mapping": {
"inline": "#/components/schemas/InlineDelivery",
"put_url": "#/components/schemas/PutUrlDelivery",
"callback_url": "#/components/schemas/CallbackDelivery"
},
"propertyName": "mode"
}
},
"equalize": {
"type": "boolean",
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "equalize",
"description": "Auto-contrast (histogram equalisation of the value channel; hue and saturation preserved) before converting. Opt-in."
},
"lossless": {
"type": "boolean",
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "lossless",
"description": "Enable lossless encoding. Only applies to webp and avif."
},
"quality_target": {
"type": "number",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "quality_target",
"description": "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."
}
}
},
"annotations": {
"readOnlyHint": true
}
}{
"name": "estimate_cost",
"description": "Estimate the price of an operation\n\nReturns 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).\n\n### Responses:\n\n**200**: Successful Response (Success Respo",
"inputSchema": {
"type": "object",
"title": "estimate_costArguments",
"required": [
"operation",
"input_bytes"
],
"properties": {
"format": {
"type": "string",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "format",
"description": "Requested output format; only avif changes the price."
},
"operation": {
"type": "string",
"title": "operation",
"description": "Operation to price. One of resize, compress, convert, crop, optimize_for_vision, optimize_generated, pipeline. analyze is always free."
},
"operations": {
"type": "array",
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"title": "EstimateOperation",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"title": "Type",
"description": "Operation type: resize, compress, convert, or crop."
},
"format": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Format",
"description": "Requested output format for this operation; only avif changes the price."
}
}
}
},
{
"type": "null"
}
],
"title": "operations",
"description": "For pipeline only: the ordered operations, each {type, format?}. Volume discount applies at 3+ operations."
},
"input_bytes": {
"type": "integer",
"title": "input_bytes",
"minimum": 1,
"description": "Size of the input image in bytes. Get it from analyze_image (free) if you do not know it."
},
"quality_target": {
"type": "boolean",
"title": "quality_target",
"default": false,
"description": "Whether the request will use quality_target (SSIM search surcharge)."
}
}
},
"annotations": {
"readOnlyHint": true
}
}Get an email or webhook when this server's readiness drops by 10+ points, tool-poisoning text appears, or a tool breaks:
curl -X POST https://glimind.com/v1/subscriptions -H 'content-type: application/json' -d '{"tools":["mcp-registry/ai.pictomancer/image-processing"],"email":"[email protected]"}'Agents: watch_tool({"toolId": "mcp-registry/ai.pictomancer/image-processing"}) over MCP.
crop_image ~1,550 tokensresize_image ~1,532 tokensconvert_image ~1,419 tokenscompress_image ~1,373 tokensoptimize_generated_image ~1,213 tokensStatic checks of the advertised tools/list (schema, descriptions, annotations, tool-poisoning patterns, names, size) plus observed protocol, uptime, latency and contract changes. Read-only: no tool is ever called. Weights: schema 15, docs 20, safety 15, efficiency 15, compatibility 15, protocol 5, reliability 10, stability 5. Token counts are estimates (~3.6 characters per token).
Operator? Fix these, then re-check live. Embed the readiness badge:
[](https://glimind.com/server/mcp-registry%2Fai.pictomancer%2Fimage-processing?ref=badge)
<a href="https://glimind.com/server/mcp-registry%2Fai.pictomancer%2Fimage-processing?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Fai.pictomancer%2Fimage-processing.svg" alt="MCP agent-readiness"></a>
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Fai.pictomancer%2Fimage-processing.svg :target: https://glimind.com/server/mcp-registry%2Fai.pictomancer%2Fimage-processing?ref=badge :alt: MCP agent-readiness
Glimind records every version of this server's tool definitions in a signed, append-only transparency log. Current manifest sha256:eb1eccf66e2df491…, first seen 2026-10-17, included at leaf 2134 of 42,193. Version history · verify what your client received.
Compare: most reliable media servers · most reliable other servers · most reliable knowledge servers
Glimind tells agents whether a server is up right now and how to call it, then fails over to a live alternative when it isn't.
Claude Code
claude mcp add --transport http glimind https://glimind.com/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"glimind": {
"type": "http",
"url": "https://glimind.com/mcp"
}
}
}
As of 2026-10-21 23:21 UTC, the Pictomancer Image Processing MCP server is up with a Glimind reliability score of 72/100 (grade C). Over the last 30 days it answered 99% of Glimind's liveness checks. It had 44 outages in 90 days, with a median recovery of 7 minutes.
Pictomancer Image Processing MCP server advertises 10 tools, including analyze_image, compress_image, convert_image, crop_image, estimate_cost.
Point your MCP client at this streamable-http endpoint: https://api.pictomancer.ai/mcp
Glimind scanned all 10 tool definitions for tool-poisoning patterns — hidden or invisible characters, instructions that override the model, concealment from the user, requests to read credential or MCP config files, conversation exfiltration and cross-tool shadowing — and found none. This checks what the server tells the model, not what its code does; review the source before granting access to sensitive data.
Status page: 90-day uptime, every outage and how long it lasted.
Claim this listing to get the Verified operator marker, a remediation checklist and owner analytics, or embed the live badge from any of the tool pages above. Maintainers: alerts, deploy attestation and monthly reports.
Status is an automated estimate from Glimind's liveness checks (handshake and tool listing only; no tool is ever called) and may lag or differ from your network. Glimind is not affiliated with this server or its operator. Operator? Request a correction or opt out at https://glimind.com/opt-out.