Skip to main content
Glama

t3code-mcp

MCP server for a running T3 Code instance. See which agent threads exist and what they need, read their history, send them messages, approve their permission requests — from Claude Code, Claude Desktop, or (the end goal) a voice-controlled model like Hermes while away from a screen.

See SPEC.md for the design and PLAN.md for the phased build.

Setup

pnpm install && pnpm build
  1. Make sure T3 Code is running (desktop app or npx t3@latest).

  2. Mint a bearer token for the local T3 server and put it in .env (or export it):

npx t3@latest auth session issue --token-only --label t3code-mcp --ttl 365d
echo "T3_TOKEN=<the token>" > .env
  1. Sanity check against the live server (read-only):

pnpm smoke

Related MCP server: openclaw-mcp

Connect from Claude Code

claude mcp add --scope user t3code -- node /Users/thomascrundwell/Documents/projects/t3code-mcp/dist/index.js

(Token is picked up from .env in this directory; alternatively pass --env T3_TOKEN=....)

Tools

Visibilityt3_status, list_projects, list_threads (filter by project / attention state), get_thread, search_threads

Messaging & controlsend_message, create_thread, wait_for_turn (send-and-wait round trip), interrupt_thread, stop_thread, archive_thread, unarchive_thread, set_thread_title

Hands-free interactionpending_actions (cross-thread "what needs me?" inbox), respond_to_approval, respond_to_user_input

Voice layerthread_digest and workspace_digest (TTS-friendly spoken summaries), wait_for_change (long-poll until anything needs attention)

Every thread carries a single attention state: needs-approval | needs-input | plan-ready | working | error | done | idle.

Remote / voice clients (HTTP mode)

For a remote voice agent (e.g. Hermes over Tailscale), run the streamable-HTTP transport with its own bearer token:

MCP_HTTP_TOKEN=<secret> node dist/index.js --http --port 3774 --host 0.0.0.0

Clients connect to http://<machine>:3774/ with Authorization: Bearer <secret>. Binds to 127.0.0.1 unless --host is given; T3 Code itself stays localhost-only.

Testing

  • pnpm smoke — read-only pass over every query tool against the live server.

  • node scripts/smoke.mjs --mutate <projectId> — additionally runs the full write loop (create disposable thread → agent replies → follow-up message → rename → stop → archive). Use a scratch project; "t3code-mcp scratch" (/tmp/t3code-mcp-scratch) exists for this.

Notes / limitations

  • Uses T3's HTTP JSON API only (/api/orchestration/*). Live push, git-worktree bootstrap, and turn diffs are WebSocket-RPC-only in T3, so: updates are polled, and create_thread runs threads directly in the project workspace (start worktree threads from the T3 UI).

  • Image attachments not yet supported on send_message.

  • Revoke access anytime: npx t3@latest auth session list / ... revoke.

Available Tools

19 tools
archive_threadArchive a threadA

Archive a thread (hides it from the active list; reversible).

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes

TDQS

A4/5.0
Behavior4/5

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

Without annotations, the description carries the full burden. It goes beyond the title by disclosing that archiving hides the thread from the active list and is reversible. This provides important safety-relevant context (non-destructive, can be undone) even though it does not mention permissions or return values, which are less critical for such a simple operation.

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 sentence that is concise and front-loaded with the verb. Every word serves a purpose: 'Archive a thread' states the action, while the parenthetical adds the crucial behavioral details of hiding and reversibility without bloat.

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 tool with one parameter and no output schema, the description covers the essential aspects: the action, its effect, and reversibility. It does not describe the return value or edge cases, but the tool's simplicity makes those omissions less impactful. The description is sufficient for an agent to understand the core behavior.

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 a single required parameter, 'threadId', with no description. The tool description does not explicitly explain the parameter, but the phrase 'Archive a thread' implicitly ties threadId to the thread being archived, and the field name is self-explanatory. Since schema coverage is 0%, the description could have added more detail, but the single well-named parameter reduces ambiguity.

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 and resource ('Archive a thread') and immediately clarifies the effect ('hides it from the active list') and a key characteristic ('reversible'). This clearly distinguishes the tool from sibling operations like unarchive_thread, which restores archived threads.

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 implies the usage context: use this tool when you want to hide a thread from the active list, and the note 'reversible' hints that the action can be undone. However, it does not explicitly mention the alternative 'unarchive_thread' or state when not to use this tool, so the guidance remains implicit rather than clearly contrasted with siblings.

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

create_threadStart a new T3 threadA

Create a new agent thread in a project and send its first message, starting the agent. The thread runs directly in the project workspace (worktree isolation is only available from the T3 UI). Model defaults to the project's default, falling back to the project's most recent thread's model. runtimeMode defaults to approval-required (safest); pass full-access for autonomous work.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel name for the provider, e.g. gpt-5.4
titleNoThread title (default: derived from message)
messageYesFirst user message / task description
providerNoProvider instance id, e.g. claude, codex, cursor, grok, opencode
projectIdYesProject id (from list_projects)
runtimeModeNoPermission mode (default approval-required)
interactionModeNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full transparency burden. It discloses key behavioral traits: the thread runs in the project workspace (no worktree isolation), model selection defaults, and runtimeMode defaults to 'approval-required' (safest) with a recommendation for 'full-access' for autonomous work. This goes beyond schema details by explaining the default behavior and safety posture, though it does not explicitly mention side effects like agent autonomy or asynchronous execution.

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?

Three dense sentences with no wasted words. The first sentence states the primary purpose, the second adds a workspace-specific constraint, and the third covers default behaviors. Each sentence earns its place and the most critical information (what it does) is front-loaded.

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?

Given the tool's complexity (7 params, creates asynchronous work), the description covers the essential launch context: project/thread creation, first message, default model, runtime mode options, and the workspace isolation limitation. It does not describe the return value or how to monitor the resulting thread, but with no output schema and sibling tools like thread_digest and wait_for_change, this is a reasonable gap. Overall, it is complete enough for an agent to successfully invoke the tool.

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?

Schema coverage is high (86%), so the baseline is 3. The description adds value by explaining the model fallback chain ('defaults to project's default, falling back to most recent thread's model') and the runtimeMode default semantics (approval-required safest, full-access for autonomous). This enriches the schema's bare enumerations and clarifies the actual behavior for model and runtimeMode.

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 clearly states the tool's function: 'Create a new agent thread in a project and send its first message, starting the agent.' This specific verb-resource pair ('create thread') plus the initiating action ('starting the agent') distinguishes it from sibling tools like send_message (which targets existing threads) and list_threads (which only lists). The scope is explicit (project workspace, not UI).

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 description implies when to use this tool: when starting a new agent thread in a project with an initial message. It provides contextual details like 'worktree isolation is only available from the T3 UI,' which indicates a limitation compared to the UI. However, it does not explicitly name alternative tools (e.g., send_message for existing threads) or state when not to use it, so it earns a 4 rather than a 5.

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

get_threadRead a T3 threadA

Read a thread's recent conversation: messages from the last N turns, session status, any pending approval/user-input requests (with requestIds needed to respond), and an activity overview. Use beforeCursor from a previous call to page further back.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYesThread id (from list_threads)
turnLimitNoHow many recent turns to include (default 5)
beforeCursorNoPagination cursor from a previous call
includeActivitiesNoInclude per-activity detail overview (default true)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It reveals it returns messages, session status, pending requests with requestIds needed for responses, and an activity overview, plus mentions pagination behavior. It implies read-only nature via 'Read' but does not describe side effects or error conditions.

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 two sentences, front-loaded with the core purpose, and wastes no words. It efficiently covers the tool's functionality and pagination hint.

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?

Without an output schema, the description adequately outlines the response content (messages, session status, pending requests, activity) and pagination. It stops short of detailing the exact structure of each element, but this is sufficient for a read tool.

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 coverage is 100% for all four parameters, so the baseline is 3. The description adds minimal meaning beyond the schema, only contextualizing turnLimit as 'last N turns' and beforeCursor for pagination, which the schema already explains.

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 clearly states it reads a thread's recent conversation and lists specific content: messages, session status, pending requests with requestIds, and activity overview. This distinguishes it from siblings like list_threads or t3_status by focusing on the thread conversation itself.

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 description provides clear context for using this tool to fetch a thread's conversation, including pagination via beforeCursor. It doesn't explicitly mention when not to use it or point to alternatives, but the context is unmistakable.

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

interrupt_threadInterrupt a running turnB

Interrupt the agent's current turn on a thread (like pressing stop). The thread and session survive; you can send a new message afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the thread and session survive and that a new message can be sent afterwards, which is a key consequence. However, it does not address error conditions (e.g., no running turn), required permissions, or idempotency, leaving gaps.

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 two sentences and gets directly to the point. It front-loads the action and provides essential consequences without unnecessary words.

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?

For a simple single-parameter tool, the description covers the main functionality and the survival of the thread/session. However, it lacks information about error behavior and does not clarify how this tool relates to the sibling 'stop_thread', which is important contextual information.

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?

The input schema contains one required string 'threadId' with no description, and the description makes no mention of parameters. The threadId is implied by the tool name and text, but the description adds no explicit semantic detail to compensate for the 0% schema coverage.

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 clearly states the tool interrupts the agent's current turn on a thread, using the analogy 'like pressing stop'. It further specifies that the thread and session survive, which clarifies the scope. However, it does not explicitly distinguish this from the sibling tool 'stop_thread', so it falls short of full differentiation.

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 provides a clear use case: interrupt a running turn, then send a new message afterwards. It implies this is a soft stop, but it does not mention when to choose this over 'stop_thread' or other alternatives. There are no explicit exclusions or when-not-to-use conditions.

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

list_projectsList T3 projectsA

List the projects (workspaces/repos) registered in T3 Code, with per-project counts of active and attention-needing threads.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It transparently describes what the tool returns (a list of projects with counts) and implies read-only behavior with no side effects. It doesn't mention pagination or filtering, but for a simple list tool this is acceptable.

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 sentence that is front-loaded with the action verb 'List' and immediately states the resource. It includes only useful clarifications like '(workspaces/repos)' and the specific output metrics, with no redundancy or filler.

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 simple list tool with no output schema, the description fully conveys what the user should expect: a list of projects with thread counts. It covers the tool's scope and output adequately, and there are no missing parameters or complex behaviors to describe.

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 zero parameters and the schema is empty (100% coverage), so the baseline for 0-param tools is 4. The description doesn't need to explain parameter semantics as there are none to explain.

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 clearly states the tool's purpose with a specific verb 'List' and resource 'projects (workspaces/repos)' scoped to 'T3 Code'. It also mentions the unique output (per-project counts of active and attention-needing threads), which distinguishes it from sibling tools like list_threads or t3_status.

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?

While it does not explicitly state when to use it or mention alternatives, the description provides clear context by describing the tool's output. It implies usage for obtaining an overview of projects and their thread activity, and no exclusions are given. This matches the 'clear context, no exclusions' level.

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

list_threadsList T3 threadsA

List agent threads in T3 Code, most recently updated first. Filter by project, attention state (needs-approval, needs-input, plan-ready, working, error, done, idle), or include archived threads. Each row includes the thread's attention state — what, if anything, it needs from the human.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 25)
attentionNoOnly threads in this attention state
projectIdNoOnly threads in this project
includeArchivedNoInclude archived threads (default false)

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses sort order ('most recently updated first'), filters (project, attention, archived), and row content (attention state), which is meaningful behavioral context for a list operation.

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?

Two concise sentences, front-loaded with the main action, with no redundant content.

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 lacks a complete picture of returned rows: it mentions attention state but not other likely fields like thread ID, title, project, or timestamp. Without an output schema, this gap limits an agent's ability to predict the tool's output fully.

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?

Schema coverage is 100%, so baseline is 3. The description adds semantic meaning to the 'attention' parameter by explaining that the attention state indicates 'what, if anything, it needs from the human,' which deepens understanding of the enum values beyond the schema's minimal description.

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 'List agent threads in T3 Code, most recently updated first' with a specific verb ('List'), resource ('agent threads'), scope ('T3 Code'), and sort order, clearly distinguishing it from siblings like get_thread or search_threads.

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?

It implies usage for checking threads by attention state ('Each row includes the thread's attention state — what, if anything, it needs from the human'), but does not explicitly contrast with alternatives like search_threads or pending_actions.

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

pending_actionsWhat needs me?A

Cross-thread inbox: every thread currently blocked on the human — pending command/file approvals (with the exact request detail), unanswered agent questions, actionable proposed plans, and errored sessions. Includes the requestIds needed by respond_to_approval / respond_to_user_input.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description must carry the full burden of disclosing behavior. It explains the content and payload (requestIds), but does not explicitly state whether this is a read-only operation or any other safety/side-effect characteristics. For an inbox-like tool, this is a notable omission.

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?

Two sentences, front-loaded with the core concept 'Cross-thread inbox', and no wasted words. Every sentence serves a purpose: defining the tool and linking to related tools.

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 0-parameter tool with no output schema, the description does a good job of explaining what is returned and how to use it with sibling tools. It could be more explicit about the response format or grouping, but it's sufficient for an agent to invoke it and inspect the response.

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 zero parameters, so the baseline is 4. The description adds value by mentioning requestIds for sibling tools, but this isn't about the tool's own parameters. Thus it meets the baseline without needing further clarification.

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 clearly identifies the tool as a 'Cross-thread inbox' listing every thread blocked on the human, with specific item types (approvals, questions, plans, errored sessions). This distinguishes it from siblings like list_threads or get_thread, which focus on threads generally or individually.

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 description provides clear context for when to use it—when there are pending actions requiring human attention—and even mentions the requestIds needed by respond_to_approval / respond_to_user_input, showing a usage chain. However, it doesn't explicitly say when not to use it or contrast with alternatives.

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

respond_to_approvalRespond to a permission requestA

Approve or decline a pending permission request (command execution, file read, file change) on a thread. Get the requestId from pending_actions or get_thread. Decisions: accept (once), acceptForSession (don't ask again this session), decline, cancel.

ParametersJSON Schema
NameRequiredDescriptionDefault
decisionYes
threadIdYes
requestIdYesFrom pendingRequests in pending_actions/get_thread

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It adds valuable behavioral context by detailing decision semantics ('accept (once), acceptForSession (don't ask again this session), decline, cancel'), which goes beyond basic approval. It doesn't cover potential irreversible effects or auth requirements, but the core behavior is transparent.

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 concise and well-structured: it leads with the main action, then explains how to get the requestId, and finally lists the decisions. Every sentence is informative with no unnecessary clutter.

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 three-parameter tool with no output schema, the description adequately covers how to use it: requestId source, decision options, and request types. It doesn't explain the return value, but that is not critical for this straightforward approval action.

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 schema covers only requestId (33% coverage). The description compensates by explaining the decision enum values and mentioning the thread context for threadId. The requestId schema description is reinforced, and the added decision semantics significantly enhance parameter understanding.

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 clearly states the tool's function: 'Approve or decline a pending permission request' and specifies the resource types (command execution, file read, file change). It distinguishes itself from sibling tools like respond_to_user_input by focusing specifically on permission requests.

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?

It provides explicit guidance for obtaining the requestId ('Get the requestId from pending_actions or get_thread') and explains the meaning of each decision option. However, it doesn't explicitly state when not to use this tool or mention alternatives beyond the source tools.

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

respond_to_user_inputAnswer an agent's questionA

Answer a pending user-input request (an agent asked a question with options or free text). Get the requestId and the question structure from pending_actions or get_thread; answers is an object keyed by question id.

ParametersJSON Schema
NameRequiredDescriptionDefault
answersYesAnswers keyed by question id, e.g. {"q1": "option-a"}
threadIdYes
requestIdYes

TDQS

A3.7/5.0
Behavior2/5

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

Annotations are absent, so the description must disclose side effects. It describes the action and the answers format but does not mention whether answering completes the request, whether it is reversible, or any permission requirements. As a mutation tool, this lack of consequence disclosure is a significant gap.

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?

Two sentences, front-loaded with the primary action, and immediately follows with operational details. No redundant phrases; every sentence has a purpose.

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?

There is no output schema or annotations. The description provides the essential steps for invoking the tool, but it does not describe the return value or post-answer effects. It also does not differentiate from respond_to_approval beyond the resource name, leaving the tool usable but not fully transparent.

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?

Only 33% of parameters have schema descriptions. The description adds value by explaining that answers is an object keyed by question id and that requestId comes from pending_actions/get_thread, but threadId remains unexplained. This partially compensates for the low schema coverage.

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 'Answer' and a specific resource 'pending user-input request', clarifying that it handles agent questions with options or free text. This clearly distinguishes it from the sibling respond_to_approval by specifying the type of request.

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 description states the context for use: 'Answer a pending user-input request', and instructs to get requestId and question structure from pending_actions or get_thread. It does not explicitly exclude approval requests, but the resource type is clear enough to imply when 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.

search_threadsSearch threadsA

Find threads by words from the title, project name, or branch (case-insensitive substring match on each word). Searches active and archived threads.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 10
queryYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses important behavior: case-insensitive substring matching on each word, and that it searches active and archived threads. However, it does not mention return format, ordering, pagination, or any potential side effects. This is a moderate level of transparency for a search tool.

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 concise and front-loaded: the first sentence states the primary use, the second adds scope. No wasted words, and the key matching semantics are included without being verbose.

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?

For a search tool with no output schema, the description covers the search criteria and scope but omits what the response looks like (e.g., list of threads, thread IDs, full objects). Given sibling tools like list_threads likely return threads, an agent might infer this, but it's not explicitly stated. The core search behavior is well described, but the return structure is a gap.

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?

Schema description coverage is 50% (only limit is described with 'Default 10'). The tool description compensates by explaining the query parameter's meaning: words matched against title, project name, or branch. Limit is not elaborated beyond its schema default, but its purpose is reasonably inferable from the parameter name and the 'search' context.

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 clearly states the tool's function: 'Find threads by words from the title, project name, or branch' with specific matching behavior. It differentiates from siblings like list_threads (which lists all) and get_thread (which retrieves a specific thread) by focusing on keyword-based search.

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 implies when to use the tool (when you need to search threads by words) but does not explicitly compare with alternatives like list_threads or provide any exclusions. It gives clear context about scope (active and archived) but lacks explicit when-to-use vs when-not-to-use guidance.

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

send_messageSend a message to a T3 threadA

Send a user message to an existing thread and start an agent turn. Reuses the thread's current model, runtime mode, and interaction mode unless overridden. If the agent is mid-turn the message is queued by T3. Returns immediately; use wait_for_turn or get_thread to see the reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe message text to send
threadIdYesThread id (from list_threads)
runtimeModeNoOverride permission mode for this turn onward
interactionModeNo

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description takes on the full burden of disclosing behavior. It reveals that the tool starts an agent turn, reuses existing settings unless overridden, queues messages if the agent is busy, and returns immediately. It could also mention potential errors or authentication requirements, but the core behavioral traits are well covered.

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?

Three sentences, all information-dense with no fluff. The most important facts (send, start turn, return behavior) are front-loaded, and the later sentences provide necessary behavioral details without repetition.

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?

Since there is no output schema, the description appropriately explains the return behavior: 'Returns immediately; use wait_for_turn or get_thread to see the reply.' It also covers the queuing behavior and parameter inheritance, making it complete for an AI agent to use correctly without requiring external context.

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?

Schema description coverage is 75%, so some params (message, threadId, runtimeMode) are already described. The description adds value by explaining that runtimeMode and interactionMode are overrides of the thread's current settings ('unless overridden'), which is not obvious from the bare enum names. It also clarifies that the thread must be existing, reinforcing threadId semantics.

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 clearly states the action: 'Send a user message to an existing thread and start an agent turn.' This distinguishes it from create_thread (new thread), wait_for_turn, and get_thread (retrieving replies). It uses a specific verb and resource, making the purpose unmistakable.

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

Usage Guidelines5/5

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

It explicitly mentions when to use the tool (to send a message to an existing thread) and provides alternative tools: 'use wait_for_turn or get_thread to see the reply.' It also explains the queuing behavior when the agent is mid-turn, giving clear context without needing to list every sibling.

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

set_thread_titleRename a threadA

Set a thread's title (useful for voice: 'call this one auth bug').

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
threadIdYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the basic operation and gives an example, but does not disclose any behavioral traits such as whether the operation is a mutation, permissions required, or behavior on invalid input. For a rename tool, this is insufficient.

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 sentence that is concise and front-loaded. The parenthetical example adds helpful context without waste.

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?

For a simple two-parameter rename tool, the description is adequate but not complete. It lacks details about return values, error conditions, and any constraints on the title. Given no annotations or output schema, more context would improve completeness.

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?

The schema has 0% description coverage for parameters. The description mentions 'title' in the example but does not explain either parameter's meaning or constraints beyond the schema's basic types and minLength. The description adds minimal value for parameter understanding.

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 clearly states the action: 'Set a thread's title' with a specific verb and resource. It is distinct from sibling tools like archive_thread or send_message, and the example clarifies the intended use case.

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 description provides clear context for when to use this tool (renaming a thread), and even gives a voice-interaction example. However, it does not explicitly mention alternatives or when not to use it, though the purpose is self-evident.

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

stop_threadStop a thread's agent sessionA

Shut down the provider process attached to a thread. The thread and its history remain; a new session starts automatically on the next message.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently explains that the provider process is shut down, the thread and history persist, and a new session auto-starts. This is sufficient to understand the side effects, though it does not address permissions or edge cases like in-flight messages.

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 only two sentences long and immediately states the action. Each sentence contributes distinct behavioral information without redundancy, making it both concise and well-structured.

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 tool with a single simple parameter and no output schema, the description covers the essential behavioral contract: what stops, what persists, and what happens next. It lacks additional context like when to prefer this over interrupt_thread, 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.

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 parameter meaning. It only refers to 'a thread' generically and does not elaborate on what threadId should represent or how to obtain it. The parameter name is self-explanatory, but the description adds no value beyond the schema.

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 'shut down' and clearly identifies the resource ('provider process attached to a thread'). It also distinguishes itself from potential sibling tools by stating that the thread and history remain and a new session starts automatically, making the tool's purpose unambiguous.

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 description provides clear context for when to use the tool (to stop a thread's agent session) and its consequence (a new session starts on the next message). However, it does not explicitly mention alternatives like interrupt_thread or state when not to use it, falling short of full exclusionary guidance.

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

t3_statusT3 Code statusA

Check the local T3 Code server: is it running, is auth working, and a summary of projects/threads (how many are working, how many need attention). Use this first if anything else fails.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions checking auth and summarizing project/thread status, implying a read-only health check, but does not explicitly state there are no side effects or describe the exact return structure. This is adequate but not highly detailed.

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 two-sentence description is front-loaded: the first sentence defines the tool's purpose and output, the second gives usage context. Every word earns its place with no redundancy or filler.

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?

Given the tool has no parameters and no output schema, the description provides a reasonable summary of what it returns (running status, auth, project/thread counts) and when to use it. It could be more specific about the output format, but for a simple status tool it is sufficiently complete.

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 zero parameters, so the baseline is 4. The description appropriately says nothing about parameters since there is nothing to configure. No additional semantic explanation is needed.

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 explicitly states what the tool does: check the local T3 Code server's running status, auth, and project/thread summaries. This is a specific verb+resource with a clear scope that distinguishes it from sibling tools like list_projects or list_threads, which focus on individual data retrieval.

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 'Use this first if anything else fails' gives direct guidance on when to invoke this tool as a first-line diagnostic. While it doesn't enumerate alternatives or explicitly state when not to use it, the context is clear enough for an agent to understand its role in troubleshooting.

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

thread_digestSpeakable thread digestA

A TTS-friendly plain-language digest of one thread: what it's doing, what the agent last said (markdown/code stripped), and anything it's waiting on. Designed to be read aloud by a voice assistant.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes
maxReplyCharsNoDefault 800

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It transparently discloses that markdown/code is stripped and lists what the digest contains. However, it does not explicitly state that the operation is read-only or describe any side effects, error behavior, or permission requirements. The read-only nature is implied by 'digest' but not stated, leaving a gap.

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?

Two sentences, no filler, front-loaded with the core purpose. The first sentence defines the output and contents, the second adds the target use case. Every word earns its place.

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 no output schema, the description provides a good picture of the returned content (thread status, last agent message, pending items) and the TTS focus. However, it omits how maxReplyChars affects the result and doesn't explicitly confirm read-only behavior, so it is not fully complete.

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?

The description does not explain the parameters. threadId is implicitly 'one thread' but not explicitly described, and maxReplyChars is not mentioned at all. Schema coverage is only 50% (threadId has no description; maxReplyChars has only 'Default 800'), and the description fails to compensate by clarifying what maxReplyChars controls (e.g., output length for TTS) or how it affects the digest.

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 clearly states the tool's purpose: producing a TTS-friendly plain-language digest of a thread, including what it's doing, the agent's last message (with markdown/code stripped), and pending items. It differentiates from siblings like get_thread (raw thread) and thread_status (status-only) by emphasizing the digest format and read-aloud design.

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 description gives clear context: 'Designed to be read aloud by a voice assistant' and 'TTS-friendly' indicate that this is for spoken consumption. It implies usage when a summarized, speech-optimized version is needed, but it does not explicitly state exclusions or name alternative tools. This matches 'clear context, no exclusions'.

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

unarchive_threadUnarchive a threadB

Bring an archived thread back to the active list.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the outcome (moving to active list) but does not disclose behavior such as prerequisites (thread must exist and be archived), side effects, failure modes, or return values. The description is too minimal to provide adequate transparency.

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 of eight words, with no wasted words. It is front-loaded and efficient, though it could be slightly expanded to include critical context without becoming verbose.

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?

Given the lack of annotations, no output schema, and minimal parameter documentation, the description is not complete enough. It covers the primary purpose but omits usage guidance, parameter meaning, and behavioral details, leaving an agent under-informed for correct invocation and error handling.

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?

The schema has one parameter (threadId) with no description, and schema description coverage is 0%. The tool description does not mention this parameter at all, failing to compensate for the lack of schema-level documentation. Even though the parameter name is self-evident, the description adds no value in explaining its format, source, or constraints.

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 'Bring an archived thread back to the active list' uses a specific verb (bring back) and resource (archived thread), clearly distinguishing it from the sibling tool archive_thread. It fully states the tool's function with no ambiguity.

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 description implies when to use the tool: when you have an archived thread that should be active again. It does not explicitly mention alternatives or exclusions, but the context and sibling tools make the use case clear. The inverse relationship with archive_thread is evident.

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

wait_for_changeWait for anything to changeA

Long-poll the workspace until any thread changes attention state (a turn finishes, an approval appears, an error occurs) or the timeout passes. Returns the changed threads with old and new state. Lets a voice loop stay silent until something actually happens.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutSecondsNoDefault 60

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the long-poll blocking behavior, the return of changed threads with old and new state, and the timeout condition. It does not specify exact behavior on timeout (e.g., empty list) but covers the main behavioral aspects well.

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 concise: two sentences that each earn their place. The first explains the mechanics; the second adds the real-world use case. No wasted words or redundant details.

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 one-parameter tool with no output schema or annotations, this description is quite complete. It covers the wait condition, return value, timeout, and a use case. It could mention what happens on timeout explicitly, but the timeout behavior is implied and the description is sufficiently informative 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.

Parameters3/5

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

The single parameter timeoutSeconds is fully described in the schema (including range and default), so schema coverage is 100%. The description mentions timeout only generally and does not add semantics beyond what the schema already provides.

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 clearly states the tool's purpose: long-poll the workspace until any thread changes attention state or timeout. It gives specific examples (turn finishes, approval appears, error occurs) and distinguishes itself from siblings like wait_for_turn by focusing on 'any thread'.

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?

A clear use case is provided ('Lets a voice loop stay silent until something actually happens'), which implies when to use this tool. However, it does not explicitly name alternatives or exclusions, though the 'any thread' phrasing contrasts with wait_for_turn.

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

wait_for_turnWait for the agent's replyA

Block until the thread's current turn finishes OR the agent asks for approval/input, then return the latest assistant message or the pending request. Use after send_message or create_thread for a single round-trip. Times out (default 120s, max 300s) with the current state.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYes
timeoutSecondsNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses key behavioral traits: blocking until turn finishes or approval/input is requested, returning the latest assistant message or pending request, and timeout behavior (default 120s, max 300s) returning current state. This goes beyond what the schema provides and gives the agent a clear mental model of the tool's side-effect-free, wait-for-request nature.

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?

Three sentences with no fluff. The first sentence states the core blocking and return behavior, the second gives usage context, and the third covers timeout. Every sentence earns its place, and the format is front-loaded with the primary action.

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?

Without an output schema, the description must describe return values, which it does ('latest assistant message or the pending request'). It also covers when to use the tool and timeout behavior. For a simple 2-parameter wait tool with no annotations, this is complete and leaves no critical gaps.

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?

Schema description coverage is 0%, so the description must compensate. It adds meaning for both parameters: threadId is implied via 'the thread's current turn' and timeoutSeconds is explained with default and max values. It does not mention the minimum of 5s (schema provides that) or explicitly state optionality, but the default implies it. Overall, the description enriches parameter understanding.

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 ('Block') and clearly identifies the resource (thread's current turn). It distinguishes itself from siblings by specifying it returns after the turn finishes or when approval/input is requested, and it is explicitly positioned after send_message/create_thread. This is a specific and unambiguous purpose.

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 description explicitly states 'Use after send_message or create_thread for a single round-trip', providing clear usage context and differentiating it from other waiting tools. It does not explicitly name alternatives or exclusions, but the context is clear enough for correct selection.

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

workspace_digestSpeakable workspace briefingA

One-line-per-thread briefing across all projects — the 'what are my agents doing' answer. Covers threads needing attention first, then working, then recently finished. TTS-friendly 'spoken' field plus structured rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceHoursNoInclude finished/idle threads updated within this window (default 24h)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses the format (one-line per thread, TTS-friendly spoken field plus structured rows), the ordering (attention first, then working, then finished), and scope (across all projects). It doesn't mention the sinceHours parameter's effect, but that's in schema. No side effects implied.

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?

Two sentences, front-loaded with the core purpose, no fluff. Every word contributes to understanding the tool's function and output.

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?

Given it's a simple read-only briefing with one optional param, the description gives enough context: scope, ordering, return format. No output schema, so it partially describes the output. It doesn't mention specifics like pagination or limits, but that's acceptable.

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 coverage is 100% (sinceHours documented), so baseline 3. The description doesn't mention the parameter, but doesn't need to as schema fully documents it. No additional semantics added.

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 clearly states the tool provides a one-line-per-thread briefing across all projects, explicitly positioning it as the answer to 'what are my agents doing.' This distinguishes it from thread_digest, which is per-thread, and other sibling tools.

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 description implies usage for workspace-wide status overview, with ordered sections for attention/working/finished. It doesn't explicitly name alternatives but the context makes it clear when to use this tool. A slight gap is no explicit 'when not to use'.

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. Dates show when Glama detected each change.

  1. 19 tool updatesv0.1.0
    • First observedarchive_thread
    • First observedcreate_thread
    • First observedget_thread
    • First observedinterrupt_thread
    • First observedlist_projects
    • First observedlist_threads
    • First observedpending_actions
    • First observedrespond_to_approval
    • First observedrespond_to_user_input
    • First observedsearch_threads
    • First observedsend_message
    • First observedset_thread_title
    • First observedstop_thread
    • First observedt3_status
    • First observedthread_digest
    • First observedunarchive_thread
    • First observedwait_for_change
    • First observedwait_for_turn
    • First observedworkspace_digest

TDQS

A3.7/5.0
Disambiguation4/5

Most tools target a distinct resource and action (threads, projects, approvals), but a few could be confused: interrupt_thread vs. stop_thread both halt work, and wait_for_turn vs. wait_for_change both block on state changes. The descriptions clarify these enough to avoid real misselection.

Naming Consistency3/5

All names use snake_case, but the pattern is mixed: most are verb_noun (list_threads, send_message, get_thread), yet several are noun-only (pending_actions, thread_digest, workspace_digest) or use a prefix (t3_status). This inconsistency makes predicting tool names harder than a uniform verb_noun convention.

Tool Count3/5

At 19 tools, the set is at the heavy end of the typical range. Each tool appears to have a genuine purpose, but some can feel redundant (two wait tools, two digest tools), making the surface larger than strictly necessary.

Completeness4/5

The tool surface covers the full thread lifecycle well: create, list, read, message, interrupt, stop, archive, unarchive, and title threads, plus approval handling and status monitoring. Minor gaps include no permanent thread deletion and limited project management, but these are not core to the server's apparent purpose.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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/ThomasCrund/t3code-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server