feat(mcp): connect authenticated AquaPortal tools to Vocero (#1)
Vocero needs to query AquaPortal on behalf of the caller selected by the existing phone link. This adds server-owned conversations and MCP tool execution for voice and HTTP reasoning while leaving the speech pipeline unchanged. Release notes: - Added browser-bound conversations that keep backend credentials server-side and isolate callers. - Connected the eight-tool AquaPortal catalog through authenticated Streamable HTTP with full input schemas and structured results. - Added bounded multi-step tool execution with cancellation, expiry, and stale-result protection. - Updated browser bootstrap, tool progress, reasoning headers, and conversation cleanup. - Disabled legacy unscoped content preloads in MCP mode and documented configuration and deployment constraints. - Preserved disabled-mode contracts and added local SDK, WebSocket, and browser regression coverage. Reviewed-on: AquaPortal/s2s#1
This commit is contained in:
@@ -2,13 +2,14 @@
|
||||
|
||||
from fastapi import APIRouter
|
||||
|
||||
from vocero_api.api.routes import apipilot, caller, config, search, sessions
|
||||
from vocero_api.api.routes import apipilot, caller, config, conversations, search, sessions
|
||||
from vocero_api.models.responses import ReasoningResponse
|
||||
from vocero_api.realtime.proxy import realtime_proxy
|
||||
from vocero_api.services.reasoning import reasoning
|
||||
|
||||
router = APIRouter()
|
||||
router.include_router(config.router)
|
||||
router.include_router(conversations.router)
|
||||
router.include_router(apipilot.router)
|
||||
router.add_api_route("/api/reasoning", reasoning, methods=["POST"], response_model=ReasoningResponse)
|
||||
router.add_api_websocket_route("/v1/realtime", realtime_proxy)
|
||||
|
||||
Reference in New Issue
Block a user