The primary goal is to allow a server to execute complex tool logic that requires multiple interactions with the client (like elicitation or LLM sampling) without maintaining any state between requests. This is achieved by serializing the saga's state into an opaque token that is passed back and forth.
- Server Benefits: Simplifies server implementation, enhances scalability, and improves resilience. A server can be restarted without losing the progress of an in-flight tool call.
- Client Responsibilities: The client acts as the state holder, responsible for driving the saga forward by responding to server requests and passing the state token back.