Skip to main content
Glama

drawing_freehand

Create one or more precise freehand strokes as a single undoable composition. A stroke accepts arbitrary chart points; line accepts two endpoints; ellipse and rectangle accept two opposite corners and are generated smoothly. Use highlighter for translucent emphasis and brush for circles, paths and marks. Changes the chart you are building; finish with chart_link, or analysis_prepare for a sharing draft that needs human review.

Input Schema

NameRequiredDescriptionDefault
refNo
fillNoPalette fill colour, or “none”.
modeNo
textNoRequired for text/note/callout: concise words, with for short lines. For emoji: one Unicode emoji, e.g. 👀 or ⚠️. Max 500 characters.
colorNoA palette name. “up” and “down” are the reserved green and red — they assert a bullish or bearish claim, so use them for position zones and not for a measurement.
widthNoStroke width in pixels, 1 to 6.
symbolNo
opacityNoStrength of the whole drawing, 0.1 to 1. Fade a level that is context rather than the decision.
strokesYes
arrowEndNo
fontSizeNoSize 9–160px, normally 12–16 for readable text. Emoji render at twice this size.
textBoldNo
wrapTextNoDefault true: wrap long annotation lines for readability. False only for an explicitly requested single-line label.
lineStyleNo
showStatsNo
textColorNo
arrowStartNo
extendLeftNo
showLabelsNo
showPricesNo
showRatiosNo
extendRightNo
fillOpacityNoShape fill opacity from 0 to 1.
ratioFormatNo
labelPositionNo
labelVerticalNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / fontSize / description
      Previous value: -"Label/text size from 8 to 28."New value: +"Size 9–160px, normally 12–16 for readable text. Emoji render at twice this size."
    • changedInput schema / properties / text / description
      Previous value: -"Text for annotation tools."New value: +"Required for text/note/callout: concise words, with \n for short lines. For emoji: one Unicode emoji, e.g. 👀 or ⚠️. Max 500 characters."
    • addedInput schema / properties / wrapText
      Added value: +{
      +  "description": "Default true: wrap long annotation lines for readability. False only for an explicitly requested single-line label.",
      +  "type": "boolean"
      +}
  2. Changed7 schema fields changed
    • addedInput schema / properties / labelPosition
      Added value: +{
      +  "enum": [
      +    "left",
      +    "center",
      +    "right"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / labelVertical
      Added value: +{
      +  "enum": [
      +    "above",
      +    "middle",
      +    "below"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / ratioFormat
      Added value: +{
      +  "enum": [
      +    "value",
      +    "percent"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / showPrices
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / showRatios
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / textBold
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / textColor
      Added value: +{
      +  "enum": [
      +    "blue",
      +    "orange",
      +    "violet",
      +    "aqua",
      +    "yellow",
      +    "magenta",
      +    "neutral",
      +    "white",
      +    "up",
      +    "down"
      +  ],
      +  "type": "string"
      +}
  3. First observed

TDQS

A3.7/5.0
Behavior4/5

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

The annotations already establish that this is a non-read-only, non-destructive, non-idempotent operation. The description adds useful behavioral context by noting that strokes form a 'single undoable composition' and that changes affect the chart being built, though it does not discuss validation or error behavior.

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 compact and front-loaded: purpose first, then shape semantics, mode guidance, and workflow. Every sentence contributes practical information without repetition or filler.

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?

For a complex 26-parameter drawing tool with no output schema, the description covers the core composition model, shape semantics, modes, and next steps. It still leaves significant gaps around many optional parameters and detailed behavioral expectations, so it is only adequate rather than complete.

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?

With only 31% schema description coverage across 26 parameters, the description must compensate. It adds helpful semantics for the core required strokes parameter and shape behavior ('stroke accepts arbitrary chart points; line accepts two endpoints; ellipse and rectangle accept two opposite corners') and for the brush/highlighter modes, but it leaves many styling and annotation parameters unexplained.

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 uses a specific verb and resource: 'Create one or more precise freehand strokes as a single undoable composition.' It clearly establishes the drawing purpose, but it does not explicitly distinguish this tool from close siblings such as drawing_add or fibonacci_draw.

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?

It gives concrete mode guidance ('Use highlighter for translucent emphasis and brush for circles, paths and marks') and a follow-up workflow ('finish with chart_link, or analysis_prepare'). However, it does not state when to choose this tool over sibling drawing tools or when not to use it.

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