Skip to main content
Glama

Image to ASCII art

image_ascii_art
Read-onlyIdempotent

Convert an image into ASCII art text or a rendered PNG using character ramps, with adjustable contrast, brightness and inversion for light-on-dark output.

Instructions

Turn an image into ASCII art: each character cell takes the average brightness of its area (cells are twice as tall as wide) and maps it onto a character ramp: standard " .:-=+*#%@", detailed (70 characters), blocks " ░▒▓█", simple, binary, or your own. Contrast, brightness and invert (for light text on dark backgrounds). Returns the text; format "png" also renders it to an image (optionally in the image's colours). Transparent areas count as white paper. Web version: https://s3eidat.github.io/ascii-art/

Input Schema

NameRequiredDescriptionDefault
rampNoCharacter set, light → dark. Default standard.standard
colorNoPNG only: colour each character with the image colour.
imageYesThe image: a local file path (absolute, or relative to the server's --root) or base64 data (raw or a data: URI).
formatNotext (default) or png (also writes <name>-ascii.png).text
invertNoFor light text on a dark background. Default false.
outputNoWhere to write the result: a file path, or a folder ending in "/". Default: the server output folder (a temp folder unless --out-dir is set).
columnsNoCharacters per line. Default 100.
contrastNo-100 … 100. Default 0.
brightnessNo-100 … 100. Default 0.
customRampNoCharacters for ramp "custom", from no ink to most ink (at least 2). .oO0@

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations cover read-only/idempotent/local, and the description still adds real behavioral detail: output is returned as text, `format: png` additionally writes `<name>-ascii.png`, `output` defaults to the server temp folder, and transparent pixels are treated as white. One caveat worth noting: the file writes described are technically a side effect for a tool annotated readOnlyHint=true, though this is artifact generation rather than data mutation.

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?

Front-loaded with the core transformation, then ramps, then output behavior — a sensible order. It is dense but every sentence carries information; the trailing web-version URL is the only element that does not help an agent invoke the tool.

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 10-parameter tool with no output schema, the description covers the transformation, ramp options, image-adjustment knobs, and what is returned vs written to disk. The main remaining gap is disambiguation from `image_ascii_banner` and from generic `image_convert`.

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?

Schema coverage is 100%, so the baseline is 3, but the description earns more by naming the actual character ramps (" .:-=+*#%@", the 70-char detailed set, " ░▒▓█") and explaining the aspect-ratio convention behind `columns`. It also clarifies that `customRamp` backs the "custom" enum value, tying two parameters together in a way the schema does not.

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?

The description opens with a specific verb+resource ("Turn an image into ASCII art") and explains the sampling method (average brightness per cell, cells 2:1 taller than wide), which no sibling schema would reveal. It is clear what the tool produces. It does not, however, distinguish itself from the closely named sibling `image_ascii_banner` or from `image_convert`, leaving the agent to guess which to pick.

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

Usage Guidelines3/5

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

Usage is implied by the description — you use it to render an image as text or a PNG — and there is useful inline guidance like "invert (for light text on dark backgrounds)". But there is no explicit when-to-use/when-not, and no mention of the near-identical `image_ascii_banner` sibling that an agent would need to disambiguate against.

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

Deploy Server

Other Tools