{"record":{"id":"1351dfc3fb43d1fe","repo":"continuedev/continue","slug":"unsupported-transport-type-this-options-type","errorCode":null,"errorMessage":"Unsupported transport type: ${this.options.type}","messagePattern":"Unsupported transport type: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"core/context/mcp/MCPConnection.ts","lineNumber":256,"sourceCode":"                }\n              } else {\n                // SSE/HTTP: if type isn't explicit: try http and fall back to sse\n                if (this.options.type === \"sse\") {\n                  const transport = this.constructSseTransport(this.options);\n                  await this.client.connect(transport, {});\n                  this.transport = transport;\n                } else if (this.options.type === \"streamable-http\") {\n                  const transport = this.constructHttpTransport(this.options);\n                  await this.client.connect(transport, {});\n                  this.transport = transport;\n                } else if (this.options.type === \"websocket\") {\n                  const transport = this.constructWebsocketTransport(\n                    this.options,\n                  );\n                  await this.client.connect(transport, {});\n                  this.transport = transport;\n                } else if (this.options.type) {\n                  throw new Error(\n                    `Unsupported transport type: ${this.options.type}`,\n                  );\n                } else {\n                  try {\n                    const transport = this.constructHttpTransport({\n                      ...this.options,\n                      type: \"streamable-http\",\n                    });\n                    await this.client.connect(transport, {});\n                    this.transport = transport;\n                  } catch (e) {\n                    try {\n                      const transport = this.constructSseTransport({\n                        ...this.options,\n                        type: \"sse\",\n                      });\n                      await this.client.connect(transport, {});\n                      this.transport = transport;","sourceCodeStart":238,"sourceCodeEnd":274,"githubUrl":"https://github.com/continuedev/continue/blob/5522c6f44ca0ac3528b37244818fbfa39b5af470/core/context/mcp/MCPConnection.ts#L238-L274","documentation":"The Vertex endpoint returned a non-2xx HTTP status for a non-streaming chat request; the error body from Google is embedded for diagnosis. This wraps upstream API failures (auth, quota, model access, malformed request).","triggerScenarios":"401/403 expired token or missing aiplatform.user role; 404 wrong project/region/model id; 429 quota exceeded; 400 invalid request body converted for the publisher endpoint.","commonSituations":"Expired cached OAuth token; service account lacks Vertex AI User role; model not enabled in the region; billing disabled on the project; rate limits under load.","solutions":["Read the embedded JSON body — Google's error message states the exact reason","For 403, grant roles/aiplatform.user to the service account and enable aiplatform.googleapis.com","For 404, verify project id, region, and full model id including @version","For 429, add backoff/retry and request quota increase"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { const r = await api.chatCompletionNonStream(body, signal); } catch (e) { const msg = (e as Error).message; if (msg.includes('429')) await backoffAndRetry(); else if (msg.includes('401') || msg.includes('403')) refreshCreds(); else throw e; }","preventionTips":["Parse status from the message to route handling (auth vs quota vs 404)","Keep requests within quota; implement jittered backoff","Verify project/region/model enablement in deployment checklists"],"tags":["vertexai","http-error","upstream-api"],"backgroundTag":"upstream-api-http-error","analyzedSha":"5522c6f44ca0ac3528b37244818fbfa39b5af470","analyzedAt":"2026-08-27T11:28:54.683Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}