{"record":{"id":"70fe4c5540e37038","repo":"FlowiseAI/Flowise","slug":"pipedream-client-id-and-client-secret-are-required","errorCode":null,"errorMessage":"Pipedream Client ID and Client Secret are required in credentials","messagePattern":"Pipedream Client ID and Client Secret are required in credentials","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/components/nodes/tools/MCP/Pipedream/PipedreamMCP.ts","lineNumber":307,"sourceCode":"\n        const SAFE_USER_ID = /^[a-zA-Z0-9._@+-]{1,250}$/\n        if (!SAFE_USER_ID.test(externalUserId.trim())) {\n            throw new Error('User ID contains invalid characters. Allowed: letters, digits, . _ @ + -')\n        }\n\n        const credentialData = await getCredentialData(nodeData.credential ?? '', options)\n        const projectId = getCredentialParam('projectId', credentialData, nodeData)\n        const oauthScopes = getCredentialParam('oauthScopes', credentialData, nodeData) as string | 'connect:*'\n\n        if (!projectId) {\n            throw new Error('Pipedream Project ID is required in credentials')\n        }\n\n        const clientId = getCredentialParam('clientId', credentialData, nodeData)\n        const clientSecret = getCredentialParam('clientSecret', credentialData, nodeData)\n\n        if (!clientId || !clientSecret) {\n            throw new Error('Pipedream Client ID and Client Secret are required in credentials')\n        }\n        const accessToken = await this.fetchAccessToken(clientId, clientSecret, oauthScopes)\n\n        const environment = (nodeData.inputs?.environment as string) || 'development'\n        const toolMode = (nodeData.inputs?.toolMode as string) || 'tools-only'\n\n        const serverParams = {\n            url: 'https://remote.mcp.pipedream.net',\n            headers: {\n                Authorization: `Bearer ${accessToken}`,\n                'x-pd-project-id': projectId,\n                'x-pd-environment': environment,\n                'x-pd-external-user-id': externalUserId,\n                'x-pd-app-slug': appSlug,\n                'x-pd-tool-mode': toolMode\n            }\n        }\n","sourceCodeStart":289,"sourceCodeEnd":325,"githubUrl":"https://github.com/FlowiseAI/Flowise/blob/abe4a8601a058047b350c260676826e21dd14101/packages/components/nodes/tools/MCP/Pipedream/PipedreamMCP.ts#L289-L325","documentation":"Thrown when either clientId or clientSecret is missing from the Pipedream credential. These are the client-credentials pair used by fetchAccessToken to obtain a bearer token for the MCP server; without both, the OAuth exchange cannot be attempted.","triggerScenarios":"Pipedream credential has projectId but one of clientId/clientSecret is blank; only one of the two was entered; secret field left empty.","commonSituations":"User entered only the Client ID; pasted Client Secret into the wrong field; secret cleared on re-edit; app credentials regenerated in Pipedream but not updated here.","solutions":["Open the Pipedream credential and ensure BOTH Client ID and Client Secret are filled.","Re-copy both values from the Pipedream app's API credentials section.","Check for trailing whitespace/hidden characters; re-paste cleanly.","Save and retry."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const clientId = getCredentialParam('clientId', credentialData, nodeData)\nconst clientSecret = getCredentialParam('clientSecret', credentialData, nodeData)\nif (!clientId || !clientSecret) {\n    throw new Error('Pipedream Client ID and Client Secret are required')\n}","typeGuard":"function hasClientCreds(cred: unknown): cred is { clientId: string; clientSecret: string } {\n    return typeof cred === 'object' && cred !== null\n        && typeof (cred as any).clientId === 'string' && (cred as any).clientId.length > 0\n        && typeof (cred as any).clientSecret === 'string' && (cred as any).clientSecret.length > 0\n}","tryCatchPattern":"try { await pipedream.getTools(nodeData, options) }\ncatch (e) { if (e instanceof Error && e.message === 'Pipedream Client ID and Client Secret are required in credentials') { /* fill both */ } }","preventionTips":["Require both fields in the credential UI.","Trim secrets on save; warn on pasted values with embedded whitespace."],"tags":["pipedream","credentials","oauth","validation","configuration"],"backgroundTag":null,"analyzedSha":"abe4a8601a058047b350c260676826e21dd14101","analyzedAt":"2026-08-12T16:04:40.823Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}