Project discovery and mutation through MCP. Outside clients have no implicit T3
project. read/2, create/2, update/2, delete/2 and clone/2 take T3's
original string-keyed maps. Permission and availability are enforced by T3.
Summary
Functions
Clone a repository (destinationPath new or empty). Register after with t3_project_create, with the same environmentId.
Register a project folder. createWorkspaceRootIfMissing creates it; a registered folder is rejected. No workspaceRoot: makes a git repo from title with README, icon, first commit (commitError on failure; project still exists). Clone first with t3_project_clone if needed.
Delete one project. Nonempty needs force: true. Folder on disk stays.
List projects. Pages can shift.
Read one project: workspace and saved scripts.
Update one project's settings. Omitted fields are unchanged.
Functions
@spec clone(T3.Client.t(), map()) :: {:ok, map()} | {:error, T3.Error.t()}
Clone a repository (destinationPath new or empty). Register after with t3_project_create, with the same environmentId.
Availability is server-, permission-, and context-dependent; outside clients must supply explicit project/thread targets when required.
@spec create(T3.Client.t(), map()) :: {:ok, map()} | {:error, T3.Error.t()}
Register a project folder. createWorkspaceRootIfMissing creates it; a registered folder is rejected. No workspaceRoot: makes a git repo from title with README, icon, first commit (commitError on failure; project still exists). Clone first with t3_project_clone if needed.
Availability is server-, permission-, and context-dependent; outside clients must supply explicit project/thread targets when required.
@spec delete(T3.Client.t(), map()) :: {:ok, map()} | {:error, T3.Error.t()}
Delete one project. Nonempty needs force: true. Folder on disk stays.
Availability is server-, permission-, and context-dependent; outside clients must supply explicit project/thread targets when required.
@spec list(T3.Client.t(), map()) :: {:ok, map()} | {:error, T3.Error.t()}
List projects. Pages can shift.
Availability is server-, permission-, and context-dependent; outside clients must supply explicit project/thread targets when required.
@spec read(T3.Client.t(), map()) :: {:ok, map()} | {:error, T3.Error.t()}
Read one project: workspace and saved scripts.
Availability is server-, permission-, and context-dependent; outside clients must supply explicit project/thread targets when required.
@spec update(T3.Client.t(), map()) :: {:ok, map()} | {:error, T3.Error.t()}
Update one project's settings. Omitted fields are unchanged.
Availability is server-, permission-, and context-dependent; outside clients must supply explicit project/thread targets when required.