Interface inventory

Copy Markdown View Source

Contract revision: 337c5858c33bc7f8f6dfd391a2c279fa0f7e4d17 (upstream source). Captured 2026-11-05. This SDK covers the pinned wire operations through named helpers and generic transports. It does not guarantee server-version support, credential permissions or a T3 agent context. Payloads retain the original JSON/string-keyed format; TypeScript schemas are enforced by T3, not duplicated as Elixir structs.

Use mix t3.interfaces --json for the programmatic inventory. Generic calls also permit new operation names absent from the static catalogs.

MCP

71 known tools: 66 advertised to the development agent and five additional upstream definitions. Use T3.discover(client) to inspect a connected external client's actual surface. MCP protocol 2025-06-18; ConduitMCP manages transport and OAuth. A category helper and T3.Tools.<wire_name>/2 exist for every entry.

Permission and context checks remain on the server. Browser/device/UI rendering, worktree handoff and delegated-agent operations generally require agent context; adding a wrapper does not make an external OAuth client an agent session.

Wire toolCategory helperInventory source
create_threadsT3.Threads.create_manySession + upstream
delegate_taskT3.Tasks.delegateSession + upstream
delete_scheduled_taskT3.Schedules.deleteSession + upstream
device_closeT3.Devices.closeSession + upstream
device_listT3.Devices.listSession + upstream
device_openT3.Devices.openSession + upstream
device_screenshotT3.Devices.screenshotSession + upstream
html_previewT3.HTML.previewSession + upstream
html_renderT3.HTML.renderSession + upstream
link_pull_requestT3.PullRequests.linkSession + upstream
link_pull_requestsT3.PullRequests.link_manyUpstream only
list_scheduled_tasksT3.Schedules.listSession + upstream
list_thread_pull_requestsT3.PullRequests.listSession + upstream
orchestrator_capabilitiesT3.Tasks.capabilitiesSession + upstream
preview_actT3.Previews.actSession + upstream
preview_dialogT3.Previews.dialogSession + upstream
preview_evaluateT3.Previews.evaluateSession + upstream
preview_navigateT3.Previews.navigateSession + upstream
preview_openT3.Previews.openSession + upstream
preview_recording_startT3.Previews.start_recordingSession + upstream
preview_recording_stopT3.Previews.stop_recordingSession + upstream
preview_resizeT3.Previews.resizeSession + upstream
preview_set_appearanceT3.Previews.set_appearanceSession + upstream
preview_snapshotT3.Previews.snapshotSession + upstream
preview_statusT3.Previews.statusSession + upstream
preview_wait_forT3.Previews.wait_forSession + upstream
read_pull_request_guideT3.PullRequests.read_guideSession + upstream
request_secretT3.Requests.secretSession + upstream
run_scheduled_task_nowT3.Schedules.run_nowSession + upstream
schedule_taskT3.Schedules.saveSession + upstream
t3_attachment_discardT3.Attachments.discardSession + upstream
t3_attachment_prepare_uploadT3.Attachments.prepare_uploadSession + upstream
t3_background_waitT3.Tasks.background_waitSession + upstream
t3_environment_linkT3.Environments.linkUpstream only
t3_environment_linksT3.Environments.linksUpstream only
t3_environment_preferences_updateT3.Environments.update_preferencesSession + upstream
t3_environment_readT3.Environments.readSession + upstream
t3_environment_unlinkT3.Environments.unlinkUpstream only
t3_pending_requestT3.Requests.manageSession + upstream
t3_preview_closeT3.Previews.closeSession + upstream
t3_preview_listT3.Previews.listSession + upstream
t3_project_cloneT3.Projects.cloneSession + upstream
t3_project_createT3.Projects.createSession + upstream
t3_project_deleteT3.Projects.deleteSession + upstream
t3_project_listT3.Projects.listSession + upstream
t3_project_readT3.Projects.readSession + upstream
t3_project_updateT3.Projects.updateSession + upstream
t3_queueT3.Queues.manageSession + upstream
t3_thread_configureT3.Threads.configureSession + upstream
t3_thread_interruptT3.Threads.interruptSession + upstream
t3_thread_launchT3.Threads.launchSession + upstream
t3_thread_listT3.Threads.listSession + upstream
t3_thread_organizeT3.Threads.organizeSession + upstream
t3_thread_readT3.Threads.readSession + upstream
t3_thread_searchT3.Threads.searchSession + upstream
t3_thread_sendT3.Threads.sendSession + upstream
t3_thread_send_attachmentsT3.Attachments.sendSession + upstream
t3_thread_transferT3.Threads.transferSession + upstream
t3_thread_updateT3.Threads.updateSession + upstream
t3_thread_waitT3.Threads.waitSession + upstream
t3_workflow_stopT3.Tasks.stop_workflowSession + upstream
t3_worktree_handoffT3.Worktrees.handoffSession + upstream
t3_worktree_listT3.Worktrees.listSession + upstream
t3_worktree_statusT3.Worktrees.statusSession + upstream
task_cancelT3.Tasks.cancelSession + upstream
task_statusT3.Tasks.statusSession + upstream
unlink_pull_requestT3.PullRequests.unlinkSession + upstream
unlink_pull_requestsT3.PullRequests.unlink_manyUpstream only
unwatch_pull_requestT3.PullRequests.unwatchSession + upstream
watch_pull_requestT3.PullRequests.watchSession + upstream
write_pull_request_guidesT3.PullRequests.write_guidesSession + upstream

HTTP JSON

All 38 routes in EnvironmentHttpApi are represented. Group modules live under T3.HTTP; T3.HTTP.call/3 routes an endpoint identifier and request/4 handles new same-origin paths. HTTP credentials are separate from MCP credentials. JSON, form and raw body encodings are preserved. The app starts a Finch pool; caller options can select another. Responses expose status, headers and decoded/raw body.

The body limit is 16 MiB by default, with bounded pool/request/receive timeouts. Redirects and automatic retries are disabled. Cookie storage and renewal are not automatic; caller-supplied cookie headers or tokens must have appropriate scopes. DPoP proofs may be supplied; proof generation and signing remain caller-owned.

MethodPath
GET/.well-known/t3/environment
GET/api/auth/session
POST/api/auth/browser-session
POST/oauth/token
POST/api/auth/websocket-ticket
POST/api/auth/websocket-ticket/:use
POST/api/auth/pairing-token
POST/api/auth/pairing-links/revoke
POST/api/auth/clients/revoke
POST/api/auth/clients/revoke-others
GET/.well-known/oauth-protected-resource
GET/.well-known/oauth-protected-resource/mcp
GET/.well-known/oauth-authorization-server
POST/oauth/mcp/register
GET/oauth/mcp/authorize
POST/oauth/mcp/approval
POST/oauth/mcp/decision
POST/oauth/mcp/token
GET/api/orchestration/shell
GET/api/orchestration/threads/:threadId
GET/api/orchestration/threads/:threadId/transcript
GET/api/orchestration/threads/:threadId/bounded
GET/api/orchestration/threads/:threadId/history
GET/api/projects
POST/api/projects/mutate
POST/api/pull-requests/diff
POST/api/connect/link-proof
POST/api/connect/relay-config
GET/api/connect/link-state
POST/api/connect/reachability
POST/api/connect/unlink
POST/api/connect/preferences
POST/api/t3-connect/health
POST/api/t3-connect/mint-credential
POST/api/hooks/:hookId/:token
PUT/api/hooks/:hookId/:token
PATCH/api/hooks/:hookId/:token
GET/api/hooks/:hookId/:token

Named helper and endpoint identifiers are available from T3.HTTP.endpoints/0. Attachment upload URLs can include signed query strings; T3.HTTP.upload/4 preserves them and refuses cross-origin destinations.

WebSocket RPC

211 methods, including 27 streams, use orchestration protocol 2 over /ws. T3.RPC.Methods provides named wrappers; arbitrary names work through T3.RPC.call/4 or subscribe/4. Each stream delivers chunks to its subscriber, which calls ack/2 after consumption. unsubscribe/2 sends an interrupt. The transport handles Effect Request/Chunk/Ack/Exit/Ping/Pong/Interrupt framing, server-originated replies, deadlines and disconnect cleanup without replay.

Use a permitted environment access token or a single-use RPC ticket from T3.HTTP.Auth.web_socket_ticket_for(http, "rpc"). MCP OAuth client tokens are rejected by T3 on this surface. TLS/loopback policy and token redaction apply. Subscriptions may be long-lived; supply a total timeout when desired. Unary calls have finite defaults and the pending-request limit is bounded.

MethodResponse
agentSessions.importUnary
agentSessions.scanUnary
assets.createUrlUnary
assets.persistChatAttachmentsUnary
attachments.createUploadUrlUnary
attachments.deleteUnary
cloud.getRelayClientStatusUnary
cloud.installRelayClientStream
device.actionUnary
device.closeUnary
device.configureUnary
device.detailUnary
device.easAccountUnary
device.listUnary
device.openUnary
device.shutdownUnary
device.simlockIdentityUnary
device.testHostUnary
filesystem.browseUnary
filesystem.getMetadataUnary
git.preparePullRequestThreadUnary
git.resolvePullRequestUnary
git.runStackedActionStream
guestShare.createUnary
mcpApps.callToolUnary
mcpApps.readResourceUnary
mcpApps.toolInfoUnary
mcpApps.updateModelContextUnary
orchestration.dispatchCommandUnary
orchestration.forceStopThreadUnary
orchestration.getArchivedShellSnapshotUnary
orchestration.getFullThreadDiffUnary
orchestration.getNativeChildWorkUnary
orchestration.getOlderSettledThreadsUnary
orchestration.getThreadFamilyUnary
orchestration.getThreadProjectionUnary
orchestration.getThreadTitlesUnary
orchestration.getTurnDiffUnary
orchestration.getTurnItemUnary
orchestration.getWorkflowScriptUnary
orchestration.getWorktreeThreadIdsUnary
orchestration.launchThreadUnary
orchestration.searchThreadUnary
orchestration.searchThreadStreamStream
orchestration.searchThreadsUnary
orchestration.stopWorkflowUnary
orchestration.subscribeCommandOutputStream
orchestration.subscribeShellStream
orchestration.subscribeThreadStream
peerLinks.answerRequestUnary
peerLinks.linkUnary
peerLinks.listUnary
peerLinks.unlinkUnary
preview.adjustUnary
preview.clearProfileUnary
preview.closeUnary
preview.listUnary
preview.openUnary
preview.reportProfilesUnary
preview.reportStatusUnary
preview.resizeUnary
preview.stopLocalServerUnary
projectClone.cancelUnary
projectClone.retryUnary
projectClone.startUnary
projects.createFromThreadUnary
projects.createNewUnary
projects.ensureScratchUnary
projects.listEntriesUnary
projects.listIgnoredFilesUnary
projects.mutateUnary
projects.readFileUnary
projects.searchContentsUnary
projects.searchEntriesUnary
projects.writeFileUnary
provider.auth.cancelUnary
provider.auth.completeUnary
provider.auth.logoutUnary
provider.auth.respondUnary
provider.auth.startUnary
provider.auth.subscribeStream
provider.chatgpt.handoff.subscribeStream
provider.chatgpt.import-profileUnary
provider.chatgpt.reconnect-profileUnary
provider.consumeResetCreditUnary
provider.install.cancelUnary
provider.install.removeUnary
provider.install.startUnary
provider.install.subscribeStream
provider.uploadFeedbackUnary
pullRequests.activityUnary
pullRequests.changeBreakdownUnary
pullRequests.checksUnary
pullRequests.commentUnary
pullRequests.detailUnary
pullRequests.diffFileContentsUnary
pullRequests.filesViewedUnary
pullRequests.filterOptionsUnary
pullRequests.generateReviewGuideUnary
pullRequests.invalidateUnary
pullRequests.labelCandidatesUnary
pullRequests.linkedThreadsUnary
pullRequests.listUnary
pullRequests.listStatsUnary
pullRequests.previewUnary
pullRequests.replyToThreadUnary
pullRequests.reportStateUnary
pullRequests.requestReviewersUnary
pullRequests.reviewGuideUnary
pullRequests.reviewerCandidatesUnary
pullRequests.routingUnary
pullRequests.routingIdentityUnary
pullRequests.runActionUnary
pullRequests.setFilesViewedUnary
pullRequests.setLabelsUnary
pullRequests.setReactionUnary
pullRequests.setThreadResolutionUnary
pullRequests.stackUnary
pullRequests.submitReviewUnary
pullRequests.subscribeRefreshesStream
pullRequests.summaryUnary
pullRequests.threadCommentsUnary
pullRequests.updateUnary
pullRequests.updateCommentUnary
review.getBranchCommitsUnary
review.getDiffFileContentsUnary
review.getDiffPreviewUnary
scheduledTasks.deleteUnary
scheduledTasks.getWebhookDeliveryUnary
scheduledTasks.listWebhookDeliveriesUnary
scheduledTasks.rotateWebhookTokenUnary
scheduledTasks.runNowUnary
scheduledTasks.setEnabledUnary
scheduledTasks.subscribeStream
scheduledTasks.upsertUnary
secrets.answerRequestUnary
server.acceptAcpRegistryUrlAuthUnary
server.checkOtlpEndpointUnary
server.commitDesktopUpdateUnary
server.deleteAcpRegistrySessionUnary
server.disableAcpRegistryProviderUnary
server.discoverSourceControlUnary
server.getConfigUnary
server.getDatabaseStorageStream
server.getHostResourcesUnary
server.getNpmReleaseUnary
server.getProcessDiagnosticsUnary
server.getProcessResourceHistoryUnary
server.getResourceTelemetryHistoryUnary
server.getStorageCleanupReportStream
server.getTraceDiagnosticsUnary
server.getUsageSummaryUnary
server.importAcpRegistrySessionUnary
server.listAcpRegistryProvidersUnary
server.listAcpRegistrySessionsUnary
server.logoutAcpRegistryUnary
server.prepareAcpRegistryAgentUnary
server.prepareTriageUnary
server.probeUnary
server.refreshProvidersUnary
server.refreshUsageRatesUnary
server.removeKeybindingUnary
server.reportClientActivityUnary
server.retryResourceTelemetryUnary
server.runStorageCleanupUnary
server.searchAcpRegistryUnary
server.setAcpRegistryProviderUnary
server.signalProcessUnary
server.uninstallAcpRegistryManagedBinaryUnary
server.updateProviderUnary
server.updateServerUnary
server.updateServerWithProgressStream
server.updateSettingsUnary
server.upsertKeybindingUnary
shell.openInEditorUnary
sourceControl.appAccessUnary
sourceControl.cloneRepositoryUnary
sourceControl.lookupRepositoryUnary
sourceControl.publishRepositoryUnary
sourceControl.signInCancelUnary
sourceControl.signInStartUnary
sourceControl.signInWaitUnary
sourceControl.starUnary
sourceControl.starredUnary
subscribeAuthAccessStream
subscribeDeviceStateStream
subscribeDiscoveredLocalServersStream
subscribePreviewEventsStream
subscribeProjectClonesStream
subscribeResourceTelemetryStream
subscribeServerConfigStream
subscribeServerLifecycleStream
subscribeTerminalMetadataStream
subscribeVcsStatusStream
subscribeWorktreeSetupStream
terminal.attachStream
terminal.clearUnary
terminal.closeUnary
terminal.observeStream
terminal.openUnary
terminal.resizeUnary
terminal.writeUnary
vcs.createRefUnary
vcs.createWorktreeUnary
vcs.initUnary
vcs.listRefsUnary
vcs.pullUnary
vcs.refreshStatusUnary
vcs.removeWorktreeUnary
vcs.switchRefUnary
worktreeSetup.cancelUnary

Additional HTTP routes and streaming

45 additional operations cover the raw routes outside EnvironmentHttpApi. Their methods, patterns and authentication audiences are listed below. Device proxy methods/payloads may be further constrained by the installed upstream hub. HEAD and other supported proxy methods can use the generic request interface.

T3.HTTP.Raw.call/3 buffers a bounded result; Raw.stream/4, HTTP.stream/5 and HTTP.start_stream/5 consume bytes with callback backpressure and cancellation. SSE uses Conduit's incremental decoder. The stream deadline applies even to a blocked callback, and finite byte/event/per-event limits apply. Binary MJPEG, AVCC and downloads remain unchanged. T3.HTTP.multipart/2 delegates MIME encoding to Multipart. Cookies, media tickets, Range and proof headers are explicit.

IDMethodPathEncodingAuthentication
assetGET/api/assets/:token/:fileNamebinaryasset_capability
attachment_uploadPOST/api/attachments/upload/:tokenrawupload_capability
otlp_tracesPOST/api/observability/v1/tracesjsonorchestration_operate
guest_redeemPOST/api/guest/redeemjsonshare_credential
guest_messagesPOST/api/guest/messagesjson_or_multipartguest_cookie
guest_sessionGET/api/guest/sessionnoneguest_cookie
guest_streamGET/api/guest/streamsseguest_cookie
guest_renderGET/api/guest/renderbinaryguest_cookie
guest_itemGET/api/guest/itemnoneguest_cookie
guest_historyGET/api/guest/historynoneguest_cookie
guest_command_outputGET/api/guest/command-outputsseguest_cookie
guest_attachmentGET/api/guest/attachmentbinaryguest_cookie
guest_mediaGET/api/guest/mediabinaryguest_cookie
preview_downloadGET/api/preview-stream/downloadbinaryorchestration_read
preview_uploadPOST/api/preview-stream/uploadmultipartpreview_operate
device_listGET/api/device-hub/api/devicesnoneorchestration_read
sim_apiGET/api/device-hub/vendor/serve-sim/apinoneorchestration_read
sim_screenshotGET/api/device-hub/vendor/serve-sim/api/screenshotbinaryorchestration_read
sim_capture_screenshotPOST/api/device-hub/vendor/serve-sim/api/screenshotjsonorchestration_read
sim_event_logGET/api/device-hub/vendor/serve-sim/api/event-lognoneorchestration_read
sim_event_log_eventsGET/api/device-hub/vendor/serve-sim/api/event-log/eventssseorchestration_read
sim_mjpegGET/api/device-hub/vendor/serve-sim/helper/:deviceId/stream.mjpegbinary_streamorchestration_read
sim_avccGET/api/device-hub/vendor/serve-sim/helper/:deviceId/stream.avccbinary_streamorchestration_read
sim_panel_avccGET/api/device-hub/vendor/serve-sim/helper/:deviceId/panel/:panel/stream.avccbinary_streamorchestration_read
sim_configGET/api/device-hub/vendor/serve-sim/helper/:deviceId/confignoneorchestration_read
sim_healthGET/api/device-hub/vendor/serve-sim/helper/:deviceId/healthnoneorchestration_read
sim_accessibilityGET/api/device-hub/vendor/serve-sim/helper/:deviceId/axnoneorchestration_read
sim_foregroundGET/api/device-hub/vendor/serve-sim/helper/:deviceId/foregroundnoneorchestration_read
sim_webrtc_offerPOST/api/device-hub/vendor/serve-sim/helper/:deviceId/webrtc/offerjsonorchestration_read
sim_webrtc_closePOST/api/device-hub/vendor/serve-sim/helper/:deviceId/webrtc/closejsonorchestration_read
sim_appstateGET/api/device-hub/vendor/serve-sim/appstatenoneorchestration_read
emu_apiGET/api/device-hub/vendor/serve-emu/apinoneorchestration_read
emu_devicesGET/api/device-hub/vendor/serve-emu/api/devicesnoneorchestration_read
emu_screenshotGET/api/device-hub/vendor/serve-emu/api/screenshotbinaryorchestration_read
emu_capture_screenshotPOST/api/device-hub/vendor/serve-emu/api/screenshotjsonorchestration_read
emu_stream_modeGET/api/device-hub/vendor/serve-emu/api/stream-modenoneorchestration_read
emu_set_stream_modePOST/api/device-hub/vendor/serve-emu/api/stream-modejsonorchestration_operate
emu_stream_settingsGET/api/device-hub/vendor/serve-emu/api/stream-settingsnoneorchestration_read
emu_set_stream_settingsPOST/api/device-hub/vendor/serve-emu/api/stream-settingsjsonorchestration_operate
emu_accessibilityGET/api/device-hub/vendor/serve-emu/api/accessibilitynoneorchestration_read
emu_foldGET/api/device-hub/vendor/serve-emu/api/foldnoneorchestration_read
emu_set_foldPOST/api/device-hub/vendor/serve-emu/api/foldjsonorchestration_operate
emu_healthGET/api/device-hub/vendor/serve-emu/healthnoneorchestration_read
emu_webrtc_offerPOST/api/device-hub/vendor/serve-emu/webrtc/offerjsonorchestration_read
emu_webrtc_closePOST/api/device-hub/vendor/serve-emu/webrtc/closejsonorchestration_read

Raw WebSocket media routes

These four routes are distinct from Effect RPC. T3.WebSocket.Routes provides helpers for each; T3.WebSocket.start_link/1 accepts new route paths. Text and binary data stay unchanged. A local delivery reference must be acknowledged to release bounded backlog memory. Preview's preview_ack/2 also sends the server's JSON ACK. A raw frame API is not a video codec, WebRTC stack or PTY renderer.

HelperPathScope
preview/api/preview-stream/wsorchestration:read
devices/api/device-hub/api/devices/wsorchestration:read
simulator/api/device-hub/vendor/serve-sim/helper/wsorchestration:operate
emulator/api/device-hub/vendor/serve-emu/wsorchestration:operate

Use a media-bound ticket or permitted environment/media credential, not an MCP OAuth token. The adapter does not follow redirects or reconnect automatically. Frame bytes, incomplete fragments and unacknowledged deliveries are bounded; idle and total lifetime limits are configurable. Owner death closes the transport.

Local CLI

T3.CLI.run/2 accepts every command implemented by the installed executable, passing an argument vector without a shell. commands/2 discovers the actual version's help tree; it does not assume the pinned upstream CLI matches your host. Named family helpers are available for start, serve, app, pair, auth, browser, project, service, update, uninstall, theme, trace, doctor, triage, connect and thread. The installed snapshot is priv/t3/cli.json (t3 v0.1.1); it lacks newer thread commands. There is no automatic upgrade or mutation during discovery.

Exile supplies native subprocess IO and lifecycle on Linux/macOS. A C compiler and make are required to build it. The SDK supports finite stdin and interactive stdin write/EOF, merged stdout/stderr, deadlines and output limits. It is not a PTY and does not expose arbitrary inherited file descriptors. Cancellation kills the directly invoked executable; detached descendant processes are outside the SDK's ownership. As with any process, cleanup cannot survive killing the entire VM.

Validation boundaries

The catalog completeness tests check typed HTTP routes against the pinned contract and MCP/RPC helpers against their source inventories. Actual local HTTP and WebSocket fixtures test protocol behavior and errors; subprocess fixtures test OS IO and termination. This is transport/contract coverage, not proof that every operation's business semantics work against a live T3 installation. No destructive T3 command was run for validation. Authenticated HTTP/RPC live workflows need appropriate credentials and remain distinct from the successful external MCP sign-in.

Included source snapshots are MIT-licensed T3 Tools Inc. code; see priv/t3/UPSTREAM_LICENSE. They document the upstream contract and are not compiled or executed by this package.