McpTool
Turns an MCP Tool into an ADK BaseTool.
The tool holds no session of its own: it fetches the shared session from mcpSessionManager on each call and, on failure, asks the manager to reinitialize it. Because the manager owns the session pool, a reinit is seen by every tool sharing the session and the toolset can close them all via SessionManager.close.
Properties
The custom metadata of the tool.
The description of the tool.
Whether the tool's final result will be delivered out-of-band. When true, the framework marks the call as long-running and uses the tool's return value as the function-response payload. Returning Unit means "no response yet": the FR event is suppressed so the function-call event (which carries the call id in longRunningToolIds and is thus the turn's final response) ends the turn without re-invoking the model. A non-Unit return -- including an explicit empty Map -- is treated as a real response and emitted. (Unit suppression aligns with Python; Java instead always emits {}.) The longRunningToolIds id also drives the resumable-mode pause gate so the invocation can be resumed later via a user-injected function-response.