Razi Media Tools
Server Details
Image processing over MCP: compress and split images, generate images and QR codes.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Each tool has a clearly distinct purpose: re-encoding an existing image, generating a new image from text, creating a QR code, and splitting a collage into panels. Even where two tools process existing images, the descriptions explicitly separate compression from splitting, so an agent should not confuse them.
All tool names follow a consistent snake_case verb_noun pattern: compress_image, generate_image, generate_qr_code, split_image. There are no mixed conventions, vague verbs, or inconsistent styles.
Four tools is a reasonable, focused scope for a media utility server, and each tool earns its place. The count is well within the ideal 3-15 range and does not feel padded or overly thin.
The set has a significant workflow gap: compress_image and split_image only accept razi.pro-hosted URLs, but there is no MCP tool to upload a user-supplied image or accept a third-party URL, so common agent workflows will fail unless the user uploads outside MCP. QR code decoding and image editing/upscaling are also absent, leaving the surface incomplete for broader media tasks.
Available Tools
4 toolscompress_imageAInspect
Re-encode a single raster image to webp, jpeg, png or avif, optionally resizing it and/or converting it to grayscale. HEIC/HEIF input is converted to JPEG first, and SVG input is rasterised at 300 DPI, fitted inside 800x800 unless width or height is given. Lossy for webp, jpeg and avif at any quality below 1.0. Raster images only: a PDF or a video is rejected, and neither can be re-encoded anywhere on this server. Output shape depends on size: an input under 5MB is processed in-app and the encoded image bytes are returned, while anything larger is sent to razi.pro's worker and the reply is JSON { url, size, metadata } pointing at a hosted copy instead of bytes. Paid compute; 30 calls per hour per IP. There is no upload channel over MCP: pass fileUrl, a URL in razi.pro's own storage; third-party URLs are rejected. Obtain one by uploading the image over the REST API first (POST /api/v1/tools/execute with the file attached).
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Target width in pixels. Give only one of width/height to scale the other proportionally. Omit both to keep the original dimensions. Enlarging is allowed. | |
| format | No | Output container/codec. Default webp; an unrecognised value also falls back to webp. Transparency survives in webp, png and avif but not jpeg. | |
| height | No | Target height in pixels. Give only one of width/height to scale the other proportionally. Omit both to keep the original dimensions. | |
| quality | No | Encoder quality as a fraction from 0.1 to 1.0, scaled to the encoder's 0-100 range. Default 0.9. Higher means larger and closer to the original. | |
| grayscale | No | Drop colour before encoding. Default false. | |
| keepAspectRatio | No | Only has an effect when BOTH width and height are given. Default false, which centre-crops the image to fill the box exactly. Set true to fit the whole image inside the box instead, so the result may be smaller than the box in one dimension. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly. It discloses lossy behavior below quality 1.0, HEIC/SVG conversion, the 5MB threshold that changes the return shape (bytes vs JSON), the rate limit of 30 calls/hour/IP, and the rejection of third-party URLs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, and every subsequent sentence adds a distinct operational constraint: input format handling, quality semantics, size-based output switching, rate limits, and upload workflow. The description is dense but each clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description compensates well for the missing output schema by spelling out both possible return shapes, plus input restrictions and rate limits. However, it instructs the agent to 'pass `fileUrl`' while the input schema has no such property, leaving the central invocation mechanism unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline of 3 applies. The description adds useful nuance (e.g., 'Lossy for webp, jpeg and avif at any quality below 1.0'), but most parameter meaning already comes from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: 'Re-encode a single raster image to webp, jpeg, png or avif, optionally resizing it and/or converting it to grayscale.' This clearly distinguishes compress_image from the sibling generation and QR-code tools, and the scope 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?
Provides clear context for when to use the tool: 'Raster images only' with PDF/video explicitly rejected, and a mandatory prerequisite of passing a razi.pro-hosted fileUrl obtained via REST. It does not explicitly name alternatives, but the exclusionary guidance is strong enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageAInspect
Generate a new image from a text description with a diffusion model. Returns a single PNG; over MCP it arrives inline when under 1MB and otherwise as a stored URL that stays retrievable for about 24 hours. This invents an image from scratch — it cannot edit, upscale or restyle a picture you already have. Use compress_image to re-encode or resize an existing file. Requires a signed-in razi.pro account; an anonymous call is rejected with 401. Paid compute, 20 images per hour per account, and generation can take tens of seconds. Providers are tried in turn (Fireworks FLUX.1-schnell, Hugging Face FLUX.1-schnell, SDXL, Cloudflare SDXL, Replicate), so the model that actually ran varies with availability and there is no seed or size control. No two calls give identical output, and the image is not automatically hosted anywhere permanent.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | What the image should show. Subject, style and composition all help. Required, non-blank, maximum 2,000 characters. | |
| negativePrompt | No | What to keep out of the image, e.g. 'text, watermark, blurry'. Maximum 2,000 characters. Only the Replicate fallback provider honours it, so on the usual path it has no effect. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations provided, the description carries the full burden of disclosure and does so exceptionally well. It reveals the return format (PNG inline under 1MB, otherwise a 24-hour stored URL), auth requirement (signed-in account, 401 for anonymous), rate limit (20 images/hour), latency (tens of seconds), provider fallback chain, non-determinism, absence of seed/size control, and lack of permanent hosting. This is rich behavior context beyond any structured field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place given there are no annotations and no output schema to lean on. It is front-loaded with the core purpose, followed by return format, exclusions, alternatives, auth, rate limits, latency, and provider behavior. Minor redundancy exists between 'no two calls give identical output' and 'not automatically hosted anywhere permanent,' but both convey distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is nearly complete: purpose, return format, retention, exclusions, alternative tool, auth requirements, rate limits, latency, provider variability, and determinism are all covered. Minor gaps include specific error responses beyond 401 and exact pricing for 'paid compute,' but these fall outside typical MCP description expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both prompt and negativePrompt, including the caveat that negativePrompt only works on the Replicate fallback. The description adds no parameter-specific semantics beyond reinforcing that provider variation exists, which the schema already notes. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: 'Generate a new image from a text description with a diffusion model.' It further distinguishes itself by explicitly stating what it cannot do ('cannot edit, upscale or restyle a picture you already have') and naming compress_image as the sibling for existing files, so an agent can tell it apart from all three siblings without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly guides routing: 'Use compress_image to re-encode or resize an existing file,' which covers the most likely confusion since both tools handle images. It gives clear when-not-to-use context ('invents an image from scratch'). However, it does not explicitly compare against generate_qr_code or split_image, leaving that differentiation to inference from tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_qr_codeAInspect
Render text or a URL as a QR code image. Returns JSON { dataUrl, text, size } where dataUrl is a base64 PNG data URI embedded in the response — not a hosted link, so nothing is stored and the image cannot be fetched later. Runs locally and costs nothing. Writing only — it cannot read or decode an existing QR code. A long payload makes a denser, less scannable code, so shorten the address by other means before encoding it if you can.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Width and height of the output PNG in pixels; the code is always square. Default 300. Only applied when given as a number. | |
| text | Yes | The exact payload to encode. A URL must include its scheme to be actionable when scanned. Very long values force a denser code that is harder to scan. | |
| errorCorrection | No | Declared for compatibility but currently ignored — the code is always generated at the library default, level M (about 15% damage tolerance). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It discloses the exact return shape, that the image is a base64 data URI rather than a hosted link, that nothing is stored, that it runs locally and costs nothing, and that it cannot read or decode QR codes — all behavior beyond what a schema could convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose, return format, storage behavior, local execution, read/write limitation, and payload advice. The description is dense but structured, front-loading the core purpose and then layering important behavioral details without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no annotations and no output schema, the description fully compensates by specifying the response format, data URI behavior, side-effect-free execution, and the ignored errorCorrection parameter. An agent has enough context to invoke the tool correctly and interpret its result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The input schema already documents text, size, and errorCorrection well. The description adds useful context about payload length affecting density, but does not significantly expand parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Render text or a URL as a QR code image.' This clearly identifies the tool's function and differentiates it from sibling image tools like compress_image, generate_image, and split_image, which operate on images rather than generating scannable QR codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when not to use the tool: 'Writing only — it cannot read or decode an existing QR code.' It also gives practical guidance to shorten long payloads for better scannability, helping the agent decide whether to preprocess input before calling the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_imageAInspect
Cut one storyboard, collage or grid image into its separate panels and return them as a ZIP, one file per panel in reading order. Over MCP the ZIP is not inlined: it comes back as a stored URL that stays retrievable for about 24 hours. Two modes. Give both rows and cols for an exact equal division, which is free of model cost and predictable. Omit them and a vision model locates the panels, excluding borders, gaps and captions — better on uneven layouts, but it is a paid inference whose panel count and crops can vary between runs, and it fails with 400 if it finds nothing. Panels are cropped, never resized; a lossy re-encode at quality 90 is applied for jpeg and webp. This divides one image into several — it does not shrink a file (use compress_image), and it cannot take a PDF apart. Paid compute; 20 calls per hour per IP. There is no upload channel over MCP: pass fileUrl, a URL in razi.pro's own storage; third-party URLs are rejected. Obtain one by uploading the image over the REST API first (POST /api/v1/tools/execute with the file attached).
| Name | Required | Description | Default |
|---|---|---|---|
| cols | No | Number of equal-width columns in the grid. Only takes effect when rows is also given. Omit both rows and cols to have the panels detected automatically. | |
| rows | No | Number of equal-height rows in the grid. Only takes effect when cols is also given; supplying both switches off vision detection and divides the image evenly, ignoring any borders or gaps. | |
| format | No | Encoding for each extracted panel and its file extension inside the ZIP. Default png, which is lossless; jpeg and webp are written at quality 90. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden and does so thoroughly: ZIP is not inlined, URL expires in ~24 hours, automatic mode is paid and variable, 400 on no detection, panels are cropped not resized, jpeg/webp use quality 90, 20 calls/hour/IP, third-party URLs rejected, and REST upload is required first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and every sentence carries useful information, with the core purpose front-loaded. However, it is a long single paragraph that could be more scannable if modes, limitations, and rate limits were split into bullets, though the length is largely justified by the number of critical caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is exceptionally complete: it covers return format, retention, failure behavior, cost, variability, rate limiting, input restrictions, and the upload flow. Almost nothing an agent needs to invoke the tool correctly is left to guesswork.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters, and the description adds meaningful semantics: rows/cols only take effect together, omitting both enables automatic detection, and format defaults to lossless PNG with quality-90 lossy options. The description also mentions passing 'fileUrl' even though that parameter is absent from the schema, which is a minor inconsistency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: cut a storyboard, collage, or grid image into separate panels and return them as a ZIP in reading order. It also explicitly distinguishes itself from compress_image by saying it does not shrink a file and cannot take a PDF apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit mode-selection guidance: provide both rows and cols for a deterministic free division, or omit both for vision-based detection with tradeoffs. It names compress_image as the alternative for shrinking files and states the paid-compute rate limit and upload prerequisite.
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. Dates show when Glama detected each change.
4 tool updates
- First observed
compress_image - First observed
generate_image - First observed
generate_qr_code - First observed
split_image
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, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.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
Document processing over MCP: merge, split and compress PDFs, run OCR, extract document text.
51Convert images to PNG, JPEG, WebP, or AVIF through one public remote MCP tool.
- RasterOAuthapp.raster
Browse, search, upload, tag, transfer, and delete images in your Raster libraries over MCP.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP 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
- AlicenseCqualityCmaintenanceMCP server for local compression of various image formats11833MIT
- AlicenseAqualityCmaintenanceLocal image processing MCP server providing background removal, stock media search, resize, format conversion, and collage creation.5MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server providing tools for image processing operations330PythonMIT