Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add 8beeeaaat/touchdesigner-mcp --skill python-apigit clone --depth 1 https://github.com/8beeeaaat/touchdesigner-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/8beeeaaat/touchdesigner-mcp/python-api)<a href="https://agentmods.dev/skills/8beeeaaat/touchdesigner-mcp/python-api"><img src="https://agentmods.dev/badge/skills/8beeeaaat/touchdesigner-mcp/python-api/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/8beeeaaat/touchdesigner-mcp/python-api"><img src="https://agentmods.dev/badge/skills/8beeeaaat/touchdesigner-mcp/python-api.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00117 | $0.01767 |
| Opus 5.5 | $0.00047 | $0.00707 |
| Sonnet 5.5 | $0.00023 | $0.00353 |
| Haiku 4.5 | $0.00012 | $0.00177 |
Grade A, and why
python-api scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 26d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 68 lines — stays where its author put it; the contents beside it link to each section on GitHub.
TD Python API Discipline
Core rule
Never guess a TouchDesigner Python API signature. Treat every method name, attribute name, and parameter name on a td class as unverified until it has been looked up or probed in the live session. Do not pattern-match from general Python knowledge, from other creative-coding frameworks, or from a plausible-sounding name.
This rule exists for a concrete reason: the td module is large (hundreds of operator classes, each with its own methods and parameters), it changes across TouchDesigner versions (a method present in one build can be renamed, removed, or gain new required arguments in another), and it is thinly and unevenly represented in general-purpose training data compared to mainstream libraries. A guess that "looks right" is exactly the failure mode to guard against, because it will often be subtly wrong — a slightly incorrect parameter name, a method that exists on OP but not on the specific operator subclass in question, or a signature from a different TD version. Verify before writing any non-trivial script, and especially before writing anything that mutates the project (creating nodes, changing parameters, deleting nodes, running exports).
Trivial, well-established usage (see "Safe core APIs" below) does not need a fresh lookup every time. Everything else does.
The lookup ladder
Work through these steps in order, stopping as soon as the needed information is confirmed. Do not skip straight to writing a full script when the API surface involved is unfamiliar.
- Find the class. Use
get_td_classesto search the catalogue of TouchDesigner Python classes and modules. Use this when the exact class name is unknown — for example, unsure whether the relevant class istextTOP,topOP, or something else entirely. - Inspect the class. Use
get_td_class_detailswith the resolved class name to retrieve its methods and members. Read the returned signatures carefully — argument names, defaults, and return types matter. This is the step that catches "that method doesn't take apathargument" or "this is a read-only property, not a callable." - Read module-level docs. Use
get_td_module_helpto pull the Pythonhelp()text for a module or class when behavior, not just signature, is in question — for example, how a family of related methods interact, or what a parameter's accepted value range is. - Probe interactively. Before committing to a full script, run a tiny snippet through
execute_python_scriptto check reality directly against a live node:print(dir(op('/project1/text1')))to list everything available,print(type(op('/project1/text1')))to confirm the resolved class, orprint(repr(op('/project1/text1').par.text.eval()))to inspect an actual value. This step catches version drift and instance-specific quirks that static docs cannot.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 26d ago First seen · 68 lines · 117 tokens per session scan A 33b3b6e9a0ad
python-api is a skill published in the GitHub repository 8beeeaaat/touchdesigner-mcp (586 stars, last pushed 5d ago), licensed MIT. It adds 117 tokens to every session and 1,767 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-21.
Other skills, from other repositories
idapython
IDA Pro Python scripting for reverse engineering. Use when writing IDAPython scripts, analyzing binaries, working with IDA's API for disassembly, decompilation (Hex-Rays), type systems, cross-references, functions, segments, or any IDA database manipulation. Covers ida modules (50+), idautils iterators, and common…
operator-gotchas
MUST READ before wiring a TOP, CHOP, MAT, DAT, light, camera or instancing chain you have not built before: the parameter names TD abbreviates, the defaults that silently do the wrong thing, and the input-order rules, per operator, verified on TD 2025.33230. Pair with describeoptype.
debug-operator
TRIGGER when operator errors appear or user reports broken behavior. Systematic diagnosis workflow.
python-explore
Use when understanding, navigating, debugging, refactoring, or extending Python code with the pyeye MCP server. Triggers on "how does X work", "what does", "why is X doing", "what calls/imports/subclasses this", "add feature", "implement", "refactor", "trace", "debug", "extend". Does NOT trigger for explicit "show…
python-code-quality
Code quality checks, linting, formatting, and type checking commands for the Agent Framework Python codebase. Use this when running checks, fixing lint errors, or troubleshooting CI failures.
plugin-architecture-patterns
Design, implement, or diagnose Xberg plugin traits, typed registries, priority collisions, lifecycle, native extractors, and Alef-generated Python plugin bridges. Load for plugin-system work, not ordinary extractor parsing.