sendTransaction
Sends a blockchain transaction using specified addresses and data. Requires owner SCA account, signer address, and recipient address to execute securely.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| callData | No | The data of the transaction. | |
| ownerScaAccountAddress | Yes | The owner SCA account address. | |
| signerAddress | Yes | The signer address to send the transaction from. | |
| toAddress | Yes | The address to send the transaction to. | |
| value | No | The value of the transaction in ETH. |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"callData": {
"description": "The data of the transaction.",
"type": "string"
},
"ownerScaAccountAddress": {
"description": "The owner SCA account address.",
"type": "string"
},
"signerAddress": {
"description": "The signer address to send the transaction from.",
"type": "string"
},
"toAddress": {
"description": "The address to send the transaction to.",
"type": "string"
},
"value": {
"description": "The value of the transaction in ETH.",
"type": "string"
}
},
"required": [
"ownerScaAccountAddress",
"signerAddress",
"toAddress"
],
"type": "object"
}
Implementation Reference
- index.ts:323-341 (handler)MCP server tool handler for 'sendTransaction' that invokes alchemyApi.sendTransaction, formats the result as text content, and handles errors.}, async (params) => { try { const result = await alchemyApi.sendTransaction(params); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; } catch (error) { if (error instanceof Error) { console.error('Error in sendTransaction:', error); return { content: [{ type: "text", text: `Error: ${error.message}` }], isError: true }; } return { content: [{ type: "text", text: 'Unknown error occurred' }], isError: true }; }
- api/alchemyApi.ts:153-181 (helper)Helper function implementing the transaction send logic via POST request to the agent wallet server.async sendTransaction(params: SendTransactionParams) { const { ownerScaAccountAddress, signerAddress, toAddress, value, callData } = params; try { const response = await fetch(`${AGENT_WALLET_SERVER}/transactions/send`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ownerScaAccountAddress, signerAddress, toAddress, value, callData }) }); if (!response.ok) { const errorData = await response.json(); throw new Error(errorData.error || `HTTP ${response.status}: ${response.statusText}`); } const result = await response.json(); return result.data; } catch (error) { console.error('Error sending transaction:', error); throw error; } },
- types/types.d.ts:73-79 (schema)TypeScript interface defining the parameters for sendTransaction.export interface SendTransactionParams { ownerScaAccountAddress: string; signerAddress: string; toAddress: string; value?: string; callData?: string; }
- index.ts:317-322 (registration)Registration of the 'sendTransaction' tool on the MCP server with Zod input validation schema.server.tool('sendTransaction', { ownerScaAccountAddress: z.string().describe('The owner SCA account address.'), signerAddress: z.string().describe('The signer address to send the transaction from.'), toAddress: z.string().describe('The address to send the transaction to.'), value: z.string().optional().describe('The value of the transaction in ETH.'), callData: z.string().optional().describe('The data of the transaction.'),