Skip to main content
Glama

t3-mcp

Host-independent MCP connector for directly pairing T3 Code environments. It does not require T3 Connect, a host-specific bot setup, or a local turn CLI.

Install

Node.js 20 or newer is required.

npm install -g t3-mcp
t3-mcp

The process speaks MCP over stdio. A generic host configuration is:

{
  "mcpServers": {
    "t3-mcp": {
      "command": "t3-mcp",
      "args": [],
      "env": {
        "T3_MCP_STATE_DIR": "/absolute/path/to/t3-mcp-state"
      }
    }
  }
}

T3_MCP_STATE_DIR is optional. Omit it to use the platform state directory outside the repository. A host that does not use globally installed commands can use "command": "npx" with "args": ["--yes", "t3-mcp"].

The package contains exactly one skill, t3-run-turn, at skills/t3-run-turn/SKILL.md. It is host-neutral and uses MCP tools rather than shell commands.

Related MCP server: Web64 MCP Bridge

Workflow

  1. Pair directly with an environment using add_environment and either a pairingUrl or an endpoint plus grant. A pairing URL may carry its grant in a ?token=... query or #token=... fragment. T3 Connect is not required.

  2. Call list_environments, select an explicit environment id, then call list_projects with that id. Project and thread identifiers are scoped to the selected environment.

  3. Use start_turn with environmentId, projectId, and prompt for a new thread. Use continue_turn with environmentId, threadId, and prompt for a new turn in an existing thread. A continuation never forks or silently queues work.

  4. Observe with get_thread. History is bounded to 20 turns by default and 100 at most. When history.hasMore or history.truncated is true, pass history.nextCursor as beforeCursor to retrieve an older page instead of requesting unbounded history.

  5. If a thread reports approval_required or input_required, resolve it in T3 Code and call get_thread again. This connector does not approve work or submit input on the user's behalf.

  6. If start_turn or continue_turn returns unknown, do not retry immediately. Inspect the referenced thread with get_thread first; only then decide whether a retry is safe. Mutation requests are never automatically replayed.

After adoption, normal turns use these MCP tools. A local turn CLI, if one is available in a host, is an optional debugging utility; this package never invokes t3-turn. Optional Connect support is not part of this release chain.

Tools

  • add_environment: pairingUrl?, endpoint?, grant?, label?, environmentId?.

  • list_environments: no arguments.

  • list_projects: environmentId.

  • start_turn: environmentId, projectId, prompt, and optional modelSelection.

  • continue_turn: environmentId, threadId, prompt.

  • get_thread: environmentId, threadId, and optional bounded turnLimit/beforeCursor.

Pairing URLs use the upstream ?token=... or #token=... form. The response never includes the grant, access token, authenticated URL, or raw upstream error body.

Mutation acknowledgements are not replayed. A partial result keeps the created thread reference, and an ambiguous transport result is unknown so the caller can inspect the thread before retrying.

Security

  • HTTPS is required except for loopback endpoints.

  • URL credentials and arbitrary query parameters are rejected. A pairing URL query may contain only token, and the connector removes it before making requests. Endpoint URLs with an explicit grant remain query-free.

  • Redirects are rejected, so credentials are never forwarded to another origin.

  • The registration file is outside the repository, owner-only, and atomically replaced.

  • A failed re-pair leaves the existing registration unchanged.

Supported contract

See docs/compatibility.md for the upstream version and the exact descriptor, token exchange, scopes, and session checks used by this package.

Automated compatibility coverage runs an MCP client against the connector process and controlled HTTP environments implementing the supported direct-pairing contract. No live direct-pairing smoke check was run for this release because this workspace has no operator-provided environment endpoint or grant; the controlled checks must not be read as a claim that a live T3 deployment was exercised.

Available Tools

6 tools
add_environmentC

Pair a T3 Code environment directly and save its scoped session for future MCP requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
grantNo
labelNo
endpointNo
pairingUrlNo
environmentIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
environmentNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations provide only generic hints (readOnly, idempotent, destructive all false). The description discloses the key behavior: pairing and persisting a scoped session, which is a meaningful side effect. However, it does not address permissions, duplicate-pairing behavior, or whether an existing session gets overwritten.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler, and it front-loads the main action. Qualifiers like 'directly' and 'scoped session' add useful context, though 'T3 Code' may be jargon to some agents.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With five parameters, zero required parameters, and zero schema descriptions, the tool needs more invocation context than this. The description covers the why but not the how; an agent would struggle to construct a valid call. The presence of an output schema helps with return values, not input construction.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries full responsibility for explaining the five parameters—grant, label, endpoint, pairingUrl, and environmentId—but it explains none of them. The description gives high-level intent but no guidance on how to populate the arguments or which combinations are valid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action—'Pair a T3 Code environment'—and a clear outcome: saving its scoped session for future MCP requests. It is distinguishable from sibling tools like list_environments, start_turn, and continue_turn, though 'directly' is somewhat ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for future MCP requests' implies this should happen before using other tools, but there is no explicit when-to-use guidance, no prerequisites, and no mention of when to prefer add_environment over related tools. An agent is left to infer the intended workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

continue_turnB

Submit a new turn to an explicitly selected existing thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes
threadIdYes
environmentIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
continuationNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already convey non-readonly, non-idempotent behavior, and the description adds the context that the operation targets an existing thread and creates a new turn. This is useful but does not disclose additional side effects, failure conditions, or requirements 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word contributes to the core operation and target context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple tool, and the output schema reduces the need to document return values. However, with 0% parameter coverage and no guidance distinguishing it from start_turn, an agent is left to infer the roles of environmentId and the exact relationship to sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the undocumented parameters. It loosely implies prompt is the new turn content and threadId is the selected thread, but environmentId is left entirely unexplained and no parameter is explicitly mapped.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Submit a new turn' to an 'existing thread.' It clearly indicates the tool continues an existing conversation, though it does not explicitly name or contrast the sibling start_turn tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'explicitly selected existing thread': the tool is for continuing an already-created thread, not for starting a new one. However, it never states when to prefer this over start_turn or gives any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_threadA
Read-onlyIdempotent

Read one thread from an explicitly selected environment with bounded, paginated history.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes
turnLimitNo
beforeCursorNo
environmentIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
threadNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so no extra safety disclosure is needed. The description adds useful behavioral context beyond the schema by noting the history is bounded and paginated, which tells the agent the result can be limited and paged rather than a single unbounded dump.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence contains the core operation, the scope constraint, and the pagination behavior. Every word earns its place and there is no redundant restatement of the tool name or schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with rich annotations and an output schema, the description covers the main invocation context: what environment, what thread, and the bounded/paginated nature of the result. It does not spell out parameter details or pagination cursor semantics, but those are partially inferable from the schema and the description's keywords.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It hints at environment selection via 'explicitly selected environment' and at turnLimit/beforeCursor via 'bounded, paginated history', but it never explicitly maps these concepts to parameter names or explains their interaction. This is partial compensation, not full.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Read one thread', a specific verb and resource, and adds that it operates on an explicitly selected environment with bounded, paginated history. This clearly distinguishes it from sibling tools like start_turn and continue_turn, which imply mutating or advancing a thread rather than reading it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Read one thread' makes the primary use case obvious: retrieve the history of a single thread in a chosen environment. It does not explicitly name alternatives or state when not to use it, so it stops short of full routing guidance, but the context is clear enough for an agent to select it over list or turn-mutation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_environmentsA
Read-onlyIdempotent

List saved T3 Code environments without returning credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
environmentsNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context beyond annotations by explicitly stating that credentials are not returned, which is a security-relevant trait not captured in the 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the core function and its most important qualifier. Every word contributes value, and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only listing tool with a present output schema and annotations covering safety, the description is complete. It specifies the resource type and the critical credential-privacy behavior, leaving nothing essential unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters and the input schema is empty (coverage 100%), so the baseline is 4. The description adds no parameter-specific semantics, but none are needed; the 'without returning credentials' note addresses output rather than input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('saved T3 Code environments'), and adds a key differentiator ('without returning credentials'). This clearly distinguishes it from sibling tools like list_projects and add_environment without needing to open schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use the tool (when you need to list saved environments) but does not explicitly state when to use it over alternatives or mention any exclusions. It is not misleading, but it leaves the selection logic to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsA
Read-onlyIdempotent

List projects from one explicitly selected T3 Code environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
projectsNo
environmentIdNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the scoping constraint of a single selected environment, which is useful but does not reveal additional behavior 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler. Every word contributes meaning, and the essential scoping condition is stated clearly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 parameter, annotations, and an output schema, the description covers the essential invocation context. It could add a note about obtaining the environmentId via list_environments, but that is inferable from the sibling tool set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must compensate for environmentId's meaning. It does so implicitly by referring to 'one explicitly selected T3 Code environment,' tying the parameter to the selected environment. However, it does not explicitly map environmentId to a format or source.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'List projects' from a 'T3 Code environment.' It also differentiates from siblings like list_environments by specifying the resource type and scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'one explicitly selected T3 Code environment' establishes a clear precondition: the caller must have a specific environment selected before listing projects. It does not name exclusions or alternatives, but the context is sufficiently clear for a one-resource read tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_turnA

Create a thread and submit its first turn in an explicitly selected environment and project.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes
projectIdYes
environmentIdYes
modelSelectionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
startNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the lower bar applies. The description adds side-effect specificity by saying exactly what mutation occurs: a thread is created and an initial turn is submitted. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. Each phrase adds either the core action or the required selecting scope, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential action and an output schema exists, but it omits useful workflow context: that environment/project IDs may come from list_projects/list_environments, that continue_turn handles subsequent turns, and that modelSelection is optional. These omissions leave some decision-making to the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It maps well to environmentId and projectId, and 'first turn' indirectly implies the prompt parameter. However, it does not explain the optional modelSelection object, its instanceId/model fields, or how options behave, leaving a meaningful gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Create') and resource ('a thread') plus the additional action of submitting its first turn. The 'first turn' phrasing distinguishes it from the sibling continue_turn, and 'explicitly selected environment and project' clarifies scope without needing to inspect the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use statement or named alternative. However, 'Create a thread' and 'first turn' strongly imply this is the entry-point tool, with continue_turn as the implicit follow-up; that guidance is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedadd_environment
    • First observedcontinue_turn
    • First observedget_thread
    • First observedlist_environments
    • First observedlist_projects
    • First observedstart_turn

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct resource and action: projects vs environments vs threads, and actions are clearly separated (list, add, start, continue, get). No ambiguity in purpose.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (list_projects, add_environment, start_turn, etc.), making the API predictable and easy to navigate.

Tool Count5/5

Six tools is well-scoped for managing environments and thread interactions; each tool has a clear role and the count feels neither bloated nor sparse.

Completeness4/5

The core workflows of environment setup and thread lifecycle (start, continue, read) are covered, but operations like deleting environments or listing threads are missing, which agents may occasionally need.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to explicitly pair with a Web64 browser IDE tab and, with separate user approval, read working-copy project sources, create and atomically edit native projects, import files, save/export, and run asynchronous PRG/Exomizer/D64 build jobs. It also exposes capability discovery and public SDK/documentation/schema lookups over local stdio or authenticated loopback Streamable HTTP.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients such as Claude Desktop or Claude Code to drive the local daemon through stdio, listing agents and sessions, running agents, and reporting costs.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Enables external agents to list T3 environments and projects, start coding threads, monitor progress, send follow-up instructions, and interrupt running turns via MCP.
    7
    MIT