Skip to main content
Glama

Make a network react to body pose

create_pose_reactive

Converts MediaPipe pose tracking into reactive scalar channels (hand height, arm openness, hand velocity) on a Null CHOP, with optional parameter binding.

Instructions

Body-pose binder parallel to bind_audio_reactive: take the 33-sample MediaPipe pose CHOP produced by setup_body_tracking and derive scalar reactive channels (right-hand height, arms openness, elbow angle, hand velocity, …) on a Null CHOP ready for bind_to_channel. Each channel is a Select→Math→Hold→Filter→Limit→Rename chain inside a fresh baseCOMP, all merged into one null_out. Supported metrics: y/x/z (1 landmark), distance/openness (2 landmarks), angle (3 — vertex middle), velocity (1, time-derivative). Optional bindings[] writes expression-mode binds directly onto target parameters (same shape as bind_to_channel; failures collected as warnings, not throws). Exposes a Reactive custom page with Smoothing/Intensity/Bypass/Gate_ knobs. Heads-up: MediaPipe's landmarks are 2D (z near-zero) — z/distance/angle/velocity are unreliable unless the adapter exposes worldLandmarks; the tool emits a warning when it detects a constant tz. Run setup_body_tracking first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bindingsNoOptional list of parameter paths to bind to the derived channels (expression-mode bind, like bind_audio_reactive).
channelsYesReactive channels to derive. Landmark IDs cheat-sheet — 0 nose, 11 L-shoulder, 12 R-shoulder, 13 L-elbow, 14 R-elbow, 15 L-wrist, 16 R-wrist, 23 L-hip, 24 R-hip, 25 L-knee, 26 R-knee, 27 L-ankle, 28 R-ankle.
intensityNoMaster reactivity scaler (0=off, 1=normal, 2=strong).
smoothingNo0=raw, 1=very smoothed (drives filter width).
parent_pathNoParent COMP path./project1
source_chopYesPath to the 33-sample MediaPipe pose CHOP (tx/ty/tz/confidence channels) — typically the Null produced by setup_body_tracking.
container_nameNoContainer baseCOMP name (created under parent_path).pose_reactive
expose_controlsNoAppend Smoothing/Intensity/Bypass/Gate_<name> knobs to the container.
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses side effects: it creates a fresh baseCOMP with a Select→Math→Hold→Filter→Limit→Rename chain merged into null_out, exposes a Reactive custom page, writes expression-mode binds with failures as warnings, and emits a warning for constant tz. This exceeds what annotations alone convey and adds valuable behavioral context.

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 dense but every sentence earns its place, covering purpose, pipeline, metrics, bindings, controls, and a data-quality warning. It is front-loaded with the main purpose and flows logically. For a tool with 8 parameters and complex behavior, this length is appropriate and well-structured.

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?

The description is highly complete given the tool's complexity: it explains the whole workflow, the output structure, the supported metrics, the bindings behavior, the exposed controls, and the critical MediaPipe 2D-landmark caveat. Even without an output schema, the agent knows what to expect (a Null CHOP with channels and a Reactive page). No gaps are evident.

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% and individual parameter descriptions are already detailed, so the baseline is 3. The tool description adds extra meaning by explaining the internal processing chain (Select→Math→Hold→Filter→Limit→Rename), the exact behavior of bindings (expression-mode, same shape as bind_to_channel, warning instead of throw), and the reliability caveat for z/angle/velocity metrics. This supplements the schema rather than merely repeating it.

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 function: it takes a 33-sample MediaPipe pose CHOP and derives scalar reactive channels (right-hand height, distance, angle, velocity, etc.) into a Null CHOP. It explicitly distinguishes itself from bind_audio_reactive and references setup_body_tracking, providing a specific verb+resource+output structure.

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 gives clear context when to use the tool (body-pose reactivity) and prerequisites (run setup_body_tracking first). It implies alternatives by naming bind_audio_reactive and warns about unreliable metrics, but does not explicitly list when not to use it versus other body-reactive tools. This is strong but not fully explicit about exclusions.

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