Skip to main content
Glama

drawing_add

Draw measured geometry or explain it with text, note, callout or emoji. Points are {time, price} in chart coordinates — time in seconds, matching the candle timestamps a data handle reports. A horizontal line needs one point; a trendline or box needs two. Measured anchors must be copied from a tool result — a summary's max with its maxAt, a crossing with its time — never read off your own prose or carried over from a different computation. A note/text position or callout second anchor is layout, not a measured price; place it in spare chart space. The result echoes back what was drawn: check it against the figures you are about to quote, because a line that disagrees with the paragraph beside it is worse than no line. Changes the chart you are building; finish with chart_link, or analysis_prepare for a sharing draft that needs human review.

Input Schema

NameRequiredDescriptionDefault
refNoA handle from market_candles. Measured anchors are checked against its window. A callout checks its first/event anchor; its second/label anchor and note/text positions are layout, not measured prices. Pass it whenever coordinates came from a computation.
fillNoPalette fill colour, or “none”.
textNoRequired for text/note/callout: concise words, with for short lines. For emoji: one Unicode emoji, e.g. 👀 or ⚠️. Max 500 characters.
toolYesA tool id from catalog_search with kind "drawing" — e.g. text, note, callout, emoji, arrow, ellipse, priceZone, horizontalLine, trendLine, rectangle, fibRetracement, longPosition or shortPosition. Prefer position_draw_on_chart for an entry/stop/target box. Separators and capitalisation are forgiven; an id that names no tool is refused.
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.
levelsNoCustom Fibonacci ratios. Example: [0, 0.382, 0.5, 0.618, 0.786, 1, 1.272, 1.618].
pointsYes
symbolNoDefaults to the charted symbol.
opacityNoStrength of the whole drawing, 0.1 to 1. Fade a level that is context rather than the decision.
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. Changed5 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 / ref / description
      Previous value: -"A handle from market_candles. Given one, the points are checked against the window it covers and a drawing that would land outside it is refused. Pass it whenever the coordinates came from a computation."New value: +"A handle from market_candles. Measured anchors are checked against its window. A callout checks its first/event anchor; its second/label anchor and note/text positions are layout, not measured prices. Pass it whenever coordinates came from a computation."
    • 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."
    • changedInput schema / properties / tool / description
      Previous value: -"A tool id from catalog_search with kind \"drawing\" — e.g. horizontalLine, trendLine, rectangle, fibRetracement, longPosition or shortPosition. Prefer position_draw_on_chart for an entry/stop/target box. Separators and capitalisation are forgiven; an id that names no tool is refused."New value: +"A tool id from catalog_search with kind \"drawing\" — e.g. text, note, callout, emoji, arrow, ellipse, priceZone, horizontalLine, trendLine, rectangle, fibRetracement, longPosition or shortPosition. Prefer position_draw_on_chart for an entry/stop/target box. Separators and capitalisation are forgiven; an id that names no tool is refused."
    • 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

A4.3/5.0
Behavior4/5

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

Annotations already declare it is a non-destructive, non-read-only mutation; the description adds genuinely new behavior: the result echoes the drawing back for verification, anchors are validated against a ref window, and coordinates must be copied from tool results rather than prose. It does not mention that repeated identical calls are not idempotent (annotations flag idempotentHint=false), which is a minor omission.

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?

Well front-loaded: what it draws, then coordinate format, then point-count rules, then provenance discipline, then next steps. Five dense sentences where every rule earns its place, though the provenance/verification material could be tightened without losing meaning.

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 27-parameter, no-output-schema drawing tool, the description covers the semantics an agent must get right: coordinate source, point cardinality, layout vs measured anchors, and verification of the echoed result. Residual gaps are stylistic parameters rather than correctness-critical ones.

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 only 44% across 27 parameters, so the description has to compensate and largely does for the critical ones: points format ({time, price}, seconds matching candle timestamps), anchor provenance rules, and which anchors count as layout versus measured. Many cosmetic toggles (arrowStart, showStats, extendLeft, labelVertical, etc.) remain undocumented in both description and schema.

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?

States a specific verb and resource set: 'Draw measured geometry or explain it with text, note, callout or emoji', which lets an agent separate annotation work from siblings like drawing_freehand, fibonacci_draw or position_draw_on_chart. The measured-vs-decorative split is explicit in the first sentence.

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?

Gives concrete when-to-use rules: one point for a horizontal line, two for a trendline or box, and an explicit follow-up chain ('finish with chart_link, or analysis_prepare for a sharing draft'). Sibling routing (prefer position_draw_on_chart for entry/stop/target) lives only in the schema text, so the description itself stops just short of full alternative coverage.

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