{"record":{"id":"a5cc7a752aeab627","repo":"ComposioHQ/composio","slug":"failed-to-parse-mcp-update-response","errorCode":null,"errorMessage":"Failed to parse MCP update response","messagePattern":"Failed to parse MCP update response","errorType":"validation","errorClass":"ValidationError","httpStatus":null,"severity":"error","filePath":"ts/packages/core/src/utils/transformers/mcp.ts","lineNumber":137,"sourceCode":"  return result.data;\n}\n\n/**\n * Transform MCP update response from snake_case to camelCase\n */\nexport function transformMcpUpdateResponse(response: McpUpdateResponseRaw): McpUpdateResponse {\n  const result = McpUpdateResponseSchema.safeParse({\n    id: response.id,\n    name: response.name,\n    createdAt: response.created_at,\n    updatedAt: response.updated_at,\n    status: (response as unknown as Record<string, unknown>).status,\n    toolkits: response.toolkits,\n    tools: (response as unknown as Record<string, unknown>).tools,\n  });\n\n  if (!result.success) {\n    throw new ValidationError('Failed to parse MCP update response', {\n      cause: result.error,\n    });\n  }\n\n  return result.data;\n}\n\n/**\n * Transform MCP generate URL response from snake_case to camelCase\n */\nexport function transformMcpGenerateUrlResponse(\n  response: GenerateURLResponseRaw\n): GenerateURLResponse {\n  const result = GenerateURLResponseSchema.safeParse({\n    connectedAccountUrls: response.connected_account_urls,\n    userIdsUrl: response.user_ids_url,\n    mcpUrl: response.mcp_url,\n  });","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/ComposioHQ/composio/blob/64b1b85502b1beeb2379e6c9e8bf1104504fa637/ts/packages/core/src/utils/transformers/mcp.ts#L119-L155","documentation":"transformMcpUpdateResponse validates the payload returned after updating an MCP server (status, toolkits, tools, etc.); parse failure throws ValidationError with the Zod cause.","triggerScenarios":"Updating an MCP server (composio.mcp.update) with toolkits/tools whose echoed-back shape fails the schema, e.g. unexpected tool entry format.","commonSituations":"Passing new/renamed toolkit identifiers that the backend echoes differently than the SDK expects; version skew; partially-updated server state.","solutions":["Upgrade @composio/core","Inspect error.cause for the failing field and compare with what you passed","Verify the update actually applied by retrieving the server before retrying","Report the payload if the mismatch persists on latest"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { const updated = await composio.mcp.update(id, payload); } catch (e) { if (e instanceof ValidationError) { /* verify via mcp.get before retrying */ } throw e; }","preventionTips":["Confirm update semantics are idempotent before retrying","Compare echoed payload vs request on parse failure","Stay on latest SDK"],"tags":["mcp","validation","zod","update"],"backgroundTag":"schema-validation-failed","analyzedSha":"64b1b85502b1beeb2379e6c9e8bf1104504fa637","analyzedAt":"2026-08-28T15:39:33.623Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}