send-payment
Execute payments securely by specifying the payee ID, amount, and wallet ID. Designed for precise fund transfers using the Payman AI MCP Server.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| amountDecimal | Yes | Amount to send (in decimal) | |
| payeeId | Yes | ID of the payee to send payment to | |
| walletId | No | The ID of the specific wallet from which to send the funds |
Implementation Reference
- payman-server.ts:351-426 (registration)Full registration of the 'send-payment' MCP tool, including inline Zod input schema, async handler function that proxies payment requests to the Payman API, and error handling.server.tool( "send-payment", { payeeId: z.string().describe("ID of the payee to send payment to"), amountDecimal: z .number() .positive() .describe("Amount to send (in decimal)"), walletId: z .string() .optional() .describe("The ID of the specific wallet from which to send the funds"), }, async ({ payeeId, amountDecimal }) => { if (!paymanApiKey) { return { content: [ { type: "text", text: "API key has not been set. Please use the set-api-key tool first.", }, ], isError: true, }; } try { const response = await fetch( "https://agent.payman.ai/api/payments/send-payment", { method: "POST", headers: { "x-payman-api-secret": paymanApiKey, "Content-Type": "application/json", }, body: JSON.stringify({ payeeId, amountDecimal }), } ); const data = await response.json(); if (!response.ok) { return { content: [ { type: "text", text: `Error sending payment: ${JSON.stringify(data)}`, }, ], isError: true, }; } return { content: [ { type: "text", text: `Payment sent successfully: ${JSON.stringify(data)}`, }, ], }; } catch (error) { return { content: [ { type: "text", text: `Failed to send payment: ${ error instanceof Error ? error.message : String(error) }`, }, ], isError: true, }; } } );
- payman-server.ts:364-425 (handler)The core handler logic for the send-payment tool: validates API key presence, performs HTTP POST to external Payman API endpoint, parses response, and formats MCP-compliant success or error content.async ({ payeeId, amountDecimal }) => { if (!paymanApiKey) { return { content: [ { type: "text", text: "API key has not been set. Please use the set-api-key tool first.", }, ], isError: true, }; } try { const response = await fetch( "https://agent.payman.ai/api/payments/send-payment", { method: "POST", headers: { "x-payman-api-secret": paymanApiKey, "Content-Type": "application/json", }, body: JSON.stringify({ payeeId, amountDecimal }), } ); const data = await response.json(); if (!response.ok) { return { content: [ { type: "text", text: `Error sending payment: ${JSON.stringify(data)}`, }, ], isError: true, }; } return { content: [ { type: "text", text: `Payment sent successfully: ${JSON.stringify(data)}`, }, ], }; } catch (error) { return { content: [ { type: "text", text: `Failed to send payment: ${ error instanceof Error ? error.message : String(error) }`, }, ], isError: true, }; } }
- payman-server.ts:353-363 (schema)Zod input schema defining parameters for send-payment: required payeeId (string), amountDecimal (positive number), optional walletId (string).{ payeeId: z.string().describe("ID of the payee to send payment to"), amountDecimal: z .number() .positive() .describe("Amount to send (in decimal)"), walletId: z .string() .optional() .describe("The ID of the specific wallet from which to send the funds"), },