Skip to main content
Glama

Razi Media Tools

Server Details

Image processing over MCP: compress and split images, generate images and QR codes.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

TDQS

A4.4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness2/5

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 tools
compress_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoTarget width in pixels. Give only one of width/height to scale the other proportionally. Omit both to keep the original dimensions. Enlarging is allowed.
formatNoOutput container/codec. Default webp; an unrecognised value also falls back to webp. Transparency survives in webp, png and avif but not jpeg.
heightNoTarget height in pixels. Give only one of width/height to scale the other proportionally. Omit both to keep the original dimensions.
qualityNoEncoder 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.
grayscaleNoDrop colour before encoding. Default false.
keepAspectRatioNoOnly 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

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesWhat the image should show. Subject, style and composition all help. Required, non-blank, maximum 2,000 characters.
negativePromptNoWhat 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

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoWidth and height of the output PNG in pixels; the code is always square. Default 300. Only applied when given as a number.
textYesThe 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.
errorCorrectionNoDeclared for compatibility but currently ignored — the code is always generated at the library default, level M (about 15% damage tolerance).

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
colsNoNumber 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.
rowsNoNumber 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.
formatNoEncoding 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

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 4 tool updates
    • First observedcompress_image
    • First observedgenerate_image
    • First observedgenerate_qr_code
    • First observedsplit_image

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources