Skip to main content
Glama

image_watermark

Read-onlyIdempotent

Put a watermark on an image from freedailypro: text (drawn in Roboto, Latin/Greek/Cyrillic) or a watermark picture (watermarkBase64), at a position (center, top-left, top, top-right, left, right, bottom-left, bottom, bottom-right or tile), with opacity 0-1, size, margin and rotation. Reads and writes JPEG, PNG, WebP, AVIF, GIF (first frame), TIFF

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "fileBase64": "<fileBase64>"
    },
    "name": "image_watermark"
  }
}

Input Schema

NameRequiredDescriptionDefault
textNoThe words to stamp. Send this or watermarkBase64
colorNoText colour, a name or hex. Default white
scaleNoWatermark picture width as a share of the image width. Default 0.2
formatNopng, jpeg (or jpg), webp, avif, gif, tiff, bmp or ico; image/... types also work. Default: the same format as the input
marginNoDistance from the edge in pixels
opacityNoDefault 0.5
qualityNo0-1 (for example 0.8) or 1-100 (for example 80); JPEG, WebP, AVIF, and palette PNG
fontSizeNoText size in pixels. Default about 1/12 of the shorter side
positionNoDefault bottom-right
rotationNoDegrees; tile defaults to -30
fileBase64Yes
stripMetadataNoRemove EXIF/GPS/colour-profile data. Default true
backgroundColorNoFill for transparent areas (always used for JPEG), e.g. '#ffffff' or 'white'
watermarkBase64NoA watermark picture (PNG with transparency works best), base64

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds genuinely useful behavior beyond the annotations: text is rendered in Roboto with Latin/Greek/Cyrillic coverage (so CJK/other scripts silently won't render), GIF support is first-frame only, and input/output formats are enumerated. Annotations already declare readOnly/idempotent/non-destructive, and since the tool transforms base64 in and out without persisting state, the phrase "reads and writes JPEG, PNG..." refers to file formats rather than server mutation, so no contradiction.

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?

Two tight clauses with the core action first and the format constraint last; no filler despite covering 14 parameters. Every phrase (Roboto coverage, GIF first frame, position list) carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 14 parameters and no output schema, the description never says what comes back (presumably a base64 image) or in which form, and it doesn't clarify the fallback when neither text nor watermarkBase64 is supplied and only fileBase64 is required. Format and script caveats are covered, so it is adequate but leaves real gaps for a tool of this complexity.

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 coverage is 93%, so the schema already documents nearly every parameter including defaults and ranges. The description mostly restates that surface (position list, opacity 0-1, size, margin, rotation); its only real added meaning is the font/script limitation attached to the text parameter. Baseline 3 applies when the schema carries the weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Put a watermark on an image") and enumerates the two watermark modes (text vs. watermarkBase64), which makes it clearly distinct from pdf_watermark and pptx_watermark. It stops short of naming those siblings explicitly, but the resource noun does the differentiation work.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use / when-not-to-use guidance and no reference to any alternative tool. The only constraint given is the supported-format list at the end, which tells the agent what inputs are valid but not when this tool is the right choice. The either/or requirement for text vs. watermarkBase64 appears only in the schema, not routed from the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources