Tunneling Async Through Synchronous Tools

▶ Watch (0:03)

Davis built an invoice processing workflow with three steps: validate against an ERP, wait for human approval, then pay line items. Before November 2025, she wrapped that logic in four MCP tools (submit, approve, reject, status) using FastMCP. Each tool call was request-response. The workflow itself was durable — built on Temporal — but the MCP layer tunneled an async process through synchronous calls. Losing the client meant no way to resume without custom tooling. Claude refused to call approve and reject tools by default, flagging them as risky financial decisions.

Tasks: Durable State Machines for Tool Execution

▶ Watch (10:12)

The November 2025 spec added tasks as an augmentation on tools. A tool can be synchronous, asynchronous, or let the client choose. Calling a tool asynchronously returns a handle. The critical requirement: tasks are durable state machines that carry information. They must survive client disconnects, network outages, and server crashes. The protocol defines five task-related messages — tools/call, get, result, cancel, and list — and 11 behavioral semantics covering lifecycle, time-to-live, input handling, and result delivery.

The Tricky Mechanics of Input-Required and Polling

▶ Watch (15:07)

Four of the five task messages use request-response. The client polls the server for status. Only task/result establishes a long-running connection. When the server needs input, it signals input-required during a poll. The client then opens a task/result stream. Over that connection, the server uses elicitation — making a request back to the client — to gather the information. Once the input is provided, the client closes the stream and returns to polling. Davis called this pattern weird and tricky.

Durability Demo: Kill Everything, Resume

▶ Watch (23:54)

Davis ran her custom MCP client — built because no off-the-shelf agent supports tasks yet. The invoice processor reached pending approval. She killed both the client and the server process with Ctrl-C. After restarting, the client listed open tasks using a client-side tool. It found the waiting invoice, resumed polling, detected input-required, and accepted the approval. The workflow continued exactly where it left off. One line item was set to pay in three months. The client kept polling until forced approval completed the workflow.

Notable Quotes

Tasks are durable state machines that carry information. Cornelia Davis · ▶ Watch (14:19)

there are no offtheshelf agents out there today that support the task protocol. None. Cornelia Davis · ▶ Watch (23:11)

I was over the moon excited this morning when I heard at least one if not two people in the keynote say we want to work on a transport protocol that is stateless. Cornelia Davis · ▶ Watch (28:01)

AI and the longer we go, the more asynchronous it becomes. Agents become more longunning, more independently operating. Cornelia Davis · ▶ Watch (11:48)

Key Takeaways

  • MCP tasks add durability: state machines survive client and server crashes.
  • The protocol uses polling with a long-running connection for input requests.
  • No off-the-shelf agents support the task protocol as of this talk.

About the Speaker(s)

Cornelia has spent a career at the forefront of technological innovation, starting with image processing algorithm development, moving to web-centric computing in the late 1990s, and then more than a decade working in cloud-native software and DevOps platforms. As a Developer Advocate…