TDPilot
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TDPilotcheck the current network for errors and cooking info"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
████████╗██████╗ ██████╗ ██╗██╗ ██████╗ ████████╗
╚══██╔══╝██╔══██╗██╔══██╗██║██║ ██╔═══██╗╚══██╔══╝
██║ ██║ ██║██████╔╝██║██║ ██║ ██║ ██║
██║ ██║ ██║██╔═══╝ ██║██║ ██║ ██║ ██║
██║ ██████╔╝██║ ██║███████╗╚██████╔╝ ██║
╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝TDPilot Runtime v2.4.1
Build, debug, and verify TouchDesigner networks by talking to your AI.
TDPilot gives Claude (or Cursor, Codex, any MCP client) live control of a running TouchDesigner session. The agent creates and wires operators, sets real parameter values, screenshots the render to check its own work, and can roll back anything it did — transactionally, with snapshots and a full activity log. It knows TouchDesigner: every one of TD's operators is covered by a reviewed knowledge atlas grounded in official Derivative docs.
Try these, verbatim, once installed:
/td-first-wowBuilds a moving feedback visual in your project, verifies it error-free, and shows you the screenshot — in about two minutes.
/td-concept A luminous particle tunnel with deep fog and slow camera driftGrounds the complete artistic request, reviews a concrete TD architecture, and executes it only when every required facet is covered.
Make my project audio-reactive: drive the main TOP chain from the kick drum of audio_in.Plans the CHOP analysis chain, wires it to your visuals, and proves the binding works before calling it done.
Why is my render black? Fix it.Reads errors recursively, inspects the render chain state, finds the broken link, fixes it, and screenshots the repaired output.
Why artists trust it on real projects: every mutation can be snapshot, validated, and rolled back; risky parameter writes are gated by an operator-semantics contract; and the whole session is auditable. No signup, no API key, no hosted service — your work never leaves your machine. On TouchDesigner 2025.33070+, fresh components also bind their Web Server DAT to loopback by default instead of exposing the bridge on every interface.
Install — Claude Code plugin (recommended)
Easiest: paste these two slash commands into any Claude Code session.
/plugin marketplace add dreamrec/TDPilot
/plugin install tdpilot@dreamrec-TDPilotThat installs the full MCP tool surface, the TDPilot skills (tdpilot-core, tdpilot-production, popx-touchdesigner, plus the public brain skills), the brain agents, the guided slash commands (/td-concept, /td-first-wow, /td-audio-reactive, /td-explain-patch, /td-check, /td-snapshot), and the TD-side .tox component — one command, no Python setup required.
Shell one-liner alternative:
curl -fsSL https://raw.githubusercontent.com/dreamrec/TDPilot/main/scripts/install_claude_plugin.sh | bashOr via npx:
npx tdpilot plugin-installTouchDesigner side (once, after install)
Drag ~/.claude/plugins/cache/dreamrec-TDPilot/tdpilot/<version>/td_component/tdpilot.tox into your TD /local container. Or paste the auto-setup Python block from docs/INSTALL_CLAUDE_PLUGIN.md into the Textport (auto-detects the latest installed version).
Using Claude Desktop, Cursor, Codex, or another MCP client? See docs/INSTALL_OTHER_CLIENTS.md — one page per client, including the one-click .mcpb bundle for Claude Desktop. (Don't mix the Desktop and Claude Code flows on one machine.)
Related MCP server: touch-mcp
Documentation
Which doc do I read? Installing → INSTALL_CLAUDE_PLUGIN.md. First hour
→ GETTING_STARTED.md. Daily driving → USER_GUIDE.md. Running a show →
MANUAL.md. Looking up a tool → API_REFERENCE.md. Something broke →
TROUBLESHOOTING.md.
Install (Claude Code plugin):
docs/INSTALL_CLAUDE_PLUGIN.mdInstall (Claude Desktop / Cursor / Codex / generic MCP):
docs/INSTALL_OTHER_CLIENTS.mdGetting started:
docs/GETTING_STARTED.mdUser guide:
docs/USER_GUIDE.mdMemory guide:
docs/MEMORY_GUIDE.mdProduction manual:
docs/MANUAL.mdPractical Intelligence v2.4 architecture and guarantees:
docs/PRACTICAL_INTELLIGENCE.mdAPI reference:
docs/API_REFERENCE.mdSecurity model:
docs/SECURITY.mdTroubleshooting:
docs/TROUBLESHOOTING.mdContributing:
CONTRIBUTING.mdRelease notes:
CHANGELOG.mdArchitecture deep-dives:
docs/TDPILOT_CONCEPT_TO_NODE_MASTER_PLAN.md,docs/TDPILOT_EFFECTIVENESS_ROADMAP.md,docs/MCP_1_1_SURFACE.md(historical)
What This Is
A practical control layer between AI agents and TouchDesigner — built for iterative patch development, not one-shot guessing.
A planner that grounds ideas in real operators: every TD operator family (CHOP, COMP, DAT, MAT, POP, SOP, TOP) is covered by a reviewed knowledge atlas sourced from official Derivative docs, with key parameters and gotchas per operator.
A safety layer professionals can rely on: transactional apply, preflight checks, snapshots, verified rollback, parameter-semantics gating on risky writes, and an activity log of everything the agent touched.
A technique memory that learns validated patterns from your projects and reuses them — exportable, importable, shareable.
Diagnostics that close the loop: error scans, cook-time profiling, and screenshot verification so the agent proves its work instead of declaring it.
Packaged Add-ons
Reviewed operator atlas — The core local add-on for translating abstract ideas into real TD operators. Agents can use the 659-card reviewed operator atlas, Official Derivative source URLs, params, concepts, and gotchas to choose smaller, safer operator chains.
Brain skills and agents — Codex and Claude Code ship explorer, builder, validator, and recovery workflows. Exact validated patterns use deterministic planning; artistic and multi-domain work uses ground -> author -> propose before transactional execution.
Scoped transaction hook — The shipped hook runs only after brain/transaction mutations to reinforce final validation. Source-repository release guards check mirror drift, personal paths, and stale artifacts but are not shipped to user projects.
Optional local knowledge packs — POPX and future specialty packs stay local and user-owned; they extend planning context without adding hosted-service dependencies.
Start Here: Core Workflow
You don't need all 114 tools. Start with these and expand as needed:
Step | Tools | What You're Doing |
Route a pattern |
| Compile an exact validated topology, then require complete intent coverage |
Author a concept |
| Ground artistic, multi-domain, spatial, or implicit architecture and review the authored graph |
Execute |
| Apply only a valid BrainPlan or PatchPlan with preflight, snapshots, rollback, and validation |
Inspect |
| Understand current state before touching anything |
Check memory |
| See if a reusable technique already exists |
Build |
| Make changes in small, reversible steps |
Verify |
| Prove the change worked |
Protect |
| Save milestones, roll back if needed |
Remember |
| Save successful patterns for reuse |
The loop: Inspect -> Route -> Plan or Ground/Propose -> Execute transactionally -> Validate -> Learn only if validated.
Everything else (vision, streaming, optimization, planning, TD2025 inspection) builds on top of this core.
Latest Release
v2.4.1 — TouchDesigner 2025.33070 compatibility: exact release knowledge, reviewed Script POP and glTF In/Out COMP cards, native .pop round-trip guidance, release-driven live operator sampling, and loopback-by-default Web Server DAT builds. The 114-tool practical-intelligence surface remains local-first and backward compatible. Read the Practical Intelligence guide or the full CHANGELOG.md.
Core Thinking Model (How To Think With This MCP)
Use this loop for every non-trivial task:
Inspect the relevant scope — Read focus, target nodes, direct connections, and parameters before touching anything. Batch independent reads when that saves a roundtrip.
Check memory — Before building from scratch, use
td_memory_recallto check if a similar technique already exists in the library.Choose the route — Use
td_brain_planfor an exact validated pattern. Usetd_brain_ground-> author ->td_brain_proposefor artistic, multi-domain, spatial, or implicit architecture.Execute safely — Execute only complete accepted plans, or use a small typed direct edit for one proven change. Validate at logical checkpoints rather than after every primitive operation.
Validate the request — Check graph, runtime, bindings/references, and the requested visual/temporal behavior. Zero TD errors alone is not visual proof.
Learn and control cost — Save only validated reusable work. Prefer metadata and one low-quality proof thumbnail; ask before repeated images or streaming.
Tool Map (114 Tools)
0) Brain Planning + Transactions
Use for non-trivial visual programming tasks where complete intent coverage, rollback, and validation matter.
td_brain_plan,td_brain_ground,td_brain_propose,td_brain_execute,td_transaction_apply,td_cockpit_render
1) Scene + Timeline + Project Lifecycle
Use for global context, playback control, save/load, and undo operations.
td_get_info,td_list_families,td_timeline,td_timeline_set,td_project_lifecycle
2) Network Build + Wiring
Use for creating, moving, renaming, connecting, and pruning structure.
td_get_nodes,td_get_node_detail,td_search_nodestd_create_node,td_delete_node,td_copy_node,td_rename_nodetd_connect_nodes,td_disconnect,td_get_connections
3) Parameters + DAT Content
Use for patch logic, expressions, config tables, scripts, and trigger pulses.
td_get_params,td_set_params,td_pulse_paramtd_get_content,td_set_content,td_custom_parameters
4) Diagnostics + Capture
Use for proving behavior instead of assuming behavior.
td_screenshot,td_chop_data,td_geometry_data,td_pop_inspecttd_cooking_info,td_get_errorstd_exec_python,td_python_help,td_python_classes
Structured exec note: td_exec_python now returns JSON-safe result, result_type, and result_is_structured fields. Use it for lightweight structured probes before reaching for stdout parsing.
5) Events + Streaming
Use for reactive and continuous workflows.
td_subscribe,td_unsubscribe,td_get_eventstd_capture_and_analyzetd_monitor_visual,td_stop_monitor_visualtd_stream_top,td_stop_stream_top
Token guidance: start with include_image=false for monitors/streams. Use image payloads only when visual detail is explicitly required. Prefer td_screenshot for single checks.
6) Optimization + Dynamics
Use for quality passes and temporal behavior analysis.
td_optimize_visual— now accepts directobjective_weights(e.g.{"stability": 0.8, "complexity": 0.2})td_describe_dynamics
7) Safety + Recovery
Use for guardrails, emergency control, and rollback confidence.
td_set_param_bounds,td_clear_param_boundstd_detect_instability,td_emergency_stabilizetd_snapshot_scene,td_list_snapshots,td_diff_snapshots,td_restore_snapshottd_get_state_vector,td_get_timescale_state
8) Technique Memory & User Knowledge Store
Two parallel persistence surfaces — technique memory for replayable network recipes, knowledge store (new in v1.5.3) for free-form markdown reference essays (prose + math).
Technique memory — learning, saving, and replaying reusable network patterns:
td_memory_learn— Analyze a live network subtree and extract a portable recipe. Auto-detects complexity: small/medium networks get full recipes with all params and expressions; large networks get structure summaries + key params.td_memory_save— Persist a technique to the project or global library.td_memory_recall— Search the library by text query and/or tags. Returns summaries.td_memory_replay— Rebuild a saved technique in a new location. Creates nodes, sets parameters and expressions, wires connections.td_memory_list— List all saved techniques with optional filtering.td_memory_favorite— Mark techniques as favorites and rate them (0-5).td_memory_promote— Copy a project-level technique to the global library for use across all projects.td_memory_export— Export the technique library as a portable JSON object for sharing or backup.td_memory_import— Import techniques from an exported library (fromtd_memory_export).td_memory_preferences— Get/set user preferences (color palettes, default resolutions, naming conventions, etc.)
User knowledge store (new in v1.5.3) — free-form markdown reference essays for prose-with-math reference content (BZ reaction equations, feedback recipes, "why this approach works" essays):
td_knowledge_save— Persist a markdown body with name/description/tags/source/notes. Project- or global-scoped. Body capped at 200 KB; split larger writeups into linked entries.td_knowledge_recall— Search by free-text query and/or tags across name/description/tags/source/notes. Optionalfull_text=truealso reads bodies (slower but more thorough).td_knowledge_get— Fetch full markdown body + metadata for one entry by id.td_knowledge_list— List entry summaries newest-first with optional filtering.
Storage lives at ~/.tdpilot/{memory,knowledge}/ with per-project and global scopes:
~/.tdpilot/
memory/
global/
techniques.json
preferences.json
projects/{project_name}/
techniques.json
preferences.json
knowledge/
global/
index.json
entries/<uuid>.md
projects/{project_name}/
index.json
entries/<uuid>.mdStarter technique recipes — the repo ships canonical live-visual recipes under data/techniques_starter/ (one td_memory_import-format JSON file per technique: plain feedback loop, feedback displacement bloom, audio-reactive level pulse, beat-detected flash, kaleidoscope mirror, noise-displace flow, particle GPU sprite trail, camera post chain, LFO param wobble, edge-glow composite). Load one with a single call — pass the file's parsed JSON as the data argument:
td_memory_import(data=<contents of data/techniques_starter/plain_feedback_loop.json>, scope="global")Parameter names are verified against the operator atlas cards (a test enforces this), but every entry ships state: "candidate" with verified_on: null — they have not yet been replayed against a live TD build. Replay one with td_memory_replay, and promote it once it validates.
9. Macros & Planning (7)
Tool | Purpose |
| Create a reusable macro from a template |
| List available macros |
| Get macro parameter schema |
| Plan a multi-step network patch |
| Pre-validate a patch plan |
| Validate a technique recipe |
| Audit project subtree |
10. Vision & Streaming (7)
Tool | Purpose |
| Capture a single frame from a TOP |
| Analyze frame content (colors, regions) |
| Start continuous visual monitoring |
| Stop visual monitoring |
| Stream TOP output via WebSocket |
| Stop TOP streaming |
| Get optimization suggestions for visuals |
11. Knowledge Corpus (7)
Tool | Purpose |
| Search official TD documentation |
| Get detailed operator documentation |
| Get parameter-level help |
| Find code snippets by topic |
| Look up Palette component info |
| Get changes between TD builds |
| Check operator build compatibility |
12. Server Introspection (3)
Tool | Purpose |
| Report server capabilities |
| Get server performance metrics |
| Describe the full tool surface |
13. Recommendations (3)
Tool | Purpose |
| Suggest official components |
| Find relevant official examples |
| Suggest better approaches |
14. TD 2025 Native (6)
Tool | Purpose |
| Inspect Python environment in TD |
| Check threading configuration |
| Inspect TD logger state |
| Inspect TDResources categories |
| Audit/fix COMP standards |
| Inspect color management pipeline |
How To Use It (Practical Workflow)
Connect MCP client to TDPilot.
Ask for current project state.
Request a scoped patch goal.
Let agent apply changes in batches.
Require end-of-task
td_get_errorscheck.Save snapshot at stable milestone.
When you find something worth keeping: learn it, save it, rate it.
What It Is Good At
Building and refactoring operator networks quickly.
Inspecting modern POP systems with attribute-aware reads.
Converting high-level creative goals into concrete TD graph operations.
Audio-reactive/control-system patch scaffolding.
Automated cleanup, relayout, and consistency passes.
Diagnosing wiring/parameter/runtime errors with direct evidence.
Remembering what works and reusing it across projects.
What It Is Not Good At
Replacing artistic direction by itself.
High-level show design without iterative user feedback.
Unlimited always-on image streaming without token impact.
Ignoring TD-specific context (operator families, cook behavior, timing model).
"One shot perfect patch" generation in complex scenes.
Network Design Protocol (Default Aesthetic Rules)
When generating or reorganizing networks: use color coding by role, keep clean spacing and avoid overlaps, group nodes into functional clusters, preserve clear flow direction, name nodes by purpose, and run td_get_errors after edits.
Quick Setup
Recommended runtime (no manual Python setup in client config):
npx -y tdpilotLocal development runtime:
git clone https://github.com/dreamrec/TDPilot.git
cd TDPilot
uv sync
uv run tdpilotTouchDesigner Side
Run the setup script once inside the TD Textport:
exec(open("/path/to/TDPilot/setup_mcp_in_td.py").read(), globals(), globals())This installs the MCP component into /local/mcp_server by default, which means it persists across project opens within the same TD session. You only need to run this once — every project you open afterward will already have TDPilot available.
To install into a specific project instead: os.environ["TD_MCP_PARENT_PATH"] = "/project1" before running.
Alternatively, drag-and-drop td_component/tdpilot.tox into /local manually.
One-command setup helpers: macOS ./install.sh, Windows ./install.ps1
MCP Bundle (Standardized)
TDPilot ships a standard bundle in-repo:
mcp/manifest.jsonmcp/profiles/claude-desktop.json,cursor.json,generic.json
Auto-generate client config:
tdpilot init --client claude-desktop
tdpilot init --client cursor --output ./cursor_mcp_config.json
tdpilot init --client generic --print-onlyDoctor Command
Run a final environment/runtime check:
tdpilot doctor
tdpilot doctor --jsonEnvironment Variables
TD_MCP_HOST(default127.0.0.1— supports hostnames likedesktop-3lurf0p.tail88651a.ts.net)TD_MCP_PORT(default9981)TD_MCP_SCHEME(defaulthttp— set tohttpsfor Tailscale HTTPS or TLS-enabled setups)TD_MCP_WS_PORT(default9982)TD_MCP_TRANSPORT(stdioorstreamable_http)TD_MCP_HTTP_PORT(default8765)TD_MCP_CAPTURE_QUALITY(default0.3)TD_MCP_STREAM_MAX_FPS(default15.0)TD_MCP_EXEC_MODE(off,restricted,standard,full)TDPILOT_PROJECT_NAME(set to enable per-project technique memory)TDPILOT_MEMORY_DIR(override default~/.tdpilot/memory/path)
Test Suite
Run the test suite:
uv run --extra dev pytest tests/ -vPlanning quality is measured, not asserted: the brain is gated by a 50+ case concept-to-node golden eval corpus (scripts/eval_brain_golden.py) plus schema-snapshot, docs-truth, and packaging-mirror checks — all in CI.
Reliability Habit
Treat this as mandatory for every meaningful task: before edits inspect, during edits take small reversible steps, after edits run td_get_errors, before risky changes snapshot.
Community
Show what you built / ask anything — GitHub Discussions
Share a working technique — the technique-share issue template turns your patch (with real parameter values + a screenshot) into bundled TDPilot knowledge, with credit
Report a bug — issue templates (the bug form asks for
tdpilot doctor --json)Contribute — CONTRIBUTING.md; techniques and hint packs land fastest
Security — private disclosure via GHSA, see docs/SECURITY.md
License
MIT
┌─────────────────────────────────────────────────────────────────────┐
│ dreamrec // TDPilot // live laugh love │
└─────────────────────────────────────────────────────────────────────┘Available Tools
114 toolstd_analyze_frameARead-onlyIdempotent
Analyze pixel data of a TOP node without transferring full image data.
Runs server-side numpy analysis inside TouchDesigner and returns statistical results per requested mode. Supported modes:
histogram: per-channel (RGB) pixel value histograms
luminance: mean, min, max, std, p5, p95 of perceived luminance
alpha_coverage: alpha channel statistics (requires RGBA TOP)
color_dominant: most frequent quantized color in the frame
roi_diff: pixel-level diff between a region and a reference TOP
For roi_diff, also pass roi=[x, y, w, h] and reference_path.
| Name | Required | Description | Default |
|---|---|---|---|
| roi | No | Region of interest [x, y, w, h] for roi_diff mode | |
| path | Yes | Path to a TOP node to analyze | |
| modes | No | Analysis modes: histogram, luminance, alpha_coverage, color_dominant, roi_diff. Defaults to ['histogram', 'luminance'] when omitted. | |
| thresholds | No | Optional visual-quality threshold overrides. | |
| sample_grid | No | Grid size used by TD-side sample() fallback and normalized quality metrics. | |
| quality_mode | No | If True, include normalized visual-quality metrics in the TD response. | |
| reference_path | No | Reference TOP path for roi_diff mode |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that analysis runs server-side via numpy, returns statistical results per mode, and explains each mode's purpose. This adds valuable context beyond the annotations (readOnlyHint, etc.) and contains no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is around 150 words, well-structured with bullet points and a note on 'roi_diff'. It is front-loaded with the main purpose. Slightly verbose in listing modes, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, 5 modes, output schema exists), the description covers the main purpose, modes, special requirements, and hints at behavior. It does not detail return format (but output schema exists) and omits some parameter interactions, yet it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning by explaining the 'roi_diff' usage pattern and default values for 'modes', going beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes pixel data of a TOP node without transferring full image data, and lists supported modes. This is a specific verb+resource that distinguishes it from siblings, none of which perform frame analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use each mode and mentions that for 'roi_diff', additional parameters like 'roi' and 'reference_path' are required. However, it does not explicitly state when not to use this tool or compare it to alternatives, though no direct alternatives exist among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_audit_projectAudit TD ProjectARead-only
Read-only project audit. Pair with td_brain_plan for new build/debug requests that need plan-aware changes afterward.
| Name | Required | Description | Default |
|---|---|---|---|
| root_path | No | Root path to audit | /project1 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's 'Read-only' label is consistent but adds no new behavioral details. The description does not disclose any additional traits beyond what annotations provide, so it meets the minimum for transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero wasted words. The first states purpose, the second gives actionable usage guidance. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one optional parameter and existing output schema, the description covers the core purpose and usage context. It could be more complete by elaborating on what 'audit' entails, but the pairing advice provides sufficient contextual completeness for agent selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter 'root_path' described as 'Root path to audit'. The description does not add any extra meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read-only project audit', which is a specific verb-resource combination. It also distinguishes itself by recommending pairing with td_brain_plan for build/debug requests, differentiating it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Pair with td_brain_plan for new build/debug requests that need plan-aware changes afterward', giving clear context on when to use this tool in combination with another. It implies that for other purposes, different tools might be better, but does not provide explicit when-not scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_brain_executeExecute TD Brain PlanADestructive
DEFAULT apply path for a BrainPlan: use this when you already have a BrainPlan from td_brain_plan (or a draft from td_brain_propose) and need TDPilot to apply it transactionally with validation, rollback, and optional local learning. Prefer the lower-level td_transaction_apply only when you hold a ready PatchPlan/BrainPlan and want to drive raw transaction controls yourself (no grounding, no learning). Do not use the legacy td_plan_patch / td_patch_* pipeline for new builds.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | BrainPlan dict returned by td_brain_plan. Raw free text is not accepted here. Omit when passing plan_id instead. | |
| plan_id | No | ID of the most recent td_brain_plan result. Server-side lookup — avoids echoing the full multi-KB plan back through the host context window (and the silent-corruption risk of hosts that re-serialize large tool arguments). Provide exactly one of plan or plan_id. | |
| repair_budget | No | Optional bounded auto-repair attempts. Omitted preserves legacy zero-repair behavior. | |
| learn_on_success | No | Persist a compact validated task trace to td_knowledge_* memory. | |
| transaction_policy | No | 'rollback_on_failure' (default), 'dry_run', or 'no_rollback'. | rollback_on_failure |
| confirm_visual_payload | No | Reserved for future image payload confirmation; currently no large images returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose destructive and non-idempotent behavior. The description adds context about transactional apply, validation, rollback, optional learning, and bounded auto-repair via repair_budget. It does not contradict annotations and adds meaningful behavioral details beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence front-loads purpose and key behaviors; the second provides critical usage guidance against alternatives. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core use case, alternative tools, transactionality, validation, rollback, learning, repair budget, and plan_id optimization. Minor gap: does not clarify behavior when both plan and plan_id are omitted (though schema defaults handle it). Overall, it is very complete for a complex tool with 6 parameters and existing schema descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive param descriptions, providing a baseline of 3. The description adds value by explaining the rationale for plan_id (avoiding echoing large plans back) and implicitly covering repair_budget and learn_on_success through 'optional local learning' and 'bounded auto-repair attempts'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool as 'DEFAULT apply path for a BrainPlan' and describes it as applying transactionally with validation, rollback, and learning. It clearly distinguishes from sibling tools like td_transaction_apply and the legacy pipeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance: use when you have a BrainPlan from td_brain_plan or draft from td_brain_propose. Explicitly states when to prefer the alternative td_transaction_apply (for raw controls without grounding/learning) and warns not to use legacy td_plan_patch pipeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_brain_groundGround Host-Authored TD Brain DraftARead-only
Use this when the request is artistic, multi-domain, spatial, or implicit-architecture requests, and whenever td_brain_plan returns blocked: it returns a read-only grounding pack (task features, corpus evidence, candidate operators, parameter contracts, operator availability, live state, exemplars, and the draft authoring contract) so you can write a draft for td_brain_propose. Do not use it for trivial single-node edits.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Grounding mode: 'auto', 'fast', 'production', or 'show_safe'. | auto |
| intent | Yes | Natural-language visual programming task to ground. | |
| output_top | No | Optional final TOP path required by the intent. | |
| constraints | No | Hard task constraints preserved into the grounded task. | |
| target_root | No | Absolute TD parent/root path the draft will build inside. | /project1 |
| trace_level | No | Trace detail: 'none', 'summary', or 'debug'. | summary |
| include_memory | No | Include compact local technique, knowledge, and promoted-trace recall. | |
| preferred_domains | No | Preferred TD data domains: TOP, CHOP, SOP, POP, DAT, COMP, MAT. | |
| include_live_state | No | Include existing node names/types at target_root when TD is reachable. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description confirms it returns a read-only grounding pack. It lists the contents of the grounding pack, adding behavioral context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the purpose and usage conditions, and including a clear don't-use case. Every sentence adds value, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's role in a workflow (grounding before proposing) and when to use it. With schema covering all parameters and an output schema existing, the description provides sufficient conceptual completeness for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters have descriptions in the schema. The tool description does not add additional meaning or usage guidance for parameters beyond what is in the schema, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool grounds host-authored TD brain drafts for artistic, multi-domain, spatial, or implicit-architecture requests, especially when td_brain_plan returns blocked. It distinguishes this tool from siblings like td_brain_plan and td_brain_propose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool (for specific request types and when td_brain_plan returns blocked) and when not to use it (trivial single-node edits). Provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_brain_planPlan TD Brain TaskARead-only
Use this when a request is pattern-shaped with an exact validated topology or technique composition. It returns a non-mutating concept graph, typed patch plan, and server-derived intent coverage; execute only when coverage is complete. For artistic, multi-domain, spatial, camera/depth/fog, or implicit-architecture requests, start directly with td_brain_ground → td_brain_propose.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Planning mode: 'auto', 'fast', 'production', or 'show_safe'. | auto |
| intent | Yes | Natural-language visual programming task. | |
| inspect | No | Allow targeted read-only TD inspection while planning. | |
| output_top | No | Optional TOP path expected to show final visual output. | |
| constraints | No | Optional hard constraints, e.g. palette, FPS, node count, or operators. | |
| target_root | No | Absolute TD parent/root path to plan inside. | /project1 |
| trace_level | No | Trace detail: 'none', 'summary', or 'debug'. | summary |
| detail_level | No | Response detail: 'full' (compatibility default) or 'summary'. | full |
| include_docs | No | Use loaded DocsBrain/CardIndex operator knowledge while grounding the plan. | |
| include_memory | No | Search local technique memory while grounding the plan. | |
| preferred_domains | No | Preferred TD data domains: TOP, CHOP, SOP, POP, DAT, COMP, MAT. | |
| validation_profile | No | Validation profile. 'auto' resolves to structural_visual_safe. | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide non-mutating and non-destructive hints. The description adds behavioral context: returns a concept graph and typed patch plan, and instructs to execute only when coverage is complete, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are front-loaded with purpose and usage, then exclusion cases. Every sentence provides value; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool complexity (12 parameters, many siblings, output schema exists), the description adequately covers when to use, return value, execution condition, and exclusions. No critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage, so baseline is 3. The description does not add parameter-specific info, which is acceptable given the schema covers all 12 parameters fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a non-mutating concept graph, typed patch plan, and server-derived intent coverage for pattern-shaped requests with validated topology/technique, differentiating from siblings by specifying when to use alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool (pattern-shaped requests) and when not (artistic, multi-domain, etc.), directly recommending alternative tool sequence (td_brain_ground → td_brain_propose).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_brain_proposePropose Host-Authored TD Brain DraftARead-only
Use this when you have authored a draft candidate graph from a td_brain_ground grounding pack and need TDPilot to validate it into an executable BrainPlan. It is read-only and never mutates TouchDesigner: accepted drafts are compiled, gated by parameter semantics, and cached server-side so td_brain_execute(plan_id=...) can run them immediately; rejected drafts return machine-readable rejections to fix and retry.
| Name | Required | Description | Default |
|---|---|---|---|
| draft | Yes | Host-authored draft candidate graph matching the td_brain_ground authoring_contract draft_schema (label, concepts, edges, required_ops, ...). | |
| intent | No | Original natural-language intent behind the draft. Defaults to the draft label so the same intent used for td_brain_ground can be carried through. | |
| target_root | No | Absolute TD parent/root path the plan will build inside. | /project1 |
| detail_level | No | Response detail: 'full' (compatibility default) or 'summary'. | full |
| grounding_id | No | Optional grounding_id from td_brain_ground; binds review to the original task facets. | |
| validation_profile | No | Validation profile. 'auto' resolves to structural_visual_safe. | auto |
| draft_schema_version | No | Draft contract version: '2' (default) or legacy '1'. | 2 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses caching, acceptance/rejection behaviors, and server-side compilation beyond annotations; no contradictions with readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and usage, no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Describes pipeline and acceptance behavior; output schema covers return values. Could mention validation profile details but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3; description adds workflow context for draft and default intent, justifying one extra point.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool validates a draft candidate graph into an executable BrainPlan, distinguishing it from siblings like td_brain_ground and td_brain_execute by its specific pipeline role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use ('after grounding, before execute'), and notes it is read-only, guiding against mutation use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_capture_and_analyzeARead-onlyIdempotent
Capture a TOP frame together with cooking + error state, plus optional AI analysis.
Use this when you want one call that folds the screenshot together with cooking info and node errors (and, if sampling is supported, an AI read of the frame). Prefer td_screenshot for a bare inline frame; prefer td_capture_frame for a metadata-first capture without the extra cooking/error probes.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to TOP node to capture. | |
| analyze | No | Request AI analysis if sampling is supported. | |
| quality | No | JPEG quality 0.0-1.0. | |
| compare_with | No | Optional resource URI to compare against. | |
| analysis_prompt | No | Custom analysis prompt. | |
| confirm_image_capture | No | Must be true to execute the capture. This is an explicit acknowledgement that image payloads can consume tokens. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds context about capturing cooking state, errors, and optional AI analysis, which is valuable beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. Front-loaded with purpose, then usage guidance and alternatives. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich annotations, output schema, and full parameter documentation, the description covers the core behavior and differentiates from siblings. It could mention the confirm_image_capture parameter but schema handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented there. The description does not add additional parameter-level details beyond what the schema already provides, hence baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it captures a TOP frame with cooking/error state and optional AI analysis. It distinguishes from sibling tools td_screenshot and td_capture_frame, specifying when to prefer each alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this when you want one call that folds the screenshot together with cooking info and node errors' and provides alternatives for different use cases, though it does not explicitly state 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.
td_capture_frameARead-onlyIdempotent
Capture a single frame from a TOP node, metadata-first.
Returns resolution, format, and byte size; the base64 image comes back only when confirm=True or save_path is set (behind that gate, so token cost stays near-zero by default). If save_path is set the frame is written to disk TD-side and only metadata + the saved path come back — the cheap visual-verify loop. Ask the user before setting confirm=True because image payloads consume significant model context tokens. Prefer td_screenshot for a quick inline thumbnail; prefer td_capture_and_analyze when you also want cooking state and errors folded into the same call.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to a TOP node to capture | |
| confirm | No | If True, include base64 image in response | |
| quality | No | JPEG quality 0.0-1.0 | |
| save_path | No | Optional disk destination. When set, TouchDesigner writes the frame to this path and the tool returns metadata + the saved path with NO base64 payload (overrides confirm). Accepts an absolute path under your home directory or a bare filename (saved under ~/.tdpilot/captures/). Extension must be .png/.jpg/.jpeg. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes that base64 image is only returned conditionally (confirm=True or save_path), save_path overrides confirm, and token cost is near-zero by default. No contradiction with annotations (readOnlyHint, idempotentHint, etc.).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with front-loaded purpose. Every sentence adds essential information without redundancy. Two clear paragraphs covering behavior, token cost, and alternatives.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, output schema exists), the description covers the key behavioral aspects: token cost, conditional returns, disk writing, and usage preferences. Nothing missing for effective agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds substantial meaning beyond schema: explains conditional gating of base64 return, token cost implications, and save_path's role in overriding confirm and writing to disk. Schema coverage is 100%, but description provides critical behavioral context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a single frame from a TOP node with a metadata-first approach. It distinguishes itself from siblings by name-dropping td_screenshot and td_capture_and_analyze with specific use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use alternatives (td_screenshot for inline thumbnail, td_capture_and_analyze for cooking state/errors) and advises asking user before setting confirm=True due to token cost.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_chop_dataARead-onlyIdempotent
Read CHOP channel data (values/samples).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to a CHOP node | |
| range | No | Sample range [start, end] to read. If None, reads all samples. | |
| channels | No | List of channel names to read. If None, reads all channels. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating a safe read operation. The description ('Read') is consistent but adds no additional behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no wasted words. Perfectly concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has an output schema, so return values are documented elsewhere. Given the simplicity of the tool (read operation, 3 params fully described), the description provides sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for all three parameters (path, range, channels). The tool description does not add extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Read CHOP channel data (values/samples)', which is a specific verb and resource. It distinguishes from sibling tools like td_geometry_data and others that deal with different data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, no mention of prerequisites or exclusions. Among many sibling tools, the description does not differentiate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_clear_param_boundsBDestructive
Clear parameter bounds for specific paths, or all bounds if paths is None.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | Clear bounds for specific node paths (None = clear all). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive. The description adds no further behavioral context, such as what 'clearing' means (e.g., reset to defaults, remove all constraints) or necessary permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, clear sentence with no wasted words. It is appropriately front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, clear purpose) and presence of an output schema, the description is adequate but lacks mention of related operations like td_set_param_bounds or concrete results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description already explains the meaning of paths: 'Clear bounds for specific node paths (None = clear all).' The tool description merely echoes this, adding no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Clear' and the resource 'parameter bounds', and distinguishes between specific paths and all bounds. This differentiates from the sibling td_set_param_bounds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 td_set_param_bounds, or when not to use it. The description lacks context for the agent to decide between clearing and setting bounds.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_cockpit_renderRender TD Brain CockpitARead-onlyIdempotent
Use this when you already have BrainPlan or transaction data and want to render the optional local cockpit UI. This is read-only presentation; call td_brain_plan or td_brain_execute first for authoritative data.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | BrainPlan dict or td_brain_plan result to summarize. | |
| title | No | Human-readable cockpit title. | TDPilot Brain Cockpit |
| trace | No | Optional BrainTrace or trace summary. | |
| transaction_result | No | TransactionResult dict or td_brain_execute result to summarize. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds that it is optional and local, and instructs to call other tools first, providing useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose, usage conditions, and relationship to other tools without superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema (exists but not shown), full parameter coverage in schema, and annotations, the description provides enough context for the agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description. The tool description does not add additional meaning beyond what is already in the parameter descriptions, meeting baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renders the local cockpit UI using BrainPlan or transaction data, distinguishing it from siblings like td_brain_plan and td_brain_execute by emphasizing read-only presentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies when to use (when you have BrainPlan or transaction data and want to render the cockpit UI) and provides context for alternatives (call td_brain_plan or td_brain_execute first for authoritative data).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_color_pipelineARead-onlyIdempotent
Inspect the color management pipeline in TouchDesigner: color space, gamma, display settings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds behavioral context by specifying what is inspected (color space, gamma, display settings), which complements the safety profile provided by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the tool's purpose. It is front-loaded with the verb and resource, and every word is meaningful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and has an output schema, so the description need not explain return values. It fully covers the tool's function and is complete for an inspection tool with robust annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so no parameter documentation is needed. The description does not need to add parameter semantics, and the baseline score for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Inspect' and clearly identifies the resource as 'the color management pipeline in TouchDesigner' with explicit aspects: 'color space, gamma, display settings'. This clearly distinguishes it from sibling tools like td_describe_surface which deals with surface properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for inspecting color pipeline settings, but does not provide explicit guidance on when to use this tool versus alternatives such as td_describe_surface or other inspection tools. No exclusion criteria or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_component_notesAIdempotent
Per-COMP markdown notes — what this subnet does, why it's wired this way,
gotchas, TODOs. External JSON storage by default; embed=True also
writes a hidden Text DAT inside the COMP for portability.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Note body (markdown). Required for set/append. | |
| path | No | COMP path (required for get/set/append/delete; optional for summarize as a subtree filter; omit for index/summarize-all). | |
| tags | No | Optional tags for indexing/search (set/append actions). | |
| embed | No | If True (set action only), also write a hidden Text DAT named `tdpilot_notes` inside the target COMP. Lets the note travel with the .tox/.toe but bloats save files; default is external-only. | |
| action | Yes | One of: 'get' (fetch a single note), 'set' (write/overwrite), 'append' (append with timestamp divider), 'delete', 'index' (list every note for the project), 'summarize' (markdown digest). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses storage behavior (external JSON by default, optional embed which writes a hidden Text DAT and notes the trade-off of bloated save files). Annotations already indicate idempotency and non-destructive nature; description adds concrete details on 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no fluff. Every sentence adds value: first sentence defines purpose and content, second explains storage options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema coverage, presence of output schema, and description covering actions and storage trade-offs, the tool definition is complete for an agent to use correctly. No obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 embed parameter's effect (writes hidden Text DAT for portability) and default external storage, but does not elaborate on other parameters beyond what schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it's for per-COMP markdown notes (what the subnet does, gotchas, TODOs). It differentiates from siblings by focusing on note-taking, unlike other tools for memory, patching, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool vs alternatives. However, no sibling tool serves a similar function, so usage is implied but no exclusions or comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_component_standardizeAIdempotent
Audit or fix COMP standardization: required custom parameters (Version, Help, Creator), extension, naming.
| Name | Required | Description | Default |
|---|---|---|---|
| fix | No | If True, auto-fix issues (wrapped in undo block) | |
| path | Yes | Path to COMP to audit |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide non-destructive, idempotent, not read-only cues. Description adds behavioral context: fix parameter is 'wrapped in undo block', indicating reversibility. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose, no filler. Every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Low complexity tool with output schema and well-documented parameters. Description covers core purpose and fix behavior. Could mention output structure, but output schema renders that unnecessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with basic descriptions. The description adds meaning by specifying what 'standardization' includes (Version, Help, Creator, extension, naming), which clarifies the audit scope beyond schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Audit or fix COMP standardization'. Lists exact aspects (custom parameters, extension, naming). Distinguishes from siblings like td_component_notes which deals with notes, not standardization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. Implies usage for standardization issues but does not mention alternatives or exclusions. Adequate but not instructional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_connect_nodesBDestructiveIdempotent
Connect two nodes (source output → target input).
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | Yes | Path of the source (output) node | |
| target_path | Yes | Path of the target (input) node | |
| source_index | No | Output connector index on the source node (0 = first output) | |
| target_index | No | Input connector index on the target node (0 = first input) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true but description does not explain that connecting may overwrite existing connections. Description adds no behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given presence of output schema and annotations, description is too terse. Does not explain potential overwriting, failure conditions, or usage context. For a connection tool, should mention side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds minimal value beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'connect' and resource 'two nodes', with direction 'source output → target input'. Clearly distinguishes from siblings like td_disconnect, td_create_node, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use or when not to use this tool vs alternatives. Does not mention prerequisites (e.g., nodes must exist) or contrasts with td_disconnect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_cooking_infoBRead-onlyIdempotent
Get cooking/performance info for a subtree.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Root path to inspect | / |
| limit | No | Max nodes to return | |
| recurse | No | Recursively inspect children | |
| sort_by | No | Sort by: 'cookTime' or 'cpuCookTime' | cookTime |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds 'cooking/performance info' which provides some context but doesn't disclose additional behaviors beyond what annotations imply. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single concise sentence with no wasted words. However, it uses the domain-specific term 'cooking' without explanation, which might be unclear to new users.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters and an output schema, the description is too brief. It doesn't explain what 'cooking' means in the context of TouchDesigner or how the returned info is structured. Given the domain complexity, this lacks sufficient context for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents all 4 parameters with descriptions. The description itself adds no extra meaning about parameters (e.g., what 'cookTime' vs 'cpuCookTime' means). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Get' and resource 'cooking/performance info for a subtree'. It distinguishes from sibling info tools by focusing on cooking/performance, but could be more specific about what 'cooking' encompasses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 td_get_info or td_get_node_detail. No context on prerequisites or exclusions, which is a significant gap given the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_copy_nodeBDestructive
Copy/duplicate an existing node (with its parameters) to a new node.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | No | Name for the copy | |
| dest_parent | No | Path of the destination parent COMP. If None, copies into the same parent. | |
| source_path | Yes | Path of the node to copy |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description's mention of 'copy' is consistent but adds little beyond that. It fails to disclose side effects like whether children are copied, potential name conflicts, or permission requirements, providing only basic information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly conveys the tool's purpose without any unnecessary words or repetition. It is perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and well-described parameters, the description is minimally adequate. However, it lacks details on edge cases (e.g., handling of nonexistent source paths, naming conflicts) and potential cascading effects, which would be useful for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter already has clear descriptions in the schema. The tool description does not add any additional parameter context, meeting the baseline expectation without exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Copy/duplicate an existing node' with a specific verb and resource. While it effectively communicates the action, it does not explicitly differentiate from sibling tools like td_create_node or td_rename_node, though the purpose is distinct enough given the context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or conditions. The agent is left to infer usage solely from the tool name and parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_create_macroC
Instantiate a legacy scaffold; feedback/audio macros are not complete visuals.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional name prefix for all nodes created by this macro. | |
| nodeX | No | Macro origin X position in the network editor. | |
| nodeY | No | Macro origin Y position in the network editor. | |
| params | No | Override template parameter defaults with custom values. | |
| macro_type | Yes | Macro template to create. | |
| parent_path | No | Parent COMP path where the macro will be instantiated. | /project1 |
| param_semantics_policy | No | Docs-grounded parameter safety policy for macro parameter writes. 'warn' preserves macro creation with attached warnings; 'block' refuses invalid or high-risk macro param writes before setting them. | warn |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and openWorldHint=true, but the description adds that feedback/audio macros are 'not complete visuals', which is a behavioral trait. However, it does not detail creation behavior, permissions, or side effects beyond this vague warning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence) but at the expense of clarity. It is front-loaded but contains jargon and lacks structuring, making it barely adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, 1 required, and an output schema, the description is too brief. It does not explain macro types, param override behavior, or the param_semantics_policy. Significant gaps remain for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Instantiate a legacy scaffold' which implies creating a macro, but 'legacy scaffold' is jargon and not universally understood. It also mentions feedback/audio macros are not complete visuals, adding some context about specific types but not clearly stating the primary purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like td_create_node or td_patch_apply. The description does not state prerequisites, context, or when not to use it, making it hard for an agent to select appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_create_nodeADestructive
Create a new TouchDesigner operator of a given type under a parent path.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Custom name for the new node. If None, TD assigns a default name. | |
| nodeX | No | Horizontal position in the network editor (pixels). Use multiples of 200 for clean spacing between nodes. | |
| nodeY | No | Vertical position in the network editor (pixels). Use multiples of 200 for clean spacing between rows. | |
| node_type | Yes | TouchDesigner operator type to create. Examples: TOPs: 'noiseTOP', 'levelTOP', 'nullTOP', 'compositeTOP', 'feedbackTOP', 'moviefileinTOP' | CHOPs: 'waveCHOP', 'noiseCHOP', 'nullCHOP', 'mathCHOP', 'constantCHOP', 'selectCHOP' | SOPs: 'sphereSOP', 'boxSOP', 'gridSOP', 'lineSOP', 'nullSOP', 'transformSOP', 'noiseSOP' | DATs: 'textDAT', 'tableDAT', 'scriptDAT', 'nullDAT', 'selectDAT', 'chopexecDAT' | COMPs: 'baseCOMP', 'containerCOMP', 'geometryCOMP', 'cameraCOMP', 'lightCOMP' | MATs: 'pbrMAT', 'phongMAT', 'wireframeMAT', 'constMAT' | |
| parent_path | No | Path to the parent COMP where the node will be created | /project1 |
| include_hints | No | If True, attach a ``hints`` block sourced from td_get_hints for the chosen op_type. Auto-injection still fires for high-risk op_types (feedbackTOP, glslTOP, geometryCOMP, …) regardless of this flag. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description only adds the creation action, without explaining side effects (e.g., behavior if node exists, error handling). Adequate but no extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, efficient. Contains all essential elements (verb, resource, scope).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having output schema and annotations, the description lacks context on return value, error handling, or behavior for edge cases like invalid parent path. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds no additional meaning beyond the schema. Baseline 3 is appropriate since schema already explains parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (create), resource (TouchDesigner operator), and scope (under a parent path). It distinguishes from sibling tools like td_delete_node, td_copy_node, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use vs alternatives. The description does not mention prerequisites, when not to use, or compare with similar tools like td_copy_node.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_custom_parametersADestructive
Create or update a custom parameter page on a COMP.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | Custom page name | |
| path | Yes | Path to a COMP with custom parameters | |
| params | Yes | One or more parameter specifications to create on the page. Each spec has kind (float/int/toggle/menu/str/rgb/rgba/pulse/file/filesave/folder/chop/comp/dat/mat/header), name, and optional label/size/default/min/max. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutability (readOnlyHint=false) and destructiveness (destructiveHint=true). The description adds context about targeting a COMP and the create/update operation, which is consistent. No annotation contradiction, but the description could elaborate on 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence of 10 words with no superfluous information. Extremely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately conveys the function given the presence of an output schema and detailed annotations. It covers create/update behavior. Missing details about return values are compensated by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed property descriptions. The tool description does not add meaning beyond the schema; it only mentions custom parameter page. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the action (create or update), the resource (custom parameter page), and the target (COMP). This is a specific verb-resource combination that clearly distinguishes it from sibling tools like td_set_params or td_create_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (e.g., td_set_params, td_create_node). It does not mention prerequisites, limitations, 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.
td_delete_nodeBDestructive
Delete a node by its absolute path.
v1.4.6 Bug A PoC: explicit-args signature instead of the old
params: DeleteNodeInput wrapper. FastMCP wraps params: Model
signatures under a params: {"$ref": ...} property that MCP clients
collapse to an opaque {}. Explicit args produce a flat schema the
client can render directly — callers see path as a required
string with description and min_length instead of having to guess.
The Annotated[str, Field(...)] pattern carries the same validation
the old Pydantic model had.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path of the node to delete (e.g. '/project1/noise1') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and readOnlyHint=false. The description adds only the basic operation, no detail on cascading effects, reversibility, or permissions. The lengthy implementation trivia detracts from behavioral clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is bloated with irrelevant implementation history (v1.4.6 Bug A PoC, FastMCP wrapping) that wastes tokens and confuses. A single sentence would suffice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool, the description provides minimal context beyond the schema. Output schema exists but no explanation of return values or side effects. Misses opportunity to note what happens to children or if deletion is permanent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description. The tool description adds no further insight beyond what's in the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence clearly states the tool deletes a node by absolute path. The name reinforces this. Despite implementation noise, the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs. alternatives like td_copy_node or td_rename_node. No context on prerequisites, restrictions, or when deletion should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_describe_dynamicsCRead-onlyIdempotent
Asynchronous temporal dynamics observation (frame, cooking, events).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Root path to observe. | /project1 |
| sample_rate | No | Samples per second while observing. | |
| observation_window | No | Observation duration in seconds. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds 'Asynchronous', which is a relevant behavioral trait not covered. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no waste. Front-loaded well. However, it could include a bit more context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values are covered. However, the description is too sparse to fully explain the tool's purpose in the TouchDesigner environment. Missing context on what 'frame, cooking, events' means and how the parameters affect observation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds no extra parameter meaning beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Asynchronous temporal dynamics observation (frame, cooking, events)' hints at observing temporal behavior in TouchDesigner but lacks specificity. It doesn't clearly state what the tool returns or how it differs from similar tools like td_cooking_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With many sibling tools for monitoring and analysis, the agent has no basis to choose this over td_cooking_info or td_analyze_frame.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_describe_surfaceARead-onlyIdempotent
Describe the MCP server surface: tool count, resource count, capabilities, version.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering the behavioral traits. The description adds the specific elements returned (tool count, etc.), but does not contradict annotations. Additional detail about potential side effects or auth needs is absent, but annotations suffice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the main verb and resource, then lists specifics. No wasted words; every part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and the presence of an output schema, the description adequately explains what the tool returns. It covers the key aspects of the surface without needing additional detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and schema coverage is 100%. The description does not need to add parameter meaning. The score is high because no parameter information is necessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: describing the MCP server surface, listing specific elements like tool count, resource count, capabilities, and version. It uses a specific verb and resource, and distinguishes itself from sibling tools which are more specific operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It implies a general overview use case but does not provide context or exclusions. Given the large sibling list, some guidance would be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_detect_instabilityBRead-onlyIdempotent
Detect instability signals: FPS, heavy cookers, critical errors.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Root path to inspect. | /project1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, adequately conveying the non-mutating nature. The description adds that it detects specific signals (FPS, heavy cookers, critical errors) but provides no further behavioral context such as output format or side effects beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it is overly terse, lacking structure or front-loading of critical information beyond the basic purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to explain what the detection entails, how the path parameter affects the scan, or how it differs from sibling tools like td_cooking_info and td_get_errors. The description is incomplete for a tool that detects multiple signals.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the only parameter ('path') already has a description ('Root path to inspect'). The tool description does not add any additional meaning or usage context for this parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'detect' and lists the resources (instability signals: FPS, heavy cookers, critical errors). However, it lacks clarity on what exactly constitutes 'heavy cookers' and does not distinguish itself from sibling tools like td_cooking_info or td_get_errors, which may overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 td_cooking_info or td_get_errors. There is no mention of prerequisites, context, 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.
td_diff_snapshotsARead-onlyIdempotent
Diff two snapshots, or a snapshot against live state.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshot_a | Yes | Baseline snapshot id. | |
| snapshot_b | No | If omitted, diff snapshot_a vs live state. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, destructiveHint) already declare the tool non-destructive and idempotent. The description adds the context of comparing live state, but does not elaborate on side effects or permissions. With rich annotations, the description provides moderate additional value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. Every word serves a purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, one optional) and presence of an output schema, the description adequately covers the primary use cases. It could mention output format, but the output schema likely handles that. Annotations provide safety context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and both parameters have clear descriptions. The top-level description restates the behavior already in snapshot_b's description. No additional meaning beyond the schema is provided, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool diffs two snapshots or a snapshot against live state. It uses a specific verb (diff) and resource (snapshots), and effectively distinguishes from sibling tools like td_snapshot_scene (create) and td_restore_snapshot (restore).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for comparing snapshots, but does not explicitly state when not to use or mention alternatives. It is clear enough for an agent to decide, but lacks exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_disconnectBDestructive
Disconnect a node's input or output connector.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path of the node to disconnect | |
| index | No | Connector index to disconnect | |
| connector_type | No | Which connector side to disconnect: 'input' or 'output' | input |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description simply restates the action without disclosing behavioral details beyond what annotations already provide. Annotations indicate destructiveHint=true, and the description adds no context about side effects, reversibility, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that front-loads the action. Every word is essential with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description lacks context for a destructive tool. It does not clarify edge cases (e.g., invalid index, missing node), prerequisites, or what happens to connections after disconnection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 no additional meaning to parameters beyond their schema definitions. The schema already explains path, index, and connector_type adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: disconnecting a node's input or output connector. It uses a specific verb (disconnect) and resource (node's connector), which distinguishes it from sibling tools like td_connect_nodes or td_delete_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 vs alternatives, such as when to disconnect vs delete a node or connection. The description does not mention prerequisites 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.
td_emergency_stabilizeADestructive
Emergency stabilization: pause timeline, clamp safety, capture baseline snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Root path to stabilize. | /project1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=false. The description adds context (pause timeline, clamp safety, capture snapshot) but does not fully explain side effects like reversibility or what 'clamp safety' entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence covering the core actions without unnecessary words. Every part contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, an output schema, and the description covers the main actions, it is mostly complete. However, for an emergency tool, more context about prerequisites or detailed side effects would improve completeness, though not required due to output schema presence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the parameter 'path' already describing 'Root path to stabilize.' The tool description does not add any extra semantic meaning beyond the schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Emergency stabilization: pause timeline, clamp safety, capture baseline snapshot.' It uses specific verbs and resources, distinguishing it from sibling tools like td_snapshot_scene or td_restore_snapshot by emphasizing the emergency nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage in emergency situations (e.g., instability detection) but does not explicitly state when to use or not use this tool over alternatives. No exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_exec_pythonADestructive
Execute Python code inside TouchDesigner.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Python code to execute in TouchDesigner's Python environment. Has access to: op(), ops(), project, app, absTime, me, parent(), mod, ui, tdu. Set __result__ = <value> to return a value to the caller. Example: '__result__ = op("/project1/noise1").par.type.eval()' | |
| timeout_ms | No | Optional per-call execution timeout in milliseconds. When omitted, TouchDesigner uses its configured default. Bounds: 100-60000 ms. | |
| include_hints | No | If True, attach a ``hints`` block via td_get_hints. Auto-injection still fires when the code touches restricted patterns (.text=, .par.file=, imports, OS escapes). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and openWorldHint=true. Description adds context about available globals and return mechanism, but does not significantly expand beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Main description is a single concise sentence. Schema descriptions are detailed but appropriately sized. Could benefit from slightly more context in the main description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given complexity of executing arbitrary code, description and schema together cover key aspects. Lacks explicit mention of error handling or side effects, but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. Description adds substantial meaning: lists available globals, gives example for code parameter; explains timeout bounds and include_hints behavior. Excellent parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Execute Python code inside TouchDesigner', specifying verb and resource. However, it does not differentiate from siblings like td_python_help or td_python_classes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The schema descriptions provide hints but no when-to-use/when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_explain_better_wayBRead-onlyIdempotent
Suggest better official alternatives for a given intent, with gotcha warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | What you intend to do | |
| current_plan | No | Current approach to evaluate |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly, idempotent, non-destructive. Description adds 'gotcha warnings' as behavioral context, but no details on output format 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with clear verb-object structure. No wasted words, but could be more structured with separate clause for warnings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with good annotations and output schema. Could specify that alternatives are official or mention output type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters have descriptions in schema (100% coverage). Description adds little beyond restating 'for a given intent' and 'current approach', not enhancing meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'suggest' and object 'better official alternatives' with 'gotcha warnings', but doesn't fully differentiate from similar tools like td_recommend_official_component or td_find_official_example.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 siblings. Lacks explicit context for selection, leaving ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_find_official_exampleBRead-onlyIdempotent
Search for official examples and snippets matching a query.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for official examples | |
| family | No | Filter by operator family: TOP, CHOP, SOP, etc. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint, so the description adds no new behavioral context beyond 'Search for official examples and snippets'. No contradiction, but no extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, concise, front-loaded, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Basic purpose is clear, but lacks context on what 'official examples' are, return format, or differentiation from siblings like td_lookup_snippets. Adequate but could be more complete given the tool's domain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 tool description adds no additional meaning beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool searches for official examples and snippets matching a query, but does not distinguish from sibling tools like td_lookup_snippets or td_search_official_docs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. No exclusions or context about 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.
td_geometry_dataARead-onlyIdempotent
Read SOP/POP geometry data (points/prims).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to a SOP or POP node | |
| limit | No | Max points/prims to return | |
| include_prims | No | Include primitive data | |
| include_points | No | Include point position data |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description merely restates 'Read' which is consistent. It adds limited context beyond annotations, specifying data type (points/prims) but not behavioral traits like pagination 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, focused sentence with no redundancy. Essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return value explanation is not needed. The tool has 4 well-documented parameters. However, the description omits mention of the limit parameter or default behavior, which could help context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The tool description adds no additional meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads geometry data (points/prims) from SOP/POP nodes. It uses a specific verb+resource combination that distinguishes it from sibling tools like td_get_node_detail or td_chop_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing geometry data but offers no explicit when-to-use or when-not-to-use guidance compared to alternatives. No exclusions or context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_activity_logARead-onlyIdempotent
Recent tool-call activity from this MCP server's ring buffer.
Returns a JSON array of entries newest-first, each with ts, tool,
args_summary, result_summary, duration_ms, ok. The buffer
holds the most recent 200 calls; older entries are evicted.
Pairs with the in-TD activity_log Table DAT mirror so the same data
is also wireable into a live visual patch.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many recent entries to return (1–200, newest first). | |
| tool_filter | No | If set, only return entries for this exact tool name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive, read-only, idempotent behavior. The description adds significant behavioral detail: ring buffer size (200), eviction policy, newest-first ordering, and the specific fields returned. It also notes the pairing with an in-TD Table DAT for visual patching, which is beyond annotation scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main purpose, then providing format and constraints. Every sentence adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (not shown), the description does not need to detail return values. It covers purpose, constraints, behavioral details, and integration context (Table DAT). For a simple read tool with well-covered annotations and schema, this is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 does not add meaning beyond what the schema provides for 'limit' and 'tool_filter'. The ring buffer context is useful but parameter-specific details are already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves recent tool-call activity from a ring buffer, specifying the output format and constraints (200 entries, newest-first). This purpose is unique among siblings (no other logging tool visible), so it strongly differentiates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context (ring buffer, eviction, pairing with a Table DAT) but does not explicitly state when to use this versus other tools or when to avoid it. No alternative tool names are mentioned. While usage is implied, explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_build_compatibilityBRead-onlyIdempotent
Check if an operator type is compatible with a specific build.
| Name | Required | Description | Default |
|---|---|---|---|
| build | No | ||
| op_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description adds no additional behavioral context. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, which is efficient for a simple tool. However, it could be slightly more structured to include parameter hints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return values, but it leaves ambiguity about the exact compatibility check and any edge cases (e.g., null build). Adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description fails to explain the parameters (build and op_type) beyond their names. The meaning of the optional build parameter and the nature of the result are not addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: checking compatibility between an operator type and a build. It distinguishes itself from sibling tools like td_get_popx_operator by focusing on compatibility rather than retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as td_get_popx_operator or td_lookup_snippets. There is no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_capabilitiesARead-onlyIdempotent
Detect MCP client capabilities plus server/component versions and runtime config. Returns a JSON envelope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide read-only, idempotent, and non-destructive hints. The description adds no behavioral context beyond stating it detects capabilities and returns a JSON envelope. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states functionality, second mentions output format. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an existing output schema, the description sufficiently covers purpose and output. No additional details are necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the schema coverage is 100%. The description adds value by stating the return format ('JSON envelope'), which is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool detects MCP client capabilities, server/component versions, and runtime config. The verb 'Detect' combined with specific resources differentiates it from sibling tools like td_get_server_metrics or td_get_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. The purpose is implied as a diagnostic capability check, but there is no differentiation from other informational tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_connectionsBRead-onlyIdempotent
Get upstream/downstream connections for a node.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the node (e.g. '/project1/noise1', '/project1/geo1/sphere1') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds no additional behavioral context beyond the annotations, such as whether connections are directional or what 'upstream/downstream' means exactly. With rich annotations, the bar is lower, but the description still misses the opportunity to add nuance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence that conveys the core functionality without any fluff. It is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with an output schema, the description is sufficient. It covers the essential meaning. However, it could be slightly improved by indicating the output format (e.g., a list of connections) but since the output schema is present, this is not a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the path parameter has a description with an example). The description does not add extra information beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets upstream/downstream connections for a node, using a specific verb and resource. However, it does not explicitly differentiate from sibling tools like td_search_nodes or td_get_nodes, which could also involve connectivity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 compared to alternatives like td_get_nodes or td_connect_nodes. The description lacks context on prerequisites or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_contentARead-onlyIdempotent
Read the text or table content of a DAT node.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to a DAT node |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds no extra behavioral context (e.g., behavior for non-DAT nodes, error conditions), but neither does it contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the tool's function without any unnecessary words or fluff. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, output schema present), the description is mostly sufficient. However, it does not explain what a DAT node is, which may be assumed from context but could be slightly more helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description only restates 'DAT node'. The parameter description in the schema already explains 'Path to a DAT node', so the description adds no additional semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'text or table content of a DAT node'. It is specific and distinguishes from siblings like td_set_content (write) and td_get_nodes (node listing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While the purpose is clear, the description does not mention conditions, prerequisites, or when not to use it, which is a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_errorsARead-onlyIdempotent
Get errors + warnings for a node (optionally recursive).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Node path to check | / |
| recurse | No | Recursively check children | |
| max_depth | No | Max recursion depth (prevents runaway on huge projects) | |
| include_hints | No | If True, attach a ``hints`` block via td_get_hints. Auto-injection still fires when the response contains known error patterns (eg. 'Not enough sources', 'extension', 'missing input'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, making behavioral traits clear. The description adds minimal additional context beyond the optional recursion, which is already in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that front-loads the core purpose. No wasted words, perfectly sized for a straightforward tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and complete parameter descriptions, the description is adequate but lacks details on error/warning format or how recursion affects the response structure. Could be slightly more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 tool description does not add any further meaning to parameters; the schema already provides adequate descriptions for all four parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves errors and warnings for a node, with an optional recursive flag. This verb+resource combination is specific and distinguishes it from siblings like td_get_hints or td_get_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 td_get_hints or td_get_info. No mention of best practices for recursion 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.
td_get_eventsARead-onlyIdempotent
Read recent runtime event history from the server-side event buffer.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of events to return. | |
| event_type | No | Optional event type filter. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description's job is lighter. The description adds useful context about the data source being a 'recent' buffer, implying volatility. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's action and data source. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to explain return values. The description covers the purpose and source adequately for a read tool. However, it could mention that events are returned as a list or array.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (limit and event_type) are fully described in the schema with type, default, range, and description. The description does not add additional semantics beyond what the schema provides, yielding baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads recent runtime event history from the server-side event buffer. The verb 'Read' and resource 'event history' are specific and distinguish it from sibling tools like td_get_activity_log.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as td_get_activity_log or other history-related tools. While the purpose is clear, the lack of usage context prevents an optimal choice by the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_focusARead-onlyIdempotent
Return where the user currently is in TouchDesigner: active network pane, selection, project metadata, timeline state. Reduces the cold-start tax of needing to ask the user 'what path are you working in?' before every patch.
| Name | Required | Description | Default |
|---|---|---|---|
| include_pane_history | No | Reserved for future use; pane-history capture is not yet wired. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent. Description adds valuable behavioral context about what state is returned (pane, selection, metadata, timeline), exceeding annotation-only baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines output, second explains value. Front-loaded, zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description adequately covers what the tool returns and its purpose. No gaps for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and schema describes the single parameter's reserved status. Tool description adds no new parameter information, settling at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns the user's current focus in TouchDesigner: active network pane, selection, project metadata, timeline state. Could better distinguish from sibling tools but purpose is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage context: reduces cold-start tax before patching. No explicit when-not or alternatives mentioned, so guidance is moderate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_hintsARead-onlyIdempotent
Return concise, source-cited hints for a topic, op_type, or intent.
Sources include hint packs shipped under src/td_mcp/hints/packs/
(skill pitfalls, canonical recipes), with future expansion to live
knowledge-store essays. Every hint cites its source.
The response shape:
{
"topic": ...,
"op_type": ...,
"confidence": 0.87,
"hints": [
{"id": ..., "priority": "critical|useful|context", "rule": ...,
"source": "tdpilot-core §11", "source_kind": "skill_pitfall"},
...
],
"next_tools": ["td_get_param_help", "td_screenshot"],
"hint_pack_version": "v1.6.0-1",
"available_topics": [...],
"available_op_types": [...]
}
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic name. Allowed values evolve with the shipped hint corpus; current topics are returned in every response under ``available_topics``. Examples: 'feedback', 'glsl', 'render_pipeline', 'audio_reactive', 'extensions'. | |
| intent | No | Free-text description of what you're about to do. Used to score ``intent_match`` clauses on individual hints (e.g. intent='set up trail decay' bumps the level.opacity hint). | |
| op_type | No | OP type to get type-specific hints (e.g., 'glslTOP', 'feedbackTOP', 'geometryCOMP'). Combines additively with ``topic`` when both are set. | |
| surface | No | Optional response-surface filter (v1.6.2). Allowed values: 'create_node', 'set_params', 'exec', 'errors', 'plan', 'preview', 'query', 'inspect', 'screenshot'. Surface-restricted hints (those declaring ``when.surface``) only fire when the requested surface matches; hints without a surface clause fire from any surface. Auto-injection from each tool wrapper passes the tool's natural surface automatically; explicit callers pass it here to narrow results. | |
| max_hints | No | Cap on returned hints. Critical-priority hints win ties. | |
| node_path | No | Optional: path of node about to be modified. Reserved for future hints that compute against live node state. | |
| error_text | No | Optional: error/warning text to match against ``error_match`` clauses. Mirrors what auto-injection does after a failed td_get_errors call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the tool as readOnly, idempotent, and non-destructive. The description adds substantial context: sources (hint packs, future knowledge-store essays), response shape including confidence, priority, source citations, and auto-injection behavior. This exceeds what annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and structured with a response shape example. It is moderately concise but contains some redundancy with schema descriptions (e.g., parameter details). Still efficient for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, high schema coverage, and an output schema, the description is thorough. It covers response format, sources, filtering (surface), future expansion, and auto-injection. No obvious gaps remain for an agent to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 7 parameters have descriptions). The description itself adds minimal parameter-level meaning beyond the schema, such as examples for topic and intent. Baseline 3 is appropriate as the schema already explains parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource: 'Return concise, source-cited hints for a topic, op_type, or intent.' This precisely states what the tool does and distinguishes it from sibling tools like td_lookup_snippets or td_search_popx_docs, which serve different retrieval needs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description provides examples of use (topic, intent, op_type), it does not explicitly state when to use this tool versus alternatives or when not to use it. For a tool with many siblings, more guidance on selection would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_infoARead-onlyIdempotent
Get TouchDesigner project info: version, build, project name, OS. Returns a JSON envelope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by detailing the exact info returned (version, build, project name, OS) and the JSON envelope format. Annotations already declare read-only, idempotent, non-destructive, and open-world; no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence starting with verb and resource, no redundancy. Every word is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and an output schema, the description fully covers what the tool does and returns. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline of 4 applies. Description does not need to add parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get' and resource 'TouchDesigner project info' with specific data items (version, build, project name, OS). No sibling tool has the same purpose, providing good differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly guides use for retrieving project info anytime needed. No explicit when-not-to-use or alternative tools, but context is clear given unique functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_macro_paramsCRead-onlyIdempotent
Inspect parameters plus truthful capability, I/O, limitations, and completion status.
| Name | Required | Description | Default |
|---|---|---|---|
| macro_type | Yes | Macro template to inspect. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds minor context about returning 'truthful capability, I/O, limitations, and completion status,' but these terms are not elaborated and may be confusing. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 10 words, but the phrasing 'truthful capability' is unusual and reduces clarity. It is not as effective as it could be for its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema (one parameter, output schema exists) and annotations, the description is minimally adequate. However, it lacks detail about what each component (I/O, limitations, etc.) entails, which an agent might need for correct interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single required parameter (macro_type) is well documented in the schema. The description does not add any additional meaning or usage details for this parameter, thus meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Inspect' and mentions macro parameters plus additional aspects, but it is vague about what exactly is returned. The phrase 'truthful capability' is ambiguous and does not clearly differentiate from similar sibling tools like td_lookup_snippets or td_get_popx_operator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it specify prerequisites or exclusions. The agent receives no context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_node_detailARead-onlyIdempotent
Get detailed info about a node (type, errors, warnings, parameters).
The parameters dict is capped at param_limit entries (default 50, hard ceiling 200) — full COMP serialization can blow past 80 KB. Use td_get_params with name/page filters when you need the rest.
When include_notes=True, any markdown note saved via
td_component_notes for this path is attached as a note field.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the node (e.g. '/project1/noise1', '/project1/geo1/sphere1') | |
| param_limit | No | Max parameters to serialize. Default 50; hard cap 200. If the node has more, the response sets parameters_truncated=true and parameters_total to the real count. Use td_get_params for the rest. | |
| include_hints | No | If True, attach a ``hints`` block via td_get_hints scoped to the inspected node's op_type and the 'inspect' response surface. Auto-injection still fires when surface-restricted hints exist for this op_type. | |
| include_notes | No | If True, look up any per-COMP note saved via td_component_notes for this path and surface it as ``note`` in the response. Default False to keep response sizes stable. | |
| response_format | No | Output format | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, the description adds behavioral details: the parameter cap (default 50, hard ceiling 200), potential size blowup ('80 KB'), and the note attachment behavior when include_notes=True. These add value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three well-structured sentences. It opens with the core purpose, then details limitations and alternatives, and ends with optional behavior. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, output schema exists), the description covers all key behavioral traits: parameter cap, note retrieval, hints toggle, and alternative when more params are needed. It is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all parameters with descriptions (100% coverage). The description adds context: the param_limit cap explanation including the 80 KB warning, and that include_notes fetches notes via td_component_notes. This enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: 'Get detailed info about a node (type, errors, warnings, parameters).' It distinguishes this tool from the sibling td_get_params by explaining when to use the sibling for full parameter retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides guidance: 'Use td_get_params with name/page filters when you need the rest.' Also mentions that param_limit caps the parameter dict, implying when to use the alternative for more than 200 parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_nodesBRead-onlyIdempotent
List the child operators (nodes) directly under a network path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Absolute path to a COMP node whose children to list (e.g. '/', '/project1', '/project1/myComp') | / |
| type | No | Filter by specific operator type (e.g. 'noiseTOP', 'waveCHOP', 'textDAT') | |
| limit | No | Max number of nodes to return | |
| family | No | Filter by operator family: TOP, CHOP, SOP, DAT, COMP, MAT, or PANEL | |
| offset | No | Pagination offset | |
| include_params | No | If true, include all parameters for each node (slower for large networks) | |
| response_format | No | Output format | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. Description adds no behavioral detail beyond the basic operation, consistent 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, front-loaded with action. Extremely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate given the rich schema and output schema, but the minimal description may not fully inform a new user about filtering, pagination, and other capabilities. Could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 7 parameters are documented in the schema. The description adds no additional parameter information beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists child operators under a network path, using specific verb 'List' and resource 'child operators (nodes)'. It is distinctive from siblings like td_search_nodes or td_get_node_detail, though it doesn't explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 td_search_nodes or td_create_node. Lacks when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_operator_docCRead-onlyIdempotent
Get full documentation card for an operator type or a specific node.
| Name | Required | Description | Default |
|---|---|---|---|
| op_type | No | ||
| node_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds no behavioral context beyond that, such as what constitutes a 'full' doc card or if it fetches from cache.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, making it concise, but it lacks structured details. It front-loads the purpose but could benefit from brevity and further context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, return values are covered. However, parameters are unexplained and no usage guidance is provided. For a simple retrieval tool, it is minimally complete but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description provides no explanation of the two parameters (op_type, node_path). It only hints at 'operator type or a specific node' but does not clarify their use cases or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a full documentation card for an operator type or node. It uses specific verb 'get' and resource 'documentation card', but does not differentiate from siblings like td_get_popx_operator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. There is no mention of context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_param_helpBRead-onlyIdempotent
Get help for a specific parameter: live metadata + knowledge card entry + current value.
| Name | Required | Description | Default |
|---|---|---|---|
| node_path | Yes | ||
| param_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false) already declare safe, non-destructive, idempotent behavior. The description adds 'live metadata + knowledge card entry + current value,' which explains the output composition but does not disclose additional behavioral traits like potential errors, rate limits, or authentication requirements. Given annotations carry the safety profile, the description provides moderate added transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 12 words, front-loaded with the verb and resource, and has zero redundancy. Every word is informative. No extraneous details or structural issues.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown but indicated), which likely details return fields. The description covers the core purpose and output components. However, it lacks information on error handling (e.g., if parameter doesn't exist), expected node_path format, or any prerequisites (e.g., node must exist). For a simple lookup tool, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation of the two parameters (node_path, param_name). While the parameter names are somewhat self-explanatory, the description does not clarify expected formats (e.g., node_path: absolute vs relative; param_name: exact name or pattern). The tool description should at least hint at the type of values expected to aid correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get help for a specific parameter: live metadata + knowledge card entry + current value.' It specifies a verb ('Get help'), resource ('parameter'), and scope ('live metadata, knowledge card, current value'). It distinguishes from siblings like td_get_params (which lists parameter values) and td_get_node_detail (which gets overall node info). Purpose is unambiguous and unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., when to use td_get_params vs. this help tool). It lacks explicit context such as 'use when you need explanations or documentation for a parameter' and does not mention when not to use it or any prerequisites. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_paramsBRead-onlyIdempotent
Get parameter values and metadata for a node.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Filter by parameter page name | |
| path | Yes | Absolute node path | |
| names | No | Filter to specific parameter names | |
| response_format | No | Output format | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is read-only, idempotent, and not destructive. The description adds 'metadata' but does not supply additional behavioral details such as return structure or edge cases. It is consistent 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no unnecessary words. It is appropriately front-loaded but could benefit from a slight expansion to mention the node context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's straightforward purpose, the presence of a complete schema and comprehensive annotations, the description is sufficient. It covers the core action and resource, and the rest is handled by structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all parameters (path, page, names, response_format). The description adds no extra meaning, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get) and the resource (parameter values and metadata for a node). It is specific enough to distinguish from sibling tools like td_set_params, but it does not explicitly differentiate from other retrieval tools like td_get_node_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, context, 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.
td_get_popx_operatorARead-onlyIdempotent
Get full documentation for a POPx operator (e.g. 'Particle SIM', 'Shape Falloff').
| Name | Required | Description | Default |
|---|---|---|---|
| operator_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds 'full documentation' context but discloses no additional behavioral traits beyond annotations. With annotations, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with examples, no wasted words. Front-loaded with the core purpose and immediately useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with one param and an output schema, the description covers the essentials. It could mention input format requirements (e.g., case sensitivity), but overall is complete enough for reliable selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description provides concrete examples ('Particle SIM', 'Shape Falloff') that give semantic meaning to the bare 'operator_name' parameter, helping the agent understand valid inputs beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Get full documentation') and the resource ('POPx operator') with concrete examples ('Particle SIM', 'Shape Falloff'), distinguishing it from sibling tools like td_get_operator_doc which may cover general operators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like td_search_popx_docs (search) or td_get_operator_doc. The usage context is implied but not contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_release_deltaARead-onlyIdempotent
Get release notes for a specific build (default: current).
| Name | Required | Description | Default |
|---|---|---|---|
| build | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description is not burdened with safety details. It adds the default behavior (current build) which is helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 10 words, front-loading the purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and a single optional parameter, the description adequately covers what the tool does. Minor gap: no mention of what the release notes contain or how to use the output, but output schema fills that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description explains the 'build' parameter as 'for a specific build (default: current)', providing essential context. More detail on format or valid values would be beneficial but not necessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), resource ('release notes'), and scope ('for a specific build (default: current)'). It is distinct from sibling tools like td_get_build_compatibility or td_lookup_snippets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining release notes of a build but provides no explicit guidance on when to use vs alternatives or when not to use. The sibling list includes many tools, but none directly overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_server_metricsARead-onlyIdempotent
Get MCP server runtime metrics: telemetry, events, streams, safety, snapshots, jobs. Returns a JSON envelope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds behavioral context by listing the types of metrics returned and stating it returns a JSON envelope, which is helpful beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that clearly state the action and return format. No unnecessary words; front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, comprehensive annotations, and an output schema (mentioned), the description is complete. It covers what the tool returns and the scope of metrics, sufficient for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so schema description coverage is 100%. The description adds no parameter-specific info, which is acceptable. Baseline 4 is appropriate as no further semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get MCP server runtime metrics' and lists specific categories (telemetry, events, streams, safety, snapshots, jobs), making the purpose explicit. It distinguishes from siblings as no other sibling tool is about server metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving runtime metrics, and with zero parameters, usage is straightforward. However, it does not explicitly mention when to use this tool over alternatives, though no direct alternatives exist among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_state_vectorBRead-onlyIdempotent
Aggregated scene state vector (cached for _tr.TD_STATE_VECTOR_TTL seconds).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Root path for aggregated diagnostics. | /project1 |
| force_refresh | No | Bypass cache and fetch fresh state. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds valuable context about caching behavior ('cached for _tr.TD_STATE_VECTOR_TTL seconds'), which helps the agent understand latency and data freshness. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the key information. No redundant words, though it could include a brief note on what the state vector contains without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but indicated), the description doesn't need to detail return values. However, it lacks explanation of what 'aggregated scene state vector' means in terms of scope or content, which would be useful for context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and both parameters have descriptions in the schema. The description mentions 'aggregated' and caching, which indirectly relates to the force_refresh parameter but does not add explicit parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns an 'aggregated scene state vector' and mentions caching, distinguishing it from other tools like td_get_node_detail. However, it could further clarify what constitutes the state vector.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus sibling tools (e.g., td_get_node_detail, td_get_params). No when-to-use or when-not-to-use information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_get_timescale_stateARead-onlyIdempotent
Read beat/phrase-derived timeline state (bars, beats, phrase position).
| Name | Required | Description | Default |
|---|---|---|---|
| bpm_hint | No | Optional BPM hint. Defaults to 120 when omitted. | |
| beats_per_bar | No | Musical beats per bar for phase calculations. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds value by specifying the exact kind of state (bars, beats, phrase position), which is helpful beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single sentence that immediately states the purpose and examples. Efficient and front-loaded, but slightly under-specified (could mention the optional parameters or default behavior).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with two optional parameters and an output schema, the description adequately explains what it returns. Missing usage guidelines, but otherwise complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters have descriptions). The tool description does not add any parameter meaning beyond the schema, so score is at baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it reads 'beat/phrase-derived timeline state' and lists examples (bars, beats, phrase position). It is specific to a resource (timeline state) and uses a clear verb ('Read'), but does not explicitly differentiate from sibling tools like td_timeline or td_get_state_vector.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. The description only states what it does, with no context about prerequisites, scenarios, or sibling distinctions. Given many time-related siblings (td_timeline, td_get_state_vector), this is lacking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_knowledge_getARead-onlyIdempotent
Fetch the full markdown body + metadata for one entry.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | 'project' or 'global'. | project |
| entry_id | Yes | Entry id from td_knowledge_recall. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint, so safety profile is clear. The description adds that it returns 'full markdown body + metadata', which is helpful but minimal extra context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single sentence, front-loaded, and contains no unnecessary words. It is efficiently sized for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and the tool is simple, the description adequately covers what the tool does. It is complete for a read-only retrieval tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description does not add meaningful semantics 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches the full markdown body and metadata for one entry, with a specific verb and resource. It distinguishes from siblings like td_knowledge_recall and td_knowledge_list which handle search or listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. No explicit when/when-not or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_knowledge_listARead-onlyIdempotent
List free-form markdown knowledge-entry summaries, newest first.
Prefer td_memory_list for the structured, replayable technique library.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter to entries with at least one of these tags. | |
| limit | No | Max results. | |
| scope | No | 'project' | 'global' | 'all'. | all |
| favorites_only | No | If true, return only favorited entries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds that entries are markdown summaries ordered newest first, which is consistent but does not reveal additional behavioral traits like pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with main purpose then alternative usage, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with well-documented parameters and an output schema, the description sufficiently covers what it returns (summaries, ordering) and guides usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaning beyond schema for the parameters; it only mentions ordering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists free-form markdown knowledge-entry summaries in newest-first order, using specific verb 'List' and resource. It distinguishes from sibling td_memory_list by noting the structured vs free-form nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Prefer td_memory_list for the structured, replayable technique library,' providing clear guidance on when to use this tool versus an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_knowledge_recallARead-onlyIdempotent
Search the free-form markdown knowledge store. Returns summaries (no bodies).
Use this for prose reference content — notes, essays, prose-with-math saved
via td_knowledge_save. Use td_knowledge_get afterward to fetch a specific
entry's body. Prefer td_memory_recall when you want the structured, replayable
technique-recipe library (learned via td_memory_learn, rebuilt with
td_memory_replay) rather than free-form notes.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter to entries that have at least one of these tags. | |
| limit | No | Max results. | |
| query | No | Free-text search across name/description/tags/notes. | |
| scope | No | 'project' | 'global' | 'all' (default). | all |
| full_text | No | If true, also search the body of each entry (slower — reads files). Default false searches only metadata. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description's addition of 'Returns summaries (no bodies)' and the full-text search behavior (slower, reads files) are valuable extra context. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-structured sentences: first sentence defines action and output, second provides usage guidance with sibling differentiation, third clarifies the distinction from memory tools. No redundant information; every sentence carries weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With input schema covering parameters, output schema present, and annotations provided, the description is complete. It explains the tool's purpose, output, usage context, and relationship to siblings. No missing information for an agent to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 5 parameters with 100% description coverage, so baseline is 3. The description adds context by explaining what is searched (name/description/tags/notes) and the trade-off of full_text parameter (slower, reads files). This extra clarification justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search the free-form markdown knowledge store' and specifies 'Returns summaries (no bodies).' It also distinguishes itself from sibling tools: 'Use td_knowledge_get afterward to fetch a specific entry's body' and differentiates from td_memory_recall for structured content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool: 'Use for prose reference content — notes, essays, prose-with-math saved via td_knowledge_save.' Also states when not to use it: 'Prefer td_memory_recall when you want the structured, replayable technique-recipe library.' Provides clear direction to use td_knowledge_get for fetching entry body.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_knowledge_saveA
Persist a free-form markdown knowledge entry (prose/notes/essays).
Returns the entry id. The body is stored at ~/.tdpilot/knowledge//entries/.md and the metadata in index.json. Local-only, never pushed anywhere. Prefer td_memory_save (with td_memory_learn) when you want to capture a structured, replayable technique recipe rather than free-form prose.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Markdown body of the knowledge entry. Reference essay, math, explanations — keep under 200 KB. Split larger writeups into multiple linked entries. | |
| name | No | Short title for the entry. | |
| tags | No | Lowercase tags for filtering, e.g. ['feedback', 'reaction-diffusion']. | |
| notes | No | Free-form internal notes. | |
| scope | No | 'project' or 'global'. Project requires TDPILOT_PROJECT_NAME. | project |
| source | No | Optional attribution — where this technique came from (e.g. 'youtube tutorial 2025-03-01', 'forum post'). | |
| description | No | One-line summary used in search results. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return value ('Returns the entry id'), exact file storage paths, and scope constraints ('Local-only, never pushed anywhere'). Annotations only show readOnlyHint=false, description adds crucial behavioral details without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences: purpose, storage behavior, usage alternative. No wasted words, front-loaded with core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, return, storage, constraints, and sibling guidance. Output schema exists so return details are covered. Could mention idempotency or side effects, but not required for completeness given annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, description adds value for 'body' parameter (reference content, size limit, splitting advice). Other parameters have schema descriptions that suffice; description doesn't need to duplicate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Persist a free-form markdown knowledge entry' with verb+resource+format, and explicitly distinguishes from sibling td_memory_save by contrasting structured recipes vs free-form prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to prefer td_memory_save instead, and gives constraints like 'keep under 200 KB' and 'split larger writeups'. Lacks explicit 'when not to use' but alternative is clearly identified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_list_familiesARead-onlyIdempotent
List available operator families (TOP, CHOP, SOP, DAT, COMP, MAT, POP). Returns a JSON envelope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive. The description adds that it returns a JSON envelope, providing format context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence with an explicit list of families. Front-loaded and no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, full schema coverage, and an output schema, the description is fully adequate. It clearly specifies what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4. The description adds no parameter info because none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists available operator families and explicitly enumerates them (TOP, CHOP, SOP, DAT, COMP, MAT, POP). This distinguishes it from sibling tools like td_list_macros, which lists macros.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. For a simple listing, it's adequate but lacks contextual cues for when not to use it or what to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_list_macrosARead-onlyIdempotent
List all available macro templates (built-in plus user templates). Returns a JSON envelope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is clear. The description adds minimal behavioral detail ('Returns a JSON envelope'), which is useful but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences. It is front-loaded with the main action and provides essential information without any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has no parameters, annotations cover safety and idempotency, and an output schema presumably exists, the description is complete enough for an AI agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100%. The description does not need to explain parameters, and it adds no extra parameter semantics; baseline 4 for no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the resource (all available macro templates including built-in and user templates), and distinguishes this tool from siblings like td_create_macro or td_get_macro_params.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates its use case (listing all macros) but provides no explicit guidance on when to use it vs other tools, nor any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_list_snapshotsARead-onlyIdempotent
List saved scene snapshots (newest first).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max number of snapshots to return (newest first). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds the ordering behavior (newest first) and implies pagination via the limit parameter. This is adequate beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. It directly conveys the tool's purpose and ordering. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, good annotations, and presence of an output schema, the description is complete. It covers the key behavioral aspect (ordering) and the parameter is fully documented. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the 'limit' parameter with full details (range, default, description). The description adds no additional semantics beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the resource (saved scene snapshots), and the ordering (newest first). It effectively distinguishes this tool from sibling snapshot tools like td_snapshot_scene (create) and td_restore_snapshot (restore).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives (e.g., td_diff_snapshots for comparing). The usage context is implied by 'list' and the sibling tools, but no explicit guidance on when not to use or preferred scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_locationsAIdempotent
Save, list, jump-to, rename, or delete named network locations per
project. Storage is host-side JSON in ~/.tdpilot/locations/<hash>.json
and survives session restarts. Pairs with td_get_focus to give the agent
user a shared spatial vocabulary for big projects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Location name. Required for save/go/delete/rename. | |
| path | No | Override path for the save action. Defaults to td_get_focus.active_pane_path. | |
| action | Yes | Action to perform: 'save' (capture current focus or override path), 'list' (return all per-project locations), 'go' (navigate to a saved location), 'delete' (remove by name), or 'rename'. | |
| new_name | No | New name (rename action only). | |
| description | No | Optional human-readable note (save action). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses storage location (host-side JSON in ~/.tdpilot/locations/<hash>.json) and persistence across sessions, adding behavioral context beyond annotations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no extraneous words. The first sentence front-loads the purpose and actions, the second provides storage and usage context. Every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, storage, and pairing with td_get_focus. An output schema exists, so return values are handled there. Minor gap: missing explicit handling for edge cases (e.g., duplicate names), but overall adequate for a multi-action tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters. The description does not add parameter-specific meaning beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly lists all five actions (save, list, jump-to, rename, delete) and the resource (named network locations per project), providing a clear, specific verb+resource mapping. It distinguishes the tool from siblings by its unique focus on location management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions pairing with td_get_focus for spatial vocabulary, which gives context on when to use. However, it lacks explicit when-not-to-use scenarios or comparisons with other memory/snippet tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_logger_statusARead-onlyIdempotent
Inspect the Python logging configuration inside TouchDesigner: log level, handlers, registered loggers.
Note: This inspects Python's logging module, not TD's native logging. Requires 'full' exec mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds valuable context: it inspects Python's logging module (not TD's), requires 'full' exec mode, and lists what is inspected (log level, handlers, registered loggers). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, clear sentences. It front-loads the purpose and adds critical notes in a compact format. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no parameters but an output schema exists. The description explains what is inspected and the key distinction from TD native logging, plus the exec mode requirement. This is complete for a read-only inspection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and schema description coverage is 100% trivially. With no parameters, the description does not need to add parameter information. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects Python logging configuration (log level, handlers, registered loggers) in TouchDesigner, and explicitly distinguishes it from TD's native logging. This is a specific verb+resource that differentiates it from siblings like td_python_env_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes it requires 'full' exec mode, providing a usage prerequisite. It also clarifies it inspects Python logging, not TD native logging, which implicitly guides against using it for native logging. However, it does not explicitly name alternative tools or give when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_lookup_palette_componentARead-onlyIdempotent
Look up a palette component by name or search by query.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| component_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's 'look up' is consistent. The description adds the dual-mode behavior (by name or search by query), which provides useful behavioral context beyond the annotations. However, it does not disclose details like return format or pagination, though output schema may cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence that conveys the core functionality with no redundancy or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (two optional parameters, output schema present), the description is adequate but not thorough. It lacks explicit parameter mapping and usage guidance, which would be helpful for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It mentions 'by name or search by query', loosely mapping to component_name and query, but it does not explicitly state which parameter corresponds to which mode, nor does it describe formats or constraints (e.g., exact match vs partial match). This is minimal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'look up' and the resource 'palette component', and it mentions two modes: by name and by query. While it distinguishes the tool from siblings by its specific resource, it does not explicitly differentiate from similar sibling tools like td_get_popx_operator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when to use by name vs by query, or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_lookup_snippetsARead-onlyIdempotent
Search for OP Snippets by keyword and optional family.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| family | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating a safe, non-destructive operation. The description adds the context of searching by keyword and family but does not disclose additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and contains no fluff. Every word is meaningful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (not shown), the description does not need to detail return values. However, for a search tool among many siblings, more context on result behavior or when to prefer this tool would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It maps 'query' to 'keyword' and 'family' to 'optional family', providing basic semantic meaning. However, it lacks details like format, allowed values, or examples, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search'), the resource ('OP Snippets'), and the inputs ('by keyword and optional family'). This distinguishes it from sibling tools like td_search_official_docs or td_search_nodes that focus on different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. It simply states what it does without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_memory_exportARead-onlyIdempotent
Export the technique library as a portable JSON object for sharing or backup.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | 'project' or 'global'. | project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the tool is safe. The description adds context: the tool exports a portable JSON object for sharing/backup, and does not contradict annotations. It provides useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the action and purpose. It is concise, front-loaded, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter fully documented in the schema and no output schema, the description covers the tool's purpose and output format. It could mention the scope option, but the schema handles that. Overall, it is adequately complete for a simple read-only export tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema documentation for the single 'scope' parameter is explicit with values 'project' or 'global' and 100% coverage. The description does not elaborate on the parameter, so it adds no extra meaning. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Export', identifies the resource 'technique library', and specifies the output format 'portable JSON object' for 'sharing or backup'. It clearly distinguishes from sibling tools like td_memory_import and td_memory_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for backup or sharing but does not explicitly state when to use this tool versus alternatives like td_memory_import or td_memory_list. No when-not-to-use or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_memory_favoriteAIdempotent
Mark a technique as favorite and/or rate it (0-5).
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | 'project' or 'global'. | project |
| rating | No | Rating 0-5, or -1 to skip. | |
| favorite | No | Set favorite status. | |
| technique_id | Yes | ID of the technique. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false. The description adds no new behavioral context beyond the rating range already in the schema. It doesn't contradict annotations, but also doesn't enrich transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single extremely concise sentence (8 words) that front-loads the action. No wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple action tool with idempotentHint and no output schema, the description provides adequate context. It doesn't mention return values, but for this type of tool, it's acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented. The description adds no additional meaning beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'mark' and resource 'technique', and clarifies the actions (favorite and/or rating 0-5). This clearly distinguishes from siblings like td_memory_list or td_memory_learn.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. The description only states what it does, not when it should be preferred over other memory-related tools like td_memory_preferences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_memory_importB
Import techniques from an exported library (from td_memory_export).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Exported library data (from td_memory_export). | |
| scope | No | 'project' or 'global'. | project |
| overwrite | No | Overwrite existing techniques with same ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, but the description adds no behavioral context. It does not disclose side effects, such as potential data overwriting (despite the 'overwrite' parameter), or any required permissions. The description fails to elaborate beyond the basic import action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence that conveys the essential information without unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has 3 parameters, nested objects, and no output schema, the description is too sparse. It does not explain the import process, the effect of 'scope' and 'overwrite', or what the agent can expect as a result. The description lacks completeness for an import operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description does not add any additional semantics beyond what is in the schema, but it does not contradict it either. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Import' and the resource 'techniques' from a specific source 'exported library (from td_memory_export)'. It distinguishes itself from sibling tools like td_memory_export and td_memory_promote by specifying the source and action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as when to import vs. promote or list. It does not mention prerequisites, limitations, 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.
td_memory_learnARead-onlyIdempotent
Analyze a network subtree and extract a reusable technique recipe.
Auto-detects complexity:
small (<10 nodes): full recipe with all params and expressions
medium (10-20): full recipe
large (>20): structure summary + key params only
Returns the technique dict — pass it to td_memory_save to persist.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Human-readable name for this technique. | |
| path | Yes | Root path of the network subtree to analyze. | |
| tags | No | Tags for categorization. | |
| max_depth | No | Max child depth to walk. | |
| description | No | What this technique does. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, etc. The description adds valuable detail: auto-detects complexity levels and describes output. No contradictions. Additional behavioral context is useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose. Bullet list of complexity levels is efficient. No wasted words. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return value ('technique dict') and next step. Covers complexity behavior. Could detail what a 'technique recipe' is, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions. The description does not add significant meaning beyond the schema. For 'path' it mentions 'root path of the network subtree' which aligns with schema. No extra clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'analyze and extract' and the resource 'reusable technique recipe from a network subtree'. It distinguishes itself from siblings like td_memory_save by noting the output is a dict to be passed to save.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance: returns a technique dict to be passed to td_memory_save. Also describes auto-detection of complexity for different subtree sizes. However, no explicit when-not-to-use versus alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_memory_listARead-onlyIdempotent
List saved (structured, replayable) techniques, filterable by scope, tags, and favorites.
Prefer td_knowledge_list for the free-form markdown notes/essays store.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by tags. | |
| limit | No | Max results. | |
| scope | No | 'project', 'global', or 'all'. | all |
| favorites_only | No | Only return favorites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. Description adds 'structured, replayable' context but does not disclose additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded main action. No redundancy or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a list tool with 4 optional parameters and no output schema. Mentions what is returned and provides sibling tool guidance. Could mention pagination or ordering, but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters documented. Description mentions filterable by scope, tags, and favorites, but adds no new meaning beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists saved structured techniques, specifying the verb, resource, and filtering options. It also explicitly distinguishes from sibling td_knowledge_list, which handles free-form markdown notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to prefer td_knowledge_list for notes, providing clear guidance on when to use this tool vs. an alternative. Additional context for a read/list tool is straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_memory_preferencesBIdempotent
Get, set, list, or delete user preferences.
Preferences store things like: preferred color palettes, default resolutions, favorite operator types, naming conventions, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Preference key (required for get/set/delete). | |
| scope | No | 'project' or 'global'. | project |
| value | No | Value to set (required for 'set'). | |
| action | Yes | One of: 'get', 'set', 'list', 'delete'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds no behavioral details beyond that, such as auth requirements, side effects of set/delete, or value constraints. It repeats the action types from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. The first sentence captures all actions (get, set, list, delete), and the second provides illustrative examples. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters and no output schema, the description lacks information about return values (e.g., what 'list' returns) and the effect of operations like 'delete'. It is adequate but has clear gaps for a multi-action tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter having a description. The tool description adds no further meaning to parameters beyond the schema's own descriptions, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool can get, set, list, or delete user preferences, and gives concrete examples (color palettes, resolutions) which distinguish it from sibling tools like td_memory_save or td_memory_recall that handle different data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 is provided. The description only states what it does, with no mention of prerequisites, filtering, or context where other tools would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_memory_promoteAIdempotent
Copy a project technique to the global library so it's available across all projects.
| Name | Required | Description | Default |
|---|---|---|---|
| technique_id | Yes | Project technique ID to promote. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and non-destructive behavior. The description adds context about availability across projects but does not disclose potential side effects (e.g., overwriting existing global techniques).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficient sentence that conveys the core action and outcome with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description provides sufficient context to understand the tool's functionality and parameter semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter fully. The description reiterates the parameter's purpose without adding new meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Copy'), resource ('project technique'), and destination ('global library'). It distinguishes from sibling tools like td_memory_list or td_memory_save.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for making project techniques available globally but provides no explicit guidance on when to use vs. alternatives or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_memory_recallARead-onlyIdempotent
Search the structured, replayable technique library by text query and/or tags.
Returns summaries (not full recipes). Use td_memory_replay to rebuild a found technique as live nodes. Prefer td_knowledge_recall when you want free-form markdown notes/essays (prose reference content) rather than replayable recipes.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by tags. | |
| limit | No | Max results. | |
| query | No | Text search across names, descriptions, tags. | |
| scope | No | 'project', 'global', or 'all'. | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. Description adds that it returns summaries not full recipes, which is key behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Efficient structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema, description explains return type (summaries) and directs to sibling for full recipe. Adequate for decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 4 parameters with descriptions. Description adds no further semantics beyond restating query and tags. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it searches the technique library by text and tags. Distinguishes from td_memory_replay and td_knowledge_recall by specifying return type (summaries vs full recipes vs prose).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use: searching for replayable recipes. Provides clear alternatives: td_memory_replay for rebuilding techniques and td_knowledge_recall for free-form notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_memory_replayA
Rebuild a saved technique in a new location in the TD project.
Creates nodes, sets parameters and expressions, wires connections. Only works for techniques with a full recipe (small/medium complexity).
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Skip build compatibility checks and replay anyway. | |
| scope | No | 'project' or 'global'. | project |
| name_prefix | No | Optional prefix for created node names. | |
| parent_path | Yes | Parent COMP path where the technique will be rebuilt. | |
| technique_id | Yes | ID of the saved technique to replay. | |
| recreate_root | No | v1.4.7 Bug V opt-in. If True and the recipe's '/' entry has family='COMP', the replay creates that wrapper COMP under parent_path first and builds all children inside it. Default False preserves the existing flat-replay behavior where '/' is aliased to parent_path (children land as siblings). Set to True when you want a faithful clone of a COMP-wrapped technique. | |
| param_semantics_policy | No | Docs-grounded parameter safety policy for replayed recipe params. 'warn' preserves replay behavior with attached findings; 'block' refuses risky or invalid parameter writes before any live mutation. | warn |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a read-write, non-destructive action. The description adds that it creates nodes, sets params, and wires connections, which is consistent. No surprises but no extra depth beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. The first sentence states the primary action, the second adds behavioral detail and a constraint. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the action and limitations but does not specify return values (no output schema). For a complex tool with 7 parameters, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; each parameter has a description. The tool description adds overall context but does not enhance individual parameter meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Rebuild a saved technique' and specifies the resource and constraints (full recipe, new location). It distinguishes from sibling memory tools like save/recall by focusing on replay/rebuild.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context: when to use (rebuilding a technique) and constraints (only for full recipe, small/medium complexity). It does not explicitly mention alternatives but the constraint helps avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_memory_saveA
Save a structured, replayable technique to the project or global library.
Use the output of td_memory_learn as the technique input, or construct a technique dict manually. Prefer td_knowledge_save when you want to capture free-form markdown prose/notes rather than a replayable network recipe.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Override technique name. | |
| tags | No | Additional tags. | |
| notes | No | Freeform notes about this technique. | |
| scope | No | 'project' or 'global'. | project |
| technique | Yes | Technique dict (from td_memory_learn output). | |
| description | No | Override description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate write operation with destructiveHint=false. Description adds context about saving to project/global library and input format, but does not disclose overwrite behavior, idempotency, or error conditions beyond what annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. First sentence states purpose, second provides usage guidance and alternative. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but description covers input sources, scope options, and alternative tool. Could mention return value on success, but given the tool's simplicity, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 minimal extra meaning for parameters, only noting that technique can be from td_memory_learn or manual construction, which is useful but not significant beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Save' and resource 'structured, replayable technique'. It distinguishes from sibling tool td_knowledge_save for free-form notes, and mentions using output from td_memory_learn as input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use this tool vs td_knowledge_save, and that technique input can come from td_memory_learn. Lacks exclusions for other sibling tools like list or recall, but guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_monitor_visualA
Start periodic monitor for a TOP.
Default mode omits base64 frames to keep token usage low.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | TOP path to monitor. | |
| quality | No | JPEG quality. | |
| interval | No | Capture interval seconds. | |
| auto_analyze | No | Auto analyze each capture if sampling available. | |
| include_image | No | When false (default), monitor events omit base64 image data to reduce token usage. Set true only when you explicitly want frame payloads in context. | |
| analysis_prompt | No | Optional analysis prompt. | |
| confirm_high_token_mode | No | Must be true when include_image=true. This is an explicit acknowledgement that continuous image payloads can consume many tokens. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-readonly mutation (readOnlyHint=false, openWorldHint=true). The description adds context that default mode omits base64 frames to reduce tokens, which aligns with schema parameters (include_image, confirm_high_token_mode). No contradiction; some side effects hinted but not fully detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. No wasted words; efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema, description covers key behavior (periodic monitoring, token management). Missing explicit link to td_stop_monitor_visual, but for its complexity it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, so baseline is 3. The description adds value by explaining the default behavior regarding base64 frames, which relates to the include_image parameter, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Start periodic monitor for a TOP', identifying the action (start) and the resource (periodic monitor on a TOP). This distinguishes it from sibling tools like td_stop_monitor_visual and td_capture_and_analyze.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for periodic monitoring but does not explicitly contrast with alternatives like single capture (td_capture_and_analyze) or streaming (td_stream_top). The note about default token usage is helpful but not a full guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_optimize_visualC
Autonomous visual goal optimization via bounded parameter search.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | Natural-language optimization goal. | |
| profile | No | Optional optimizer profile: balanced | complexity | motion_rhythm | stability_guard | |
| root_path | No | Root scope for instability checks and snapshots. | /project1 |
| output_top | Yes | TOP path used as output reference. | |
| max_iterations | No | Max iterations. | |
| safety_profile | No | Optimizer safety profile: conservative | balanced | aggressive | balanced |
| snapshot_before | No | Capture snapshot before optimization loop starts. | |
| adjustable_params | Yes | Parameter search space. Each entry specifies path/param/min_val/max_val/step for a parameter the optimizer may adjust. | |
| objective_weights | No | Optional explicit objective weights, e.g. {'motion_rhythm': 0.8, 'stability': 0.4}. | |
| convergence_threshold | No | Convergence threshold. | |
| param_semantics_policy | No | Docs-grounded parameter safety policy for optimizer writes. 'warn' preserves bounded search with attached findings; 'block' refuses invalid or high-risk writes before mutation. | warn |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it is not read-only and not idempotent, but not destructive. The description adds little beyond stating 'autonomous' and 'bounded parameter search.' It does not disclose that the tool may take snapshots, modify parameters, or run iterations, though these are evident from the schema. With annotations already covering basic behavior, the description should provide additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and gets to the point. It could be slightly expanded for clarity but is not verbose. Appropriate length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, multiple features like snapshots, convergence), the description is too brief. It does not mention side effects, output format, or when optimization terminates. The output schema exists, so return values are covered, but behavioral completeness is lacking. Requires more context for an AI agent to use it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The tool description does not add extra meaning beyond what the schema already provides for parameters. It is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Autonomous visual goal optimization via bounded parameter search' specifies the action (optimization), the object (visual goal), and the method (bounded parameter search). It distinguishes from sibling tools like td_brain_propose or td_set_param_bounds, but could be more specific about what 'autonomous' entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as td_brain_plan, td_brain_ground, td_set_param_bounds. The description lacks context about prerequisites or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_patch_applyApply Legacy TD PatchADestructive
(Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Destructive compatibility/expert PatchPlan executor. Prefer td_brain_execute for BrainPlans because it is the default validated transaction path for TDPilot-authored builds.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | PatchPlan dict to execute | |
| label | No | Override plan.undo_label | |
| auto_validate | No | Run validate_target after apply | |
| transaction_options | No | Optional TransactionOptions dict. When provided, td_patch_apply uses the vNext transaction executor with preflight, snapshot, validation, and rollback policy. | |
| param_semantics_policy | No | Docs-grounded parameter safety policy for legacy patch applies. 'warn' preserves legacy behavior and attaches findings; 'block' refuses invalid or high-risk set_params operations before mutation. | warn |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, fully covering the safety profile. The description adds legacy and expert context but discloses no additional behavioral traits beyond what annotations provide. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two sentences), front-loading critical information (legacy status, preferred alternative) with no wasted words, making it efficient for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and 100% parameter coverage, the description provides sufficient high-level context: legacy, destructive, expert, and preferred alternative. It lacks detailed behavioral differences from td_brain_execute, but the annotations and schema fill gaps adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description does not add extra parameter semantics, which is acceptable given the baseline expectation of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose as a 'Destructive compatibility/expert PatchPlan executor' and clearly notes it is a legacy alternative to td_brain_plan/td_brain_execute, providing a specific verb and resource with differentiation from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Prefer td_brain_plan → td_brain_execute' and 'Prefer td_brain_execute for BrainPlans', naming specific alternatives and rationale, making when-to-use and when-not-to-use very clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_patch_planPlan Legacy TD PatchARead-only
(Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Compatibility/expert surface for typed PatchPlan construction. For new concept-to-network TouchDesigner builds, prefer td_brain_plan followed by td_brain_execute.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | No | Free-text goal; triggers heuristic macro match | |
| recipe_id | No | Technique/recipe ID to materialize into a plan | |
| operations | No | Pre-built operation list (LLM-authored) | |
| undo_label | No | Override for the TD undo block label | |
| target_root | Yes | Absolute TD path the plan operates on, e.g. '/project1' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'construction' (implying mutation), but annotations declare readOnlyHint=true. This is a direct contradiction; the agent cannot tell if the tool is read-only or modifies state. No additional behavioral details are provided beyond the annotations. The inconsistency undermines trust.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the legacy status and preferred alternatives. Every sentence is informative with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers deprecation and usage guidance, but due to the behavioral contradiction, it is incomplete about what the tool actually does (read vs write). With an output schema present, return values are covered, but the core behavior conflict is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds no parameter-specific information beyond what is in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately marks the tool as legacy and states it is for 'typed PatchPlan construction'. It explicitly names preferred alternatives (td_brain_plan → td_brain_execute), distinguishing it from siblings. The verb 'construct' and resource 'PatchPlan' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use guidance: only for compatibility or expert typed PatchPlan construction. It explicitly says to prefer td_brain_plan → td_brain_execute for new builds, and notes the tool is slated for removal in v3.0. This provides both context and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_patch_previewPreview Legacy TD PatchARead-only
(Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Read-only PatchPlan preview for compatibility/expert workflows. For new visual builds, prefer td_brain_plan because it carries concept, corpus, and validation context.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | PatchPlan dict (from td_patch_plan) | |
| include_hints | No | If True, attach a ``hints`` block via td_get_hints. Auto-injection still fires when the plan touches feedback, GLSL, or audio-reactive territory. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds context about auto-injection behavior for specific plan contents, which is not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with front-loaded legacy warning and usage guidance. No unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage context, behavioral notes, and relies on schema for parameters and output schema for return values. Complete for a legacy preview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 does not add parameter details beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it is a read-only preview of a PatchPlan, explicitly identifies as legacy, and distinguishes from preferred sibling td_brain_plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (compatibility/expert workflows) and when not (prefer td_brain_plan for new builds), with rationale about context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_patch_validateValidate TD Patch TargetARead-only
(Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Read-only validation for patch compatibility workflows. BrainPlan workflows should use td_brain_plan and td_brain_execute so validation is tied to the authored plan.
| Name | Required | Description | Default |
|---|---|---|---|
| target_root | Yes | Subtree to validate | |
| capture_frames | No | TOP paths to capture; None = none (cheap) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds 'Read-only validation' confirming safety but lacks detail on specific validation behaviors. With annotations covering core traits, additional context is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with legacy warning. No redundant text; every sentence contributes essential information. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and annotations are rich, description covers purpose and usage. Does not detail validation processes or error conditions, but completeness is acceptable for a simple read-only tool with good structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description does not add meaning beyond the schema; 'target_root' and 'capture_frames' are not elaborated. No extra semantic value provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool performs 'Read-only validation for patch compatibility workflows' with specific verb and resource. It distinguishes from siblings by labeling itself as legacy and directing users to td_brain_plan/td_brain_execute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.' Provides clear context on when to use this tool versus alternatives, fulfilling the highest standard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_patch_variationsVary Legacy TD PatchARead-only
(Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Generate PatchPlan variants for compatibility/expert workflows. For new creative builds, start with td_brain_plan so variants remain grounded in a BrainPlan.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of variants | |
| plan | Yes | Base PatchPlan dict to derive variants from | |
| seed | No | RNG seed; None = random | |
| strategies | No | None defaults to ['param_jitter'] |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows it's a read operation. The description adds that it generates variants but does not disclose any additional behavioral traits beyond the annotations. It is consistent with annotations, so no contradiction, but adds minimal extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. The first sentence front-loads the legacy status and preferred alternative, the second gives usage guidance. Every sentence is valuable and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple tool with full schema coverage, annotations, and an output schema, the description is complete. It tells the agent the tool is legacy and not recommended for new builds, which is sufficient context for tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage (all parameters described), so baseline is 3. The description does not provide additional semantic meaning beyond what the schema already offers; it merely restates the purpose of generating variants.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool generates PatchPlan variants for compatibility/expert workflows, and identifies it as legacy. The verb 'Generate' and resource 'PatchPlan variants' are specific, and it differentiates from siblings by directing users to the preferred td_brain_plan/td_brain_execute workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states to prefer the newer td_brain_plan → td_brain_execute workflow and advises against using this tool for new creative builds. This provides clear when-to-use and when-not-to-use guidance with an alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_plan_patchPlan Legacy TD Patch DictARead-only
(Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Legacy compatibility planner returning the pre-v1.5 patch dict shape. For new concept-to-network TouchDesigner work, prefer td_brain_plan followed by td_brain_execute.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | What you want to achieve | |
| recipe_id | No | Optional recipe ID to base plan on | |
| target_path | No | Target path to plan changes for | /project1 |
| include_hints | No | If True, attach a ``hints`` block via td_get_hints. Auto-injection still fires when the plan touches feedback, GLSL, or audio-reactive territory. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description adds no further behavioral details beyond legacy status and output shape, which is consistent. With annotations present, the bar is lower; 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences that front-load the key information (legacy status, alternative tools, basics of function) with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's deprecated status, the description adequately covers its purpose, output shape, and replacement. It is sufficient for a legacy tool with full parameter descriptions and annotations, though it assumes familiarity with 'patch dict shape'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any parameter-specific 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a legacy compatibility planner that returns a pre-v1.5 patch dict shape, explicitly distinguishing it from sibling tools td_brain_plan and td_brain_execute which are recommended for new work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: it is for legacy compatibility only, and for new work the user should prefer td_brain_plan followed by td_brain_execute. It also notes slated removal in v3.0.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_pop_inspectBRead-onlyIdempotent
Read structured POP metadata and attribute samples.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to a POP node | |
| count | No | Max elements to sample per requested attribute | |
| start | No | Starting element index for attribute sampling | |
| delayed | No | Use TouchDesigner's delayed GPU readback mode where supported to reduce stalls | |
| include_bounds | No | Include POP bounds and dimension metadata | |
| prim_attributes | No | Specific primitive attributes to sample. If omitted, no primitive attribute samples are returned unless requested. | |
| vert_attributes | No | Specific vertex attributes to sample. If omitted, no vertex attribute samples are returned unless requested. | |
| point_attributes | No | Specific point attributes to sample. If omitted, the tool samples common attributes such as P, PartVel, PartAge, Noise, and PartForce when present. | |
| include_attributes | No | Include point/prim/vert attribute metadata |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description's 'Read' is consistent with these annotations. It does not add behavioral details beyond what annotations provide (e.g., no mention of potential performance impact of sampling, or that it only inspects rather than modifies). Since annotations cover the main behavioral traits, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the tool's purpose. It is front-loaded and contains no redundant or irrelevant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 9 parameters and an output schema, the description is minimal. It does not explain how parameters interact or provide usage context. However, given the presence of an output schema and clear annotations, the description is functionally complete for a simple read operation, though it could be more informative about typical sampling scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 9 parameters. The tool description does not add any parameter-specific information beyond what is in the schema. With full schema documentation, the description's lack of parameter elaboration is acceptable, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Read structured POP metadata and attribute samples' clearly states the tool's action (read) and resource (POP metadata and attribute samples). The name td_pop_inspect reinforces the purpose. It distinguishes from sibling inspection tools like td_geometry_data or td_chop_data by specifying POP nodes, though not explicitly differentiating alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no exclusions, and no context about prerequisite node types or use cases. The sibling list includes many other inspection and data tools, but the description does not help an agent choose between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_preflight_patchPreflight Legacy TD PatchARead-only
(Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Read-only validation for legacy td_plan_patch dicts. For new TDPilot-authored builds, use the BrainPlan path: td_brain_plan then td_brain_execute.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | Plan dict from td_plan_patch to validate |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false. The description adds value by stating the tool is legacy and slated for removal, which is behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a parenthetical, front-loading the critical legacy warning. Every sentence earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter, output schema exists (implied), and the description fully covers its purpose, legacy status, and replacement path. It is complete for a legacy validation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'plan' parameter. The description reiterates 'Plan dict from td_plan_patch to validate', which adds no new meaning beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a read-only validation tool for legacy td_plan_patch dicts and distinguishes it from the preferred BrainPlan path (td_brain_plan → td_brain_execute). This provides a specific verb-resource pairing and differentiates from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to prefer td_brain_plan → td_brain_execute for new builds and notes the tool is slated for removal in v3.0. This gives clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_project_lifecycleCDestructive
Save/load/undo/redo project lifecycle operations.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Undo block name when action=start_undo_block | |
| path | No | Project path for save/load. For save with no path, TouchDesigner will perform its default incremental save behavior. | |
| action | Yes | Lifecycle action: status, save, load, undo, redo, start_undo_block, end_undo_block, clear_undo | |
| enable | No | Whether a started undo block should record undo state | |
| save_external_toxs | No | Also save external tox contents on save |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description lists mutating actions (save, undo, redo) but adds no extra behavioral context such as what gets destroyed, whether files are overwritten, or the undo stack behavior. The description does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, short sentence that lists the key actions. It is concise and front-loaded with the main purpose, but lacks structure (e.g., bullet points or separate sentences for each action). Every word is earned, but the terseness limits informativeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (not shown) and 100% parameter coverage, the description fails to explain the effects of each action, the undo/redo block mechanism, or prerequisites like an open project. For a tool with 5 parameters and multiple modes, this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter has a clear description. The tool description adds no additional parameter information, so it meets the baseline for high coverage without adding extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool handles save/load/undo/redo operations for project lifecycle, which is specific enough to distinguish from most sibling tools like td_snapshot_scene or td_get_state_vector. However, it could be more precise by naming the resource (project file) and listing actions more formally.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 td_snapshot_scene or td_restore_snapshot. The description does not mention prerequisites, context, or exclusions. The agent must infer usage from the action list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_pulse_paramA
Pulse a pulse-type parameter (e.g. a button par).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Node path | |
| param | Yes | Parameter name to pulse |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only, non-destructive, non-idempotent, open-world. Description adds example 'button par' implying momentary activation, but lacks details on side effects or return behavior. Minimal added value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Verb 'pulse' is front-loaded. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with two required params. Output schema exists (not provided but description doesn't need to cover return values). Example clarifies parameter type. Adequate for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with basic descriptions. Description adds concrete example 'button par' for param, improving semantic understanding beyond schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb-resource: 'Pulse a pulse-type parameter'. Provides example 'button par' to clarify type. Distinguishes from other parameter tools by specifying pulse-type, but does not explicitly differentiate from td_set_params or similar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 td_set_params or td_get_params. Does not specify prerequisites or when not to pulse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_python_classesARead-onlyIdempotent
List available Python classes in the TD runtime. Returns a JSON envelope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description adds minimal behavioral context beyond confirming it lists classes and returns a JSON envelope. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and an output schema (implied), the description fully covers the tool's purpose and return format. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline 4 applies per rules. The description does not need to clarify parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 "available Python classes in the TD runtime", and the output format "Returns a JSON envelope". It is specific and distinguishes from siblings like td_python_help or td_python_env_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool instead of alternatives. It does not specify context, prerequisites, 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.
td_python_env_statusARead-onlyIdempotent
Inspect the Python environment inside TouchDesigner: version, installed packages, env manager status.
Requires 'full' exec mode — uses sys and pkg_resources which are not in the standard allowlist.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds behavioral context about requiring full exec mode, which is beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: purpose first, then requirement. No wasted words, front-loaded, easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although no output schema is visible, the description covers the purpose and an important behavioral constraint. Combined with rich annotations, the description is complete for a parameterless inspection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description has no need to explain them. Schema coverage is 100%, baseline for 0 params is 4. Description adds no param info but none needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects the Python environment, listing specific items (version, packages, status). This verb+resource combination distinguishes it from sibling tools like td_python_help or td_python_classes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies a prerequisite ('Requires full exec mode') due to dependencies on sys and pkg_resources, which helps an agent know when this tool is usable. It doesn't explicitly state when not to use or provide alternatives, but the condition is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_python_helpBRead-onlyIdempotent
Get Python help documentation for a TD class/module.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Python object/class to get help for (e.g. 'td', 'td.OP', 'tdu', 'td.TOP') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, which communicate safe, non-destructive behavior. The description adds no additional behavioral context, such as whether it evaluates Python code or how errors are handled. With annotations present, the description meets the minimum but does not add extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is front-loaded and efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema present, low complexity), the description is adequate. It could briefly mention the return format (e.g., string of documentation), but the output schema likely covers that. Overall, it is reasonably complete for the tool's scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameter description for 'target' is already explicit. The tool description does not add any meaning beyond what the schema provides, so it meets the baseline without compensating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves Python help documentation for TD classes/modules. It is specific about the resource ('Python help documentation') and the target ('TD class/module'), but could be more precise about whether it returns docstrings or interactive help. It distinguishes from siblings like 'td_python_classes' and 'td_get_param_help', but not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'td_search_official_docs' or 'td_python_classes'. There is no mention of prerequisites, suitable contexts, or situations where this tool should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_recommend_official_componentARead-onlyIdempotent
Recommend official palette or built-in operator components for a given goal.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | What you want to achieve |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds no further behavioral context beyond what annotations provide, but does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently conveys the tool's purpose with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a single string input and an existing output schema, so the description is mostly adequate. However, it could be improved by briefly mentioning the type of recommendations or how to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the 'goal' parameter described as 'What you want to achieve'. The description does not add additional meaning or examples beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: recommending official palette or built-in operator components for a given goal. It uses a specific verb ('Recommend') and identifies the resource, distinguishing it from siblings like 'td_lookup_palette_component' that look up specific components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The agent must infer usage solely from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_rename_nodeADestructiveIdempotent
Rename a node to a new name within its parent network.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Current absolute path of the node | |
| new_name | Yes | New name for the node |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, indicating mutation and safe retry. The description adds no additional behavioral details beyond the rename action. It does not expand on the effects of the operation, such as impact on node references or path changes, which would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately conveys the core purpose. There is no unnecessary information, and every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple rename operation, the description covers the essential action. Annotations handle behavioral aspects, and the schema covers parameters. The output schema likely provides return value details. Minor gap: lack of context on how renaming affects node references or path dependencies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters have clear descriptions in the schema. The tool description adds no further meaning beyond what the schema already provides, so it meets the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (rename), the resource (a node), and the scope (within its parent network). It distinguishes the tool from siblings like td_delete_node, td_copy_node, and td_create_node by specifying the rename operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or conditions. The phrase 'within its parent network' gives some context but does not help an agent decide between rename and other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_restore_snapshotADestructive
Restore parameter values from a previously saved snapshot.
This tool replays the parameter values captured in the snapshot back onto the live TouchDesigner network. It restores parameter values only — it does not add, remove, or rewire nodes. For structural rollback (topology changes such as added/deleted nodes or connection changes) use TouchDesigner's native Ctrl+Z undo stack instead.
Use dry_run=True to preview what would be changed without applying
anything. Supply partial with a list of node paths to limit the
restore to a subset of the snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Return diff only without applying. | |
| partial | No | Optional subset of node paths. When provided, only these nodes (and no others) have their parameters restored from the snapshot. | |
| snapshot_id | Yes | Snapshot id to restore parameter values from. | |
| param_semantics_policy | No | Docs-grounded parameter safety policy for restored snapshot params. 'warn' preserves restore behavior with attached findings; 'block' refuses unsafe parameter restores before any live mutation. | warn |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds value beyond annotations by clarifying that only parameter values are restored (no node addition/removal) and offers preview via dry_run. It aligns with destructiveHint=true and adds safety context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences), front-loaded with purpose, and each sentence contributes meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (restore with safety options) and rich schema/annotations, the description adequately explains behavior, usage, and alternatives. It could mention the param_semantics_policy, but schema covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all parameters. The description reiterates dry_run and partial usage, which adds context but does not introduce new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool restores parameter values from a snapshot, specifies it does not modify structure, and distinguishes it from Ctrl+Z for topology changes, differentiating it from siblings like td_snapshot_scene.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance: use Ctrl+Z for structural rollback, and mentions dry_run for preview and partial for limiting scope. It lacks explicit 'do not use' scenarios but covers key usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_screenshotARead-onlyIdempotent
Capture a TOP frame as base64 inline, or to disk via save_path.
Use this for a quick single-frame visual: with save_path set the image is
written to disk TD-side and only metadata + the path come back — use this for
repeated visual verification. Without it the response embeds base64 image
data; ask the user before repeated base64 screenshots because each image can
consume significant tokens in model context. Prefer td_capture_frame when you
want metadata-first (resolution/format/bytes) with the image behind a
confirm/save_path gate; prefer td_capture_and_analyze when you also need
cooking state and errors folded into the same call.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to a TOP node to capture as an image (e.g. '/project1/null1', '/project1/render1') | |
| quality | No | JPEG quality from 0.0 (smallest) to 1.0 (best). Default 0.5 gives good diagnostic quality at ~85KB. | |
| save_path | No | Optional disk destination. When set, TouchDesigner writes the image to this path and the tool returns metadata + the saved path with NO base64 payload (near-zero token cost — the cheap visual-verify loop). Accepts an absolute path under your home directory or a bare filename (saved under ~/.tdpilot/captures/). Extension must be .png/.jpg/.jpeg. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds important context about base64 images consuming significant tokens, which is beyond annotation scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured, and front-loaded with the main action. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, 100% schema coverage, presence of output schema, and rich annotations, the description provides complete guidance on both modes and their appropriate use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 trade-off between base64 and disk saves, and how quality affects size, augmenting the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a TOP frame either as base64 inline or to disk via save_path, and distinguishes from sibling tools td_capture_frame and td_capture_and_analyze.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to use save_path (repeated visual verification, low token cost) vs without (single frame, but warn user about token consumption). Also recommends sibling tools for alternative workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_search_nodesARead-onlyIdempotent
Search nodes across a subtree.
Legacy scopes ('name'/'type'/'family'/'all') hit the existing TD-side
/api/search endpoint. New v1.6.0 scopes ('dat_text', 'param_exprs')
iterate via the /api/exec endpoint — no .tox rebuild required.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Root path to search from | / |
| limit | No | Max results | |
| query | Yes | Search string (case-insensitive) | |
| scopes | No | Search scopes (v1.6.0+). Any of: 'name', 'type', 'family', 'all', 'dat_text' (search DAT text contents), 'param_exprs' (search parameter expressions). Multiple scopes merge. Defaults to ['all']. | |
| search_type | No | DEPRECATED — prefer ``scopes``. One of 'name', 'type', 'family', 'all'. When both are set, ``scopes`` wins. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds useful context about the /api/exec endpoint and that new scopes require no rebuild. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences. First sentence immediately states the purpose, followed by clear distinction between legacy and new functionality. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key behavioral aspects and scope differences. With an output schema present, it does not need to explain return values. Could mention case-insensitivity, which it does, so fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter descriptions already exist. The description reinforces some details (e.g., scopes) but does not add significant new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search nodes across a subtree' with specific details about legacy and new scopes, distinguishing it from sibling tools like td_lookup_snippets and td_search_popx_docs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use legacy vs new scopes and highlights that new scopes avoid .tox rebuild. However, it does not explicitly compare with other search tools or specify when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_search_official_docsBRead-onlyIdempotent
Search the knowledge corpus for operators, palette, releases, snippets, or articles.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| family | No | ||
| card_types | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so behavioral safety is covered. However, the description adds no additional behavioral context such as pagination, request rate limits, or how results are returned. Given annotations, the bar is lower, but still no added value beyond what is structured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no waste. It efficiently states the action and scope. However, it could be slightly expanded to include usage guidance without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description does not explain how parameters affect results or what the overall behavior is (e.g., whether it returns summaries or full content). For a tool with 4 parameters and many siblings, more context is needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should clarify parameter meanings. The text mentions content types (operators, palette, etc.) that might relate to card_types or family, but does not explicitly define any parameter. Parameters query, limit, family, and card_types remain largely unexplained, forcing the agent to guess their roles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the tool searches a 'knowledge corpus' and lists the content types it covers (operators, palette, releases, snippets, articles), making the purpose clear and distinct from more specific sibling tools like td_lookup_snippets or td_lookup_palette_component.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It is implied that this tool is for broad searches, but without saying 'use this for general search; for a specific look-up, use x', the agent must infer. Context signals show many sibling tools, but the description does not differentiate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_search_popx_docsARead-onlyIdempotent
Search POPx operator documentation — GPU particles, falloffs, simulations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds the scope of documentation but no additional behavioral traits such as rate limits or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It immediately conveys the action and resource, achieving maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with an output schema, the description adequately covers purpose and domain. It could mention its distinction from related tools, but is largely sufficient given the presence of an output schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate by explaining parameters. It provides domain keywords (GPU particles, falloffs, simulations) that implicitly guide the 'query' parameter, but does not explicitly describe either 'query' or 'limit'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and resource ('POPx operator documentation') with hints of scope (GPU particles, falloffs, simulations), clearly distinguishing it from sibling tools like td_search_official_docs and td_get_operator_doc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (searching POPx operator documentation), but does not explicitly state when not to use it or mention alternatives like td_get_popx_operator for retrieving full documentation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_self_updateAIdempotent
Check for and optionally install a newer TDPilot release from GitHub.
Default behavior (check_only=True) hits the GitHub releases API and
returns {installed, latest, newer_available, release_url, asset_urls}.
Set check_only=False to actually download and install — this writes
to ~/.tdpilot/td_component/tdpilot.tox, the Claude Code plugin cache,
and the repo working-tree (when running from a clone). On success returns
md5 fingerprints for each install path so the caller can verify sync.
Releases v1.6.9 through v2.0.3 shipped without the tdpilot.tox asset;
against those, check_only=False returns
error_code="release_asset_missing" with remediation hints instead of
installing. Releases after v2.0.3 attach the asset automatically
(.github/workflows/release-assets.yml).
Network-only — does not touch TouchDesigner. Safe to run when TD is closed.
| Name | Required | Description | Default |
|---|---|---|---|
| check_only | No | If True (default), only check whether a newer release exists. If False, download + install the latest .plugin/.tox to all three install paths (~/.tdpilot, plugin cache, repo). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false; the description adds meaningful behavioral details: network-only, writes to specific paths, returns md5 fingerprints, and handles missing assets for certain releases. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet comprehensive, front-loaded with the main action, and uses clear delineation of default vs install behavior and error cases. No redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter, full schema coverage, and an output schema (not shown but referenced), the description covers all necessary aspects: purpose, behavior, side effects, error handling, and safety. Complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter check_only is fully described in the schema (100% coverage). The description reinforces its effect and adds context about the return values when check_only=True, slightly enhancing the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks for and optionally installs a newer TDPilot release, specifying default behavior and installation details. It distinguishes itself from all sibling tools which are about TouchDesigner operations, not self-update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use check_only vs install mode, and notes it is safe when TD is closed. It implicitly guides usage but does not explicitly name alternative tools for the same task (though none exist among siblings).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_set_contentADestructiveIdempotent
Write text or table content into a DAT node (overwrites existing).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to a DAT node | |
| text | No | Text content to write (for Text DATs, Script DATs, etc.) | |
| table | No | Table content as 2D array of strings (for Table DATs) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and idempotentHint=true, covering the key behavioral trait of overwriting. The description does not add further behavioral details such as side effects or error conditions, but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous words. Every part is essential: the action, the resource, and the overwriting behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that annotations and schema provide most behavioral and parameter details, the description is mostly complete. It could note that exactly one of text or table should be provided, but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of parameters, so baseline is 3. Description mentions 'text or table content' but does not add new information beyond what the schema already provides for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (write) and the resource (content into a DAT node), with the verb 'write' and specific resource 'DAT node'. It distinguishes from sibling tool td_get_content which reads content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for setting or replacing content in a DAT node, and the parenthetical '(overwrites existing)' clarifies behavior. However, it does not explicitly mention when not to use it or provide direct alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_set_param_boundsBIdempotent
Set parameter safety bounds with enforcement mode.
| Name | Required | Description | Default |
|---|---|---|---|
| bounds | Yes | One or more parameter safety bounds. Each bound has path, param, and optional min_val / max_val / max_rate. | |
| enforce_mode | No | Enforcement mode: clamp | reject | warn | clamp |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false, but description adds no extra behavioral context (e.g., effect of enforcement modes, what happens on conflict).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Perfectly concise for the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and schema covering inputs, description is adequate. Lacks mention of return value or post-conditions, but acceptable for a simple setter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. Description adds no additional meaning beyond the schema, hitting baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Set' and resource 'parameter safety bounds', with 'enforcement mode' adding specificity. Distinguishes from sibling td_clear_param_bounds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives guidance. Sibling td_clear_param_bounds exists but no comparison. No prerequisites or context given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_set_paramsADestructiveIdempotent
Set node parameters (static values or live expressions).
Parameter-semantics checks are advisory here by default (param_semantics_policy= 'warn'): findings are attached but the write proceeds, since some out-of-range values are legitimate in TD (e.g. extending a soft UI range). Use param_semantics_policy='block', or the brain/transaction path which gates automatically, when you want invalid bindings to stop the write.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute node path | |
| params | Yes | Dictionary of parameter names to values. Supports five modes: • Static value (plain): {'seed': 42, 'colorr': 1.0} • Expression (reactive, updates every frame): {'seed': {'expr': 'absTime.seconds * 10'}, 'tx': {'expr': "op('noise1')['chan1']"}} • Explicit static: {'seed': {'val': 42}} • Reset to default: {'seed': {'reset': true}} — resets value and clears expression • Clear expression: {'seed': {'mode': 'constant', 'val': 42}} — force constant mode Expressions make networks ALIVE — use them for anything that should move, react, or change over time. | |
| include_hints | No | If True, attach a ``hints`` block via td_get_hints. Auto-injection still fires when the params dict assigns a string to a reference-style parameter (instanceop/material/camera/lights/geometry/top/chop/sop/dat/comp). | |
| param_semantics_policy | No | Docs-grounded parameter safety policy for direct writes. 'warn' (default) preserves normal direct-tool behavior with attached findings — the write PROCEEDS even on invalid enum / out-of-range / bad op-reference; 'block' refuses the write before mutation when parameter semantics find invalid, unknown, or high-risk bindings. NOTE: this direct path is advisory by default. The brain/transaction path (td_brain_plan → td_brain_execute) HARD-FAILS the same contract violations. Pass 'block' here for equivalent strictness on direct writes. | warn |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details the behavior of parameter-semantics checks (advisory by default, but attach findings) and notes that some out-of-range values are legitimate. It also explains the expression modes and their impact ('make networks ALIVE'). This adds context beyond annotations (destructiveHint, idempotentHint) without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose, then efficiently explains modes and policy. Every sentence adds value, and the structure logically progresses from general to specific. It is appropriately concise for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (covering return values), the description focuses on input parameters and behavior, which it covers thoroughly. It addresses modes, policy, and integration with other tools (brain/transaction path), making it complete for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 significant meaning by explaining the five modes for params (static, expression, explicit static, reset, clear expression) with examples, and details the include_hints and param_semantics_policy parameters, providing context not fully captured in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Set node parameters (static values or live expressions)', clearly indicating the action and resource. It adds detail about static vs. live expressions, but does not explicitly differentiate from siblings like td_set_param_bounds, though the tool name and context make the purpose distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use different param_semantics_policy values ('warn' vs 'block') and contrasts with the brain/transaction path. It provides clear context for the default advisory behavior and when to enforce strictness, but doesn't explicitly state when to use this tool over other parameter-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_snapshot_sceneB
Capture a scene snapshot (structure + params; optionally visual).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional snapshot label. | |
| path | No | Root path to snapshot. | /project1 |
| include_visual | No | Include screenshot payload. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (mutation) and destructiveHint=false. The description confirms a capture operation but does not disclose key behaviors, such as whether a new snapshot is always created, if it overwrites existing snapshots with the same name, or what happens on repeated calls. Some behavioral context is missing beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the main action. It is information-dense without being verbose, though the parenthetical clarification could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's three parameters and presence of an output schema, the description provides the essential purpose but does not cover return value details (e.g., snapshot ID) or explain how the snapshot integrates with other snapshot tools. It is adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; each parameter (name, path, include_visual) is already described in the schema. The description's mention of 'structure + params; optionally visual' loosely correlates but does not add meaningful new semantics beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Capture' and resource 'scene snapshot,' and specifies the scope 'structure + params; optionally visual.' It effectively distinguishes the tool from sibling tools like td_list_snapshots, td_diff_snapshots, and td_restore_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks any guidance on when to use this tool versus alternatives, such as when to capture a snapshot vs. listing or restoring snapshots. No explicit context for usage is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_stop_monitor_visualBIdempotent
Stop a running visual-monitor job by its monitor id.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | TOP path being monitored. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotent and non-destructive behavior, but the description adds no extra context beyond the action. It does not clarify what happens if no job is running, if multiple jobs exist, or the effects of stopping (e.g., does it cancel ongoing work?). Contradiction with annotations is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single clear sentence with no unnecessary words. Efficiently conveys the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple (1 param, output schema exists), the description is minimal but leaves questions about return values, error conditions, and exact stopping behavior. Adequate but could be more helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter described. The tool description adds no additional parameter meaning beyond the schema; the mention of 'monitor id' might be misinterpreted as different from 'path'. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (stop) and resource (visual-monitor job). However, it mentions stopping 'by its monitor id' while the only parameter is 'path' described as 'TOP path being monitored', causing a slight inconsistency that could confuse the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 td_stream_top or td_monitor_visual. The description does not specify prerequisites, such as a job must be running, or mention any conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_stop_stream_topAIdempotent
Stop a running continuous TOP stream by its stream id.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | TOP path being streamed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent, non-destructive, and non-read-only behavior. The description adds little beyond that, lacking details like prerequisites (stream must be running) or postconditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, 10 words, front-loaded with key verb and resource. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple stop operation with one required parameter and an output schema, the description is minimally adequate but could mention preconditions or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'path' is described in the schema as 'TOP path being streamed'. The description adds no extra meaning, but schema coverage is 100%, so baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('stop'), the resource ('continuous TOP stream'), and the identifier ('stream id'). It is specific and distinct from siblings like 'td_stream_top'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when a stream is running and needs to be stopped, but provides no explicit guidance on when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_stream_topA
Start continuous TOP stream.
Default mode omits base64 frames to keep token usage low.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | Target stream frame rate. | |
| path | Yes | TOP path to stream continuously. | |
| quality | No | JPEG quality for stream frames. | |
| include_image | No | When false (default), streamed resource updates omit base64 image data to reduce token usage. Set true only when you explicitly want frame payloads in context. | |
| emit_unchanged | No | When false, identical consecutive frames are suppressed. | |
| confirm_high_token_mode | No | Must be true when include_image=true. This is an explicit acknowledgement that continuous image payloads can consume many tokens. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutable and open-world behavior. Description adds token-saving default mode but omits other traits like confirmation required for images.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences, front-loaded with purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema and 6 parameters, description is too minimal. Lacks lifecycle, error, or stream management details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% parameter description coverage. Description adds minimal value, only relating to include_image default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Start continuous TOP stream' with a specific verb and resource. It distinguishes from sibling 'td_stop_stream_top'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use versus alternatives. Only mentions default mode, not when-not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_subscribeBIdempotent
Subscribe to runtime TD events for a node.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | TD node path to monitor, e.g. '/project1/audio1'. | |
| params | No | Specific parameters to monitor. None means all tracked params. | |
| channels | No | Specific CHOP channels to monitor. None means all channels. | |
| threshold | No | Only emit events when delta exceeds this threshold. | |
| rate_limit | No | Minimum seconds between repeated events from same source. | |
| event_types | No | Event types: chop_change, par_change, cook_complete, node_error, timeline. Defaults to ['chop_change', 'par_change']. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only, idempotent, non-destructive, but description adds no behavioral context. No mention of subscription lifecycle, event delivery mechanism, or side effects like multiple subscriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no fluff. Efficiently conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite output schema existing, description omits critical context: subscription management, event push behavior, and return value. For a subscription tool with multiple parameters, more detail is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and contains good descriptions (including example path). Description adds minimal value beyond schema (only gives a path example). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'subscribe', resource 'runtime TD events', and target 'node'. It's specific and distinguishes from sibling tools like 'td_unsubscribe' and 'td_get_events'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (e.g., td_get_events, td_unsubscribe). Does not specify prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_sync_diagnoseARead-onlyIdempotent
Strict version/auth sync diagnostic without exposing secret material.
| Name | Required | Description | Default |
|---|---|---|---|
| check_remote | No | Reserved for compatibility; remote checks are not required. | |
| include_live | No | If true, probe the live TouchDesigner WebServer. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering safety. The description adds 'without exposing secret material,' which is a useful behavioral trait. However, it does not elaborate on what the diagnostic checks or consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 9 words, efficiently conveying the core purpose. It is front-loaded with the key action and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the strong annotations, full parameter coverage, and output schema, the description is mostly complete. It lacks a bit of context about the scope of diagnosis but is sufficient for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameters are well-documented in the input schema. The description adds no additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Strict version/auth sync diagnostic' with a specific verb ('diagnose') and resource ('sync'). It distinguishes from siblings like td_sync_status by emphasizing the diagnostic nature and the secrecy aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like td_sync_status. There is no explicit mention of context, prerequisites, 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.
td_sync_statusBRead-onlyIdempotent
Report whether the local server, TD component, packages, and public surfaces are in sync.
| Name | Required | Description | Default |
|---|---|---|---|
| check_remote | No | If true, also check GitHub release, npm latest, and GitHub repository description. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds the scope of what is checked (local vs remote) but does not disclose output format or behavior beyond that, which is acceptable given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, efficiently conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only status tool with full schema coverage and annotations, the description is adequate but does not explain the return format or the meaning of 'in sync' in detail. The presence of an output schema (not seen) may compensate, but based on the description alone, completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter description in the schema provides good detail. The tool description does not add new meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reports sync status for local server, TD component, packages, and public surfaces. It uses a specific verb ('report') and resource, but does not explicitly differentiate from sibling tool 'td_sync_diagnose', which may be related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool versus alternatives, nor does it explain the optional parameter's impact on usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_tdresources_inspectARead-onlyIdempotent
Inspect TDResources available in the TouchDesigner installation: fonts, icons, defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Category: fonts, icons, defaults, or None for all |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds value by specifying what is inspected (fonts, icons, defaults), which aligns with annotations and provides context beyond structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence no wasted words, front-loaded with purpose and examples. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only inspection tool with full annotations and parameter coverage, the description is sufficient. No additional information about return values is needed given the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and includes the same examples (fonts, icons, defaults) as the tool description. The description adds no additional meaning beyond what the input schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Inspect' and resource 'TDResources' with specific examples (fonts, icons, defaults). It distinguishes from siblings by focusing on resource inspection rather than other operations like lookup, search, or creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 siblings. There are many sibling tools (e.g., td_lookup_snippets, td_get_popx_operator) but no mention of contexts where td_tdresources_inspect is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_threading_statusARead-onlyIdempotent
Inspect the threading status inside TouchDesigner: active threads, cook rate.
Requires 'full' exec mode — uses threading module which is not in the standard allowlist.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and not destructive. The description adds valuable behavioral context: the need for full exec mode and the non-standard threading module, which implies potential permission limitations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every word adds value. No unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, annotations covering safety, and a clear description of purpose and prerequisites, the description is fully complete for an agent to understand when and how to use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema provides full coverage. The description adds no parameter information, which is acceptable since no parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects threading status (active threads, cook rate) using a specific verb and resource. However, it does not explicitly differentiate from siblings like td_cooking_info, which could also inspect cooking-related metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it requires 'full' exec mode and mentions the threading module is not in the standard allowlist, giving a prerequisite. However, it does not specify when to use this tool versus alternatives 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.
td_timelineARead-onlyIdempotent
Read current timeline state: frame, seconds, FPS, playing. Returns a JSON envelope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states it returns a JSON envelope with specific fields, adding value beyond annotations (which already indicate it is read-only, idempotent, and non-destructive). It does not contradict annotations and provides concrete return structure info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It front-loads the action and resource, then lists the fields. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with no parameters and an output schema present, the description adequately covers the purpose and return format. It might optionally mention error conditions or prerequisites (e.g., timeline must exist), but this is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the baseline score is 4 per instructions. The description adds no parameter detail (unnecessary) but lists the fields returned in the output, which is helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Read' and identifies the resource 'current timeline state', listing specific fields (frame, seconds, FPS, playing). This clearly distinguishes it from sibling tools like td_timeline_set, which would write to the timeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for reading timeline state, but does not explicitly state when to use this tool versus alternatives (e.g., td_timeline_set for writing). No exclusions or contextual guidance beyond the verb 'Read'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_timeline_setAIdempotent
Control timeline playback: play/pause, jump to frame, set FPS.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | Set cook rate / FPS | |
| frame | No | Frame number to jump to (when action='frame') | |
| action | No | Timeline action: 'play', 'pause', or 'frame' (set specific frame) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (modifies state) and idempotentHint=true (safe to repeat). The description's 'Control' aligns with mutation. No contradictions, but it adds no behavioral context beyond what annotations provide, such as whether changes are reversible or persistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 8 words, perfectly front-loaded, and contains no fluff. Every word is necessary and contributes to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and moderate complexity, the description covers the core functionality adequately. It could mention that actions are passed via the 'action' parameter, but the schema already does that. Overall, sufficient for a simple control tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description. The description adds only high-level context (play/pause, frame, FPS) that largely repeats the schema. It does not provide additional meaning or usage tips beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool controls timeline playback with specific actions: play/pause, jump to frame, set FPS. It names the resource (timeline playback) and the verb (control), making it easy to understand. However, it does not explicitly differentiate from the sibling tool 'td_timeline', which might serve a related but distinct purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage scenarios (play/pause, jump, set FPS) but provides no explicit guidance on when to use this tool versus alternatives, or when not to use it. It assumes the agent knows the context of timeline playback control.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_tool_batchA
Dispatch up to 8 tool calls in one model roundtrip.
Each sub-call's result is returned in a structured array — per-call failures don't abort siblings. Use this for read-only sweeps ("inspect 5 things at once") to save model-to-server-to-model latency.
Hard constraints:
Maximum 8 sub-calls per invocation.
Nested
td_tool_batchcalls are rejected per-sub-call (fork-bomb guard).Sub-calls execute sequentially (TD's Python API is not thread-safe).
Returns: {"ok": True, "count": int, "results": [ {"tool": str, "ok": bool, "result": dict|None, "error": str|None, "elapsed_ms": int}, ... ]}
``error`` is always ``str | None`` — dict errors from
``format_tool_error`` are normalised to their ``message`` field.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | List of {tool: str, args: dict} dicts. Max 8 sub-calls. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors beyond annotations: per-call failures don't abort siblings, sequential execution due to API non-thread-safety, and nesting rejection. Annotations provide no contradictory signals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet constraints and a clear return format. Every sentence adds value; no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully specifies the return structure including error handling. Covers all important aspects of a complex batch tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with description of the 'calls' field. Description adds no new semantic meaning beyond what the schema already provides; baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Dispatch up to 8 tool calls in one model roundtrip' and explains the benefit of latency saving. It distinguishes this meta-tool from specific operational siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly suggests use for 'read-only sweeps' to save latency, and lists hard constraints (max 8 sub-calls, no nesting). Could be more explicit about when not to use, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_transaction_applyApply TD TransactionADestructive
Low-level executor: use this when you already hold a ready PatchPlan or BrainPlan and want to drive raw preflight, snapshot, validation, dry-run, max-op, and rollback controls yourself. For the normal BrainPlan build flow prefer td_brain_execute, which wraps this layer and adds grounding-aware concept profiles and optional local learning. Do not use the legacy td_plan_patch / td_patch_* pipeline for new builds.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | PatchPlan dict or BrainPlan dict. | |
| options | No | TransactionOptions override. Missing fields use safe defaults. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and openWorldHint=true. The description adds value by listing specific controls (preflight, snapshot, etc.), but doesn't detail side effects or state changes beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given complexity (nested objects, output schema exists, annotations present), the description covers purpose, usage, alternatives, and capabilities, making it complete for an agent to decide.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; parameter descriptions are minimal but sufficient. The tool description does not add extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a low-level executor for PatchPlan or BrainPlan, specifying actions like preflight, snapshot, validation, etc., and distinguishes it from td_brain_execute and legacy pipelines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (when holding a ready plan and wanting raw controls) and when not to use (prefer td_brain_execute for normal flow, avoid legacy pipeline), providing clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_unsubscribeAIdempotent
Remove a runtime-event subscription for a node path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | TD node path to stop monitoring. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false, which the description does not contradict. However, the description adds no further context about side effects, prerequisites (e.g., subscription must exist), or error handling, leaving gaps in behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no redundant words. Every word serves the purpose of describing the tool's action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple removal tool with one parameter, the description is adequate but lacks information about return values or success/failure states. Since an output schema exists (but is not shown), the description should ideally clarify what the agent can expect after execution.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'path' parameter, with a clear description in the schema. The tool description does not add extra meaning beyond what the schema already provides, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Remove' and resource 'runtime-event subscription' with scope 'for a node path', making the tool's function immediately clear and distinct from sibling tools like td_subscribe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as td_subscribe or td_get_events. Usage is implied by the action of removing a subscription, but no context is provided for prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_validate_recipeValidate TD RecipeARead-only
(Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Read-only recipe compatibility check. Use td_brain_plan for new grounded visual-programming requests that should become a BrainPlan.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | 'project' or 'global' | project |
| recipe | No | Inline recipe dict to validate | |
| recipe_id | No | Recipe ID to validate |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Read-only recipe compatibility check,' which matches the annotations (readOnlyHint: true, destructiveHint: false). It additionally discloses the tool's legacy status and pending removal, adding useful context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the critical legacy warning and then stating the purpose concisely. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool is legacy and being replaced, the description covers the essential points. It might benefit from a brief note on what 'recipe compatibility check' means, but with the output schema available, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters, so the schema already documents parameter meaning. The description adds no further parameter-level detail, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a read-only recipe compatibility check and explicitly distinguishes it from the preferred td_brain_plan tool, calling out its legacy status and upcoming removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to prefer td_brain_plan for new requests, which is a clear usage guideline. It also indicates the tool is legacy, but does not elaborate on exact conditions or alternatives beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Many tools have overlapping purposes, especially in the areas of frame capture (td_screenshot, td_capture_frame, td_capture_and_analyze) and knowledge/memory (td_knowledge_recall vs td_memory_recall). The presence of legacy tools (td_patch_*, td_plan_patch) alongside their modern counterparts (td_brain_*) creates ambiguity, even though descriptions deprecate the old ones. Agents may struggle to select the correct tool among similar options.
Most tools use a 'td_verb_noun' pattern (e.g., td_get_release_delta, td_create_node). However, there are inconsistencies: some use noun_verb (td_plan_patch) vs verb_noun (td_patch_plan), and a few use different forms (td_cockpit_render, td_exec_python). The convention is mostly consistent but has notable exceptions that break the pattern.
114 tools is an extremely large number for an MCP server. While TouchDesigner is complex, many tools are redundant (legacy vs modern) or very narrow in scope (e.g., td_logger_status, td_tdresources_inspect). The set feels bloated and could be streamlined. A well-scoped set for this domain would likely be 15-30 tools.
The server covers a wide range of TouchDesigner operations: node creation/editing, parameter management, patching (both legacy and brain), knowledge/memory, monitoring, snapshots, scripting, and more. Major lifecycle operations are present. Minor gaps exist (e.g., some advanced node types or deeper introspection), but the surface is largely complete for typical workflows. The legacy tools are deprecated but still functional, adding clutter rather than gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseBqualityAmaintenanceA Model Context Protocol server that enables AI agents to control and operate TouchDesigner projects through creation, modification, and querying of nodes and project structures.14664514MIT
- AlicenseNot gradedqualityDmaintenanceHigh-performance MCP server that enables AI assistants to control TouchDesigner live via WebSocket, providing 37 tools for nodes, parameters, scripting, and more.5MIT
- AlicenseBqualityAmaintenancetdmcp is an open-source (MIT) Model Context Protocol server for TouchDesigner. You describe a visual in plain language and your AI assistant builds the real node network inside TouchDesigner, checks it for errors, and shows a preview — it ships an embedded operator knowledge base so the model uses real operators instead of guessing. TypeScript codebase, runs locally.210025335MIT
- AlicenseAqualityDmaintenanceMCP server for controlling TouchDesigner from AI coding agents like Claude Code and Codex CLI, enabling operator manipulation, parameter control, and screenshot capture.12MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/dreamrec/TDPilot'
If you have feedback or need assistance with the MCP directory API, please join our Discord server