/** * MCP tools → Gemini function tools bridge (realtime mode). * * In speech-to-speech mode Gemini owns the tool loop, so an external MCP * server's tools are registered as LiveKit/Gemini function tools rather than * NeuroLink tools. This connects to the MCP server as the calling user * (`x-auth-token` + base64 `x-context`), sanitizes each tool's schema into the * Gemini-safe subset, wires WRITE-labeled (destructive) tools through a HITL * confirmation, and forwards tool start/result events to the browser bridge. * * `@livekit/agents` and `@modelcontextprotocol/sdk` are imported dynamically so * the core package does not require them unless the realtime agent is used. * * See docs/features/livekit-voice-agent.md. */ import type { llm as llmNs } from "@livekit/agents"; import type { BuildRealtimeMcpToolsParams } from "../../types/index.js"; /** Flatten an MCP tool result's text content into a single string for the model. */ export declare function mcpResultToText(result: unknown): string; /** * Connect to the MCP server as the calling user and bridge every tool into a * LiveKit `ToolContext`. Returns the tool map + the client (close on shutdown). * The server already scopes the tool list by `x-context`, so no client-side * filtering is needed. */ export declare function buildRealtimeMcpTools(params: BuildRealtimeMcpToolsParams): Promise<{ tools: llmNs.ToolContext; client: { close: () => Promise; }; }>;