Skip to main content
Glama

ShapeWords MCP

Universal MCP server for generating word clouds with ShapeWords.

It exposes ShapeWords rendering tools through the Model Context Protocol, so any MCP-capable client can create SVG, JSON, or PNG word clouds from text, workshop notes, prompts, research snippets, or agent output. By default it uses the hosted ShapeWords Render API; with engine: "skia" it renders locally inside the MCP server with the shared layout core and CanvasKit/Skia.

Tools

All tools use stdio MCP transport.

render_word_cloud

Creates a ShapeWords render job, polls until it is finished, and returns:

  • public artifact URL for hosted renders, or a local inline artifact for engine: "skia";

  • job metadata;

  • optional image content for MCP clients that support image results.

Use this tool for one-shot generation when the caller wants the final artifact.

create_word_cloud_job

Starts a render job and returns the job/status/artifact URLs without waiting.

Use this tool for asynchronous workflows where the client will poll later.

get_word_cloud_job

Checks a render job by ID.

Use this tool with the jobId returned by create_word_cloud_job or render_word_cloud.

Related MCP server: genart-mcp

Input Schema

render_word_cloud accepts all render options below. create_word_cloud_job accepts the hosted options only: engine: "skia" is local-only and is supported by render_word_cloud.

Field

Type

Default

Limits

Description

renderProfile

enum

canvas

canvas, api

Default option profile. canvas matches the main ShapeWords canvas; api keeps the older compact Render API defaults.

text

string

optional

1-100,000 chars

Source text for the word cloud. Required unless words is provided.

words

object[]

optional

1-1000 items

Explicit weighted words. Use when the caller already tokenized, lemmatized, or scored text.

locale

enum

en

en, ru, ar, es, fr, zh

Render/UI locale passed to ShapeWords.

format

enum

svg

svg, png, json

Artifact format. SVG is the fastest default. JSON returns layout data. PNG is rasterized from the same shared layout.

width

integer

800

240-4096

Canvas width in pixels.

height

integer

600

240-4096

Canvas height in pixels.

background

enum

white

transparent, white, dark

Output background.

quality

enum

hq

sq, hq

Standard or high-quality render. hq matches the main canvas export scale and is slower.

engine

enum

auto

auto, browser, browserless, skia

Renderer engine. skia uses the local MCP shared-core + CanvasKit renderer without server-side Chromium.

returnLayout

boolean

false

true/false

Include layout metadata when supported.

shapeType

string

cloud

1-80 chars

Shape id. Use a built-in id or custom with customShapeDefinition.

customShapeDefinition

object

omitted

see below

Custom SVG path shape. Required when shapeType is custom.

maxWords

integer

700

1-1000

Maximum number of words to place.

seed

integer

0

0-4294967295

Unsigned 32-bit layout seed for reproducible browserless renders. Same input, options, and seed produce the same SVG/layout.

fontFamily

string

Montserrat

1-80 chars

ShapeWords font family name, for example Inter, Roboto, Montserrat, Noto Sans.

minFontSize

integer

18

4-400

Minimum word font size.

maxFontSize

integer

96

8-700

Maximum word font size.

padding

integer

3

0-100

Pixel padding used by collision detection.

rotationPreset

enum

orthogonal

see below

Rotation preset matching the main ShapeWords canvas.

rotations

integer[]

omitted

-90 to 90, max 64 values

Explicit rotation angles. When provided, these override rotationPreset.

spiralType

enum

archimedean

archimedean, rectangular

Placement spiral algorithm.

fillMode

enum

fill

fill, frequency

Shape filling strategy.

palette

string[]

service default

up to 12 colors

Hex colors: #rgb, #rrggbb, or #rrggbbaa.

colorMode

enum

service default

sequential, random, byFrequency

How palette colors are assigned to words.

returnImage

boolean

false

render_word_cloud only

Download the finished SVG/PNG artifact and return it as MCP image content.

pollIntervalMs

integer

env/default

250-10,000

Polling interval for render_word_cloud.

pollTimeoutMs

integer

env/default

1,000-180,000

Maximum wait time for render_word_cloud.

get_word_cloud_job accepts:

Field

Type

Limits

Description

jobId

string

6-64 chars

ShapeWords render job id.

words items use this shape:

Field

Type

Default

Limits

Description

text

string

required

1-120 chars

Display word or emoji.

value

integer

1

1-100,000

Weight/frequency used for sizing.

kind

enum

word

word, emoji

Word type. Emoji are kept horizontal by the renderer.

sizeScale

number

omitted

0.1-5

Optional extra size multiplier used by the ShapeWords layout core when available.

repeat

boolean

true

true/false

Whether the layout may repeat this word to improve shape filling.

Rotation presets:

horizontal, vertical, orthogonal, crossing, crossingVoids, dancing,
positiveSlope, negativeSlope, random, custom, mixed, angled, free

renderProfile: "canvas" sends the same practical defaults as the main editor canvas: shapeType: "cloud", width: 800, height: 600, quality: "hq", maxWords: 700, seed: 0, fontFamily: "Montserrat", minFontSize: 18, maxFontSize: 96, padding: 3, rotationPreset: "orthogonal", spiralType: "archimedean", and fillMode: "fill".

Use renderProfile: "api" only when you need the older compact Render API defaults: circle shape, 1024x640, SQ quality, and 120 max words.

Text Input

The MCP server can send either raw text, explicit words, or both:

  • repeated words increase frequency, for example cloud cloud cloud render render API;

  • words[] preserves caller-provided weights and avoids differences in tokenization, stop words, or lemmatization;

  • when both text and words[] are present, ShapeWords renders from words[] and keeps text as source context;

  • paragraphs, meeting notes, workshop notes, prompts, research snippets, and keyword lists are valid;

  • files such as CSV, Excel, or Google Sheets are not uploaded through this MCP server; paste or generate the text content first.

Example weighted text:

{
  "text": "MCP MCP MCP ShapeWords ShapeWords word cloud word cloud render API agents tools",
  "shapeType": "cloud",
  "format": "svg",
  "seed": 12345
}

Example explicit weighted words:

{
  "words": [
    { "text": "ShapeWords", "value": 12 },
    { "text": "MCP", "value": 9 },
    { "text": "canvas", "value": 7 },
    { "text": "layout", "value": 6 },
    { "text": "render", "value": 5 }
  ],
  "shapeType": "cloud",
  "format": "svg"
}

Shapes

Use shapeType to choose the word-cloud mask.

Stable built-in shape ids accepted by the production renderer include:

rectangle, circle, heart, star, cloud, diamond, tree, triangle, arrow,
square, pentagon, hexagon, octagon, cross, plus, moon, sun, drop,
flame, leaf, flower, mountain, apple, house, book, camera, music,
chat, location, trophy, rocket, plane, car, shield, lightning, check,
infinity, tag

Built-in brand shape ids include:

brand-product-hunt, brand-y-combinator, brand-hacker-news,
brand-indie-hackers, brand-github, brand-figma, brand-notion,
brand-stripe, brand-vercel, brand-linear, brand-supabase,
brand-railway, brand-netlify, brand-firebase, brand-cloudflare,
brand-airtable, brand-replit, brand-anthropic

The production renderer may also accept additional generated ShapeWords ids. For portable automation, prefer the stable ids above or pass a custom SVG shape.

The local engine: "skia" path currently supports rectangle, square, circle, diamond, triangle, star, heart, cloud, custom SVG shapes, and vendored Font Awesome shape ids such as fa-cat. Unsupported local shape ids are rejected instead of silently changing the requested shape.

Custom Shapes

Set shapeType to custom and provide customShapeDefinition:

Field

Type

Required

Limits

Description

path

string

yes

1-100,000 chars

SVG path data used as the mask.

viewBox

string

yes

1-120 chars

SVG viewBox, for example 0 0 100 100.

fillRule

enum

no

nonzero, evenodd

SVG fill rule. Defaults to renderer behavior when omitted.

name

string

no

1-80 chars

Optional human-readable name.

nameEn

string

no

1-80 chars

Optional English name.

Custom heart example:

{
  "text": "love love design care product community team support",
  "shapeType": "custom",
  "customShapeDefinition": {
    "name": "Heart",
    "path": "M 50 90 C 25 70, 0 50, 0 30 A 25 25 0 0 1 50 30 A 25 25 0 0 1 100 30 C 100 50, 75 70, 50 90 Z",
    "viewBox": "0 0 100 100",
    "fillRule": "nonzero"
  },
  "format": "svg"
}

Output

render_word_cloud returns:

  • text content with the completed job id and artifact location;

  • structuredContent.job with normalized job metadata;

  • structuredContent.artifactUrl for hosted renders;

  • structuredContent.localArtifact for engine: "skia";

  • structuredContent.siteUrl;

  • optional MCP image content when returnImage is true and format is svg or png.

For engine: "skia", render_word_cloud always returns inline MCP image content for format: "png" or format: "svg" because there is no hosted artifact URL.

create_word_cloud_job returns the same metadata immediately after job creation, without waiting for completion.

get_word_cloud_job returns the latest job status and artifact URL.

Generated artifact URLs are short-lived because the ShapeWords Render API stores render jobs in memory.

Format and Engine Notes

  • svg is the recommended automation format: it is fast, compact, and works with the browserless shared-core renderer.

  • json returns layout data from the same shared-core placement.

  • png is rasterized from the same generated SVG/layout, so word placement matches SVG/JSON for the same input and options.

  • engine: "auto" is recommended unless you need to force a specific path.

  • engine: "browserless" supports svg, json, and png.

  • engine: "browser" supports svg and png, not json.

  • engine: "skia" is local-only and supported by render_word_cloud. It does not create pollable hosted jobs. Layout is generated by the vendored ShapeWords shared core; PNG is drawn directly with CanvasKit/Skia.

  • seed is honored by browserless/shared-core renders. Use engine: "auto" or engine: "browserless" for reproducible API/MCP output.

  • Non-zero seed with forced engine: "browser" is rejected by the Render API because the browser fallback does not use the deterministic shared-core seed path.

Quick Start

Run directly from GitHub:

npx -y github:kirrrr-2423/shapewords-mcp

Or clone locally:

git clone https://github.com/kirrrr-2423/shapewords-mcp.git
cd shapewords-mcp
npm install
npm start

Client Configuration

Use stdio transport in any MCP-compatible client.

{
  "mcpServers": {
    "shapewords": {
      "command": "npx",
      "args": ["-y", "github:kirrrr-2423/shapewords-mcp"],
      "env": {
        "SHAPEWORDS_API_BASE_URL": "https://shapewords.fun"
      }
    }
  }
}

For a local clone:

{
  "mcpServers": {
    "shapewords": {
      "command": "node",
      "args": ["/absolute/path/to/shapewords-mcp/src/index.js"],
      "env": {
        "SHAPEWORDS_API_BASE_URL": "https://shapewords.fun"
      }
    }
  }
}

Environment

Variable

Default

Description

SHAPEWORDS_API_BASE_URL

https://shapewords.fun

ShapeWords app URL.

SHAPEWORDS_RENDER_API_KEY

empty

Optional bearer token if your Render API requires one.

SHAPEWORDS_API_KEY

empty

Backward-compatible alias for SHAPEWORDS_RENDER_API_KEY.

SHAPEWORDS_POLL_INTERVAL_MS

1500

Polling interval for completed renders.

SHAPEWORDS_POLL_TIMEOUT_MS

90000

Render wait timeout.

SHAPEWORDS_REQUEST_TIMEOUT_MS

30000

Per-request timeout for hosted API and artifact requests.

SHAPEWORDS_MAX_IMAGE_BYTES

8388608

Max downloaded artifact size when returnImage is true.

Example Prompt

Create a fast SVG word cloud about MCP, universal tools, word cloud generation, AI agents, and ShapeWords. Use the default ShapeWords canvas profile and return the artifact URL.

Example tool input:

{
  "text": "MCP MCP MCP Model Context Protocol word cloud word cloud ShapeWords tools resources prompts stdio server client universal integration connector API render PNG SVG artifact agents automation context protocol schema",
  "locale": "en",
  "format": "svg",
  "width": 800,
  "height": 600,
  "background": "white",
  "quality": "hq",
  "engine": "auto",
  "returnLayout": false,
  "shapeType": "cloud",
  "seed": 12345,
  "palette": ["#7c3aed", "#ddd6fe", "#14b8a6", "#111827"],
  "returnImage": false
}

More Examples

Transparent PNG

{
  "text": "launch launch startup product customers retention growth metrics roadmap",
  "format": "png",
  "engine": "auto",
  "shapeType": "rocket",
  "width": 1200,
  "height": 900,
  "background": "transparent",
  "quality": "hq",
  "returnImage": true
}

Local Skia PNG

{
  "words": [
    { "text": "MCP", "value": 12 },
    { "text": "ShapeWords", "value": 10 },
    { "text": "Skia", "value": 8 },
    { "text": "CanvasKit", "value": 7 },
    { "text": "local", "value": 6 },
    { "text": "renderer", "value": 5 }
  ],
  "format": "png",
  "engine": "skia",
  "shapeType": "cloud",
  "width": 800,
  "height": 600,
  "quality": "sq",
  "seed": 12345
}

JSON Layout

{
  "text": "design system tokens components variants accessibility contrast typography layout",
  "format": "json",
  "engine": "browserless",
  "shapeType": "diamond",
  "returnLayout": true,
  "seed": 7,
  "maxWords": 80
}

Reproducible SVG

{
  "text": "MCP shared core browserless renderer reproducible seed deterministic layout",
  "format": "svg",
  "engine": "browserless",
  "shapeType": "cloud",
  "returnLayout": true,
  "seed": 12345
}

Custom Palette and Font

{
  "text": "research synthesis interview persona journey insight opportunity experiment",
  "format": "svg",
  "shapeType": "book",
  "fontFamily": "Roboto",
  "palette": ["#111827", "#2563eb", "#14b8a6", "#f59e0b"],
  "colorMode": "byFrequency",
  "maxWords": 160
}

Development

npm install
npm run smoke
npm run smoke:skia
npm run inspect

The server uses stdio and writes protocol messages to stdout. Diagnostics are written to stderr.

Notes

  • Set returnImage: true in render_word_cloud when the MCP client supports image content and needs hosted-render bytes inline. Local Skia image renders are inline automatically.

  • For automation-heavy use, prefer SVG or JSON layout artifacts; request PNG only when the caller needs raster pixels.

  • Set seed when the caller needs repeatable SVG/JSON/PNG placement across MCP runs. engine: "skia" is deterministic by default.

  • Local Skia PNG output is capped at 40,000,000 pixels after quality scaling to avoid excessive local memory use.

  • Local Skia font rendering currently supports bundled Montserrat and OpenDyslexic only. Hosted renders may support more font families.

  • The MCP schema currently exposes rendering and style options only. It does not expose ShapeWords UI-only workflows such as the advanced word editor, 2D/3D view switching, CSV/Excel upload, Google Sheets import, or live room controls.

  • padding, rotationPreset, rotations, spiralType, and fillMode are exposed so MCP callers can match the main ShapeWords canvas more closely.

See THIRD_PARTY_NOTICES.txt for bundled Font Awesome and font asset notices.

Available Tools

3 tools
create_word_cloud_jobCreate word cloud jobA

Start a ShapeWords render job and return status/artifact URLs without waiting for completion.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoUnsigned 32-bit layout seed for reproducible browserless ShapeWords renders. Canvas-profile default: 0. Use engine auto or browserless; browser fallback does not support non-zero seed.
textNoWords, phrases, notes, or source text for the word cloud. Optional when words[] is provided.
widthNoCanvas width in pixels. Canvas-profile default: 800.
wordsNoExplicit weighted words. Use this when another system already tokenized, lemmatized, or scored the input.
engineNoHosted renderer engine. auto uses the hosted renderer default path.
formatNoOutput artifact format. Canvas-profile default: svg.
heightNoCanvas height in pixels. Canvas-profile default: 600.
localeNoShapeWords UI/render locale. Canvas-profile default: en.
paddingNoWord collision padding in pixels. Canvas-profile default: 3.
paletteNo
qualityNosq is faster, hq renders at higher device scale. Canvas-profile default: hq.
fillModeNoShape filling strategy. Canvas-profile default: fill.
maxWordsNoMaximum number of words to lay out. Canvas-profile default: 700.
colorModeNo
rotationsNoExplicit rotation angles in degrees. When provided, these override rotationPreset.
shapeTypeNoShapeWords shape id, for example circle, rectangle, heart, star, cloud, diamond, custom. Canvas-profile default: cloud.
backgroundNoOutput background style. Canvas-profile default: white.
fontFamilyNoShapeWords font family name. Canvas-profile default: Montserrat.
spiralTypeNoPlacement spiral algorithm. Canvas-profile default: archimedean.
maxFontSizeNo
minFontSizeNo
returnLayoutNoInclude layout JSON when supported. Canvas-profile default: false.
renderProfileNoDefault option profile. canvas matches the main ShapeWords canvas; api keeps the older compact Render API defaults.canvas
rotationPresetNoRotation preset matching the ShapeWords canvas. Canvas-profile default: orthogonal.
customShapeDefinitionNoCustom SVG shape definition used when shapeType is custom.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate this is not read-only and not destructive, so the description need not repeat that. The description adds valuable behavior: that it starts a job and returns status/artifact URLs immediately, implying asynchronous execution. This goes beyond annotation hints and clarifies the tool's execution model.

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 description is a single, front-loaded sentence containing exactly the essential information: starts a job and returns URLs without waiting. No fluff or repetition.

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?

Given the tool has 25 parameters and no output schema, the description provides a high-level summary of the return (status/artifact URLs) and the async nature. It lacks details about job tracking or polling, but those are covered by sibling tools. The description is complete enough for an agent to select and invoke the tool correctly.

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 84%, so parameters are well-documented in the schema. The description adds no parameter-specific details, but the schema carries the burden. Baseline 3 is appropriate because the description doesn't compensate beyond the schema, but the schema does a sufficient job.

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 uses a specific verb 'Start' with resource 'ShapeWords render job', clearly indicating an asynchronous job creation. It distinguishes from siblings by noting 'without waiting for completion', which contrasts with render_word_cloud's likely synchronous behavior.

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 phrase 'without waiting for completion' clearly implies a background/async use case, distinguishing this from synchronous rendering. It doesn't explicitly name alternatives like render_word_cloud or get_word_cloud_job, but the context is clear and no exclusions are needed.

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

get_word_cloud_jobGet word cloud jobA
Read-onlyIdempotent

Check a ShapeWords render job status by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesShapeWords render job id.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds only domain context ('ShapeWords render job') but no additional behavioral details such as rate limits, authorization requirements, or response format.

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 description is a single, front-loaded sentence that directly conveys the tool's purpose without any wasted words. Every word earns its place.

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?

The tool is simple (one parameter, no output schema), and the description adequately states the action. However, it does not explain what status information will be returned or how to interpret statuses, which could be important for selecting and using the tool correctly.

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 100%, and the jobId parameter is already described as 'ShapeWords render job id.' The description's 'by ID' adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.

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 the action ('Check') and the resource ('ShapeWords render job status') with a specific identifier ('by ID'). This distinguishes it from sibling tools like render_word_cloud and create_word_cloud_job, which are for creation/rendering.

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 implies this is used to check the status of a previously created job, which is clear from the sibling context. However, it does not explicitly mention when to avoid using it or name alternatives.

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

render_word_cloudRender word cloudA

Create a ShapeWords word cloud, wait for completion, and return the artifact URL plus optional image content.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoUnsigned 32-bit layout seed for reproducible browserless ShapeWords renders. Canvas-profile default: 0. Use engine auto or browserless; browser fallback does not support non-zero seed.
textNoWords, phrases, notes, or source text for the word cloud. Optional when words[] is provided.
widthNoCanvas width in pixels. Canvas-profile default: 800.
wordsNoExplicit weighted words. Use this when another system already tokenized, lemmatized, or scored the input.
engineNoRenderer engine. auto uses the hosted renderer; skia uses the local MCP shared-core + CanvasKit renderer without server-side Chromium.
formatNoOutput artifact format. Canvas-profile default: svg.
heightNoCanvas height in pixels. Canvas-profile default: 600.
localeNoShapeWords UI/render locale. Canvas-profile default: en.
paddingNoWord collision padding in pixels. Canvas-profile default: 3.
paletteNo
qualityNosq is faster, hq renders at higher device scale. Canvas-profile default: hq.
fillModeNoShape filling strategy. Canvas-profile default: fill.
maxWordsNoMaximum number of words to lay out. Canvas-profile default: 700.
colorModeNo
rotationsNoExplicit rotation angles in degrees. When provided, these override rotationPreset.
shapeTypeNoShapeWords shape id, for example circle, rectangle, heart, star, cloud, diamond, custom. Canvas-profile default: cloud.
backgroundNoOutput background style. Canvas-profile default: white.
fontFamilyNoShapeWords font family name. Canvas-profile default: Montserrat.
spiralTypeNoPlacement spiral algorithm. Canvas-profile default: archimedean.
maxFontSizeNo
minFontSizeNo
returnImageNoDownload the artifact and return it as MCP image content when supported by the client.
returnLayoutNoInclude layout JSON when supported. Canvas-profile default: false.
pollTimeoutMsNo
renderProfileNoDefault option profile. canvas matches the main ShapeWords canvas; api keeps the older compact Render API defaults.canvas
pollIntervalMsNo
rotationPresetNoRotation preset matching the ShapeWords canvas. Canvas-profile default: orthogonal.
customShapeDefinitionNoCustom SVG shape definition used when shapeType is custom.

TDQS

A4.2/5.0
Behavior4/5

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

With annotations (readOnlyHint=false, openWorldHint=true) the bar is lower. The description adds valuable behavioral context beyond annotations: it waits for completion and returns a URL plus optional image content. It does not detail potential side effects or time costs, but the wait behavior is clearly disclosed.

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 description is a single, well-structured sentence that front-loads the main action ('Create a ShapeWords word cloud') and then states the completion behavior and return value. Every phrase is meaningful and there is no redundancy.

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?

There is no output schema, so the description appropriately explains the return value (artifact URL and optional image content). It also conveys the synchronous wait behavior, which is essential for a 28-parameter tool. Some additional context about fallback engines or error cases would be nice, but the provided information is adequate given the rich parameter schema.

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 79%, near the baseline threshold. The description itself does not explain any parameters; it only mentions returning an artifact URL and optional image content, which is partially tied to returnImage. The schema already documents the parameters well, so the description adds minimal parameter-specific value.

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 uses a specific verb ('Create') and resource ('ShapeWords word cloud'), then explains the synchronous behavior ('wait for completion') and output ('return the artifact URL plus optional image content'). This clearly distinguishes it from siblings like create_word_cloud_job (async) and get_word_cloud_job (retrieval).

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 implies synchronous usage by saying 'wait for completion', which contrasts with the sibling job-based tools. However, it does not explicitly state when to use this instead of create_word_cloud_job/get_word_cloud_job, nor does it name alternatives. Clear context but no exclusions.

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. 3 tool updatesv0.2.2
    • First observedcreate_word_cloud_job
    • First observedget_word_cloud_job
    • First observedrender_word_cloud

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: one performs the full operation synchronously, one initiates an async job, and one checks job status. No overlap or ambiguity exists.

Naming Consistency4/5

Names follow verb_noun pattern and are readable, but 'render_word_cloud' vs 'create_word_cloud_job' uses different verbs for similar actions. Minor inconsistency, but 'job' suffix clarifies async nature.

Tool Count5/5

3 tools is well-scoped for a job-based word cloud service: sync, async, and status check. Each tool earns its place without redundancy or bloat.

Completeness5/5

The surface covers the full workflow: create a job, check status, and get the result. No obvious missing operations for the stated domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for creating and manipulating generative art with p5.js, Three.js, GLSL, Canvas2D, and SVG, featuring workspace management, parameter control, and screenshot capture.
    72
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for generating organic, customizable blob shapes as SVG using sinusoidal harmonics, with tools for single blobs, gradient blobs, blob sets, and raw paths.
    4
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kirrrr-2423/shapewords-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server