Skip to main content
Glama
Jambozx

OnlineCyberTools MCP (280+ filterable tools)

by Jambozx

text_ascii_text

Read-onlyIdempotent

Generate multi-line ASCII art banners from text strings for terminal headers or README titles. Supports block and small fonts.

Instructions

ASCII Banner Text Generator. Generate a multi-line ASCII-art banner (figlet-style large letters) from a short text string, using either the block font (6 rows of hash characters) or the small font (3 rows of Unicode block glyphs). Input is uppercased; letters A-Z, digits 0-9, space and a few punctuation marks are supported and unknown characters render as blank space. Use this for terminal headers, README titles and decorative plain-text banners; use text_ascii_table instead to look up ASCII character codes (a reference chart, not a banner), or text_ascii_art to convert an image to ASCII. Runs locally on the text you provide: read-only, non-destructive, contacts no external service, and is rate-limited (60 requests/minute for anonymous callers). Returns the rendered banner string plus size statistics and the effective options.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesText to render as a banner. Required and non-blank; maximum 50 characters. Uppercased before rendering.
fontNoFont face. block is 6 rows tall using hash characters; small is 3 rows tall using Unicode block glyphs. Unknown values fall back to block.block
widthNoReported target line width in characters; clamped to the range 20-200. Echoed in options and does not wrap or truncate the banner.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
successNoWhether generation succeeded.
resultNoThe rendered ASCII banner as newline-joined rows.
statsNoSize metrics for the input and the rendered banner.
optionsNoEffective options after defaults and clamping.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.5.1
    • changedInput schema / additionalProperties
      Previous value: -trueNew value: +false
    • addedInput schema / properties
      Added value: +{
      +  "font": {
      +    "default": "block",
      +    "description": "Font face. block is 6 rows tall using hash characters; small is 3 rows tall using Unicode block glyphs. Unknown values fall back to block.",
      +    "enum": [
      +      "block",
      +      "small"
      +    ],
      +    "type": "string"
      +  },
      +  "text": {
      +    "description": "Text to render as a banner. Required and non-blank; maximum 50 characters. Uppercased before rendering.",
      +    "maxLength": 50,
      +    "type": "string"
      +  },
      +  "width": {
      +    "default": 80,
      +    "description": "Reported target line width in characters; clamped to the range 20-200. Echoed in options and does not wrap or truncate the banner.",
      +    "maximum": 200,
      +    "minimum": 20,
      +    "type": "integer"
      +  }
      +}
    • addedInput schema / required
      Added value: +[
      +  "text"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "options": {
      +      "description": "Effective options after defaults and clamping.",
      +      "properties": {
      +        "font": {
      +          "description": "The font actually used after fallback.",
      +          "type": "string"
      +        },
      +        "supportedFonts": {
      +          "description": "Font names the generator supports.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "width": {
      +          "description": "The clamped width value.",
      +          "type": "integer"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "result": {
      +      "description": "The rendered ASCII banner as newline-joined rows.",
      +      "type": "string"
      +    },
      +    "stats": {
      +      "description": "Size metrics for the input and the rendered banner.",
      +      "properties": {
      +        "original": {
      +          "description": "Metrics for the submitted text.",
      +          "properties": {
      +            "characters": {
      +              "description": "Byte length of the submitted text (same as length).",
      +              "type": "integer"
      +            },
      +            "length": {
      +              "description": "Byte length of the submitted text.",
      +              "type": "integer"
      +            },
      +            "text": {
      +              "description": "The submitted text, echoed back.",
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "result": {
      +          "description": "Metrics for the rendered banner.",
      +          "properties": {
      +            "height": {
      +              "description": "Number of output rows (same as lines).",
      +              "type": "integer"
      +            },
      +            "lines": {
      +              "description": "Number of output rows.",
      +              "type": "integer"
      +            },
      +            "maxWidth": {
      +              "description": "Byte length of the widest output row.",
      +              "type": "integer"
      +            },
      +            "totalCharacters": {
      +              "description": "Total byte length of the rendered banner.",
      +              "type": "integer"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "success": {
      +      "description": "Whether generation succeeded.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds valuable behavioral context: it runs locally, is rate-limited (60 req/min for anonymous callers), supports specific characters (A-Z, 0-9, space, few punctuation), and unknown characters render as blank space. No contradictions with annotations.

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 well-structured and front-loaded with purpose. Every sentence adds value, though the sentence about local execution and rate limits is slightly verbose and could be condensed. Overall, it's efficient for a tool with 3 parameters and sibling comparisons.

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 the tool's complexity (3 parameters, output schema present, rich annotations), the description is completely sufficient. It covers all aspects: purpose, usage context, behavioral traits, parameter details, limitations, and sibling differentiation. No missing information for proper tool selection or invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema: for 'text', it clarifies required, max length 50, and uppercasing; for 'font', it explains the visual difference (6 rows, hash chars vs. 3 rows, Unicode block glyphs) and fallback behavior; for 'width', it clarifies it's a reported line width, not a wrap/truncation setting, and values are clamped.

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 clearly states it generates ASCII-art banners from text, specifies the two fonts (block and small), and the character set. It distinguishes itself from sibling tools text_ascii_table and text_ascii_art by explaining they serve different purposes (reference chart vs. image-to-ASCII conversion).

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 to use this tool ('for terminal headers, README titles and decorative plain-text banners') and directly names alternative tools for different tasks ('use text_ascii_table instead to look up ASCII character codes... or text_ascii_art to convert an image to ASCII').

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