touchdesigner-mcp-server
Version:
MCP server for TouchDesigner
515 lines (514 loc) • 16.4 kB
TypeScript
/**
* Generated by orval v8.19.0 🍺
* Do not edit manually.
* TouchDesigner API
* OpenAPI schema for generating TouchDesigner API client code
* OpenAPI spec version: 1.5.0
*/
import { customInstance } from '../../api/customInstance.js';
import type { BodyType } from '../../api/customInstance.js';
export type TdNodeProperties = {
[key: string]: unknown;
};
/**
* Information about a TouchDesigner node
*/
export interface TdNode {
id: number;
opType: string;
name: string;
path: string;
properties: TdNodeProperties;
}
export type TdNodeFamilyType = typeof TdNodeFamilyType[keyof typeof TdNodeFamilyType];
export declare const TdNodeFamilyType: {
readonly COMP: "COMP";
readonly CHOP: "CHOP";
readonly TOP: "TOP";
readonly SOP: "SOP";
readonly DAT: "DAT";
readonly MAT: "MAT";
readonly CUSTOM: "CUSTOM";
};
/**
* Single node error entry
*/
export interface TdNodeError {
/** Absolute operator path that reported the error */
nodePath: string;
/** Name of the operator */
nodeName: string;
/** TouchDesigner operator type */
opType: string;
/** Error message reported by TouchDesigner */
message: string;
}
/**
* Aggregated node error report
*/
export interface TdNodeErrorReport {
/** Path that was inspected for errors */
nodePath: string;
/** Name of the inspected node */
nodeName: string;
/** Operator type of the inspected node */
opType: string;
/** Number of errors that were discovered */
errorCount: number;
/** Convenience flag indicating if any errors were found */
hasErrors: boolean;
/** Collection of raw node errors */
errors: TdNodeError[];
}
/**
* Type of the Python entity
*/
export type TdPythonClassDetailsType = typeof TdPythonClassDetailsType[keyof typeof TdPythonClassDetailsType];
export declare const TdPythonClassDetailsType: {
readonly class: "class";
readonly module: "module";
readonly function: "function";
readonly object: "object";
};
/**
* Information about a Python method
*/
export interface TdPythonMethodInfo {
/** Method name */
name: string;
/** Method signature including parameters */
signature?: string;
/** Description of the method */
description?: string;
}
/**
* Current value of the property (if serializable)
* @nullable
*/
export type TdPythonPropertyInfoValue = {
[key: string]: unknown;
} | null;
/**
* Information about a Python property
*/
export interface TdPythonPropertyInfo {
/** Property name */
name: string;
/** Type of the property */
type: string;
/**
* Current value of the property (if serializable)
* @nullable
*/
value?: TdPythonPropertyInfoValue;
}
/**
* Detailed information about a Python class or module
*/
export interface TdPythonClassDetails {
/** Name of the class or module */
name: string;
/** Type of the Python entity */
type: TdPythonClassDetailsType;
/** Description of the class or module */
description?: string;
/** List of methods available in the class or module */
methods: TdPythonMethodInfo[];
/** List of properties available in the class or module */
properties: TdPythonPropertyInfo[];
}
/**
* Type of the Python entity
*/
export type TdPythonClassInfoType = typeof TdPythonClassInfoType[keyof typeof TdPythonClassInfoType];
export declare const TdPythonClassInfoType: {
readonly class: "class";
readonly module: "module";
readonly function: "function";
readonly object: "object";
};
/**
* Information about a Python class or module available in TouchDesigner
*/
export interface TdPythonClassInfo {
/** Name of the class or module */
name: string;
/** Type of the Python entity */
type: TdPythonClassInfoType;
/** Description of the class or module */
description?: string;
}
/**
* Raw Python help() output for a TouchDesigner module or class
*/
export interface ModuleHelp {
/** Normalized module/class name the help text was generated for */
moduleName: string;
/** Captured output from Python's help() function */
helpText: string;
}
export type GetNodesParams = {
/**
* e.g., "/project1"
*/
parentPath: string;
/**
* e.g., "null*"
*/
pattern?: string;
/**
* Include node properties in response
*/
includeProperties?: boolean;
};
/**
* @nullable
*/
export type GetNodes200Data = {
/** Result of the execution */
nodes?: TdNode[];
} | null;
export type GetNodes200 = {
/** Whether the operation was successful */
success: boolean;
/** @nullable */
data: GetNodes200Data;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
export type CreateNodeBody = {
/** Path to the parent node (e.g., /project1) */
parentPath: string;
/** Type of the node to create (e.g., textTop) */
nodeType: string;
/** Name of the new node (optional) */
nodeName?: string;
};
/**
* @nullable
*/
export type CreateNode200Data = {
/** Result of the execution */
result?: TdNode;
} | null;
export type CreateNode200 = {
/** Whether the operation was successful */
success: boolean;
/** @nullable */
data: CreateNode200Data;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
export type DeleteNodeParams = {
/**
* e.g., "/project1/geo1"
*/
nodePath: string;
};
/**
* @nullable
*/
export type DeleteNode200Data = {
/** Whether the node was successfully deleted */
deleted?: boolean;
/** Information about the deleted node */
node?: TdNode;
} | null;
export type DeleteNode200 = {
/** Whether the operation was successful */
success: boolean;
/** @nullable */
data: DeleteNode200Data;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
export type GetNodeDetailParams = {
/**
* e.g., "/project1/textTOP"
*/
nodePath: string;
};
export type GetNodeDetail200 = {
/** Whether the operation was successful */
success: boolean;
data: TdNode | null;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
export type UpdateNodeBodyProperties = {
[key: string]: unknown;
};
export type UpdateNodeBody = {
/** Path to the node (e.g., /project1/null1) */
nodePath: string;
properties: UpdateNodeBodyProperties;
};
export type UpdateNode200DataFailedItem = {
/** Name of the property that failed to update */
name?: string;
/** Reason for the failure */
reason?: string;
};
/**
* @nullable
*/
export type UpdateNode200Data = {
/** Path of the node that was updated */
path?: string;
/** List of property names that were successfully updated */
updated?: string[];
/** List of properties that failed to update */
failed?: UpdateNode200DataFailedItem[];
/** Summary message about the update operation */
message?: string;
} | null;
export type UpdateNode200 = {
/** Whether the update operation was successful */
success: boolean;
/** @nullable */
data: UpdateNode200Data;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
export type GetNodeErrorsParams = {
/**
* Absolute path to the node to inspect. e.g., "/project1/text1"
*/
nodePath: string;
};
export type GetNodeErrors200 = {
/** Whether the operation was successful */
success: boolean;
data: TdNodeErrorReport;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
/**
* @nullable
*/
export type GetTdPythonClasses200Data = {
classes?: TdPythonClassInfo[];
} | null;
export type GetTdPythonClasses200 = {
/** Whether the operation was successful */
success: boolean;
/** @nullable */
data: GetTdPythonClasses200Data;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
export type GetTdPythonClassDetails200 = {
/** Whether the operation was successful */
success: boolean;
data: TdPythonClassDetails | null;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
export type GetModuleHelpParams = {
/**
* Module or class name (e.g., "noiseCHOP", "td.noiseCHOP", "tdu").
*/
moduleName: string;
};
export type GetModuleHelp200 = {
/** Whether the operation was successful */
success: boolean;
data: ModuleHelp | null;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
/**
* Keyword arguments for the method call
*/
export type ExecNodeMethodBodyKwargs = {
[key: string]: unknown;
};
export type ExecNodeMethodBody = {
/** Path to the node (e.g., /project1/null1) */
nodePath: string;
/** Name of the method to call */
method: string;
/** List of arguments for the method call */
args?: (string | number | boolean)[];
/** Keyword arguments for the method call */
kwargs?: ExecNodeMethodBodyKwargs;
};
/**
* @nullable
*/
export type ExecNodeMethod200Data = {
/** Result of the method call. Can be any type (equivalent to unknown in TypeScript). */
result: unknown;
} | null;
export type ExecNodeMethod200 = {
/** Whether the operation was successful */
success: boolean;
/** @nullable */
data: ExecNodeMethod200Data;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
export type ExecPythonScriptBody = {
/** e.g., "op('/project1/text_over_image').outputConnectors[0].connect(op('/project1/out1'))" */
script: string;
};
/**
* Result of the executed script
*/
export type ExecPythonScript200DataResult = {
/** Return value of the executed script, can be any serializable value */
value?: unknown;
};
/**
* @nullable
*/
export type ExecPythonScript200Data = {
/** Result of the executed script */
result: ExecPythonScript200DataResult;
/** Captured standard output (e.g. print statements) emitted while the script ran */
stdout?: string;
/** Captured standard error output emitted while the script ran */
stderr?: string;
} | null;
export type ExecPythonScript200 = {
/** Whether the operation was successful */
success: boolean;
/** @nullable */
data: ExecPythonScript200Data;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
/**
* @nullable
*/
export type GetTdInfo200Data = {
/** Version of the TouchDesigner MCP API server */
mcpApiVersion: string;
/** Operating system name */
osName: string;
/** Operating system version */
osVersion: string;
/** Server name (typically "TouchDesigner") */
server: string;
/** TouchDesigner version number */
version: string;
} | null;
export type GetTdInfo200 = {
/** Whether the operation was successful */
success: boolean;
/** @nullable */
data: GetTdInfo200Data;
/**
* Error message if the operation was not successful
* @nullable
*/
error: string | null;
};
type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
/**
* @summary Get nodes in the path
*/
export declare const getNodes: (params: GetNodesParams, options?: SecondParameter<typeof customInstance<GetNodes200>>) => Promise<GetNodes200>;
/**
* @summary Create a new node
*/
export declare const createNode: (createNodeBody: BodyType<CreateNodeBody>, options?: SecondParameter<typeof customInstance<CreateNode200>>) => Promise<CreateNode200>;
/**
* @summary Delete an existing node
*/
export declare const deleteNode: (params: DeleteNodeParams, options?: SecondParameter<typeof customInstance<DeleteNode200>>) => Promise<DeleteNode200>;
/**
* Retrieves detailed information about a specific node including its properties, parameters and connections
* @summary Get node detail
*/
export declare const getNodeDetail: (params: GetNodeDetailParams, options?: SecondParameter<typeof customInstance<GetNodeDetail200>>) => Promise<GetNodeDetail200>;
/**
* @summary Update node properties
*/
export declare const updateNode: (updateNodeBody?: BodyType<UpdateNodeBody>, options?: SecondParameter<typeof customInstance<UpdateNode200>>) => Promise<UpdateNode200>;
/**
* Collects TouchDesigner error messages for a node and its children
* @summary Get node errors
*/
export declare const getNodeErrors: (params: GetNodeErrorsParams, options?: SecondParameter<typeof customInstance<GetNodeErrors200>>) => Promise<GetNodeErrors200>;
/**
* Returns a list of Python classes, modules, and functions available in TouchDesigner
* @summary Get a list of Python classes and modules
*/
export declare const getTdPythonClasses: (options?: SecondParameter<typeof customInstance<GetTdPythonClasses200>>) => Promise<GetTdPythonClasses200>;
/**
* Returns detailed information about a specific Python class, module, or function including methods, properties, and documentation
* @summary Get details of a specific Python class or module
*/
export declare const getTdPythonClassDetails: (className: string, options?: SecondParameter<typeof customInstance<GetTdPythonClassDetails200>>) => Promise<GetTdPythonClassDetails200>;
/**
* Retrieve Python help() documentation for TouchDesigner modules, classes, or utilities like tdu.
* @summary Get module/class Python help documentation
*/
export declare const getModuleHelp: (params: GetModuleHelpParams, options?: SecondParameter<typeof customInstance<GetModuleHelp200>>) => Promise<GetModuleHelp200>;
/**
* Call a method on the node at the specified path (e.g., /project1).
* This allows operations equivalent to TouchDesigner's Python API such as
* `parent_comp = op('/project1')` and `parent_comp.create('textTOP', 'myText')`.
* @summary Call a method of the specified node
*/
export declare const execNodeMethod: (execNodeMethodBody: BodyType<ExecNodeMethodBody>, options?: SecondParameter<typeof customInstance<ExecNodeMethod200>>) => Promise<ExecNodeMethod200>;
/**
* Execute a Python script directly in TouchDesigner.
* Multiline scripts and scripts containing comments are supported.
* The script can optionally set a `result` variable to explicitly return a value.
* This endpoint allows you to interact with TouchDesigner nodes programmatically.
* @summary Execute python code on the server
*/
export declare const execPythonScript: (execPythonScriptBody: BodyType<ExecPythonScriptBody>, options?: SecondParameter<typeof customInstance<ExecPythonScript200>>) => Promise<ExecPythonScript200>;
/**
* Returns information about the TouchDesigner
* @summary Get TouchDesigner information
*/
export declare const getTdInfo: (options?: SecondParameter<typeof customInstance<GetTdInfo200>>) => Promise<GetTdInfo200>;
export type GetNodesResult = NonNullable<Awaited<ReturnType<typeof getNodes>>>;
export type CreateNodeResult = NonNullable<Awaited<ReturnType<typeof createNode>>>;
export type DeleteNodeResult = NonNullable<Awaited<ReturnType<typeof deleteNode>>>;
export type GetNodeDetailResult = NonNullable<Awaited<ReturnType<typeof getNodeDetail>>>;
export type UpdateNodeResult = NonNullable<Awaited<ReturnType<typeof updateNode>>>;
export type GetNodeErrorsResult = NonNullable<Awaited<ReturnType<typeof getNodeErrors>>>;
export type GetTdPythonClassesResult = NonNullable<Awaited<ReturnType<typeof getTdPythonClasses>>>;
export type GetTdPythonClassDetailsResult = NonNullable<Awaited<ReturnType<typeof getTdPythonClassDetails>>>;
export type GetModuleHelpResult = NonNullable<Awaited<ReturnType<typeof getModuleHelp>>>;
export type ExecNodeMethodResult = NonNullable<Awaited<ReturnType<typeof execNodeMethod>>>;
export type ExecPythonScriptResult = NonNullable<Awaited<ReturnType<typeof execPythonScript>>>;
export type GetTdInfoResult = NonNullable<Awaited<ReturnType<typeof getTdInfo>>>;
export {};