import { Tool } from '@modelcontextprotocol/sdk/types.js';
export const AVAILABLE_TOOLS: Tool[] = [
{
name: 'create_wallet',
description: 'Create a new Hyperion wallet with a generated mnemonic phrase',
inputSchema: {
type: 'object',
properties: {
name: {
type: 'string',
description: 'Optional name for the wallet',
},
},
},
},
{
name: 'import_wallet',
description: 'Import an existing wallet using private key or mnemonic phrase',
inputSchema: {
type: 'object',
properties: {
privateKey: {
type: 'string',
description: 'Private key to import (alternative to mnemonic)',
},
mnemonic: {
type: 'string',
description: 'Mnemonic phrase to import (alternative to private key)',
},
name: {
type: 'string',
description: 'Optional name for the wallet',
},
},
},
},
{
name: 'list_wallets',
description: 'List all available wallets',
inputSchema: {
type: 'object',
properties: {},
},
},
{
name: 'get_balance',
description: 'Get the balance of a wallet address (native tokens or ERC20 tokens)',
inputSchema: {
type: 'object',
properties: {
address: {
type: 'string',
description: 'Wallet address to check balance for',
},
tokenAddress: {
type: 'string',
description: 'Optional ERC20 token contract address',
},
},
required: ['address'],
},
},
{
name: 'send_transaction',
description: 'Send native tokens or ERC20 tokens to another address',
inputSchema: {
type: 'object',
properties: {
to: {
type: 'string',
description: 'Recipient address',
},
amount: {
type: 'string',
description: 'Amount to send (in token units, not wei)',
},
tokenAddress: {
type: 'string',
description: 'Optional ERC20 token contract address (for token transfers)',
},
gasLimit: {
type: 'string',
description: 'Optional gas limit',
},
gasPrice: {
type: 'string',
description: 'Optional gas price',
},
},
required: ['to', 'amount'],
},
},
{
name: 'get_transaction',
description: 'Get details of a transaction by hash',
inputSchema: {
type: 'object',
properties: {
hash: {
type: 'string',
description: 'Transaction hash',
},
},
required: ['hash'],
},
},
{
name: 'get_block',
description: 'Get block information by number or hash',
inputSchema: {
type: 'object',
properties: {
blockNumber: {
type: 'number',
description: 'Block number (alternative to blockHash)',
},
blockHash: {
type: 'string',
description: 'Block hash (alternative to blockNumber)',
},
},
},
},
{
name: 'get_network_info',
description: 'Get current network information and status',
inputSchema: {
type: 'object',
properties: {},
},
},
{
name: 'estimate_gas',
description: 'Estimate gas cost for a transaction',
inputSchema: {
type: 'object',
properties: {
to: {
type: 'string',
description: 'Recipient address',
},
value: {
type: 'string',
description: 'Optional value to send (in ether)',
},
data: {
type: 'string',
description: 'Optional transaction data',
},
},
required: ['to'],
},
},
{
name: 'call_contract',
description: 'Call a smart contract method (read-only)',
inputSchema: {
type: 'object',
properties: {
contractAddress: {
type: 'string',
description: 'Smart contract address',
},
methodName: {
type: 'string',
description: 'Method name to call',
},
parameters: {
type: 'array',
description: 'Method parameters',
items: {},
},
abi: {
type: 'array',
description: 'Optional contract ABI',
items: {},
},
},
required: ['contractAddress', 'methodName'],
},
},
{
name: 'send_contract_transaction',
description: 'Send a transaction to a smart contract method',
inputSchema: {
type: 'object',
properties: {
contractAddress: {
type: 'string',
description: 'Smart contract address',
},
methodName: {
type: 'string',
description: 'Method name to call',
},
parameters: {
type: 'array',
description: 'Method parameters',
items: {},
},
abi: {
type: 'array',
description: 'Optional contract ABI',
items: {},
},
value: {
type: 'string',
description: 'Optional ether value to send',
},
gasLimit: {
type: 'string',
description: 'Optional gas limit',
},
gasPrice: {
type: 'string',
description: 'Optional gas price',
},
},
required: ['contractAddress', 'methodName'],
},
},
{
name: 'set_current_wallet',
description: 'Set the current active wallet for transactions',
inputSchema: {
type: 'object',
properties: {
address: {
type: 'string',
description: 'Wallet address to set as current',
},
},
required: ['address'],
},
},
{
name: 'get_current_wallet',
description: 'Get the current active wallet information',
inputSchema: {
type: 'object',
properties: {},
},
},
{
name: 'deploy_erc20_token',
description: 'Deploy a new ERC20 token contract',
inputSchema: {
type: 'object',
properties: {
name: {
type: 'string',
description: 'Token name (e.g., "My Token")',
},
symbol: {
type: 'string',
description: 'Token symbol (e.g., "MTK")',
},
decimals: {
type: 'number',
description: 'Token decimals (default: 18)',
},
initialSupply: {
type: 'string',
description: 'Initial token supply',
},
mintable: {
type: 'boolean',
description: 'Whether the token should be mintable (default: false)',
},
gasLimit: {
type: 'string',
description: 'Optional gas limit',
},
gasPrice: {
type: 'string',
description: 'Optional gas price',
},
},
required: ['name', 'symbol', 'initialSupply'],
},
},
{
name: 'get_token_info',
description: 'Get information about an ERC20 token',
inputSchema: {
type: 'object',
properties: {
tokenAddress: {
type: 'string',
description: 'ERC20 token contract address',
},
},
required: ['tokenAddress'],
},
},
{
name: 'mint_tokens',
description: 'Mint tokens (only for mintable tokens)',
inputSchema: {
type: 'object',
properties: {
tokenAddress: {
type: 'string',
description: 'ERC20 token contract address',
},
to: {
type: 'string',
description: 'Address to mint tokens to',
},
amount: {
type: 'string',
description: 'Amount of tokens to mint',
},
gasLimit: {
type: 'string',
description: 'Optional gas limit',
},
gasPrice: {
type: 'string',
description: 'Optional gas price',
},
},
required: ['tokenAddress', 'to', 'amount'],
},
},
];