Skip to main content
Glama
m9810223

tldraw-mcp

by m9810223

tldraw-mcp

JSON操作を介してtldrawの.tldrファイルを編集するための最小限のMCPサーバー。ヘッドレスで、ブラウザは不要です。

ステータス

動作するスケルトンです。スキーマバリデーションは組み込み済み(書き込みのたびに@tldraw/tlschemaバリデーターが実行されます)、フラクショナルインデックスには@tldraw/utilsを使用し、ファイル書き込みはproper-lockfileによって保護されています。出力は、コントラクトテストレイヤーのStore.loadStoreSnapshot()を通じて、実際のtldrawランタイムに対してエンドツーエンドで検証済みです。

Related MCP server: obsidian-codex-mcp

ツール

ファイル / ページライフサイクル

ツール

説明

create_empty_file

デフォルトページを持つ新しい.tldrを作成

create_page

新しいページを追加

list_pages

ID、名前、順序インデックスを含むページリストを表示

move_to_page

図形を移動。bindings: 'error' | 'pull' | 'cut'でバインディングの処理を制御

図形

ツール

説明

create_rect

長方形(ジオメトリ図形)を作成

create_text

テキスト図形を作成

create_group

親子関係を設定して図形をグループ化

ungroup

グループを解除し、子要素をグループの親に再配置

connect

同じページ内の2つの図形間に矢印とバインディングを作成

list_shapes

図形リストを表示(ID、タイプ、x、y、ラベルのみ)

get_shape

IDによる図形の完全なレコードを取得

update_shape

シャローマージパッチ(プロパティ編集にはネストされた{ "props": {...} }を使用)

delete_shape

IDで削除。cascade: true(デフォルト)で関連する矢印とバインディングも削除

探索とエスケープハッチ(公式のtldraw-mcp-appに着想)

ツール

説明

トークンコスト

search_api

サポートされている図形タイプと必須プロパティのリストを表示。{type, verbose:true}を渡すと、@tldraw/tlschemaからライブプロパティ名をダンプ(リスト外のタイプも含む)

exec_jq

ファイルに対してjqフィルターを実行。write=trueで永続化(先に自動チェックポイント作成)

変動

チェックポイント(安全性)

ツール

説明

トークンコスト

save_checkpoint

.tldrをタイムスタンプ付きバックアップにコピー

list_checkpoints

バックアップを新しい順にリスト表示

restore_checkpoint

バックアップを復元(checkpointが省略された場合は最新のもの)

トークン節約設計:ツールはプリミティブな引数を取り、IDまたはokを返します。完全なJSONは、get_shapeを明示的に呼び出したときのみコンテキストに入ります。

インストール

オプション 1 · npx(インストール不要、推奨)

npx -y github:m9810223/tldraw-mcp

初回実行時にクローン、npm installの実行、そしてdist/をビルドするprepareスクリプトがトリガーされます。以降の実行はキャッシュされます。

ブランチ / タグ / コミットを固定する場合:

npx -y github:m9810223/tldraw-mcp#main
npx -y github:m9810223/tldraw-mcp#v0.1.0
npx -y github:m9810223/tldraw-mcp#abc1234

オプション 2 · グローバルインストール

npm install -g github:m9810223/tldraw-mcp
tldraw-mcp   # the bin is on PATH

オプション 3 · SSH経由のプライベートリポジトリ

npx -y git+ssh://git@github.com/m9810223/tldraw-mcp.git

オプション 4 · ローカルクローン(開発用)

git clone https://github.com/m9810223/tldraw-mcp.git
cd tldraw-mcp
npm install
npm run build
node dist/index.js   # stdio MCP — waits on stdin

要件

  • Node.js ≥ 20 (engines.nodeで強制)

  • PATH上のjqexec_jqツールにのみ必要)

    • macOS: brew install jq

    • Debian/Ubuntu: sudo apt-get install -y jq

Claude Codeへの接続

claude mcp add(推奨)。--セパレーターが必要です。これにより-yclaude mcp addのフラグとしてではなく、npxに渡されるようになります:

claude mcp add tldraw -- npx -y github:m9810223/tldraw-mcp

グローバル(全プロジェクト)には-s userを、リポジトリにチェックインされた.mcp.jsonには-s projectを追加します。デフォルトは-s local(このプロジェクト、あなたのマシン)です。

…または.mcp.json(プロジェクト)/ ~/.claude.json(ユーザーグローバル)を編集します:

{
  "mcpServers": {
    "tldraw": {
      "command": "npx",
      "args": ["-y", "github:m9810223/tldraw-mcp"]
    }
  }
}

オプション2でグローバルインストールした場合:

{
  "mcpServers": {
    "tldraw": { "command": "tldraw-mcp" }
  }
}

Claude Codeを再起動すると、/mcpで17個のツールを持つtldrawサーバーがリストされるはずです。

他のMCPクライアントへの接続

JSONの形式は同じですが、設定ファイルの場所が異なります:

クライアント

設定パス

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

Cursor

~/.cursor/mcp.json

VS Code

.vscode/mcp.json

.tldrファイルのブートストラップ

create_empty_fileツールを使用するか、tldraw.comから空のキャンバスを保存し、ツールでその絶対パスを指定してください。

create_empty_file({ file: "/tmp/demo.tldr" })

公式tldraw-mcp-appとの設計比較

Cloudflareでホストされている公式MCPはsearch + exec(ライブtldrawエディターで任意のJSを実行)のみを公開しています。このスケルトンはその逆のアプローチ(.tldrファイルに対する型付きJSON編集)を取り、LLMが型付きツールで操作をカバーできない場合に備えて、探索パターン(search_api)とエスケープハッチ(exec_jq)を採用しています。

公式 tldraw-mcp-app

このスケルトン

トランスポート

streamable-http + sse (Cloudflare)

stdio (Claude Codeで直接動作)

ランタイム

ウィジェットiframe内の実際のtldrawエディター

純粋なNode、生のJSONを編集

ツール

2 (search, exec) + チェックポイント

17: ファイル/ページライフサイクル + 9つの図形操作 + search_api + exec_jq + ckpt

ライブプレビュー

あり (ウィジェットiframe)

なし (tldrawでファイルを開いて表示)

カバレッジ

エディターAPI全体

ジオメトリ / テキスト / 矢印 + jqエスケープハッチ

既知のギャップ

  • index(Zオーダー)は現在の最大値の上に追加することのみサポートしており、間への挿入はできません

  • 整列 / 分布ツールはありません(update_shapex/yを直接設定するか、exec_jqを使用してください)

  • 画像 / 動画 / アセットのサポートはありません

  • スキーマバージョンの固定は情報提供のみを目的としています。新しいtldrawでファイルを開くと移行がトリガーされる可能性があります

  • search_apiのキュレーションリストは、ライブの@tldraw/tlschemaリフレクションと並行して手動で管理されています

アーキテクチャ

src/
  index.ts       MCP server entry, tool registration (stdio transport)
  tools.ts       Tool handlers + zod input schemas
  shapes.ts      tldraw record factories (geo/text/arrow/group/binding)
  store.ts       Load/save .tldr + withFileLock; helpers (id gen, indexing, find, page-of-shape, bindings-for-shape)
  template.ts    Empty .tldr generator using @tldraw/tlschema serialize()
  validate.ts    validateShape / validateBinding using createShapeValidator + createBindingValidator
  checkpoint.ts  Timestamped backups under .tldraw-mcp-checkpoints/
  jq.ts          Shell-out to jq for the exec_jq escape hatch

test/
  unit/          store + validate (13 tests)
  integration/   tools end-to-end on tmp .tldr (18 tests)
  contract/      loadStoreSnapshot against real @tldraw/store (4 tests)

純粋なJSON操作 — @tldraw/storeなし、DOMなし、Reactなし。

Available Tools

18 tools
connectA

Connect two shapes with an arrow. Arrow position is binding-driven (start/end stored as 0,0 fallback). Returns arrow id + binding ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
fromIdYesSource shape id
toIdYesTarget shape id
textNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must cover behavioral traits. It notes 'arrow position is binding-driven (start/end stored as 0,0 fallback)' and that it returns 'arrow id + binding ids', which adds transparency. However, it omits details like side effects on existing connections or permission needs.

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?

Two concise sentences. Front-loaded with the core action. No extraneous information. Every sentence adds value.

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 no annotations and no output schema, the description covers the purpose, a key behavioral trait, and the return value. It is adequate for the tool's simplicity, though more detail on binding behavior could improve completeness.

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 75% (three of four parameters have descriptions). The description does not explain the 'text' parameter or add meaning beyond the schema. The return value note is helpful but not parameter-specific.

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 tool's action (connect two shapes with an arrow) and the resource (shapes). It distinguishes from sibling creation tools like create_rect or create_text, as it specifically adds a connection between existing shapes.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., shapes must exist) or conditions that would make other tools (like update_shape) more appropriate.

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

create_empty_fileA

Create a new empty .tldr file with one default page. Errors if file exists unless overwrite=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
overwriteNoIf false (default), error when file already exists

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, but the description discloses the key behavioral trait: creating an empty file with one default page and error handling. It is transparent about the overwrite behavior, though it could further clarify what 'default page' means.

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 immediately conveys the core action and key condition. No wasted words.

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 simplicity (2 params, no output schema), the description provides all necessary information for correct invocation: file path requirement and overwrite option. Complete for the task.

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 description coverage is 100%, so baseline is 3. The description adds value by explaining the purpose of overwrite (error prevention) and the file content (one default page), which goes beyond the schema descriptions.

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 ('new empty .tldr file'), and distinguishes from sibling tools like create_page or create_rect by targeting file creation rather than shapes or pages.

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 explicitly states the behavior when the file exists (errors) and how to override (overwrite=true), providing clear usage context. It does not explicitly mention alternatives or when not to use, but the context is sufficient.

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

create_groupA

Group existing shapes into a new group. Reparents the given shape ids under a new group shape.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
childIdsYesShape ids to reparent into the new group

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description correctly states that the tool reparents shapes under a new group, indicating a mutation. However, it does not disclose potential side effects such as ordering, property preservation, or error conditions.

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?

Two sentences with no unnecessary words. The first sentence states the action, the second clarifies the mechanism. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing output schema means the agent needs to know what the tool returns (e.g., new group ID). The description does not mention return value, success indicators, or error handling, leaving a significant gap.

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 covers 100% of parameters with descriptions. The description echoes the schema's 'reparent' phrase but adds minimal new meaning beyond what the schema already provides.

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 that the tool groups existing shapes into a new group by reparenting given shape ids. This distinguishes it from siblings like ungroup (reverse) and other shape creation tools.

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?

No explicit when-to-use or when-not-to-use guidance is provided. While the sibling tool 'ungroup' implies the reverse operation, the description does not clarify prerequisites or alternatives for grouping tasks.

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

create_pageB

Create a new page in the document. Returns the new page id.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
nameYesDisplay name for the page

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only states the mutation (create) and return value, lacking details like side effects, whether it modifies in-place, or if it automatically saves checkpoints.

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?

Single sentence, zero wasted words. Front-loaded with purpose and return value.

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?

Core purpose and return value are covered, but given the range of sibling tools, more context (e.g., that pages are top-level containers, or that the file must exist) would help prevent misuse.

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% with clear descriptions for both parameters. The description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.

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 clearly states the verb 'create' and resource 'page in the document', distinguishing it from siblings like create_group or create_rect. However, 'the document' could be more specific, though the file parameter clarifies it.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as create_rect or create_text. No mention of prerequisites (e.g., file must exist) or context about pages as containers.

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

create_rectC

Create a rectangle shape on the main page. Returns its id.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
xYes
yYes
wYes
hYes
textNo
colorNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only states the basic function and return, omitting important behavioral aspects such as error handling, side effects, permissions, or constraints (e.g., coordinate limits).

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 very concise (two sentences) and front-loaded with the purpose. However, it lacks structure such as sections for parameters or usage notes, but it avoids unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain parameter details, return value format, error conditions, or how it fits with sibling tools.

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

Parameters2/5

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

The description does not explain any parameters beyond what is in the schema. With only 14% schema description coverage, the description fails to compensate, leaving 6 out of 7 parameters undocumented.

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 (Create), the resource (rectangle shape), the location (on the main page), and the return value (Returns its id). It distinguishes this tool from siblings like create_text or create_group.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or when not to use it. For example, it does not mention that the file must exist or that coordinates should be within bounds.

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

create_textC

Create a text shape on the main page. Returns its id.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
xYes
yYes
textYes
sizeNo
colorNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided. The description only mentions output ('Returns its id') but does not disclose whether the tool modifies the file, any side effects, permissions required, or constraints. For a tool with no annotations, the description carries the full burden and is insufficient.

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 a single clear sentence that front-loads the action and result. It is concise, but could benefit from slightly more detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters and no output schema, the description is too minimal. It lacks context about the file requirement, parameter usage, behavior, and potential errors, making it incomplete for reliable tool use.

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

Parameters2/5

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

Schema description coverage is only 17% (only 'file' has a description). The description does not add any explanation for parameters like 'x', 'y', 'text', 'size', 'color', leaving the agent without necessary context for proper invocation.

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 ('Create'), the resource ('text shape'), and the location ('on the main page'). It also mentions the return value ('Returns its id'). This distinguishes it from sibling tools like 'create_rect' or 'create_group'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, when not to use it, or how it differs from other creation tools (e.g., 'create_rect', 'create_group').

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

delete_shapeC

Delete a shape by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
idYes
cascadeNoAlso remove related arrow bindings and arrow shapes that lose all bindings

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are present, and the description does not disclose any behavioral traits such as side effects (e.g., cascade deletion), error conditions, or authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (one sentence), but the brevity sacrifices informativeness. It could be expanded without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters, no output schema, and no annotations, the description is insufficient. It fails to explain the 'cascade' parameter, required file path, or return behavior.

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

Parameters2/5

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

The description adds no information about parameters beyond what the schema already provides. With schema coverage at 67%, the missing 'id' parameter description is not addressed.

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 clearly states the action ('Delete') and the resource ('shape') and the identifier ('by id'). It distinguishes from sibling tools like update_shape or get_shape through the verb.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus other shape-related tools (e.g., update_shape, get_shape) or potential prerequisites (e.g., file must exist).

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

exec_jqA

Escape hatch: run a jq filter against the .tldr JSON. Set write=true to persist (auto-checkpoints first).

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
filterYesjq filter expression
writeNoIf true, write the filter result back to the file. If false, return result only.

TDQS

A4.4/5.0
Behavior4/5

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

Discloses important behavior: auto-checkpoints before persisting, and distinguishes between preview (write=false) and modification (write=true). With no annotations, this provides useful behavioral context beyond the raw schema.

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?

Two sentences, no wasted words. The first sentence delivers the core purpose, the second provides key usage guidance. Appropriately front-loaded.

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?

Covers inputs and write behavior thoroughly. Lacks output description, but as an escape hatch returning jq output, this is acceptable. With no output schema, some return info would be nice but not critical.

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 baseline is 3. The description adds value by explaining the write parameter's effect (persist) and the auto-checkpoint behavior, which is not in the 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?

The description clearly states it runs a jq filter against .tldr JSON content, with the phrase 'Escape hatch' indicating a generic powerful tool. This distinguishes it from sibling tools which are all specific to shapes, pages, or checkpoints.

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?

Explicitly explains when to set write=true (to persist) and notes auto-checkpointing, providing clear context for the write parameter. However, it does not mention when not to use this tool or suggest alternatives, though as an escape hatch it is intentionally broad.

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

get_shapeB

Get the full record of a single shape by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
idYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get' implies a read-only operation, the description does not explicitly state it is non-destructive or safe. This is a minor gap for a simple retrieval tool.

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 of 10 words. It is concise and front-loaded, immediately conveying the tool's purpose.

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 simple retrieval tool without an output schema, the description is adequate but minimal. It does not explain what a 'full record' includes or any return format. Given low complexity, this is acceptable but could be improved.

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

Parameters2/5

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

Schema description coverage is 50% (only 'file' has a description). The description adds no additional meaning for parameters; notably, the 'id' parameter lacks any description in both schema and description. The description fails to compensate for the undocumented parameter.

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 verb 'Get', the resource 'full record of a single shape', and the method 'by id'. It effectively distinguishes from sibling tools like 'list_shapes' which retrieve multiple shapes.

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?

The description implies usage for fetching a shape by ID but provides no explicit guidance on when to use this tool versus alternatives like 'list_shapes' or 'update_shape'. No exclusions or prerequisites are mentioned.

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

list_checkpointsA

List checkpoint backups for a .tldr file, newest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file

TDQS

A3.8/5.0
Behavior3/5

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

Without annotations, the description carries full burden; it conveys the operation is a read-only list with ordering, but does not mention error behavior (e.g., missing file) or limitations.

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?

Single sentence, no unnecessary words, front-loaded with the action and resource.

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 simple list tool with one parameter and no output schema, the description is nearly complete; only lacking a brief mention of what a checkpoint is or how to interpret results.

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 already describes the parameter; the description adds nothing beyond the schema, so baseline 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 verb 'list', the resource 'checkpoint backups for a .tldr file', and the ordering 'newest first', distinguishing it from sibling tools like 'save_checkpoint' and 'restore_checkpoint'.

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?

The description implies usage for viewing backup history but does not explicitly state when to use this tool versus alternatives (e.g., when you need to restore a checkpoint) 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.

list_pagesB

List all pages with id, name, and ordering index.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided. The description implies a read operation but lacks details on side effects, authorization, or limits.

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?

Single sentence, front-loaded with verb and result fields. Efficient but bare-minimum.

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 simple list tool with one parameter and no output schema, the description is mostly adequate, though it does not specify output format or pagination.

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 100%, so baseline is 3. The description adds no extra meaning beyond what the schema already provides.

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 (list), resource (pages), and returned fields (id, name, ordering index). It differentiates from sibling tools like list_shapes and list_checkpoints.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives, no context or prerequisites mentioned.

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

list_shapesA

List shapes (id, type, x, y, label only - props omitted to save tokens).

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
typeNoFilter by shape type (geo, text, arrow, ...)

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description discloses that props are omitted to save tokens, indicating a lightweight listing. However, it does not mention that the tool is read-only or any side effects.

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 sentence that immediately conveys the tool's purpose and key constraint (props omitted). No wasted words.

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 lack of output schema and sibling tools, the description adequately covers what the tool returns and its filtering capability. It could mention if there is no pagination or limit.

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?

Input schema coverage is 100%, so parameters are already documented. The description adds no extra meaning beyond the 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?

The description clearly states 'List shapes' with the specific fields returned (id, type, x, y, label). It distinguishes from sibling tools like get_shape (single shape) and update_shape.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., get_shape for full details) 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.

move_to_pageB

Move shapes to a different page by reparenting them. Note: arrows and bindings should move together for correctness.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
shapeIdsYes
pageIdYesTarget page id
bindingsNoHow to handle bindings whose other end isn't being moved: 'error' refuses the move, 'pull' drags the connected shapes along, 'cut' deletes the bindings (and orphan arrows).error

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, description carries full burden. It explains reparenting and warns about arrows/bindings, but lacks details on side effects, undoability, or permission requirements.

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?

Two concise sentences, front-loaded with purpose, no unnecessary words.

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?

Covers core operation and a key nuance, but omits return value, prerequisites (file/ shapes exist), and error conditions. Adequate for simple usage but incomplete for complex scenarios.

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

Parameters2/5

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

Description adds minimal value beyond schema: only a note about bindings reinforcing the enum descriptions. Parameters like file, shapeIds, pageId are not elaborated beyond 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?

Description clearly states the action: move shapes to a different page by reparenting. It distinguishes from sibling tools like delete_shape or update_shape.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like update_shape or delete_shape. Does not mention prerequisites or exclusions.

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

restore_checkpointA

Restore a checkpoint over the .tldr file. Omits checkpoint to restore the most recent.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
checkpointNoCheckpoint path; omit to restore the most recent

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It states 'restore over', implying overwriting the file, but does not disclose side effects (e.g., irreversible changes), required permissions, or what happens to the current state. This lack of behavioral detail leaves the agent guessing about the tool's impact.

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 two sentences—first defines the main action, second clarifies the optional parameter. No redundancy, no wasted words, and information is front-loaded appropriately.

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?

Given the tool's low complexity (2 parameters, no nested objects, no output schema), the description is adequate but incomplete. It does not explain return values, error conditions, or whether the operation is destructive. Additional context would improve completeness for an agent.

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%, with both parameters described adequately. The description's second sentence aligns with the schema's optional parameter note but adds no new meaning beyond what the schema provides. Baseline 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 ('Restore a checkpoint') and the resource ('.tldr file'), with the additional detail that omitting the checkpoint restores the most recent. This effectively distinguishes it from siblings like save_checkpoint and list_checkpoints.

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?

The description implies usage when wanting to revert to a checkpoint, but provides no explicit guidance on alternatives, prerequisites, or when not to use this tool. It does not mention siblings or conditions for use.

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

save_checkpointA

Copy the .tldr file to a timestamped backup. Returns the backup path.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
labelNoOptional human-readable tag (becomes part of filename)

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the copy operation and return of backup path. It doesn't specify error handling or behavior if file missing, but for a simple copy, it's mostly transparent.

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?

Two short sentences with no wasted words. Information is front-loaded and efficient.

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's simplicity (2 params, no output schema), the description covers the basic operation. It misses potential details like error handling or prerequisites, but is sufficient for an agent to use 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 100%, so baseline is 3. The description does not add additional meaning beyond the schema; the 'label' parameter is already described in the schema as 'Optional human-readable tag (becomes part of filename).'

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 verb ('copy'), resource ('.tldr file'), and outcome ('timestamped backup, returns path'). It distinguishes from sibling tools like restore_checkpoint and list_checkpoints by specifying the action.

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?

The description implies usage for creating backups but does not explicitly state when to use it versus alternatives like restore_checkpoint or when not to use it. No exclusions or prerequisites are mentioned.

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

search_apiA

List supported tldraw shape types and their required props. Use this to discover what can be created before falling back to exec_jq.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional substring to filter shape types
typeNoWhen verbose=true, the specific shape type to introspect
verboseNoIf true, dump the live prop names from @tldraw/tlschema for the given type

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'List' implies a read-only operation, but the description does not explicitly state that there are no side effects or destructive actions. Basic transparency is present but could be improved.

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?

Two sentences, no filler, front-loaded with the core action. 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?

No output schema exists, and the description does not explain the return format or default behavior (e.g., what happens when verbose=false). It provides a general idea but lacks details needed for full understanding.

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% with descriptions for all three parameters. The description adds overall context but does not deepen understanding beyond what the schema already provides. Baseline 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?

Description uses specific verb 'List' and resource 'supported tldraw shape types and their required props', clearly defining the tool's purpose. It also distinguishes from sibling exec_jq by suggesting use before falling back.

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?

Provides a clear usage hint: 'Use this to discover what can be created before falling back to exec_jq.' This tells the agent when to use this tool versus alternatives, though it could be more explicit about when not to use.

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

ungroupA

Dissolve a group: reparent its children to the group's parent and delete the group shape.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
groupIdYesGroup shape id to dissolve

TDQS

A3.8/5.0
Behavior4/5

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

Discloses key behavior: children are reparented to the group's parent and group is deleted. Lacks details on edge cases (no parent), but sufficient given no annotations.

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?

Single sentence conveys all essential information without redundancy. Front-loaded action verb 'dissolve'.

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?

Adequately describes behavior for a simple mutation tool with two clear parameters. No output schema, so no expectation to describe return values.

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 covers both parameters fully (100%). Description does not add extra meaning beyond parameter names and types. Baseline 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?

Description uses specific verb 'dissolve' and resource 'group', clearly stating it reparents children and deletes the group. Distinguishes from sibling 'delete_shape' which would not reparent children.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use instructions. No mention of alternatives like 'delete_shape' or 'create_group'. Usage is implied by description but not guided.

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

update_shapeA

Update a shape via shallow merge. Pass nested {"props": {...}} to update props.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAbsolute path to a .tldr file
idYes
patchYesPartial shape fields to merge (top-level or nested under "props")

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It mentions 'shallow merge', which implies top-level field overwrites but not deep merging, and clarifies updating props via nested object. However, it does not disclose side effects, idempotency, or permission requirements, leaving gaps.

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 extremely concise with two sentences, front-loaded with the action, and no redundant information. Every word serves a purpose.

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 description covers the core operation and key nuance (shallow merge), but lacks details on return values, error states, or prerequisites. Given the tool's simplicity and absence of output schema, it is minimally adequate but not comprehensive.

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?

The description adds value beyond the input schema by explaining that patch supports 'shallow merge' and how to update nested props. This compensates for the schema's 67% description coverage, but the 'id' parameter remains undefined.

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 verb 'Update' and the resource 'shape', specifying the method as 'shallow merge'. It effectively distinguishes from sibling tools like create_shape, delete_shape, and get_shape by implying a mutation operation on an existing shape.

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

Usage Guidelines2/5

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

The description does not provide guidance on when to use this tool versus alternatives, such as move_to_page or delete_shape. It lacks explicit when-to-use, when-not-to-use, or prerequisite information.

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.

  1. 18 tool updatesv0.1.0
    • First observedconnect
    • First observedcreate_empty_file
    • First observedcreate_group
    • First observedcreate_page
    • First observedcreate_rect
    • First observedcreate_text
    • First observeddelete_shape
    • First observedexec_jq
    • First observedget_shape
    • First observedlist_checkpoints
    • First observedlist_pages
    • First observedlist_shapes
    • First observedmove_to_page
    • First observedrestore_checkpoint
    • First observedsave_checkpoint
    • First observedsearch_api
    • First observedungroup
    • First observedupdate_shape

TDQS

A3.6/5.0

Scored across 18 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, from creating shapes and pages to managing checkpoints and connecting shapes. The exec_jq escape hatch is intentionally broad but its role as a fallback is well-documented, avoiding confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_rect, list_pages, update_shape). No mixed conventions or ambiguous verbs.

Tool Count5/5

With 18 tools, the set is well-scoped for a drawing application: it covers shape CRUD, grouping, pages, checkpoints, and an escape hatch. The count feels complete without being overwhelming.

Completeness4/5

The toolset covers core operations but misses explicit tools for creating non-rectangle shapes (e.g., ellipses, lines). However, search_api and exec_jq fill these gaps, so agents can still achieve full functionality.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers