X_MCP_APP_UNMOUNTED
Means
the app's MCP endpoint is exposed in config and nothing can be mounted
Typical cause
ai.mcp.expose is true — the default — and either no apps/<app>/mcp.ts exports mcp, or the one that does was built without resolveToken, so defineAppMcp built no route. Logged once per boot by the web role (x dev and runRole alike), never thrown: an app with no agent surface yet is a working app
Fix
write apps/web/mcp.ts exporting mcp = defineAppMcp({ include: 'exposed', resolveToken }), add resolveToken to the one that exists, or set ai: { mcp: { expose: false } }