transfer_credential
Move n8n credentials between projects or assign them to different owners to reorganize access permissions and workflow ownership.
Instructions
Transfer an n8n credential to a different project or owner
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| newOwnerId | No | ||
| projectId | No |
Implementation Reference
- src/index.ts:457-461 (handler)Primary MCP tool handler for 'transfer_credential'. Destructures arguments and delegates to N8nClient.transferCredential, then formats the response.private async handleTransferCredential(args: { id: string | number } & TransferRequest) { const { id, ...transferData } = args; const result = await this.n8nClient.transferCredential(id, transferData); return { content: [{ type: 'text', text: JSON.stringify(jsonSuccess(result), null, 2) }] }; }
- src/n8n-client.ts:508-511 (handler)Core implementation of credential transfer via HTTP PUT to n8n API endpoint `/credentials/{id}/transfer`.async transferCredential(id: string | number, transferData: TransferRequest): Promise<TransferResponse> { const response = await this.api.put<N8nApiResponse<TransferResponse>>(`/credentials/${id}/transfer`, transferData); return response.data.data; }
- src/index.ts:193-193 (registration)Tool registration in list_tools response, including name, description, and input schema validation.{ name: 'transfer_credential', description: 'Transfer an n8n credential to a different project or owner', inputSchema: { type: 'object', properties: { id: { oneOf: [{ type: 'string' }, { type: 'number' }] }, projectId: { type: 'string' }, newOwnerId: { type: 'string' } }, required: ['id'] } },
- src/types.ts:74-83 (schema)TypeScript interfaces defining the TransferRequest input shape and TransferResponse output shape used by the tool.export interface TransferRequest { projectId?: string; newOwnerId?: string; } export interface TransferResponse { id: string | number; projectId?: string; newOwnerId?: string; }
- src/index.ts:276-277 (registration)Switch case routing CallToolRequest for 'transfer_credential' to the handler function.case 'transfer_credential': return await this.handleTransferCredential(request.params.arguments as unknown as { id: string | number } & TransferRequest);