Create server-only tools that call the Darwin SDK or REST API. Keep the public Search schema separate from Action mutations so the UI can render different confirmation behavior.
Copy the Vercel AI SDK MCP recipe.
Recommended application state
- selected
capabilityId and capabilityRevision
- durable
actionId
- stable
requestId for each logical mutation
- current
status, actionRequired, and availableActions
Stream explanatory model text separately from the authoritative Action result. A finished text stream does not mean external work completed.
UI responsibilities
Keep the stream reconnectable and the Action state durable. A page refresh should read the stored actionId, not create a new Action. Last modified on September 22, 2026