# feat\(mcp\): expose pending user questions · PR \#10556 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/10556)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

State: merged

Source repository: pingdotgg/t3code

Source branch: agents/mcp-thin/questions

Target branch: agents/mcp-thin/queue

Head commit: 51483abe7fe7d45839507cd982e24545658b95da

[Discussion and reviews](https://git.cafe/pingdotgg/t3code/pull/10556)

[Commits](https://git.cafe/pingdotgg/t3code/pull/10556/commits?format=markdown)

[Files changed](https://git.cafe/pingdotgg/t3code/pull/10556/diffs?format=markdown)

## Description

---

Part 6/16 of the [shared-core and MCP stack](https://github.com/pingdotgg/t3code/stacks/10582). Based on [#10555](https://github.com/pingdotgg/t3code/pull/10555). Next: [#10557](https://github.com/pingdotgg/t3code/pull/10557).

Expose pending user-input requests and dispatch answers through the existing runtime-request.respond command.

Approval requests are excluded. Existing live/message response handling and validation stay in orchestration; no parallel question-response state machine.

MCP-only rebuild of [#8716](https://github.com/pingdotgg/t3code/pull/8716), preserving attribution to Julius Marminge's original work. Original branches remain available for separate service follow-ups.

Validation: The composed stack passes 94 tests across 12 focused files, including shared core MCP and real MCP/V2 integration, attachment intake, project RPC/service contracts, and client model command selection. Server/contracts/shared/client-runtime typechecks and targeted format/lint/diff checks pass. New behavior coverage lives with the shared operation; no per-tool mock suite was added. Current-head CI is shown below.

Layer size: 4 files, +110/-0. No domain-service production implementation or documentation files change in this MCP layer.

Prepared with Codex in the OpenAI agent runtime.

<!-- Macroscope's pull request summary starts here -->
<!-- Macroscope will only edit the content between these invisible markers, and the markers themselves will not be visible in the GitHub rendered markdown. -->
<!-- If you delete either of the start / end markers from your PR's description, Macroscope will append its summary at the bottom of the description. -->
> [!NOTE]
> ### Add MCP tools to list, read, and respond to pending user questions in threads
> - Adds three read/write MCP tools (`t3_pending_request_list`, `t3_pending_request_read`, `t3_pending_request_respond`) to the thread toolkit, with handlers that locate pending user-input requests and dispatch answers via the existing `runtime-request.respond` command
> - Adds a `readQuestion` helper that validates a runtime request is a pending user-input request and finds its matching question turn item, raising an invalid-request failure when either is missing
> - Pre-approves the list and read tools for Claude read-only sessions; the respond tool is excluded from the read-only allowlist
> - Adds presentation labels for all three new tools in the display registry
> - Risk: approval/permission requests are excluded by the user-input kind filter, so callers cannot use these tools to approve permission requests
>
> <!-- Macroscope's review summary starts here -->
>
> <sup><a href="https://app.macroscope.com">Macroscope</a> summarized 51483ab.</sup>
> <!-- Macroscope's review summary ends here -->
>
<!-- Macroscope's pull request summary ends here -->
