Skip to main content
Glama

Create XY pad

create_xy_pad

Create a draggable XY gesture pad for TouchDesigner that outputs normalized control channels, remaps them into custom ranges, and binds them to target parameters. Optionally add a Z-axis slider.

Instructions

Build a draggable 2D (XY) gesture pad — a Container COMP whose pointer drag drives an x/y CHOP of normalized control channels, optionally remapped into ranges and bound by expression to target parameters (e.g. an effect's two main knobs). Add a 3rd (Z) axis via z_target to also get a slider. Open the container in Perform/Panel mode and drag inside it to scrub X/Y live. The pad reads its drag through a Panel CHOP; the u/v drag-channel names are probed at build time (they vary by TD build) and any mismatch is reported as a warning. Leave the axis targets empty to just expose the x/y channels and bind them later with bind_to_channel.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoName of the container COMP built as the draggable pad.xy_pad
sizeNoPad size in pixels (square: width = height = size).
label_xNoDisplay label for the X axis (used in the summary).X
label_yNoDisplay label for the Y axis (used in the summary).Y
x_rangeNoOutput range [low, high] for X. The pad's normalized u (0..1) is remapped into it.
y_rangeNoOutput range [low, high] for Y. The pad's normalized v (0..1) is remapped into it.
z_rangeNoOutput range [low, high] for the optional Z slider (0..1 remapped into it).
x_targetNoOptional 'nodePath.parName' driven by the X axis. Empty = just expose the x/y channels (bind later with bind_to_channel).
y_targetNoOptional 'nodePath.parName' driven by the Y axis. Empty = none.
z_targetNoOptional 'nodePath.parName' driven by a 3rd (Z) axis. When set, a slider is added (the pad has no native 3rd axis) and its value0 drives this target.
parent_pathNoCOMP path that will hold the XY pad (e.g. '/project1')./project1
Behavior4/5

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

Annotations already signal a mutating build operation (readOnlyHint=false, openWorldHint=true, destructiveHint=false); the description adds non-obvious behavior: drag is read through a Panel CHOP, u/v channel names are probed at build time (varying by TD build) with warnings on mismatch, and z_target adds a slider. No contradiction with annotations.

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

Conciseness5/5

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

Two dense sentences front-load the core purpose, then add operational details (Perform mode, Panel CHOP, warning behavior, optional binding). Every clause earns its place with no filler or 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?

For an 11-parameter build tool with no output schema, the description covers invocation, optional Z axis, warning conditions, and post-build binding workflow, complemented by rich schema descriptions. An explicit example target string ('nodePath.parName') would help, but the schema already gives the format.

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 semantic relations beyond the schema—ranges remap normalized u/v values, z_target triggers a slider rather than a native axis, and empty x/y targets expose channels for later bind_to_channel. This enriches parameter understanding.

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 opens with a specific verb 'Build' and names the resource ('a draggable 2D (XY) gesture pad'), then details what it produces (Container COMP, x/y CHOP channels, optional Z slider). It clearly distinguishes itself from sibling create_* tools by focusing on this unique XY pad interaction.

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 clear usage context: open in Perform/Panel mode, drag inside to scrub X/Y live, add Z via z_target, and leave targets empty to bind later with bind_to_channel. It lacks explicit exclusions or named alternative tools, but the workflow guidance is clear enough for selection.

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

Install Server

Other Tools

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/lucasmaher-hash/touch-designer-mcp'

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