Skip to main content
Glama

photo_rounded_corners

Rounded Corners — Round the corners of an image. The output is always a PNG, because the rounded-off corners are see-through and only PNG can hold that. [category: photo]

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fileYesJPG, PNG, WebP, GIF, BMP, TIFF or AVIF. Max 25 MB. HEIC is refused — run it through the Format Converter first. Whatever arrives, a PNG comes back.
radiusNoHow far the curve reaches in from each corner. Measured in whichever unit the next setting says: PIXELS, up to 5000 — or PERCENT of the shorter side, where anything above 50 is treated as 50, because half the shorter side is a full semicircle and there is nothing beyond it. Out-of-range values are pulled back rather than refused. Fractions are rounded.
cornersNo'all', or a comma-separated list of tl, tr, br, bl (top-left, top-right, bottom-right, bottom-left). An edge word — top, bottom, left or right — selects that edge's two corners.all
backgroundNoWhat fills the corners that were rounded off: 'transparent' (the default; 'none' means the same) leaves them see-through. Anything else fills them with a colour: a hex value (#rgb, #rgba, #rrggbb or #rrggbbaa, such as #1a1a1a) or any of the named colours Add Border accepts (red, navy, gold and others; not case-sensitive). Any other name is refused with a 400 that lists every accepted name.transparent
radius_unitNoWhether the radius above is a number of pixels or a percentage of the picture's shorter side. Percent is the one to pick when the step runs on pictures of different sizes.px

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / background / x-ui
      Added value: +{
      +  "draw": {
      +    "names": {
      +      "aqua": [
      +        0,
      +        255,
      +        255
      +      ],
      +      "beige": [
      +        245,
      +        245,
      +        220
      +      ],
      +      "black": [
      +        0,
      +        0,
      +        0
      +      ],
      +      "blue": [
      +        0,
      +        0,
      +        255
      +      ],
      +      "brown": [
      +        165,
      +        42,
      +        42
      +      ],
      +      "crimson": [
      +        220,
      +        20,
      +        60
      +      ],
      +      "cyan": [
      +        0,
      +        255,
      +        255
      +      ],
      +      "fuchsia": [
      +        255,
      +        0,
      +        255
      +      ],
      +      "gold": [
      +        255,
      +        215,
      +        0
      +      ],
      +      "gray": [
      +        128,
      +        128,
      +        128
      +      ],
      +      "green": [
      +        0,
      +        128,
      +        0
      +      ],
      +      "grey": [
      +        128,
      +        128,
      +        128
      +      ],
      +      "indigo": [
      +        75,
      +        0,
      +        130
      +      ],
      +      "ivory": [
      +        255,
      +        255,
      +        240
      +      ],
      +      "khaki": [
      +        240,
      +        230,
      +        140
      +      ],
      +      "lavender": [
      +        230,
      +        230,
      +        250
      +      ],
      +      "lime": [
      +        0,
      +        255,
      +        0
      +      ],
      +      "magenta": [
      +        255,
      +        0,
      +        255
      +      ],
      +      "maroon": [
      +        128,
      +        0,
      +        0
      +      ],
      +      "navy": [
      +        0,
      +        0,
      +        128
      +      ],
      +      "olive": [
      +        128,
      +        128,
      +        0
      +      ],
      +      "orange": [
      +        255,
      +        165,
      +        0
      +      ],
      +      "pink": [
      +        255,
      +        192,
      +        203
      +      ],
      +      "purple": [
      +        128,
      +        0,
      +        128
      +      ],
      +      "red": [
      +        255,
      +        0,
      +        0
      +      ],
      +      "salmon": [
      +        250,
      +        128,
      +        114
      +      ],
      +      "silver": [
      +        192,
      +        192,
      +        192
      +      ],
      +      "tan": [
      +        210,
      +        180,
      +        140
      +      ],
      +      "teal": [
      +        0,
      +        128,
      +        128
      +      ],
      +      "turquoise": [
      +        64,
      +        224,
      +        208
      +      ],
      +      "violet": [
      +        238,
      +        130,
      +        238
      +      ],
      +      "white": [
      +        255,
      +        255,
      +        255
      +      ],
      +      "yellow": [
      +        255,
      +        255,
      +        0
      +      ]
      +    },
      +    "of": "corners",
      +    "role": "fill"
      +  }
      +}
    • addedInput schema / properties / corners / x-ui
      Added value: +{
      +  "draw": {
      +    "of": "corners",
      +    "role": "which"
      +  }
      +}
    • addedInput schema / properties / radius / x-ui / draw
      Added value: +{
      +  "of": "corners",
      +  "role": "radius"
      +}
    • addedInput schema / properties / radius_unit / x-ui / draw
      Added value: +{
      +  "of": "corners",
      +  "role": "radius_unit"
      +}
    • addedInput schema / x-draw
      Added value: +{
      +  "corners": {
      +    "noun": "corners",
      +    "shape": "corners",
      +    "title": "The corners"
      +  }
      +}
  2. Changed2 schema fields changed
    • changedInput schema / properties / background / description
      Previous value: -"What fills the corners that were rounded off: 'transparent' (the default; 'none' is accepted as a synonym for it) leaves them see-through, or 'white', 'black', or a hex value such as #1a1a1a. That is the whole list — any other colour name, red or navy included, is refused with a 400, even though Add Border accepts them."New value: +"What fills the corners that were rounded off: 'transparent' (the default; 'none' means the same) leaves them see-through. Anything else fills them with a colour: a hex value (#rgb, #rgba, #rrggbb or #rrggbbaa, such as #1a1a1a) or any of the named colours Add Border accepts (red, navy, gold and others; not case-sensitive). Any other name is refused with a 400 that lists every accepted name."
    • addedInput schema / properties / radius / x-ui
      Added value: +{
      +  "unit_from": {
      +    "by_value": {
      +      "percent": {
      +        "maximum": 50,
      +        "unit": "%"
      +      },
      +      "px": {
      +        "maximum": 5000,
      +        "unit": "px"
      +      }
      +    },
      +    "param": "radius_unit"
      +  }
      +}
  3. Changed3 schema fields changed
    • changedInput schema / properties / background / description
      Previous value: -"What fills the corners that were rounded off: 'transparent' (the default) leaves them see-through, or give a colour name or a hex value to fill them instead."New value: +"What fills the corners that were rounded off: 'transparent' (the default; 'none' is accepted as a synonym for it) leaves them see-through, or 'white', 'black', or a hex value such as #1a1a1a. That is the whole list — any other colour name, red or navy included, is refused with a 400, even though Add Border accepts them."
    • changedInput schema / properties / radius / description
      Previous value: -"How far the curve reaches in from each corner. Out-of-range values are pulled back rather than refused, and the value is capped again per picture at half the shorter side, because a curve larger than that has no meaning. Fractions are rounded."New value: +"How far the curve reaches in from each corner. Measured in whichever unit the next setting says: PIXELS, up to 5000 — or PERCENT of the shorter side, where anything above 50 is treated as 50, because half the shorter side is a full semicircle and there is nothing beyond it. Out-of-range values are pulled back rather than refused. Fractions are rounded."
    • removedInput schema / properties / radius / x-ui
      Removed value: -{
      -  "unit": "px"
      -}
  4. Added

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false). The description adds a genuinely useful behavioral trait absent from the schema's top-level text: the output is always PNG and why (transparent corners). It omits any note on auth or processing limits, but adds real value beyond annotations.

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 sentences, front-loaded with the purpose and then the important output-format constraint. Nothing wasteful; the category tag is the only extra.

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 an image-transformation tool with no output schema, the description covers what the tool does and the output format constraint that matters (PNG). Input formats and parameter detail live in the schema. Adequate, with only the missing routing/precondition context as a gap.

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 already documents radius, corners, background, and radius_unit in detail. The description adds no parameter-level meaning, so the baseline 3 applies.

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+resource ("Round the corners of an image") and the operation is clearly distinct from siblings like photo_crop or photo_add_border. It stops short of explicitly naming a sibling to differentiate against, so it lands at clear-but-not-routing.

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?

There is no when-to-use/when-not guidance and no alternatives named. An agent cannot tell from this text why it would pick rounded corners over photo_add_border or photo_crop, nor what preconditions apply.

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