@moonpay/cli 0.6.15 → 0.6.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-77AT5BZQ.js +25 -0
- package/dist/chunk-WLQU5BOQ.js +3 -0
- package/dist/index.js +15 -405
- package/dist/mcp-L2RILWER.js +2 -0
- package/dist/store-XV77WYWO.js +2 -0
- package/package.json +1 -1
- package/skills/moonpay-buy-crypto/SKILL.md +4 -3
- package/dist/chunk-7KJP7F5Q.js +0 -7866
- package/dist/chunk-7KJP7F5Q.js.map +0 -1
- package/dist/chunk-ZYYH3VNA.js +0 -511
- package/dist/chunk-ZYYH3VNA.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/mcp-7EFPAPL5.js +0 -128
- package/dist/mcp-7EFPAPL5.js.map +0 -1
- package/dist/store-6OIOBMHW.js +0 -22
- package/dist/store-6OIOBMHW.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/auth.ts","../src/client.ts","../src/generated/schemas.json","../src/tools/consent/check/tool.ts","../src/tools/shared.ts","../src/tools/consent/check/schema.ts","../src/tools/wallet/create/tool.ts","../src/tools/wallet/create/schema.ts","../src/tools/wallet/import/tool.ts","../src/tools/wallet/import/schema.ts","../src/tools/wallet/list/schema.ts","../src/tools/wallet/list/tool.ts","../src/tools/wallet/retrieve/schema.ts","../src/tools/wallet/retrieve/tool.ts","../src/tools/wallet/delete/schema.ts","../src/tools/wallet/delete/tool.ts","../src/tools/wallet/rename/schema.ts","../src/tools/wallet/rename/tool.ts","../src/tools/wallet/export/schema.ts","../src/tools/wallet/export/tool.ts","../src/tools/transaction/sign/tool.ts","../src/tools/transaction/sign/schema.ts","../src/tools/message/sign/tool.ts","../src/tools/message/sign/schema.ts","../src/tools/bitcoin/balance/tool.ts","../src/tools/bitcoin/balance/schema.ts","../src/tools/skill/server.ts","../src/tools/skill/list/schema.ts","../src/tools/skill/list/tool.ts","../src/tools/skill/retrieve/schema.ts","../src/tools/skill/retrieve/tool.ts","../src/tools/skill/install/schema.ts","../src/tools/skill/install/tool.ts","../src/tools/token/bridge/tool.ts","../src/tools/token/bridge/schema.ts","../src/tools/token/swap/schema.ts","../src/tools/token/swap/tool.ts","../src/tools/token/transfer/schema.ts","../src/tools/token/transfer/tool.ts","../src/tools/x402/request/tool.ts","../src/tools/x402/request/schema.ts","../src/tools/virtual-account/wallet/register/schema.ts","../src/tools/virtual-account/wallet/register/tool.ts","../src/tools/consent/accept/tool.ts","../src/tools/consent/accept/schema.ts","../src/tools/login/schema.ts","../src/tools/login/tool.ts","../src/tools/verify/schema.ts","../src/tools/verify/tool.ts","../src/tools/logout/schema.ts","../src/tools/logout/tool.ts","../src/tools/qr/tool.ts","../src/tools/qr/schema.ts","../src/local-tools.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport { encrypt, decrypt, encryptedFileSchema } from \"./crypto\";\nimport { getEncryptionKey, ensureEncryptionKey } from \"./tools/wallet/session\";\n\nconst CONFIG_DIR = path.join(os.homedir(), \".config\", \"moonpay\");\nconst CONFIG_PATH = path.join(CONFIG_DIR, \"config.json\");\nconst CREDENTIALS_PATH = path.join(CONFIG_DIR, \"credentials.json\");\nconst LOCK_PATH = path.join(CONFIG_DIR, \".credentials.lock\");\n\nexport const DEFAULT_CONFIG: Config = {\n baseUrl: \"https://agents.moonpay.com\",\n};\n\nexport type Config = {\n baseUrl: string;\n};\n\nexport type Credentials = {\n accessToken: string;\n refreshToken: string | null;\n expiresAt: number;\n baseUrl: string;\n};\n\nfunction ensureConfigDir() {\n if (!fs.existsSync(CONFIG_DIR)) {\n fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n }\n}\n\nfunction atomicWriteFileSync(filePath: string, data: string, mode: number) {\n const tmp = filePath + `.tmp.${process.pid}`;\n fs.writeFileSync(tmp, data, { encoding: \"utf-8\", mode });\n fs.renameSync(tmp, filePath);\n}\n\nconst LOCK_STALE_MS = 30_000;\n\nfunction acquireLock(): (() => void) | null {\n ensureConfigDir();\n try {\n const fd = fs.openSync(\n LOCK_PATH,\n fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_WRONLY,\n 0o600,\n );\n fs.writeSync(fd, JSON.stringify({ pid: process.pid, ts: Date.now() }));\n fs.closeSync(fd);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"EEXIST\") throw err;\n try {\n const lockData = JSON.parse(fs.readFileSync(LOCK_PATH, \"utf-8\"));\n if (Date.now() - lockData.ts < LOCK_STALE_MS) {\n return null;\n }\n } catch {\n // corrupt lock file\n }\n try {\n fs.unlinkSync(LOCK_PATH);\n } catch {\n /* already removed */\n }\n try {\n const fd = fs.openSync(\n LOCK_PATH,\n fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_WRONLY,\n 0o600,\n );\n fs.writeSync(fd, JSON.stringify({ pid: process.pid, ts: Date.now() }));\n fs.closeSync(fd);\n } catch {\n return null;\n }\n }\n return () => {\n try {\n fs.unlinkSync(LOCK_PATH);\n } catch {\n /* already removed */\n }\n };\n}\n\nexport function getConfig(): Config | null {\n if (!fs.existsSync(CONFIG_PATH)) return null;\n try {\n const data = JSON.parse(fs.readFileSync(CONFIG_PATH, \"utf-8\"));\n if (!data.baseUrl) return null;\n return data as Config;\n } catch {\n return null;\n }\n}\n\nexport function getConfigOrDefault(): Config {\n const fromFile = getConfig();\n if (fromFile) return fromFile;\n saveConfig(DEFAULT_CONFIG);\n return DEFAULT_CONFIG;\n}\n\nexport function getCredentials(): Credentials | null {\n if (!fs.existsSync(CREDENTIALS_PATH)) return null;\n\n const encryptionKey = getEncryptionKey();\n if (!encryptionKey) return null;\n\n try {\n const raw = JSON.parse(fs.readFileSync(CREDENTIALS_PATH, \"utf-8\"));\n const file = encryptedFileSchema.parse(raw);\n const decrypted = decrypt(file, encryptionKey);\n const data = JSON.parse(decrypted);\n if (!data.accessToken || !data.baseUrl) return null;\n return data as Credentials;\n } catch {\n return null;\n }\n}\n\nexport function saveCredentials(creds: Credentials) {\n const encryptionKey = ensureEncryptionKey();\n const file = encrypt(JSON.stringify(creds), encryptionKey);\n\n ensureConfigDir();\n atomicWriteFileSync(CREDENTIALS_PATH, JSON.stringify(file, null, 2), 0o600);\n}\n\nexport function saveConfig(config: Config) {\n ensureConfigDir();\n atomicWriteFileSync(CONFIG_PATH, JSON.stringify(config, null, 2), 0o600);\n}\n\nexport function clearCredentials() {\n if (fs.existsSync(CREDENTIALS_PATH)) {\n fs.unlinkSync(CREDENTIALS_PATH);\n }\n}\n\nexport function resolveBaseUrl(): string {\n const config = getConfig();\n const creds = getCredentials();\n return config?.baseUrl ?? creds?.baseUrl ?? DEFAULT_CONFIG.baseUrl;\n}\n\nexport async function callPublicTool(\n baseUrl: string,\n toolName: string,\n params: Record<string, unknown>,\n): Promise<unknown> {\n const res = await fetch(\n `${baseUrl}/api/tools/${encodeURIComponent(toolName)}`,\n {\n method: \"POST\",\n signal: AbortSignal.timeout(15_000),\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(params),\n },\n );\n const data = await res.json();\n if (!res.ok) {\n const err = data as { error?: string };\n throw new Error(err?.error ?? `${toolName} failed (${res.status})`);\n }\n return data;\n}\n\nexport async function refreshCredentials(\n creds: Credentials,\n): Promise<Credentials> {\n if (!creds.refreshToken) {\n throw new Error(\"No refresh token available\");\n }\n\n const unlock = acquireLock();\n if (!unlock) {\n await new Promise((r) => setTimeout(r, 2000));\n const fresh = getCredentials();\n if (fresh && fresh.expiresAt > Date.now()) {\n return fresh;\n }\n throw new Error(\"Token refresh failed (concurrent refresh in progress)\");\n }\n\n try {\n const latest = getCredentials();\n if (latest && latest.expiresAt > Date.now() + 60_000) {\n return latest;\n }\n\n const tokens = (await callPublicTool(creds.baseUrl, \"refresh\", {\n refreshToken: creds.refreshToken,\n })) as {\n accessToken: string;\n refreshToken: string;\n expiresAt: number;\n };\n\n const newCreds: Credentials = {\n accessToken: tokens.accessToken,\n refreshToken: tokens.refreshToken,\n expiresAt: tokens.expiresAt * 1000,\n baseUrl: creds.baseUrl,\n };\n\n saveCredentials(newCreds);\n return newCreds;\n } finally {\n unlock();\n }\n}\n\nconst TOKEN_EXPIRY_BUFFER_MS = 5 * 60 * 1000;\n\nexport async function getValidToken(): Promise<string | null> {\n const creds = getCredentials();\n if (!creds) return null;\n\n if (Date.now() >= creds.expiresAt - TOKEN_EXPIRY_BUFFER_MS) {\n if (creds.refreshToken) {\n try {\n const newCreds = await refreshCredentials(creds);\n return newCreds.accessToken;\n } catch {\n return null;\n }\n }\n return null;\n }\n\n return creds.accessToken;\n}\n","/**\n * Remote tool client.\n * Attaches auth (Bearer token) if credentials are available, otherwise calls without auth.\n * Handles automatic token refresh on 401.\n */\n\nimport {\n getCredentials,\n getValidToken,\n refreshCredentials,\n} from \"./auth\";\nimport type { ToolIO } from \"./generated/client\";\n\nexport async function callTool(\n baseUrl: string,\n toolName: string,\n params: Record<string, unknown>,\n): Promise<unknown> {\n const token = await getValidToken();\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n if (token) {\n headers[\"Authorization\"] = `Bearer ${token}`;\n }\n\n let res = await fetch(`${baseUrl}/api/tools/${encodeURIComponent(toolName)}`, {\n method: \"POST\",\n signal: AbortSignal.timeout(60_000),\n headers,\n body: JSON.stringify(params),\n });\n\n // Auto-refresh on 401 if we have a refresh token\n if (res.status === 401 && token) {\n const creds = getCredentials();\n if (creds?.refreshToken) {\n try {\n const newCreds = await refreshCredentials(creds);\n res = await fetch(`${baseUrl}/api/tools/${encodeURIComponent(toolName)}`, {\n method: \"POST\",\n signal: AbortSignal.timeout(60_000),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${newCreds.accessToken}`,\n },\n body: JSON.stringify(params),\n });\n } catch {\n // Refresh failed, fall through\n }\n }\n }\n\n if (res.status === 429) {\n const hint = token ? \"\" : \" Log in with `mp login` for higher limits.\";\n throw new Error(`Rate limit exceeded. Please wait a moment and try again.${hint}`);\n }\n\n if (res.status === 401) {\n throw new Error(\"This command requires a MoonPay CLI account. Run `moonpay login` first.\");\n }\n\n const text = await res.text();\n if (!text) {\n throw new Error(`Empty response from server (${res.status})`);\n }\n\n let data: unknown;\n try {\n data = JSON.parse(text);\n } catch {\n throw new Error(`Unexpected response from server (${res.status})`);\n }\n\n if (res.status < 200 || res.status >= 300) {\n const err = data as { error?: string };\n throw new Error(err?.error ?? `Tool call failed (${res.status})`);\n }\n\n return data;\n}\n\nexport async function callRemoteTool<T extends keyof ToolIO>(\n baseUrl: string,\n toolName: T,\n params: ToolIO[T][\"input\"],\n): Promise<ToolIO[T][\"output\"]> {\n return (await callTool(baseUrl, toolName, params)) as ToolIO[T][\"output\"];\n}\n","[\n {\n \"name\": \"buy\",\n \"description\": \"Buy crypto with fiat via MoonPay. Returns a checkout URL to complete the purchase.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/buy_input\",\n \"definitions\": {\n \"buy_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"token\": {\n \"type\": \"string\",\n \"enum\": [\n \"btc\",\n \"pol_polygon\",\n \"sol\",\n \"trx\",\n \"usdc\",\n \"usdc_arbitrum\",\n \"usdc_base\",\n \"usdc_optimism\",\n \"usdc_sol\",\n \"usdc_polygon\",\n \"usdt_trx\",\n \"eth\",\n \"eth_polygon\",\n \"eth_optimism\",\n \"eth_base\",\n \"eth_arbitrum\"\n ],\n \"description\": \"MoonPay currency code: sol (Solana), usdc_sol (USDC on Solana), eth (Ethereum), usdc (USDC on Ethereum), usdc_base (USDC on Base), trx (TRX on Tron), usdt_trx (USDT on Tron), etc.\"\n },\n \"amount\": {\n \"type\": \"number\",\n \"description\": \"Amount of the token to buy, in token units — not fiat. For example, 1.5 means 1.5 SOL, not $1.50.\"\n },\n \"wallet\": {\n \"type\": \"string\",\n \"description\": \"Destination wallet address to receive tokens (must match the chain for the selected token)\"\n },\n \"email\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Buyer email to pre-fill on the checkout page\"\n }\n },\n \"required\": [\n \"token\",\n \"amount\",\n \"wallet\",\n \"email\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/buy_output\",\n \"definitions\": {\n \"buy_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"url\": {\n \"type\": \"string\",\n \"description\": \"MoonPay checkout URL — open in browser to complete purchase\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"deposit_create\",\n \"description\": \"Create a new deposit link that generates multi-chain deposit addresses. Anyone can send crypto to these addresses from Solana, Ethereum, Bitcoin, or Tron — it automatically converts to the specified stablecoin and settles to the destination wallet and chain.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/deposit_create_input\",\n \"definitions\": {\n \"deposit_create_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable label for this deposit link (e.g. 'Treasury Base USDC')\"\n },\n \"wallet\": {\n \"type\": \"string\",\n \"description\": \"Destination wallet address where USDC will be delivered\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"bnb\"\n ],\n \"description\": \"Blockchain of the destination wallet\"\n },\n \"token\": {\n \"type\": \"string\",\n \"enum\": [\n \"USDC\",\n \"USDC.e\",\n \"USDT\"\n ],\n \"description\": \"Token to receive. USDC.e (bridged USDC) is only available on Polygon.\"\n }\n },\n \"required\": [\n \"name\",\n \"wallet\",\n \"chain\",\n \"token\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/deposit_create_output\",\n \"definitions\": {\n \"deposit_create_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Unique deposit ID — use with deposit_transaction_list to check incoming payments\"\n },\n \"destinationWallet\": {\n \"type\": \"string\",\n \"description\": \"Wallet address that will receive the stablecoin\"\n },\n \"destinationChain\": {\n \"type\": \"string\",\n \"description\": \"Chain where the stablecoin will be delivered\"\n },\n \"customerToken\": {\n \"type\": \"string\",\n \"description\": \"Token to check deposit transactions — pass to deposit_transaction_list\"\n },\n \"depositUrl\": {\n \"type\": \"string\",\n \"description\": \"Shareable URL — open in browser or share with senders to deposit funds\"\n },\n \"wallets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"address\": {\n \"type\": \"string\",\n \"description\": \"Address to send funds to\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"description\": \"Chain this address is on (solana, ethereum, bitcoin, tron)\"\n },\n \"qrCode\": {\n \"type\": \"string\",\n \"description\": \"URL to a QR code image for the deposit address\"\n }\n },\n \"required\": [\n \"address\",\n \"chain\",\n \"qrCode\"\n ],\n \"additionalProperties\": false\n },\n \"description\": \"Deposit addresses across all supported chains — send any token to any of these\"\n },\n \"instructions\": {\n \"type\": \"string\",\n \"description\": \"Human-readable instructions explaining how to use the deposit\"\n }\n },\n \"required\": [\n \"id\",\n \"destinationWallet\",\n \"destinationChain\",\n \"customerToken\",\n \"depositUrl\",\n \"wallets\",\n \"instructions\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"deposit_retrieve\",\n \"description\": \"Retrieve details of a deposit by ID. Returns the deposit name, status, destination wallet, and deposit addresses.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/deposit_retrieve_input\",\n \"definitions\": {\n \"deposit_retrieve_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Deposit ID returned from deposit_create\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/deposit_retrieve_output\",\n \"definitions\": {\n \"deposit_retrieve_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"destinationWallet\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"depositUrl\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"status\",\n \"destinationWallet\",\n \"depositUrl\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"deposit_transaction_list\",\n \"description\": \"List transactions for a deposit. Pass the deposit id from deposit_create to check incoming payment status.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/deposit_transaction_list_input\",\n \"definitions\": {\n \"deposit_transaction_list_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Deposit ID returned from deposit_create\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/deposit_transaction_list_output\",\n \"definitions\": {\n \"deposit_transaction_list_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"amount\": {\n \"type\": \"number\"\n },\n \"token\": {\n \"type\": \"string\"\n },\n \"from\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"settledAmount\": {\n \"type\": [\n \"number\",\n \"null\"\n ]\n },\n \"settledCurrency\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"timestamp\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"amount\",\n \"token\",\n \"from\",\n \"status\",\n \"settledAmount\",\n \"settledCurrency\",\n \"timestamp\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"items\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"feedback_create\",\n \"description\": \"Submit feedback, a bug report, or a feature request. Requires authentication.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/feedback_create_input\",\n \"definitions\": {\n \"feedback_create_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"bug\",\n \"feature\",\n \"general\"\n ],\n \"description\": \"Type of feedback: bug report, feature request, or general\"\n },\n \"message\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 280,\n \"description\": \"Your feedback message\"\n }\n },\n \"required\": [\n \"type\",\n \"message\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/feedback_create_output\",\n \"definitions\": {\n \"feedback_create_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Feedback ID\"\n },\n \"message\": {\n \"type\": \"string\",\n \"description\": \"Confirmation message\"\n }\n },\n \"required\": [\n \"id\",\n \"message\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"login\",\n \"description\": \"Send a verification code to the provided email to sign in or create an account. Requires an hCaptcha token.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/login_input\",\n \"definitions\": {\n \"login_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"The email of the user to login\"\n },\n \"captchaToken\": {\n \"type\": \"string\",\n \"description\": \"hCaptcha response token\"\n }\n },\n \"required\": [\n \"email\",\n \"captchaToken\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/login_output\",\n \"definitions\": {\n \"login_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"description\": \"The email the OTP was sent to\"\n }\n },\n \"required\": [\n \"email\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"refresh\",\n \"description\": \"Refresh an expired access token using a refresh token.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/refresh_input\",\n \"definitions\": {\n \"refresh_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"refreshToken\": {\n \"type\": \"string\",\n \"description\": \"The refresh token from a previous login\"\n }\n },\n \"required\": [\n \"refreshToken\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/refresh_output\",\n \"definitions\": {\n \"refresh_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"accessToken\": {\n \"type\": \"string\"\n },\n \"refreshToken\": {\n \"type\": \"string\"\n },\n \"expiresAt\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"accessToken\",\n \"refreshToken\",\n \"expiresAt\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"swaps_transaction_build\",\n \"description\": \"Build a swap or bridge transaction. Returns an unsigned transaction with a human-readable message, amounts, exchange rate, and estimated time. Supports same-chain swaps and cross-chain bridges. Accepts UI amounts (e.g. 0.1 SOL) — decimal conversion is handled automatically.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/swaps_transaction_build_input\",\n \"definitions\": {\n \"swaps_transaction_build_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"from\": {\n \"type\": \"object\",\n \"properties\": {\n \"wallet\": {\n \"type\": \"string\",\n \"description\": \"Source wallet address (Solana pubkey or EVM 0x address)\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Source blockchain\"\n },\n \"token\": {\n \"type\": \"string\",\n \"description\": \"Source token address (mint on Solana, contract on EVM). Use native token address for SOL/ETH.\"\n },\n \"amount\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Amount to swap (exact-in). Null for exact-out.\"\n }\n },\n \"required\": [\n \"wallet\",\n \"chain\",\n \"token\",\n \"amount\"\n ],\n \"additionalProperties\": false,\n \"description\": \"Source: wallet, chain, token, amount\"\n },\n \"to\": {\n \"type\": \"object\",\n \"properties\": {\n \"wallet\": {\n \"type\": \"string\",\n \"description\": \"Destination wallet address. Same as source wallet for same-chain swaps.\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Destination blockchain\"\n },\n \"token\": {\n \"type\": \"string\",\n \"description\": \"Destination token address (mint on Solana, contract on EVM)\"\n },\n \"amount\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Amount to receive (exact-out). Null for exact-in.\"\n }\n },\n \"required\": [\n \"wallet\",\n \"chain\",\n \"token\",\n \"amount\"\n ],\n \"additionalProperties\": false,\n \"description\": \"Destination: wallet, chain, token, amount\"\n }\n },\n \"required\": [\n \"from\",\n \"to\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/swaps_transaction_build_output\",\n \"definitions\": {\n \"swaps_transaction_build_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"transactionId\": {\n \"type\": \"string\",\n \"description\": \"Transaction ID for tracking\"\n },\n \"transaction\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"const\": \"solana\"\n },\n \"base64\": {\n \"type\": \"string\",\n \"description\": \"Base64-encoded transaction\"\n }\n },\n \"required\": [\n \"type\",\n \"base64\"\n ],\n \"additionalProperties\": false\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"const\": \"evm\"\n },\n \"to\": {\n \"type\": \"string\",\n \"description\": \"Contract address\"\n },\n \"data\": {\n \"type\": \"string\",\n \"description\": \"Calldata\"\n },\n \"value\": {\n \"type\": \"string\",\n \"description\": \"Native token value in wei\"\n },\n \"chainId\": {\n \"type\": \"number\",\n \"description\": \"EVM chain ID\"\n }\n },\n \"required\": [\n \"type\",\n \"to\",\n \"data\",\n \"value\",\n \"chainId\"\n ],\n \"additionalProperties\": false\n }\n ],\n \"description\": \"Unsigned transaction\"\n },\n \"message\": {\n \"type\": \"string\",\n \"description\": \"Human-readable description (e.g. Swap 0.1 SOL → 42.5 USDC on Solana)\"\n },\n \"amountIn\": {\n \"type\": \"object\",\n \"properties\": {\n \"amount\": {\n \"type\": \"number\",\n \"description\": \"Human-readable amount (e.g. 1.5)\"\n },\n \"raw\": {\n \"type\": \"string\",\n \"description\": \"Raw amount in smallest unit (e.g. wei, lamports)\"\n },\n \"symbol\": {\n \"type\": \"string\"\n },\n \"usd\": {\n \"type\": [\n \"number\",\n \"null\"\n ]\n }\n },\n \"required\": [\n \"amount\",\n \"raw\",\n \"symbol\",\n \"usd\"\n ],\n \"additionalProperties\": false\n },\n \"amountOut\": {\n \"type\": \"object\",\n \"properties\": {\n \"amount\": {\n \"type\": \"number\",\n \"description\": \"Human-readable amount (e.g. 1.5)\"\n },\n \"raw\": {\n \"type\": \"string\",\n \"description\": \"Raw amount in smallest unit (e.g. wei, lamports)\"\n },\n \"symbol\": {\n \"type\": \"string\"\n },\n \"usd\": {\n \"type\": [\n \"number\",\n \"null\"\n ]\n }\n },\n \"required\": [\n \"amount\",\n \"raw\",\n \"symbol\",\n \"usd\"\n ],\n \"additionalProperties\": false\n },\n \"exchangeRate\": {\n \"type\": \"number\",\n \"description\": \"Exchange rate (amountOut / amountIn)\"\n },\n \"estimatedTime\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Estimated completion time in seconds\"\n },\n \"requiresApproval\": {\n \"type\": \"boolean\",\n \"description\": \"Whether an ERC20 approval transaction is needed first\"\n }\n },\n \"required\": [\n \"transactionId\",\n \"transaction\",\n \"message\",\n \"amountIn\",\n \"amountOut\",\n \"exchangeRate\",\n \"estimatedTime\",\n \"requiresApproval\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"token_balance_list\",\n \"description\": \"List all token balances held in a wallet, including amount owned, current value in USD, and token details. Shows the complete token portfolio.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/token_balance_list_input\",\n \"definitions\": {\n \"token_balance_list_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"wallet\": {\n \"type\": \"string\",\n \"description\": \"Wallet address to check token balances for\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Blockchain to check balances on (e.g. 'solana', 'ethereum', 'base')\"\n }\n },\n \"required\": [\n \"wallet\",\n \"chain\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/token_balance_list_output\",\n \"definitions\": {\n \"token_balance_list_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"address\": {\n \"type\": \"string\",\n \"description\": \"Address of the token\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Name of the token\"\n },\n \"symbol\": {\n \"type\": \"string\",\n \"description\": \"Symbol of the token\"\n },\n \"image\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Image of the token\"\n },\n \"description\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Description of the token\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Chain of the token\"\n },\n \"decimals\": {\n \"type\": \"number\",\n \"description\": \"Number of decimals of the token\"\n },\n \"externalLinks\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"website\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Official website URL\"\n },\n \"twitter\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Twitter/X profile URL\"\n },\n \"telegram\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Telegram group URL\"\n },\n \"discord\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Discord server URL\"\n },\n \"github\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"GitHub repository URL\"\n },\n \"coingeckoId\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"CoinGecko token ID\"\n }\n },\n \"additionalProperties\": false\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"External links and social media\"\n },\n \"balance\": {\n \"type\": \"object\",\n \"properties\": {\n \"amount\": {\n \"type\": \"number\",\n \"description\": \"Number of tokens owned\"\n },\n \"value\": {\n \"type\": \"number\",\n \"description\": \"Total value of the token in USD\"\n },\n \"price\": {\n \"type\": \"number\",\n \"description\": \"Current price of the token\"\n }\n },\n \"required\": [\n \"amount\",\n \"value\",\n \"price\"\n ],\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"address\",\n \"name\",\n \"symbol\",\n \"chain\",\n \"decimals\",\n \"balance\"\n ],\n \"additionalProperties\": false\n },\n \"description\": \"Array of all tokens in the wallet with their balances and current values\"\n }\n },\n \"required\": [\n \"items\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"token_retrieve\",\n \"description\": \"Get detailed token information including market data, price changes, volume, trades, and holder statistics by token address\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/token_retrieve_input\",\n \"definitions\": {\n \"token_retrieve_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"token\": {\n \"type\": \"string\",\n \"description\": \"Address of the token to retrieve\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Blockchain network where the token exists\"\n }\n },\n \"required\": [\n \"token\",\n \"chain\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/token_retrieve_output\",\n \"definitions\": {\n \"token_retrieve_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"address\": {\n \"type\": \"string\",\n \"description\": \"Address of the token\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Name of the token\"\n },\n \"symbol\": {\n \"type\": \"string\",\n \"description\": \"Symbol of the token\"\n },\n \"image\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Image of the token\"\n },\n \"description\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Description of the token\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Chain of the token\"\n },\n \"decimals\": {\n \"type\": \"number\",\n \"description\": \"Number of decimals of the token\"\n },\n \"externalLinks\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"website\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Official website URL\"\n },\n \"twitter\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Twitter/X profile URL\"\n },\n \"telegram\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Telegram group URL\"\n },\n \"discord\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Discord server URL\"\n },\n \"github\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"GitHub repository URL\"\n },\n \"coingeckoId\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"CoinGecko token ID\"\n }\n },\n \"additionalProperties\": false\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"External links and social media\"\n },\n \"marketData\": {\n \"type\": \"object\",\n \"properties\": {\n \"liquidity\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Total liquidity\"\n },\n \"marketCap\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Market capitalization\"\n },\n \"fdv\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Fully diluted valuation\"\n },\n \"price\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Current price\"\n },\n \"priceChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in price across time intervals\"\n },\n \"volume\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Trading volume in USD across time intervals\"\n },\n \"volumeChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in trading volume across time intervals\"\n },\n \"trades\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of trades across time intervals\"\n },\n \"tradesChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of trades across time intervals\"\n },\n \"buys\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of buys across time intervals\"\n },\n \"buysChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of buys across time intervals\"\n },\n \"sells\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of sells across time intervals\"\n },\n \"sellsChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of sells across time intervals\"\n },\n \"uniqueWallets\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of unique wallets trading across time intervals\"\n },\n \"uniqueWalletsChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of unique wallets trading across time intervals\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"address\",\n \"name\",\n \"symbol\",\n \"chain\",\n \"decimals\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"token_search\",\n \"description\": \"Search for tokens by name, symbol, or address. Returns matching tokens with their market data including price, volume, and liquidity.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/token_search_input\",\n \"definitions\": {\n \"token_search_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"query\": {\n \"type\": \"string\",\n \"description\": \"Search term - can be token name (e.g. 'Bitcoin'), symbol (e.g. 'BTC'), or partial match\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Blockchain to search on (e.g. 'solana', 'ethereum', 'base')\"\n },\n \"limit\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Maximum number of results to return (optional, defaults to 5)\"\n }\n },\n \"required\": [\n \"query\",\n \"chain\",\n \"limit\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/token_search_output\",\n \"definitions\": {\n \"token_search_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"address\": {\n \"type\": \"string\",\n \"description\": \"Address of the token\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Name of the token\"\n },\n \"symbol\": {\n \"type\": \"string\",\n \"description\": \"Symbol of the token\"\n },\n \"image\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Image of the token\"\n },\n \"description\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Description of the token\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Chain of the token\"\n },\n \"decimals\": {\n \"type\": \"number\",\n \"description\": \"Number of decimals of the token\"\n },\n \"externalLinks\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"website\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Official website URL\"\n },\n \"twitter\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Twitter/X profile URL\"\n },\n \"telegram\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Telegram group URL\"\n },\n \"discord\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Discord server URL\"\n },\n \"github\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"GitHub repository URL\"\n },\n \"coingeckoId\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"CoinGecko token ID\"\n }\n },\n \"additionalProperties\": false\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"External links and social media\"\n },\n \"marketData\": {\n \"type\": \"object\",\n \"properties\": {\n \"liquidity\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Total liquidity\"\n },\n \"marketCap\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Market capitalization\"\n },\n \"fdv\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Fully diluted valuation\"\n },\n \"price\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Current price\"\n },\n \"priceChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in price across time intervals\"\n },\n \"volume\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Trading volume in USD across time intervals\"\n },\n \"volumeChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in trading volume across time intervals\"\n },\n \"trades\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of trades across time intervals\"\n },\n \"tradesChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of trades across time intervals\"\n },\n \"buys\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of buys across time intervals\"\n },\n \"buysChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of buys across time intervals\"\n },\n \"sells\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of sells across time intervals\"\n },\n \"sellsChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of sells across time intervals\"\n },\n \"uniqueWallets\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of unique wallets trading across time intervals\"\n },\n \"uniqueWalletsChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of unique wallets trading across time intervals\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"address\",\n \"name\",\n \"symbol\",\n \"chain\",\n \"decimals\"\n ],\n \"additionalProperties\": false\n },\n \"description\": \"Array of tokens matching the search query with their market data\"\n }\n },\n \"required\": [\n \"items\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"token_swap\",\n \"description\": \"Swap the specified amount of input token for output token.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/token_swap_input\",\n \"definitions\": {\n \"token_swap_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"simulation\": {\n \"type\": \"boolean\",\n \"description\": \"If true, only simulate the transaction without executing it\"\n },\n \"input\": {\n \"type\": \"string\",\n \"description\": \"The address of the input token to swap\"\n },\n \"output\": {\n \"type\": \"string\",\n \"description\": \"The address of the output token to receive\"\n },\n \"amount\": {\n \"type\": \"number\",\n \"description\": \"The amount of the input token to swap\"\n }\n },\n \"required\": [\n \"simulation\",\n \"input\",\n \"output\",\n \"amount\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/token_swap_output\",\n \"definitions\": {\n \"token_swap_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"signature\": {\n \"type\": \"string\",\n \"description\": \"Transaction signature. Absent if execution failed.\"\n },\n \"message\": {\n \"type\": \"string\",\n \"description\": \"Result message or error description\"\n }\n },\n \"required\": [\n \"message\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"token_transfer\",\n \"description\": \"Build an unsigned transfer transaction. Returns a transaction ready for signing. Handles both native and token transfers.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/token_transfer_input\",\n \"definitions\": {\n \"token_transfer_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"wallet\": {\n \"type\": \"string\",\n \"description\": \"Sender wallet address (Solana pubkey or EVM 0x address)\"\n },\n \"token\": {\n \"type\": \"string\",\n \"description\": \"Token address (mint on Solana, contract on EVM). Use native token address for SOL/ETH.\"\n },\n \"to\": {\n \"type\": \"string\",\n \"description\": \"Recipient wallet address or name\"\n },\n \"amount\": {\n \"type\": \"number\",\n \"description\": \"Amount to transfer in human-readable units (e.g. 1.5)\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Blockchain to execute the transfer on\"\n }\n },\n \"required\": [\n \"wallet\",\n \"token\",\n \"to\",\n \"amount\",\n \"chain\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/token_transfer_output\",\n \"definitions\": {\n \"token_transfer_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"transaction\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"const\": \"solana\"\n },\n \"base64\": {\n \"type\": \"string\",\n \"description\": \"Base64-encoded transaction\"\n }\n },\n \"required\": [\n \"type\",\n \"base64\"\n ],\n \"additionalProperties\": false\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"const\": \"evm\"\n },\n \"to\": {\n \"type\": \"string\",\n \"description\": \"Recipient or contract address\"\n },\n \"data\": {\n \"type\": \"string\",\n \"description\": \"Calldata (0x for native transfers)\"\n },\n \"value\": {\n \"type\": \"string\",\n \"description\": \"Native token value in wei\"\n },\n \"chainId\": {\n \"type\": \"number\",\n \"description\": \"EVM chain ID\"\n }\n },\n \"required\": [\n \"type\",\n \"to\",\n \"data\",\n \"value\",\n \"chainId\"\n ],\n \"additionalProperties\": false\n }\n ]\n },\n \"message\": {\n \"type\": \"string\",\n \"description\": \"Human-readable description of the transfer\"\n }\n },\n \"required\": [\n \"transaction\",\n \"message\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"token_trending_list\",\n \"description\": \"Get currently trending tokens on a blockchain. Perfect for discovering what's hot right now.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/token_trending_list_input\",\n \"definitions\": {\n \"token_trending_list_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Blockchain to get trending tokens from (e.g. 'solana', 'ethereum', 'base')\"\n },\n \"limit\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Number of results per page\"\n },\n \"page\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Page number (starts at 1)\"\n }\n },\n \"required\": [\n \"chain\",\n \"limit\",\n \"page\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/token_trending_list_output\",\n \"definitions\": {\n \"token_trending_list_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"address\": {\n \"type\": \"string\",\n \"description\": \"Address of the token\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Name of the token\"\n },\n \"symbol\": {\n \"type\": \"string\",\n \"description\": \"Symbol of the token\"\n },\n \"image\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Image of the token\"\n },\n \"description\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Description of the token\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Chain of the token\"\n },\n \"decimals\": {\n \"type\": \"number\",\n \"description\": \"Number of decimals of the token\"\n },\n \"externalLinks\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"website\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Official website URL\"\n },\n \"twitter\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Twitter/X profile URL\"\n },\n \"telegram\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Telegram group URL\"\n },\n \"discord\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Discord server URL\"\n },\n \"github\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"GitHub repository URL\"\n },\n \"coingeckoId\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"CoinGecko token ID\"\n }\n },\n \"additionalProperties\": false\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"External links and social media\"\n },\n \"marketData\": {\n \"type\": \"object\",\n \"properties\": {\n \"liquidity\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Total liquidity\"\n },\n \"marketCap\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Market capitalization\"\n },\n \"fdv\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Fully diluted valuation\"\n },\n \"price\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Current price\"\n },\n \"priceChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in price across time intervals\"\n },\n \"volume\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Trading volume in USD across time intervals\"\n },\n \"volumeChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in trading volume across time intervals\"\n },\n \"trades\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of trades across time intervals\"\n },\n \"tradesChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of trades across time intervals\"\n },\n \"buys\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of buys across time intervals\"\n },\n \"buysChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of buys across time intervals\"\n },\n \"sells\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of sells across time intervals\"\n },\n \"sellsChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of sells across time intervals\"\n },\n \"uniqueWallets\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Number of unique wallets trading across time intervals\"\n },\n \"uniqueWalletsChangePercent\": {\n \"type\": \"object\",\n \"properties\": {\n \"1m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-minute data\"\n },\n \"5m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"5-minute data\"\n },\n \"30m\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"30-minute data\"\n },\n \"1h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"1-hour data\"\n },\n \"2h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"2-hour data\"\n },\n \"4h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"4-hour data\"\n },\n \"6h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"6-hour data\"\n },\n \"8h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"8-hour data\"\n },\n \"12h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"12-hour data\"\n },\n \"24h\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"24-hour data\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Percentage change in number of unique wallets trading across time intervals\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"address\",\n \"name\",\n \"symbol\",\n \"chain\",\n \"decimals\"\n ],\n \"additionalProperties\": false\n },\n \"description\": \"Array of trending tokens with their market data\"\n }\n },\n \"required\": [\n \"items\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"transaction_list\",\n \"description\": \"List swap and bridge transaction history. Filter by wallet address and/or chain.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/transaction_list_input\",\n \"definitions\": {\n \"transaction_list_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"wallet\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Wallet address to filter transactions\"\n },\n \"chain\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Chain to filter transactions\"\n }\n },\n \"required\": [\n \"wallet\",\n \"chain\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/transaction_list_output\",\n \"definitions\": {\n \"transaction_list_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"transactionId\": {\n \"type\": \"string\",\n \"description\": \"Transaction tracking ID\"\n },\n \"status\": {\n \"type\": \"string\",\n \"description\": \"Current status: pending, success, or failed\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"swap\",\n \"bridge\"\n ],\n \"description\": \"Transaction type\"\n },\n \"from\": {\n \"type\": \"object\",\n \"properties\": {\n \"chain\": {\n \"type\": \"string\",\n \"description\": \"Source blockchain\"\n },\n \"token\": {\n \"type\": \"string\",\n \"description\": \"Source token symbol\"\n },\n \"amount\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Amount sent\"\n },\n \"txHash\": {\n \"type\": \"string\",\n \"description\": \"Source chain transaction hash\"\n }\n },\n \"required\": [\n \"chain\",\n \"token\",\n \"amount\",\n \"txHash\"\n ],\n \"additionalProperties\": false\n },\n \"to\": {\n \"type\": \"object\",\n \"properties\": {\n \"chain\": {\n \"type\": \"string\",\n \"description\": \"Destination blockchain\"\n },\n \"token\": {\n \"type\": \"string\",\n \"description\": \"Destination token symbol\"\n },\n \"amount\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Amount received\"\n },\n \"txHash\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Destination chain transaction hash\"\n }\n },\n \"required\": [\n \"chain\",\n \"token\",\n \"amount\",\n \"txHash\"\n ],\n \"additionalProperties\": false\n },\n \"usd\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"USD value of the transaction\"\n },\n \"bridgeTime\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Bridge completion time in seconds\"\n }\n },\n \"required\": [\n \"transactionId\",\n \"status\",\n \"type\",\n \"from\",\n \"to\",\n \"usd\",\n \"bridgeTime\"\n ],\n \"additionalProperties\": false\n },\n \"description\": \"List of swap/bridge transactions\"\n }\n },\n \"required\": [\n \"items\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"transaction_register\",\n \"description\": \"Register a broadcast transaction for tracking. Call after transaction_send to enable status tracking via transaction_retrieve.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/transaction_register_input\",\n \"definitions\": {\n \"transaction_register_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"transactionId\": {\n \"type\": \"string\",\n \"description\": \"Transaction ID from swaps_transaction_build\"\n },\n \"transactionHash\": {\n \"type\": \"string\",\n \"description\": \"Transaction hash/signature after broadcasting\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Blockchain where the transaction was broadcast\"\n }\n },\n \"required\": [\n \"transactionId\",\n \"transactionHash\",\n \"chain\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/transaction_register_output\",\n \"definitions\": {\n \"transaction_register_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"success\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the operation was successful\"\n }\n },\n \"required\": [\n \"success\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"transaction_retrieve\",\n \"description\": \"Get the status and details of a transaction by its ID.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/transaction_retrieve_input\",\n \"definitions\": {\n \"transaction_retrieve_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"transactionId\": {\n \"type\": \"string\",\n \"description\": \"Transaction ID from swaps_transaction_build or transaction_register\"\n }\n },\n \"required\": [\n \"transactionId\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/transaction_retrieve_output\",\n \"definitions\": {\n \"transaction_retrieve_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"transactionId\": {\n \"type\": \"string\",\n \"description\": \"Transaction tracking ID\"\n },\n \"status\": {\n \"type\": \"string\",\n \"description\": \"Current status: pending, success, or failed\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"swap\",\n \"bridge\"\n ],\n \"description\": \"Transaction type\"\n },\n \"from\": {\n \"type\": \"object\",\n \"properties\": {\n \"chain\": {\n \"type\": \"string\",\n \"description\": \"Source blockchain\"\n },\n \"token\": {\n \"type\": \"string\",\n \"description\": \"Source token symbol\"\n },\n \"amount\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Amount sent\"\n },\n \"txHash\": {\n \"type\": \"string\",\n \"description\": \"Source chain transaction hash\"\n }\n },\n \"required\": [\n \"chain\",\n \"token\",\n \"amount\",\n \"txHash\"\n ],\n \"additionalProperties\": false\n },\n \"to\": {\n \"type\": \"object\",\n \"properties\": {\n \"chain\": {\n \"type\": \"string\",\n \"description\": \"Destination blockchain\"\n },\n \"token\": {\n \"type\": \"string\",\n \"description\": \"Destination token symbol\"\n },\n \"amount\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Amount received\"\n },\n \"txHash\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Destination chain transaction hash. Null while bridge is in progress.\"\n }\n },\n \"required\": [\n \"chain\",\n \"token\",\n \"amount\",\n \"txHash\"\n ],\n \"additionalProperties\": false\n },\n \"usd\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"USD value of the transaction\"\n },\n \"bridgeTime\": {\n \"type\": [\n \"number\",\n \"null\"\n ],\n \"description\": \"Bridge completion time in seconds. Null for same-chain swaps.\"\n }\n },\n \"required\": [\n \"transactionId\",\n \"status\",\n \"type\",\n \"from\",\n \"to\",\n \"usd\",\n \"bridgeTime\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"transaction_send\",\n \"description\": \"Broadcast a signed transaction to the network. Supports Solana, EVM chains, and Bitcoin.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/transaction_send_input\",\n \"definitions\": {\n \"transaction_send_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"transaction\": {\n \"type\": \"string\",\n \"description\": \"Signed transaction: base64-encoded for Solana, hex-encoded (0x...) for EVM, raw hex for Bitcoin\"\n },\n \"message\": {\n \"type\": \"string\",\n \"description\": \"Human-readable message describing the transaction\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Blockchain to broadcast on\"\n }\n },\n \"required\": [\n \"transaction\",\n \"message\",\n \"chain\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/transaction_send_output\",\n \"definitions\": {\n \"transaction_send_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"signature\": {\n \"type\": \"string\",\n \"description\": \"Transaction signature/hash. Absent if broadcast failed.\"\n },\n \"message\": {\n \"type\": \"string\",\n \"description\": \"Result message or error description\"\n }\n },\n \"required\": [\n \"message\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"user_retrieve\",\n \"description\": \"Get the currently authenticated user\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/user_retrieve_input\",\n \"definitions\": {\n \"user_retrieve_input\": {\n \"type\": \"object\",\n \"properties\": {},\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/user_retrieve_output\",\n \"definitions\": {\n \"user_retrieve_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"User ID\"\n },\n \"email\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"User email address\"\n }\n },\n \"required\": [\n \"id\",\n \"email\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"verify\",\n \"description\": \"Verify a login code for the user.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/verify_input\",\n \"definitions\": {\n \"verify_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"type\": \"string\",\n \"pattern\": \"^\\\\d{6}$\",\n \"description\": \"The code to verify\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"The email the OTP was sent to\"\n }\n },\n \"required\": [\n \"code\",\n \"email\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/verify_output\",\n \"definitions\": {\n \"verify_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"accessToken\": {\n \"type\": \"string\"\n },\n \"refreshToken\": {\n \"type\": \"string\"\n },\n \"expiresAt\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"accessToken\",\n \"refreshToken\",\n \"expiresAt\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_agreement_accept\",\n \"description\": \"Accept a required legal agreement. Pass the content ID from virtual-account_agreement_list to mark the agreement as accepted.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_agreement_accept_input\",\n \"definitions\": {\n \"virtual-account_agreement_accept_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"contentId\": {\n \"type\": \"string\",\n \"description\": \"Content ID from virtual-account_agreement_list\"\n }\n },\n \"required\": [\n \"contentId\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_agreement_accept_output\",\n \"definitions\": {\n \"virtual-account_agreement_accept_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Signing record ID\"\n },\n \"contentId\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Content ID of the accepted agreement\"\n },\n \"documentId\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Document ID\"\n }\n },\n \"required\": [\n \"id\",\n \"contentId\",\n \"documentId\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_agreement_list\",\n \"description\": \"List legal agreements. By default shows pending agreements that must be accepted to activate the account. Use status=accepted to see previously accepted agreements.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_agreement_list_input\",\n \"definitions\": {\n \"virtual-account_agreement_list_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"pending\",\n \"accepted\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Filter: pending (need to accept, default) or accepted (already signed)\"\n },\n \"country\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Country code for terms (e.g. USA, GBR). Defaults to USA.\"\n }\n },\n \"required\": [\n \"status\",\n \"country\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_agreement_list_output\",\n \"definitions\": {\n \"virtual-account_agreement_list_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Content ID — pass to virtual-account_agreement_accept to accept\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Document name (e.g. 'USA Terms and Conditions')\"\n },\n \"url\": {\n \"type\": \"string\",\n \"description\": \"URL to view the document\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"url\"\n ],\n \"additionalProperties\": false\n },\n \"description\": \"List of agreements\"\n }\n },\n \"required\": [\n \"items\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_create\",\n \"description\": \"Create a virtual account and start KYC verification\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_create_input\",\n \"definitions\": {\n \"virtual-account_create_input\": {\n \"type\": \"object\",\n \"properties\": {},\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_create_output\",\n \"definitions\": {\n \"virtual-account_create_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\"\n },\n \"customerType\": {\n \"type\": \"string\",\n \"enum\": [\n \"Person\",\n \"Business\"\n ]\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"UserRequired\",\n \"SigningsRequired\",\n \"IdentificationRequired\",\n \"Active\",\n \"Suspended\"\n ]\n },\n \"nextStep\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"email\",\n \"customerType\",\n \"status\",\n \"nextStep\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_kyc_continue\",\n \"description\": \"Get the current KYC verification status and URL. Use this to check progress or get the verification link again.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_kyc_continue_input\",\n \"definitions\": {\n \"virtual-account_kyc_continue_input\": {\n \"type\": \"object\",\n \"properties\": {},\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_kyc_continue_output\",\n \"definitions\": {\n \"virtual-account_kyc_continue_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Identification record ID\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"Pending\",\n \"Processed\",\n \"PendingReview\",\n \"Approved\",\n \"Declined\",\n \"Expired\"\n ],\n \"description\": \"KYC status: Pending, Processed, PendingReview, Approved, Declined, or Expired\"\n },\n \"url\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"URL to complete KYC verification. Null if already submitted.\"\n }\n },\n \"required\": [\n \"id\",\n \"status\",\n \"url\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_kyc_restart\",\n \"description\": \"Restart KYC verification. Creates a fresh verification link. Only available when account status is IdentificationRequired.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_kyc_restart_input\",\n \"definitions\": {\n \"virtual-account_kyc_restart_input\": {\n \"type\": \"object\",\n \"properties\": {},\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_kyc_restart_output\",\n \"definitions\": {\n \"virtual-account_kyc_restart_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Identification record ID\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"Pending\",\n \"Processed\",\n \"PendingReview\",\n \"Approved\",\n \"Declined\",\n \"Expired\"\n ],\n \"description\": \"KYC status: Pending, Processed, PendingReview, Approved, Declined, or Expired\"\n },\n \"url\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"URL to complete KYC verification. Null if already submitted.\"\n },\n \"message\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Instructions for the user\"\n }\n },\n \"required\": [\n \"id\",\n \"status\",\n \"url\",\n \"message\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_onramp_create\",\n \"description\": \"Create a fiat-to-stablecoin onramp. Returns a deposit account (bank IBAN or account number) where the user sends fiat. Incoming fiat is automatically converted to stablecoin and sent to the registered wallet.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_create_input\",\n \"definitions\": {\n \"virtual-account_onramp_create_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"A label for this onramp (e.g. 'My USD onramp')\"\n },\n \"fiat\": {\n \"type\": \"string\",\n \"enum\": [\n \"USD\",\n \"EUR\"\n ],\n \"description\": \"Fiat currency: usd or eur\"\n },\n \"stablecoin\": {\n \"type\": \"string\",\n \"enum\": [\n \"USDC\",\n \"USDT\",\n \"EURC\"\n ],\n \"description\": \"Target stablecoin: usdc, usdt, or eurc\"\n },\n \"wallet\": {\n \"type\": \"string\",\n \"description\": \"Registered wallet address (must be registered via virtual-account_wallet_register first)\"\n },\n \"blockchain\": {\n \"type\": \"string\",\n \"enum\": [\n \"Solana\",\n \"Ethereum\",\n \"Polygon\",\n \"Arbitrum\",\n \"Base\",\n \"Stellar\",\n \"Citrea\"\n ],\n \"description\": \"Blockchain to receive stablecoin on (Solana, Ethereum, Polygon, Arbitrum, Base)\"\n }\n },\n \"required\": [\n \"name\",\n \"fiat\",\n \"stablecoin\",\n \"wallet\",\n \"blockchain\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_create_output\",\n \"definitions\": {\n \"virtual-account_onramp_create_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"Created\",\n \"Authorized\",\n \"DepositAccountAdded\",\n \"Approved\",\n \"Rejected\",\n \"Cancelled\"\n ]\n },\n \"fiat\": {\n \"type\": \"string\"\n },\n \"stablecoin\": {\n \"type\": \"string\"\n },\n \"depositAccount\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"iban\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"bic\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"accountNumber\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"routingNumber\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"bankName\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"bankAddress\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"recipientName\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"iban\",\n \"bic\",\n \"accountNumber\",\n \"routingNumber\",\n \"bankName\",\n \"bankAddress\",\n \"recipientName\"\n ],\n \"additionalProperties\": false\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"walletAddress\": {\n \"type\": \"string\"\n },\n \"fees\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"transactionFee\": {\n \"type\": \"string\",\n \"description\": \"e.g. '0.50%'\"\n },\n \"bankingFee\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"e.g. '0.50 EUR (SEPA)'\"\n },\n \"networkFee\": {\n \"type\": \"string\",\n \"description\": \"'subsidized' or 'charged'\"\n }\n },\n \"required\": [\n \"transactionFee\",\n \"bankingFee\",\n \"networkFee\"\n ],\n \"additionalProperties\": false\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"legalDisclaimer\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"status\",\n \"fiat\",\n \"stablecoin\",\n \"depositAccount\",\n \"walletAddress\",\n \"fees\",\n \"legalDisclaimer\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_onramp_delete\",\n \"description\": \"Cancel an onramp\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_delete_input\",\n \"definitions\": {\n \"virtual-account_onramp_delete_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"onrampId\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"description\": \"The ID of the onramp to cancel\"\n }\n },\n \"required\": [\n \"onrampId\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_delete_output\",\n \"definitions\": {\n \"virtual-account_onramp_delete_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"success\": {\n \"type\": \"boolean\"\n },\n \"message\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"success\",\n \"message\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_onramp_list\",\n \"description\": \"List all fiat-to-stablecoin onramps. Shows each onramp's deposit account details, status, and destination wallet.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_list_input\",\n \"definitions\": {\n \"virtual-account_onramp_list_input\": {\n \"type\": \"object\",\n \"properties\": {},\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_list_output\",\n \"definitions\": {\n \"virtual-account_onramp_list_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"Created\",\n \"Authorized\",\n \"DepositAccountAdded\",\n \"Approved\",\n \"Rejected\",\n \"Cancelled\"\n ]\n },\n \"fiat\": {\n \"type\": \"string\"\n },\n \"stablecoin\": {\n \"type\": \"string\"\n },\n \"depositAccount\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"iban\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"bic\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"accountNumber\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"routingNumber\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"bankName\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"bankAddress\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"recipientName\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"iban\",\n \"bic\",\n \"accountNumber\",\n \"routingNumber\",\n \"bankName\",\n \"bankAddress\",\n \"recipientName\"\n ],\n \"additionalProperties\": false\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"walletAddress\": {\n \"type\": \"string\"\n },\n \"fees\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"transactionFee\": {\n \"type\": \"string\",\n \"description\": \"e.g. '0.50%'\"\n },\n \"bankingFee\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"e.g. '0.50 EUR (SEPA)'\"\n },\n \"networkFee\": {\n \"type\": \"string\",\n \"description\": \"'subsidized' or 'charged'\"\n }\n },\n \"required\": [\n \"transactionFee\",\n \"bankingFee\",\n \"networkFee\"\n ],\n \"additionalProperties\": false\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"legalDisclaimer\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"status\",\n \"fiat\",\n \"stablecoin\",\n \"depositAccount\",\n \"walletAddress\",\n \"fees\",\n \"legalDisclaimer\"\n ],\n \"additionalProperties\": false\n },\n \"description\": \"List of configured onramps\"\n }\n },\n \"required\": [\n \"items\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_onramp_payment_create\",\n \"description\": \"Create an open banking payment link for an onramp\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_payment_create_input\",\n \"definitions\": {\n \"virtual-account_onramp_payment_create_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"onrampId\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"description\": \"The ID of the onramp\"\n },\n \"amount\": {\n \"type\": \"string\",\n \"description\": \"The amount to pay\"\n },\n \"fiat\": {\n \"type\": \"string\",\n \"enum\": [\n \"USD\",\n \"EUR\"\n ],\n \"description\": \"The fiat currency (USD or EUR)\"\n }\n },\n \"required\": [\n \"onrampId\",\n \"amount\",\n \"fiat\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_payment_create_output\",\n \"definitions\": {\n \"virtual-account_onramp_payment_create_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"paymentLink\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"Pending\",\n \"Ready\",\n \"Processing\",\n \"Completed\",\n \"Failed\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"paymentLink\",\n \"status\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_onramp_payment_retrieve\",\n \"description\": \"Get the status of an open banking payment\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_payment_retrieve_input\",\n \"definitions\": {\n \"virtual-account_onramp_payment_retrieve_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"onrampId\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"description\": \"The ID of the onramp this payment belongs to\"\n },\n \"paymentId\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"description\": \"The ID of the payment to retrieve\"\n }\n },\n \"required\": [\n \"onrampId\",\n \"paymentId\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_payment_retrieve_output\",\n \"definitions\": {\n \"virtual-account_onramp_payment_retrieve_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"paymentLink\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"Pending\",\n \"Ready\",\n \"Processing\",\n \"Completed\",\n \"Failed\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"paymentLink\",\n \"status\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_onramp_retrieve\",\n \"description\": \"Get onramp details and banking info\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_retrieve_input\",\n \"definitions\": {\n \"virtual-account_onramp_retrieve_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"onrampId\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"description\": \"The ID of the onramp to retrieve\"\n }\n },\n \"required\": [\n \"onrampId\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_onramp_retrieve_output\",\n \"definitions\": {\n \"virtual-account_onramp_retrieve_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"Created\",\n \"Authorized\",\n \"DepositAccountAdded\",\n \"Approved\",\n \"Rejected\",\n \"Cancelled\"\n ]\n },\n \"fiat\": {\n \"type\": \"string\"\n },\n \"stablecoin\": {\n \"type\": \"string\"\n },\n \"depositAccount\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"iban\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"bic\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"accountNumber\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"routingNumber\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"bankName\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"bankAddress\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n },\n \"recipientName\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"iban\",\n \"bic\",\n \"accountNumber\",\n \"routingNumber\",\n \"bankName\",\n \"bankAddress\",\n \"recipientName\"\n ],\n \"additionalProperties\": false\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"walletAddress\": {\n \"type\": \"string\"\n },\n \"fees\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"transactionFee\": {\n \"type\": \"string\",\n \"description\": \"e.g. '0.50%'\"\n },\n \"bankingFee\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"e.g. '0.50 EUR (SEPA)'\"\n },\n \"networkFee\": {\n \"type\": \"string\",\n \"description\": \"'subsidized' or 'charged'\"\n }\n },\n \"required\": [\n \"transactionFee\",\n \"bankingFee\",\n \"networkFee\"\n ],\n \"additionalProperties\": false\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"legalDisclaimer\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"status\",\n \"fiat\",\n \"stablecoin\",\n \"depositAccount\",\n \"walletAddress\",\n \"fees\",\n \"legalDisclaimer\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_retrieve\",\n \"description\": \"Get your virtual account status\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_retrieve_input\",\n \"definitions\": {\n \"virtual-account_retrieve_input\": {\n \"type\": \"object\",\n \"properties\": {},\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_retrieve_output\",\n \"definitions\": {\n \"virtual-account_retrieve_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\"\n },\n \"customerType\": {\n \"type\": \"string\",\n \"enum\": [\n \"Person\",\n \"Business\"\n ]\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"UserRequired\",\n \"SigningsRequired\",\n \"IdentificationRequired\",\n \"Active\",\n \"Suspended\"\n ]\n },\n \"nextStep\": {\n \"type\": [\n \"string\",\n \"null\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"email\",\n \"customerType\",\n \"status\",\n \"nextStep\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_transaction_list\",\n \"description\": \"List fiat-to-stablecoin conversion transactions. Shows status, fiat amount sent, and stablecoin amount received for each conversion.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_transaction_list_input\",\n \"definitions\": {\n \"virtual-account_transaction_list_input\": {\n \"type\": \"object\",\n \"properties\": {},\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_transaction_list_output\",\n \"definitions\": {\n \"virtual-account_transaction_list_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Transaction ID\"\n },\n \"state\": {\n \"type\": \"string\",\n \"enum\": [\n \"Pending\",\n \"PayoutPending\",\n \"Payout\",\n \"PayoutCompleted\",\n \"Completed\",\n \"Failed\",\n \"InAmlReview\",\n \"AmlRejected\",\n \"AmountRejected\"\n ],\n \"description\": \"Transaction state (e.g. pending, completed, failed)\"\n },\n \"sourceAmount\": {\n \"type\": \"string\",\n \"description\": \"Fiat amount sent (e.g. '100.00 USD')\"\n },\n \"destinationAmount\": {\n \"type\": \"string\",\n \"description\": \"Stablecoin amount received (e.g. '99.50 USDC')\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"description\": \"Transaction creation timestamp\"\n }\n },\n \"required\": [\n \"id\",\n \"state\",\n \"sourceAmount\",\n \"destinationAmount\",\n \"createdAt\"\n ],\n \"additionalProperties\": false\n },\n \"description\": \"List of onramp conversion transactions\"\n }\n },\n \"required\": [\n \"items\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_wallet_list\",\n \"description\": \"List wallets registered for the virtual account. Only registered wallets can receive onramp payouts.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_wallet_list_input\",\n \"definitions\": {\n \"virtual-account_wallet_list_input\": {\n \"type\": \"object\",\n \"properties\": {},\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_wallet_list_output\",\n \"definitions\": {\n \"virtual-account_wallet_list_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"address\": {\n \"type\": \"string\"\n },\n \"blockchain\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"address\",\n \"blockchain\"\n ],\n \"additionalProperties\": false\n },\n \"description\": \"List of registered wallets\"\n }\n },\n \"required\": [\n \"items\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_wallet_register\",\n \"description\": \"Register a wallet by submitting a signed proof-of-ownership message. The wallet can then be used as a destination for onramp payouts.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_wallet_register_input\",\n \"definitions\": {\n \"virtual-account_wallet_register_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"wallet\": {\n \"type\": \"string\",\n \"description\": \"Wallet address to register\"\n },\n \"message\": {\n \"type\": \"string\",\n \"description\": \"Verification message from virtual-account_wallet_registration-message_create\"\n },\n \"signature\": {\n \"type\": \"string\",\n \"description\": \"Signature of the message, signed by the wallet's private key\"\n },\n \"chain\": {\n \"type\": \"string\",\n \"enum\": [\n \"solana\",\n \"ethereum\",\n \"base\",\n \"polygon\",\n \"arbitrum\",\n \"optimism\",\n \"bnb\",\n \"avalanche\",\n \"tron\",\n \"bitcoin\"\n ],\n \"description\": \"Blockchain for wallet registration (solana, ethereum, polygon, base, arbitrum)\"\n }\n },\n \"required\": [\n \"wallet\",\n \"message\",\n \"signature\",\n \"chain\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_wallet_register_output\",\n \"definitions\": {\n \"virtual-account_wallet_register_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"success\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the operation was successful\"\n }\n },\n \"required\": [\n \"success\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n },\n {\n \"name\": \"virtual-account_wallet_registration-message_create\",\n \"description\": \"Generate a proof-of-ownership message for wallet registration. The message must be signed by the wallet's private key and submitted via virtual-account_wallet_register.\",\n \"inputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_wallet_registration-message_create_input\",\n \"definitions\": {\n \"virtual-account_wallet_registration-message_create_input\": {\n \"type\": \"object\",\n \"properties\": {\n \"wallet\": {\n \"type\": \"string\",\n \"description\": \"Wallet address to register\"\n }\n },\n \"required\": [\n \"wallet\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n },\n \"outputSchema\": {\n \"$ref\": \"#/definitions/virtual-account_wallet_registration-message_create_output\",\n \"definitions\": {\n \"virtual-account_wallet_registration-message_create_output\": {\n \"type\": \"object\",\n \"properties\": {\n \"message\": {\n \"type\": \"string\",\n \"description\": \"Message to sign with the wallet's private key\"\n }\n },\n \"required\": [\n \"message\"\n ],\n \"additionalProperties\": false\n }\n },\n \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n }\n }\n]","import * as fs from \"fs\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport { createTool } from \"../../shared\";\nimport { consentCheckSchema } from \"./schema\";\n\nconst CONSENT_PATH = path.join(os.homedir(), \".config\", \"moonpay\", \"consent.json\");\nconst CURRENT_TOS_VERSION = \"1.0\";\n\nexport const consentCheck = createTool(consentCheckSchema, async () => {\n let consent: { tosVersion: string; acceptedAt: string } | null = null;\n try {\n consent = JSON.parse(fs.readFileSync(CONSENT_PATH, \"utf-8\"));\n } catch {}\n\n if (!consent || consent.tosVersion !== CURRENT_TOS_VERSION) {\n throw new Error(\n \"Terms of Service not yet accepted. Run `mp consent accept` first.\",\n );\n }\n\n return {\n accepted: true as const,\n tosVersion: consent.tosVersion,\n acceptedAt: consent.acceptedAt,\n };\n});\n","import { z } from \"zod\";\n\n// ── Schema types ─────────────────────────────────────────────\n\nexport type ToolSchema<\n I extends z.ZodType = z.ZodType,\n O extends z.ZodType = z.ZodType,\n> = {\n name: string;\n description: string;\n input: I;\n output: O;\n};\n\nexport type ToolInput<TSchema extends ToolSchema> = z.infer<TSchema[\"input\"]>;\nexport type ToolOutput<TSchema extends ToolSchema> = z.infer<TSchema[\"output\"]>;\n\nexport const defineToolSchema = <\n TInput extends z.ZodType,\n TOutput extends z.ZodType,\n>(config: {\n name: string;\n description: string;\n input: TInput;\n output: TOutput;\n}): ToolSchema<TInput, TOutput> => config;\n\n// ── Tool wrapper ─────────────────────────────────────────────\n\nexport type Tool<TSchema extends ToolSchema = ToolSchema> = {\n schema: TSchema;\n handler: (params: z.input<TSchema[\"input\"]>) => Promise<z.output<TSchema[\"output\"]>>;\n};\n\n/**\n * Lightweight createTool for CLI local tools.\n * Validates input/output with Zod, no logging or context.\n */\nexport const createTool = <TSchema extends ToolSchema>(\n schema: TSchema,\n handler: (\n params: z.output<TSchema[\"input\"]>,\n ) => Promise<z.output<TSchema[\"output\"]>>,\n): Tool<TSchema> => ({\n schema,\n handler: async (params: z.input<TSchema[\"input\"]>) => {\n const parsedInput = schema.input.parse(params);\n const result = await handler(parsedInput);\n return schema.output.parse(result);\n },\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const consentCheckSchema = defineToolSchema({\n name: \"consent_check\",\n description:\n \"Check whether the MoonPay Terms of Service and Privacy Policy have been accepted. Throws if not accepted.\",\n input: z.object({}),\n output: z.object({\n accepted: z.literal(true),\n tosVersion: z.string(),\n acceptedAt: z.string(),\n }),\n});\n","import { generateMnemonic } from \"@scure/bip39\";\nimport { wordlist as english } from \"@scure/bip39/wordlists/english\";\nimport { createTool } from \"../../shared\";\nimport { deriveAllAddresses } from \"../chains\";\nimport { expandAddresses } from \"../models\";\nimport { addWallet } from \"../store\";\nimport { walletCreateSchema } from \"./schema\";\n\nexport const walletCreate = createTool(walletCreateSchema, async (params) => {\n const mnemonic = generateMnemonic(english, 256);\n const addresses = deriveAllAddresses(mnemonic);\n\n addWallet({\n name: params.name,\n type: \"hd\",\n mnemonic,\n addresses,\n createdAt: new Date().toISOString(),\n });\n\n return { name: params.name, addresses: expandAddresses(addresses) };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\nimport { chainSchema } from \"../models\";\n\nexport const walletCreateSchema = defineToolSchema({\n name: \"wallet_create\",\n description:\n \"Create a new multi-chain HD wallet. Generates a BIP39 mnemonic and derives addresses for Solana, Ethereum, Bitcoin, and Tron. \" +\n \"The mnemonic is copied to clipboard (interactive) or omitted (headless). Keys are encrypted with a random key stored in the OS keychain.\",\n input: z.object({\n name: z.string().describe(\"Wallet name\"),\n }),\n output: z.object({\n name: z.string(),\n addresses: z.record(chainSchema, z.string()),\n }),\n});\n","import { createInterface } from \"readline\";\nimport { validateMnemonic } from \"@scure/bip39\";\nimport { wordlist as english } from \"@scure/bip39/wordlists/english\";\nimport { Keypair } from \"@solana/web3.js\";\nimport bs58 from \"bs58\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { createTool } from \"../../shared\";\nimport { deriveAllAddresses } from \"../chains\";\nimport { addWallet } from \"../store\";\nimport { KEY_CHAIN_MAP, type KeyChain } from \"../models\";\nimport { walletImportSchema } from \"./schema\";\n\nfunction readSecret(prompt: string): Promise<string> {\n return new Promise((resolve, reject) => {\n if (!process.stdin.isTTY) {\n reject(new Error(\"Interactive import requires a terminal. Pass --mnemonic or --key instead.\"));\n return;\n }\n\n const rl = createInterface({ input: process.stdin, output: process.stderr });\n process.stderr.write(prompt);\n process.stdin.setRawMode(true);\n\n let input = \"\";\n const onData = (ch: Buffer) => {\n const c = ch.toString();\n if (c === \"\\n\" || c === \"\\r\") {\n process.stdin.setRawMode(false);\n process.stdin.removeListener(\"data\", onData);\n process.stderr.write(\"\\n\");\n rl.close();\n resolve(input.trim());\n } else if (c === \"\\u0003\") {\n process.stdin.setRawMode(false);\n rl.close();\n process.exit(0);\n } else if (c === \"\\u007f\" || c === \"\\b\") {\n input = input.slice(0, -1);\n } else {\n input += c;\n }\n };\n process.stdin.on(\"data\", onData);\n });\n}\n\nexport function detectSecretType(secret: string): \"mnemonic\" | \"key\" {\n const words = secret.split(/\\s+/);\n if (words.length >= 12 && words.length <= 24 && validateMnemonic(secret, english)) {\n return \"mnemonic\";\n }\n return \"key\";\n}\n\nexport const walletImport = createTool(walletImportSchema, async (params) => {\n if (params.mnemonic && params.key) {\n throw new Error(\"Provide either --mnemonic or --key, not both.\");\n }\n\n let mnemonic = params.mnemonic;\n let key = params.key;\n\n if (!mnemonic && !key) {\n const secret = await readSecret(\"Paste your mnemonic or private key (hidden): \");\n if (!secret) {\n throw new Error(\"No input provided.\");\n }\n const type = detectSecretType(secret);\n if (type === \"mnemonic\") {\n mnemonic = secret;\n } else {\n key = secret;\n }\n }\n\n if (mnemonic) {\n const trimmed = mnemonic.trim().toLowerCase();\n if (!validateMnemonic(trimmed, english)) {\n throw new Error(\"Invalid BIP39 mnemonic.\");\n }\n\n const addresses = deriveAllAddresses(trimmed);\n addWallet({\n name: params.name,\n type: \"hd\",\n mnemonic: trimmed,\n addresses,\n createdAt: new Date().toISOString(),\n });\n\n return { name: params.name, type: \"hd\" as const, addresses };\n }\n\n const chain: KeyChain = params.chain ? KEY_CHAIN_MAP[params.chain] : \"solana\";\n const keyValue = key ?? \"\";\n let address: string;\n let cleanKey: string;\n\n if (chain === \"solana\") {\n try {\n const secretKeyBytes = bs58.decode(keyValue);\n const keypair = Keypair.fromSecretKey(secretKeyBytes);\n address = keypair.publicKey.toBase58();\n cleanKey = keyValue;\n } catch {\n throw new Error(\"Invalid Solana private key. Expected base58-encoded secret key.\");\n }\n } else if (chain === \"ethereum\") {\n cleanKey = keyValue.startsWith(\"0x\") ? keyValue.slice(2) : keyValue;\n if (!/^[0-9a-fA-F]{64}$/.test(cleanKey)) {\n throw new Error(\"Invalid EVM private key. Expected 64-character hex string.\");\n }\n address = privateKeyToAccount(`0x${cleanKey}`).address;\n } else {\n throw new Error(`Single-key import for ${chain} is not yet supported. Use a mnemonic instead.`);\n }\n\n addWallet({\n name: params.name,\n type: \"imported\",\n chain,\n privateKey: cleanKey,\n addresses: { [chain]: address },\n createdAt: new Date().toISOString(),\n });\n\n return { name: params.name, type: \"imported\" as const, addresses: { [chain]: address } };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\nimport { addressesSchema, chainSchema } from \"../models\";\n\nexport const walletImportSchema = defineToolSchema({\n name: \"wallet_import\",\n description:\n \"Import a wallet from a BIP39 mnemonic (HD, all chains) or a single private key (one chain). \" +\n \"Provide either --mnemonic or --key, not both.\",\n input: z.object({\n name: z.string().describe(\"Wallet name\"),\n mnemonic: z\n .string()\n .nullable()\n .describe(\"BIP39 mnemonic seed phrase (for HD wallet import)\"),\n key: z\n .string()\n .nullable()\n .describe(\"Private key: base58 for Solana, hex for EVM/Bitcoin\"),\n chain: chainSchema\n .nullable()\n .describe(\"Chain for single-key import (default solana)\"),\n }),\n output: z.object({\n name: z.string(),\n type: z.enum([\"hd\", \"imported\"]),\n addresses: addressesSchema,\n }),\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\nimport { walletInfoSchema } from \"../models\";\n\nexport const walletListSchema = defineToolSchema({\n name: \"wallet_list\",\n description: \"List all local wallets\",\n input: z.object({}),\n output: z.array(walletInfoSchema),\n});\n","import { createTool } from \"../../shared\";\nimport { expandAddresses } from \"../models\";\nimport { loadWallets } from \"../store\";\nimport { walletListSchema } from \"./schema\";\n\nexport const walletList = createTool(walletListSchema, async () => {\n const wallets = loadWallets();\n return wallets.map((w) => ({\n name: w.name,\n type: w.type,\n addresses: expandAddresses(w.addresses),\n createdAt: w.createdAt,\n }));\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\nimport { walletInfoSchema } from \"../models\";\n\nexport const walletRetrieveSchema = defineToolSchema({\n name: \"wallet_retrieve\",\n description: \"Get details of a specific wallet\",\n input: z.object({\n wallet: z.string().describe(\"Wallet name or address\"),\n }),\n output: walletInfoSchema,\n});\n","import { createTool } from \"../../shared\";\nimport { expandAddresses } from \"../models\";\nimport { findWalletOrThrow } from \"../store\";\nimport { walletRetrieveSchema } from \"./schema\";\n\nexport const walletRetrieve = createTool(walletRetrieveSchema, async (params) => {\n const wallet = findWalletOrThrow(params.wallet);\n return {\n name: wallet.name,\n type: wallet.type,\n addresses: expandAddresses(wallet.addresses),\n createdAt: wallet.createdAt,\n };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const walletDeleteSchema = defineToolSchema({\n name: \"wallet_delete\",\n description:\n \"Permanently delete a local wallet. This removes the private key file and cannot be undone.\",\n input: z.object({\n wallet: z.string().describe(\"Name or address of the wallet to delete\"),\n confirm: z\n .boolean()\n .describe(\"Must be true to confirm deletion\"),\n }),\n output: z.object({\n name: z.string().describe(\"Name of the deleted wallet\"),\n deleted: z.literal(true),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { findWalletOrThrow, removeWallet } from \"../store\";\nimport { walletDeleteSchema } from \"./schema\";\n\nexport const walletDelete = createTool(walletDeleteSchema, async (params) => {\n if (!params.confirm) {\n throw new Error(\n \"Back up your wallet before deleting! Run `mp wallet export \" +\n params.wallet +\n \"` to save your recovery phrase, then re-run with --confirm to permanently delete.\",\n );\n }\n\n const wallet = findWalletOrThrow(params.wallet);\n removeWallet(wallet.name);\n\n return { name: wallet.name, deleted: true as const };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const walletRenameSchema = defineToolSchema({\n name: \"wallet_rename\",\n description: \"Rename a local wallet.\",\n input: z.object({\n wallet: z.string().describe(\"Current name or address of the wallet\"),\n name: z.string().describe(\"New name for the wallet\"),\n }),\n output: z.object({\n oldName: z.string(),\n newName: z.string(),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { findWalletOrThrow, loadWallets, mutateWallets } from \"../store\";\nimport { walletRenameSchema } from \"./schema\";\n\nexport const walletRename = createTool(walletRenameSchema, async (params) => {\n const wallet = findWalletOrThrow(params.wallet);\n const oldName = wallet.name;\n\n if (oldName === params.name) {\n throw new Error(`Wallet is already named \"${params.name}\"`);\n }\n\n const existing = loadWallets();\n if (existing.some((w) => w.name === params.name)) {\n throw new Error(`Wallet \"${params.name}\" already exists`);\n }\n\n mutateWallets((wallets) => {\n const w = wallets.find((w) => w.name === oldName);\n if (!w) throw new Error(`Wallet \"${oldName}\" not found`);\n w.name = params.name;\n });\n\n return { oldName, newName: params.name };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const walletExportSchema = defineToolSchema({\n name: \"wallet_export\",\n description:\n \"Export wallet secret (mnemonic or private key). Interactive only — cannot be run by agents or piped.\",\n input: z.object({\n wallet: z.string().describe(\"Wallet name\"),\n }),\n output: z.object({\n exported: z.literal(true),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { findWalletOrThrow } from \"../store\";\nimport { walletExportSchema } from \"./schema\";\n\nexport const walletExport = createTool(walletExportSchema, async (params) => {\n if (!process.stdout.isTTY) {\n throw new Error(\n \"Wallet export requires an interactive terminal.\\n\" +\n \"Run this command directly in your terminal: mp wallet export \" + params.wallet,\n );\n }\n\n const wallet = findWalletOrThrow(params.wallet);\n\n if (wallet.type === \"hd\") {\n process.stderr.write(`\\nMnemonic for \"${wallet.name}\":\\n\\n`);\n process.stderr.write(` ${wallet.mnemonic}\\n\\n`);\n process.stderr.write(\"Write this down and store it securely.\\n\\n\");\n } else {\n process.stderr.write(`\\nPrivate key for \"${wallet.name}\" (${wallet.chain}):\\n\\n`);\n process.stderr.write(` ${wallet.privateKey}\\n\\n`);\n }\n\n return { exported: true as const };\n});\n","import { createHash } from \"node:crypto\";\nimport { Keypair, VersionedTransaction } from \"@solana/web3.js\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { parseTransaction, type TransactionSerializable } from \"viem\";\nimport { createPublicClient, http } from \"viem\";\nimport * as viemChains from \"viem/chains\";\nimport * as ecc from \"tiny-secp256k1\";\nimport { createTool } from \"../../shared\";\nimport { findWalletOrThrow, resolveSigningKey } from \"../../wallet/store\";\nimport { KEY_CHAIN_MAP, type Chain } from \"../../wallet/models\";\nimport { transactionSignSchema } from \"./schema\";\n\nconst CHAIN_ID_TO_VIEM: Record<number, viemChains.Chain> = {\n 1: viemChains.mainnet,\n 137: viemChains.polygon,\n 42161: viemChains.arbitrum,\n 8453: viemChains.base,\n 10: viemChains.optimism,\n 56: viemChains.bsc,\n 43114: viemChains.avalanche,\n};\n\nconst RPC_OVERRIDES: Record<number, string> = {\n 137: \"https://polygon-bor-rpc.publicnode.com\",\n 42161: \"https://arbitrum-one-rpc.publicnode.com\",\n 10: \"https://optimism-rpc.publicnode.com\",\n 8453: \"https://base-rpc.publicnode.com\",\n 56: \"https://bsc-rpc.publicnode.com\",\n 43114: \"https://avalanche-c-chain-rpc.publicnode.com\",\n};\n\nexport const transactionSign = createTool(\n transactionSignSchema,\n async (params) => {\n const wallet = findWalletOrThrow(params.wallet);\n const chain = params.chain as Chain;\n const keyChain = KEY_CHAIN_MAP[chain];\n const { privateKey } = resolveSigningKey(wallet, chain);\n\n switch (keyChain) {\n case \"solana\":\n return signSolana(privateKey, params.transaction.trim());\n case \"ethereum\":\n return signEvm(privateKey, params.transaction.trim());\n case \"tron\":\n return signTron(privateKey, params.transaction.trim());\n case \"bitcoin\":\n return signBitcoin(privateKey, params.transaction.trim());\n }\n },\n);\n\nfunction signSolana(\n privateKey: Uint8Array,\n transaction: string,\n): { transaction: string } {\n const txBytes = Buffer.from(transaction, \"base64\");\n const tx = VersionedTransaction.deserialize(txBytes);\n const keypair = Keypair.fromSecretKey(privateKey);\n tx.sign([keypair]);\n return { transaction: Buffer.from(tx.serialize()).toString(\"base64\") };\n}\n\nasync function signEvm(\n privateKey: Uint8Array,\n transaction: string,\n): Promise<{ transaction: string }> {\n const account = privateKeyToAccount(\n `0x${Buffer.from(privateKey).toString(\"hex\")}`,\n );\n\n // swaps.xyz returns JSON {to, data, value, chainId} — build a proper tx\n if (transaction.startsWith(\"{\")) {\n const { to, data, value, chainId } = JSON.parse(transaction);\n const chain = CHAIN_ID_TO_VIEM[chainId] ?? viemChains.mainnet;\n const rpc = RPC_OVERRIDES[chainId];\n\n const client = createPublicClient({ chain, transport: http(rpc) });\n\n const nonce = await client.getTransactionCount({ address: account.address });\n const fees = await client.estimateFeesPerGas();\n const gas = await client.estimateGas({\n account: account.address,\n to: to as `0x${string}`,\n data: data as `0x${string}`,\n value: BigInt(value ?? \"0\"),\n });\n\n const signed = await account.signTransaction({\n to: to as `0x${string}`,\n data: data as `0x${string}`,\n value: BigInt(value ?? \"0\"),\n chainId,\n nonce,\n gas,\n maxFeePerGas: fees.maxFeePerGas,\n maxPriorityFeePerGas: fees.maxPriorityFeePerGas,\n type: \"eip1559\",\n });\n\n return { transaction: signed };\n }\n\n // Serialized hex transaction\n const hex = transaction.startsWith(\"0x\")\n ? (transaction as `0x${string}`)\n : (`0x${Buffer.from(transaction, \"base64\").toString(\"hex\")}` as `0x${string}`);\n\n const tx = parseTransaction(hex) as TransactionSerializable;\n const signed = await account.signTransaction(tx);\n\n return { transaction: signed };\n}\n\nfunction signTron(\n privateKey: Uint8Array,\n transaction: string,\n): { transaction: string } {\n const txBytes = Buffer.from(\n transaction.startsWith(\"0x\") ? transaction.slice(2) : transaction,\n \"hex\",\n );\n const txId = createHash(\"sha256\").update(txBytes).digest();\n const sig = ecc.sign(txId, privateKey);\n if (!sig) throw new Error(\"Tron transaction signing failed\");\n return { transaction: Buffer.from(sig).toString(\"hex\") };\n}\n\nasync function signBitcoin(\n privateKey: Uint8Array,\n transaction: string,\n): Promise<{ transaction: string }> {\n const bitcoin = await import(\"bitcoinjs-lib\");\n const ECPairFactory = (await import(\"ecpair\")).default;\n const ecc = await import(\"tiny-secp256k1\");\n\n const ECPair = ECPairFactory(ecc);\n const keyPair = ECPair.fromPrivateKey(Buffer.from(privateKey));\n\n const psbt = bitcoin.Psbt.fromBase64(transaction);\n psbt.signAllInputs(keyPair);\n psbt.finalizeAllInputs();\n\n return { transaction: psbt.toBase64() };\n}\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\nimport { chainSchema } from \"../../wallet/models\";\n\nexport const transactionSignSchema = defineToolSchema({\n name: \"transaction_sign\",\n description:\n \"Sign a transaction with a local wallet. Supports Solana (VersionedTransaction), EVM (RLP-encoded), and Bitcoin (PSBT) transactions.\",\n input: z.object({\n wallet: z.string().describe(\"Wallet name or address\"),\n chain: chainSchema.describe(\n \"Chain: solana, ethereum, base, arbitrum, or bitcoin\",\n ),\n transaction: z\n .string()\n .describe(\"Base64-encoded unsigned transaction\"),\n }),\n output: z.object({\n transaction: z\n .string()\n .describe(\"Base64-encoded signed transaction\"),\n }),\n});\n","import { createHash } from \"node:crypto\";\nimport { Keypair } from \"@solana/web3.js\";\nimport bs58 from \"bs58\";\nimport nacl from \"tweetnacl\";\nimport * as ecc from \"tiny-secp256k1\";\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { createTool } from \"../../shared\";\nimport { findWalletOrThrow, resolveSigningKey } from \"../../wallet/store\";\nimport { KEY_CHAIN_MAP, type Chain } from \"../../wallet/models\";\nimport { messageSignSchema } from \"./schema\";\n\nexport const messageSign = createTool(messageSignSchema, async (params) => {\n const wallet = findWalletOrThrow(params.wallet);\n const chain = params.chain as Chain;\n const keyChain = KEY_CHAIN_MAP[chain];\n const { privateKey } = resolveSigningKey(wallet, chain);\n\n const messageBytes = Buffer.from(params.message, \"utf8\");\n\n switch (keyChain) {\n case \"solana\":\n return signSolana(privateKey, messageBytes);\n case \"ethereum\":\n return signEvm(privateKey, params.message);\n case \"tron\":\n return signTronMessage(privateKey, params.message);\n case \"bitcoin\":\n return signBitcoin(privateKey, messageBytes);\n }\n});\n\nfunction signSolana(\n privateKey: Uint8Array,\n messageBytes: Buffer,\n): { signature: string } {\n const keypair = Keypair.fromSecretKey(privateKey);\n const signatureBytes = nacl.sign.detached(messageBytes, keypair.secretKey);\n return { signature: bs58.encode(signatureBytes) };\n}\n\nasync function signEvm(\n privateKey: Uint8Array,\n message: string,\n): Promise<{ signature: string }> {\n const account = privateKeyToAccount(\n `0x${Buffer.from(privateKey).toString(\"hex\")}`,\n );\n const signature = await account.signMessage({ message });\n return { signature };\n}\n\nfunction signTronMessage(\n privateKey: Uint8Array,\n message: string,\n): { signature: string } {\n const messageBytes = Buffer.from(message, \"utf8\");\n const prefix = Buffer.from(\n `\\x19TRON Signed Message:\\n${messageBytes.length}`,\n \"utf8\",\n );\n const hash = keccak_256(Buffer.concat([prefix, messageBytes]));\n const sig = ecc.sign(hash, privateKey);\n if (!sig) throw new Error(\"Tron message signing failed\");\n return { signature: \"0x\" + Buffer.from(sig).toString(\"hex\") };\n}\n\nfunction signBitcoin(\n privateKey: Uint8Array,\n messageBytes: Buffer,\n): { signature: string } {\n const hash1 = createHash(\"sha256\").update(messageBytes).digest();\n const hash2 = createHash(\"sha256\").update(hash1).digest();\n\n const sig = ecc.sign(hash2, privateKey);\n if (!sig) throw new Error(\"Bitcoin message signing failed\");\n\n return { signature: \"0x\" + Buffer.from(sig).toString(\"hex\") };\n}\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\nimport { chainSchema } from \"../../wallet/models\";\n\nexport const messageSignSchema = defineToolSchema({\n name: \"message_sign\",\n description:\n \"Sign a message with a local wallet. Supports Solana (ed25519), EVM (EIP-191 personal sign), and Bitcoin (secp256k1 ECDSA).\",\n input: z.object({\n wallet: z.string().describe(\"Wallet address or name to sign with\"),\n chain: chainSchema.describe(\n \"Chain: solana, ethereum, base, arbitrum, or bitcoin\",\n ),\n message: z.string().describe(\"Message text to sign\"),\n }),\n output: z.object({\n signature: z\n .string()\n .describe(\n \"Signature: base58 for Solana, hex (0x-prefixed) for EVM/Bitcoin\",\n ),\n }),\n});\n","import https from \"node:https\";\nimport { createTool } from \"../../shared\";\nimport { bitcoinBalanceRetrieveSchema } from \"./schema\";\n\nconst SATS_PER_BTC = 100_000_000;\n\nfunction satsToBtc(sats: number): string {\n return (sats / SATS_PER_BTC).toFixed(8);\n}\n\nfunction fetchJson<T>(url: string): Promise<T> {\n return new Promise((resolve, reject) => {\n https.get(url, { headers: { \"User-Agent\": \"moonpay-cli\" } }, (res) => {\n if (res.statusCode !== 200) {\n reject(new Error(`HTTP ${res.statusCode} from ${url}`));\n res.resume();\n return;\n }\n let data = \"\";\n res.on(\"data\", (chunk) => (data += chunk));\n res.on(\"end\", () => {\n try {\n resolve(JSON.parse(data));\n } catch {\n reject(new Error(\"Invalid JSON response\"));\n }\n });\n }).on(\"error\", reject);\n });\n}\n\ninterface MempoolAddress {\n chain_stats: { funded_txo_sum: number; spent_txo_sum: number };\n mempool_stats: { funded_txo_sum: number; spent_txo_sum: number };\n}\n\nexport const bitcoinBalanceRetrieve = createTool(\n bitcoinBalanceRetrieveSchema,\n async (params) => {\n let address = params.wallet;\n\n // If it doesn't look like a Bitcoin address, try resolving as wallet name\n if (!address.startsWith(\"bc1\") && !address.startsWith(\"1\") && !address.startsWith(\"3\")) {\n const { findWalletOrThrow } = await import(\"../../wallet/store\");\n const wallet = findWalletOrThrow(address);\n const btcAddress = wallet.addresses.bitcoin;\n if (!btcAddress) {\n throw new Error(\n `Wallet \"${address}\" has no Bitcoin address. It may be an imported single-chain wallet.`,\n );\n }\n address = btcAddress;\n }\n\n const data = await fetchJson<MempoolAddress>(\n `https://mempool.space/api/address/${encodeURIComponent(address)}`,\n );\n\n const confirmedSats =\n data.chain_stats.funded_txo_sum - data.chain_stats.spent_txo_sum;\n const unconfirmedSats =\n data.mempool_stats.funded_txo_sum - data.mempool_stats.spent_txo_sum;\n const totalSats = confirmedSats + unconfirmedSats;\n\n return {\n address,\n confirmed: { btc: satsToBtc(confirmedSats), sats: confirmedSats },\n unconfirmed: { btc: satsToBtc(unconfirmedSats), sats: unconfirmedSats },\n total: { btc: satsToBtc(totalSats), sats: totalSats },\n };\n },\n);\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const bitcoinBalanceRetrieveSchema = defineToolSchema({\n name: \"bitcoin_balance_retrieve\",\n description:\n \"Get the BTC balance of a Bitcoin address. Returns confirmed and unconfirmed balances in BTC and satoshis.\",\n input: z.object({\n wallet: z.string().describe(\"Bitcoin address (bc1...) or wallet name\"),\n }),\n output: z.object({\n address: z.string().describe(\"Bitcoin address\"),\n confirmed: z.object({\n btc: z.string().describe(\"Confirmed balance in BTC\"),\n sats: z.number().describe(\"Confirmed balance in satoshis\"),\n }),\n unconfirmed: z.object({\n btc: z.string().describe(\"Unconfirmed (pending) balance in BTC\"),\n sats: z.number().describe(\"Unconfirmed (pending) balance in satoshis\"),\n }),\n total: z.object({\n btc: z.string().describe(\"Total balance in BTC\"),\n sats: z.number().describe(\"Total balance in satoshis\"),\n }),\n }),\n});\n","import { readdirSync, readFileSync, existsSync, mkdirSync, cpSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { fileURLToPath } from \"node:url\";\nimport { createRequire } from \"node:module\";\n\n/** Package root → skills/ directory bundled with the CLI */\nfunction getSkillsDir(): string {\n // import.meta.url resolves to dist/index.js when bundled\n const __filename = fileURLToPath(import.meta.url);\n const distDir = dirname(__filename);\n // dist/ → package root → skills/\n return join(distDir, \"..\", \"skills\");\n}\n\n/** Where Claude Code discovers skills */\nfunction getClaudeSkillsDir(): string {\n return join(homedir(), \".claude\", \"skills\");\n}\n\nexport type SkillInfo = {\n name: string;\n description: string;\n};\n\nexport function listBundledSkills(): SkillInfo[] {\n const dir = getSkillsDir();\n if (!existsSync(dir)) return [];\n return readdirSync(dir, { withFileTypes: true })\n .filter((e) => e.isDirectory() && e.name.startsWith(\"moonpay-\"))\n .map((e) => {\n const md = readFileSync(join(dir, e.name, \"SKILL.md\"), \"utf-8\");\n const descMatch = md.match(/^description:\\s*(.+)$/m);\n return {\n name: e.name,\n description: descMatch?.[1]?.replace(/^[\"']|[\"']$/g, \"\") ?? \"\",\n };\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n}\n\nexport function readSkill(name: string): string {\n if (/[/\\\\]|\\.\\./.test(name)) throw new Error(`Invalid skill name: \"${name}\"`);\n const skillPath = join(getSkillsDir(), name, \"SKILL.md\");\n if (!existsSync(skillPath)) {\n throw new Error(`Skill \"${name}\" not found. Run \\`mp skill list\\` to see available skills.`);\n }\n return readFileSync(skillPath, \"utf-8\");\n}\n\nexport function installSkills(force: boolean, dir?: string): { name: string; installed: boolean }[] {\n const srcDir = getSkillsDir();\n const destDir = dir ?? getClaudeSkillsDir();\n const skills = listBundledSkills();\n\n mkdirSync(destDir, { recursive: true });\n\n return skills.map((s) => {\n const dest = join(destDir, s.name);\n if (existsSync(dest) && !force) {\n return { name: s.name, installed: false };\n }\n cpSync(join(srcDir, s.name), dest, { recursive: true, force: true });\n return { name: s.name, installed: true };\n });\n}\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const skillListSchema = defineToolSchema({\n name: \"skill_list\",\n description: \"List available AI skills for Claude Code and other agents\",\n input: z.object({}),\n output: z.array(\n z.object({\n name: z.string(),\n description: z.string(),\n }),\n ),\n});\n","import { createTool } from \"../../shared\";\nimport { listBundledSkills } from \"../server\";\nimport { skillListSchema } from \"./schema\";\n\nexport const skillList = createTool(skillListSchema, async () => {\n return listBundledSkills();\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const skillRetrieveSchema = defineToolSchema({\n name: \"skill_retrieve\",\n description: \"Get the full instructions for a specific skill\",\n input: z.object({\n name: z.string().describe(\"Skill name (e.g. moonpay-swap-tokens)\"),\n }),\n output: z.object({\n name: z.string(),\n content: z.string(),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { readSkill } from \"../server\";\nimport { skillRetrieveSchema } from \"./schema\";\n\nexport const skillRetrieve = createTool(skillRetrieveSchema, async (params) => {\n return {\n name: params.name,\n content: readSkill(params.name),\n };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const skillInstallSchema = defineToolSchema({\n name: \"skill_install\",\n description:\n \"Install AI skills for Claude Code. Defaults to ~/.claude/skills/, or specify --dir for a custom location (e.g. project-local, ~/.agents/skills).\",\n input: z.object({\n force: z.boolean().describe(\"Overwrite existing skills\"),\n dir: z\n .string()\n .nullable()\n .describe(\n \"Target directory to install skills into (default: ~/.claude/skills/)\",\n ),\n }),\n output: z.array(\n z.object({\n name: z.string(),\n installed: z.boolean(),\n }),\n ),\n});\n","import { createTool } from \"../../shared\";\nimport { installSkills } from \"../server\";\nimport { skillInstallSchema } from \"./schema\";\n\nexport const skillInstall = createTool(skillInstallSchema, async (params) => {\n return installSkills(params.force, params.dir ?? undefined);\n});\n","import { encodeFunctionData } from \"viem\";\nimport { createTool } from \"../../shared\";\nimport { callRemoteTool } from \"../../../client\";\nimport { resolveBaseUrl } from \"../../../auth\";\nimport { walletRetrieve } from \"../../wallet/retrieve/tool\";\nimport { KEY_CHAIN_MAP } from \"../../wallet/models\";\nimport { transactionSign } from \"../../transaction/sign/tool\";\nimport { tokenBridgeSchema } from \"./schema\";\n\nconst ERC20_APPROVE_ABI = [\n {\n name: \"approve\",\n type: \"function\",\n inputs: [\n { name: \"spender\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n] as const;\n\nexport const tokenBridge = createTool(tokenBridgeSchema, async (params) => {\n if (!params.from.amount && !params.to.amount) {\n throw new Error(\"Provide either from.amount or to.amount.\");\n }\n\n const baseUrl = resolveBaseUrl();\n\n const wallet = await walletRetrieve.handler({ wallet: params.from.wallet });\n const fromAddress = wallet.addresses[KEY_CHAIN_MAP[params.from.chain]];\n if (!fromAddress) {\n throw new Error(`Wallet \"${wallet.name}\" has no address on ${params.from.chain}.`);\n }\n\n let toAddress = fromAddress;\n if (params.to.wallet) {\n try {\n const toWallet = await walletRetrieve.handler({ wallet: params.to.wallet });\n toAddress = toWallet.addresses[KEY_CHAIN_MAP[params.to.chain]] ?? params.to.wallet;\n } catch {\n toAddress = params.to.wallet;\n }\n } else if (params.from.chain !== params.to.chain) {\n toAddress = wallet.addresses[KEY_CHAIN_MAP[params.to.chain]] ?? fromAddress;\n }\n\n const buildParams = {\n from: { wallet: fromAddress, chain: params.from.chain, token: params.from.token, amount: params.from.amount },\n to: { wallet: toAddress, chain: params.to.chain, token: params.to.token, amount: params.to.amount },\n };\n\n let buildResult = await callRemoteTool(baseUrl, \"swaps_transaction_build\", buildParams);\n\n // ERC20 approval (required for EVM token swaps/bridges)\n const tx = buildResult.transaction;\n if (buildResult.requiresApproval && \"to\" in tx) {\n const { to: spender, chainId } = tx;\n\n const approveTx = {\n type: \"evm\" as const,\n to: params.from.token,\n data: encodeFunctionData({\n abi: ERC20_APPROVE_ABI,\n functionName: \"approve\",\n args: [spender as `0x${string}`, BigInt(buildResult.amountIn.raw)],\n }),\n value: \"0\",\n chainId,\n };\n\n const { transaction: signedApproval } = await transactionSign.handler({\n wallet: wallet.name,\n chain: params.from.chain,\n transaction: JSON.stringify(approveTx),\n });\n\n const approvalResult = await callRemoteTool(baseUrl, \"transaction_send\", {\n transaction: signedApproval,\n message: `Approve ${buildResult.amountIn.symbol}`,\n chain: params.from.chain,\n });\n\n if (!approvalResult.signature) {\n throw new Error(`Approval failed: ${approvalResult.message}`);\n }\n\n // Poll until approval is confirmed on-chain\n process.stderr.write(\"Waiting for approval confirmation...\\n\");\n for (let i = 0; i < 30; i++) {\n await new Promise((r) => setTimeout(r, 2_000));\n try {\n const rebuilt = await callRemoteTool(baseUrl, \"swaps_transaction_build\", buildParams);\n if (!rebuilt.requiresApproval) {\n buildResult = rebuilt;\n break;\n }\n } catch {}\n if (i === 29) throw new Error(\"Approval not confirmed after 60 seconds.\");\n }\n }\n\n // Sign\n const txPayload = \"base64\" in buildResult.transaction\n ? buildResult.transaction.base64\n : JSON.stringify(buildResult.transaction);\n\n const { transaction: signedTransaction } = await transactionSign.handler({\n wallet: wallet.name,\n chain: params.from.chain,\n transaction: txPayload,\n });\n\n // Send\n const sendResult = await callRemoteTool(baseUrl, \"transaction_send\", {\n transaction: signedTransaction,\n message: buildResult.message,\n chain: params.from.chain,\n });\n\n if (!sendResult.signature) {\n throw new Error(`Transaction send failed: ${sendResult.message}`);\n }\n\n // Register (best-effort)\n try {\n await callRemoteTool(baseUrl, \"transaction_register\", {\n transactionId: buildResult.transactionId,\n transactionHash: sendResult.signature,\n chain: params.from.chain,\n });\n } catch {}\n\n return { signature: sendResult.signature, message: buildResult.message };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\nimport { chainSchema } from \"../../wallet/models\";\n\nexport const tokenBridgeSchema = defineToolSchema({\n name: \"token_bridge\",\n description:\n \"Bridge tokens across chains. Builds, signs locally, broadcasts, and registers.\",\n input: z.object({\n from: z.object({\n wallet: z.string().describe(\"Local wallet name to sign with\"),\n chain: chainSchema.describe(\"Source chain\"),\n token: z.string().describe(\"Source token address\"),\n amount: z.coerce.number().nullable().describe(\"Amount to send (exact-in). Null for exact-out.\"),\n }),\n to: z.object({\n wallet: z.string().nullable().describe(\"Destination wallet name or address (defaults to from wallet)\"),\n chain: chainSchema.describe(\"Destination chain\"),\n token: z.string().describe(\"Destination token address\"),\n amount: z.coerce.number().nullable().describe(\"Amount to receive (exact-out). Null for exact-in.\"),\n }),\n }),\n output: z.object({\n signature: z.string().describe(\"Transaction hash/signature\"),\n message: z.string().describe(\"Human-readable bridge description\"),\n }),\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\nimport { chainSchema } from \"../../wallet/models\";\n\nexport const tokenSwapSchema = defineToolSchema({\n name: \"token_swap\",\n description:\n \"Swap tokens on the same chain. Builds, signs locally, broadcasts, and registers.\",\n input: z.object({\n wallet: z.string().describe(\"Local wallet name to sign with\"),\n chain: chainSchema.describe(\"Chain to swap on\"),\n from: z.object({\n token: z.string().describe(\"Input token address (selling)\"),\n amount: z.coerce.number().nullable().describe(\"Amount to sell (exact-in). Null for exact-out.\"),\n }),\n to: z.object({\n token: z.string().describe(\"Output token address (buying)\"),\n amount: z.coerce.number().nullable().describe(\"Amount to receive (exact-out). Null for exact-in.\"),\n }),\n }),\n output: z.object({\n signature: z.string().describe(\"Transaction hash/signature\"),\n message: z.string().describe(\"Human-readable swap description\"),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { tokenBridge } from \"../bridge/tool\";\nimport { tokenSwapSchema } from \"./schema\";\n\nexport const tokenSwap = createTool(tokenSwapSchema, async (params) => {\n return tokenBridge.handler({\n from: { wallet: params.wallet, chain: params.chain, token: params.from.token, amount: params.from.amount },\n to: { wallet: null, chain: params.chain, token: params.to.token, amount: params.to.amount },\n });\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\nimport { chainSchema } from \"../../wallet/models\";\n\nexport const tokenTransferSchema = defineToolSchema({\n name: \"token_transfer\",\n description:\n \"Transfer tokens to another wallet on the same chain. Builds, signs locally, and broadcasts.\",\n input: z.object({\n wallet: z.string().describe(\"Local wallet name to sign with\"),\n chain: chainSchema.describe(\"Chain to transfer on\"),\n token: z.string().describe(\"Token address to transfer\"),\n amount: z.coerce.number().describe(\"Amount to transfer\"),\n to: z.string().describe(\"Recipient wallet name or address\"),\n }),\n output: z.object({\n signature: z.string().describe(\"Transaction hash/signature\"),\n message: z.string().describe(\"Human-readable transfer description\"),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { callRemoteTool } from \"../../../client\";\nimport { resolveBaseUrl } from \"../../../auth\";\nimport { walletRetrieve } from \"../../wallet/retrieve/tool\";\nimport { KEY_CHAIN_MAP } from \"../../wallet/models\";\nimport { transactionSign } from \"../../transaction/sign/tool\";\nimport { tokenTransferSchema } from \"./schema\";\n\nexport const tokenTransfer = createTool(tokenTransferSchema, async (params) => {\n const baseUrl = resolveBaseUrl();\n\n const wallet = await walletRetrieve.handler({ wallet: params.wallet });\n const fromAddress = wallet.addresses[KEY_CHAIN_MAP[params.chain]];\n if (!fromAddress) {\n throw new Error(`Wallet \"${wallet.name}\" has no address on ${params.chain}.`);\n }\n\n // Resolve recipient: try as wallet name, fall back to raw address\n let toAddress = params.to;\n try {\n const toWallet = await walletRetrieve.handler({ wallet: params.to });\n toAddress = toWallet.addresses[KEY_CHAIN_MAP[params.chain]] ?? params.to;\n } catch {\n // Not a wallet name — use as-is (raw address)\n }\n\n // Build unsigned transaction\n const buildResult = await callRemoteTool(baseUrl, \"token_transfer\", {\n wallet: fromAddress,\n token: params.token,\n to: toAddress,\n amount: params.amount,\n chain: params.chain,\n });\n\n // Sign\n const txPayload = \"base64\" in buildResult.transaction\n ? buildResult.transaction.base64\n : JSON.stringify(buildResult.transaction);\n\n const { transaction: signedTransaction } = await transactionSign.handler({\n wallet: wallet.name,\n chain: params.chain,\n transaction: txPayload,\n });\n\n // Send\n const sendResult = await callRemoteTool(baseUrl, \"transaction_send\", {\n transaction: signedTransaction,\n message: buildResult.message,\n chain: params.chain,\n });\n\n if (!sendResult.signature) {\n throw new Error(`Transaction send failed: ${sendResult.message}`);\n }\n\n return { signature: sendResult.signature, message: buildResult.message };\n});\n","import { Keypair, VersionedTransaction, VersionedMessage } from \"@solana/web3.js\";\nimport axios from \"axios\";\nimport { wrapAxiosWithPayment } from \"@x402/axios\";\nimport { x402Client } from \"@x402/core/client\";\nimport { ExactSvmScheme } from \"@x402/svm\";\nimport { registerExactEvmScheme } from \"@x402/evm/exact/client\";\nimport { toClientEvmSigner } from \"@x402/evm\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { createPublicClient, http } from \"viem\";\nimport * as viemChains from \"viem/chains\";\nimport { createTool } from \"../../shared\";\nimport { findWalletOrThrow, resolveSigningKey } from \"../../wallet/store\";\nimport type { Chain } from \"../../wallet/models\";\nimport { x402RequestSchema } from \"./schema\";\n\nconst SOLANA_NETWORK = \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\" as const;\n\nconst CHAIN_TO_VIEM: Partial<Record<Chain, viemChains.Chain>> = {\n ethereum: viemChains.mainnet,\n base: viemChains.base,\n polygon: viemChains.polygon,\n arbitrum: viemChains.arbitrum,\n optimism: viemChains.optimism,\n};\n\nfunction createSolanaX402Client(walletAddress: string, secretKey: Uint8Array) {\n const keypair = Keypair.fromSecretKey(secretKey);\n\n const signer = {\n address: walletAddress,\n signTransactions: async (transactions: readonly { messageBytes: Uint8Array; signatures: Record<string, Uint8Array> }[]) => {\n return transactions.map((transaction) => {\n const messageBytes = new Uint8Array(transaction.messageBytes);\n const message = VersionedMessage.deserialize(messageBytes);\n const numSigs = Object.keys(transaction.signatures).length;\n const tx = new VersionedTransaction(\n message,\n new Array(numSigs).fill(new Uint8Array(64)),\n );\n\n tx.sign([keypair]);\n\n const signerIndex = message.staticAccountKeys.findIndex(\n (key) => key.toBase58() === walletAddress,\n );\n if (signerIndex === -1) {\n throw new Error(\n `Wallet ${walletAddress} is not a signer for this transaction`,\n );\n }\n\n return { [walletAddress]: tx.signatures[signerIndex] };\n });\n },\n };\n\n const client = new x402Client();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const svmScheme = new ExactSvmScheme(signer as any);\n client.register(SOLANA_NETWORK, svmScheme);\n client.registerV1(\"solana\", svmScheme);\n\n return wrapAxiosWithPayment(axios.create(), client);\n}\n\nfunction createEvmX402Client(privateKey: Uint8Array, chain: Chain) {\n const account = privateKeyToAccount(\n `0x${Buffer.from(privateKey).toString(\"hex\")}`,\n );\n\n const viemChain = CHAIN_TO_VIEM[chain] ?? viemChains.base;\n const publicClient = createPublicClient({ chain: viemChain, transport: http() });\n const signer = toClientEvmSigner(account, publicClient);\n\n const client = new x402Client();\n registerExactEvmScheme(client, { signer });\n\n return wrapAxiosWithPayment(axios.create(), client);\n}\n\nexport const x402Request = createTool(\n x402RequestSchema,\n async ({ method, url, body, params, wallet: walletNameOrAddress, chain }) => {\n const walletMetadata = findWalletOrThrow(walletNameOrAddress);\n const resolvedChain = chain ?? \"solana\";\n\n const { privateKey, address } = resolveSigningKey(walletMetadata, resolvedChain);\n const httpClient = resolvedChain === \"solana\"\n ? createSolanaX402Client(address, privateKey)\n : createEvmX402Client(privateKey, resolvedChain);\n\n let response;\n switch (method) {\n case \"GET\":\n response = await httpClient.get(url, { params });\n break;\n case \"POST\":\n response = await httpClient.post(url, body || {}, { params });\n break;\n case \"PUT\":\n response = await httpClient.put(url, body || {}, { params });\n break;\n case \"PATCH\":\n response = await httpClient.patch(url, body || {}, { params });\n break;\n case \"DELETE\":\n response = await httpClient.delete(url, { params });\n break;\n default:\n throw new Error(`Unsupported HTTP method: ${method}`);\n }\n\n return {\n status: response.status,\n data: response.data,\n headers: response.headers as Record<string, string>,\n };\n },\n);\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const x402RequestSchema = defineToolSchema({\n name: \"x402_request\",\n description:\n \"Make an HTTP request to an x402-protected endpoint. Automatically handles payment when a 402 Payment Required response is received, signing the payment transaction with the local wallet.\",\n input: z.object({\n method: z\n .enum([\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\"])\n .describe(\"HTTP method\"),\n url: z\n .string()\n .url()\n .refine((u) => u.startsWith(\"https://\"), { message: \"URL must use HTTPS\" })\n .refine(\n (u) => {\n try {\n const host = new URL(u).hostname;\n return !host.match(/^(localhost|127\\.|10\\.|172\\.(1[6-9]|2\\d|3[01])\\.|192\\.168\\.|169\\.254\\.|0\\.0\\.0\\.0|\\[::1\\])/);\n } catch { return false; }\n },\n { message: \"URL must not target private/internal addresses\" },\n )\n .describe(\n \"Full HTTPS URL of the x402-protected endpoint (e.g., 'https://agents.moonpay.com/api/x402/tools/market_digest_retrieve')\",\n ),\n body: z\n .record(z.any())\n .nullable()\n .describe(\"Request body (for POST, PUT, PATCH)\"),\n params: z.record(z.any()).nullable().describe(\"Query parameters\"),\n wallet: z.string().describe(\"Wallet name or address to pay with\"),\n chain: z\n .enum([\"solana\", \"base\", \"ethereum\", \"arbitrum\", \"polygon\", \"optimism\"])\n .nullable()\n .describe(\"Chain to pay from (default: solana). Use an EVM chain like 'base' to pay with an EVM wallet.\"),\n }),\n output: z.object({\n status: z.number().describe(\"HTTP status code\"),\n data: z.any().describe(\"Response data\"),\n headers: z.record(z.any()).describe(\"Response headers\"),\n }),\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../../shared\";\nimport { chainSchema } from \"../../../wallet/models\";\n\nexport const virtualAccountWalletRegisterSchema = defineToolSchema({\n name: \"virtual-account_wallet_register\",\n description:\n \"Register a local wallet with your virtual account. Creates the verification message, signs it locally, and registers in one step.\",\n input: z.object({\n wallet: z.string().describe(\"Local wallet name\"),\n chain: chainSchema.describe(\"Chain to register (solana, ethereum, etc.)\"),\n }),\n output: z.object({\n success: z.literal(true),\n address: z.string().describe(\"Registered wallet address\"),\n chain: z.string().describe(\"Chain registered on\"),\n }),\n});\n","import { createTool } from \"../../../shared\";\nimport { callTool, callRemoteTool } from \"../../../../client\";\nimport { resolveBaseUrl } from \"../../../../auth\";\nimport { walletRetrieve } from \"../../../wallet/retrieve/tool\";\nimport { messageSign } from \"../../../message/sign/tool\";\nimport { KEY_CHAIN_MAP } from \"../../../wallet/models\";\nimport { virtualAccountWalletRegisterSchema } from \"./schema\";\n\nexport const virtualAccountWalletRegister = createTool(\n virtualAccountWalletRegisterSchema,\n async (params) => {\n const baseUrl = resolveBaseUrl();\n const chain = params.chain;\n\n // 1. Resolve wallet name → address\n const wallet = await walletRetrieve.handler({ wallet: params.wallet });\n const keyChain = KEY_CHAIN_MAP[chain];\n const address = wallet.addresses[keyChain];\n if (!address) {\n throw new Error(`Wallet \"${wallet.name}\" has no ${keyChain} address.`);\n }\n\n // 2. Create verification message\n const { message } = (await callTool(\n baseUrl,\n \"virtual-account_wallet_registration-message_create\",\n { wallet: address },\n )) as { message: string };\n\n // 3. Sign locally\n const { signature } = await messageSign.handler({\n wallet: wallet.name,\n chain,\n message,\n });\n\n // 4. Register with backend\n await callRemoteTool(baseUrl, \"virtual-account_wallet_register\", {\n wallet: address,\n message,\n signature,\n chain,\n });\n\n return { success: true as const, address, chain };\n },\n);\n","import * as fs from \"fs\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport { createTool } from \"../../shared\";\nimport { consentAcceptSchema } from \"./schema\";\n\nconst CONFIG_DIR = path.join(os.homedir(), \".config\", \"moonpay\");\nconst CONSENT_PATH = path.join(CONFIG_DIR, \"consent.json\");\nconst CURRENT_TOS_VERSION = \"1.0\";\n\nexport const consentAccept = createTool(consentAcceptSchema, async () => {\n if (!fs.existsSync(CONFIG_DIR)) {\n fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n }\n\n const now = new Date().toISOString();\n const consent = { tosVersion: CURRENT_TOS_VERSION, acceptedAt: now };\n\n const tmp = CONSENT_PATH + `.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(consent, null, 2), {\n encoding: \"utf-8\",\n mode: 0o600,\n });\n fs.renameSync(tmp, CONSENT_PATH);\n\n return consent;\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const consentAcceptSchema = defineToolSchema({\n name: \"consent_accept\",\n description:\n \"Accept the MoonPay Terms of Service and Privacy Policy. Required before using any CLI command.\",\n input: z.object({}),\n output: z.object({\n tosVersion: z.string(),\n acceptedAt: z.string(),\n }),\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../shared\";\n\nexport const loginSchema = defineToolSchema({\n name: \"login\",\n description: \"Send a login verification code to your email.\",\n input: z.object({\n email: z.string().describe(\"Email address\"),\n }),\n output: z.object({\n email: z.string(),\n message: z.string(),\n }),\n});\n","import { createTool } from \"../shared\";\nimport { getConfigOrDefault } from \"../../auth\";\nimport { loginSchema } from \"./schema\";\n\nexport const login = createTool(loginSchema, async (params) => {\n const { baseUrl } = getConfigOrDefault();\n const url = `${baseUrl}/login?email=${encodeURIComponent(params.email)}`;\n return {\n email: params.email,\n message: `Open this link to verify:\\n\\n ${url}\\n\\nThen run: mp verify --email ${params.email} --code <code>`,\n };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../shared\";\n\nexport const verifySchema = defineToolSchema({\n name: \"verify\",\n description: \"Verify login code and store encrypted credentials.\",\n input: z.object({\n email: z.string().describe(\"Email address\"),\n code: z.string().describe(\"Verification code\"),\n }),\n output: z.object({\n email: z.string(),\n message: z.string(),\n }),\n});\n","import { createTool } from \"../shared\";\nimport {\n callPublicTool,\n getConfigOrDefault,\n saveCredentials,\n type Credentials,\n} from \"../../auth\";\nimport { verifySchema } from \"./schema\";\n\nexport const verify = createTool(verifySchema, async (params) => {\n const { baseUrl } = getConfigOrDefault();\n const tokens = (await callPublicTool(baseUrl, \"verify\", {\n email: params.email,\n code: params.code,\n })) as {\n accessToken: string;\n refreshToken: string;\n expiresAt: number;\n };\n\n const creds: Credentials = {\n accessToken: tokens.accessToken,\n refreshToken: tokens.refreshToken,\n expiresAt: tokens.expiresAt * 1000,\n baseUrl,\n };\n\n saveCredentials(creds);\n return { email: params.email, message: \"Logged in successfully.\" };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../shared\";\n\nexport const logoutSchema = defineToolSchema({\n name: \"logout\",\n description: \"Log out and clear stored credentials.\",\n input: z.object({}),\n output: z.object({\n success: z.literal(true),\n message: z.string(),\n }),\n});\n","import { createTool } from \"../shared\";\nimport { clearCredentials } from \"../../auth\";\nimport { logoutSchema } from \"./schema\";\n\nexport const logout = createTool(logoutSchema, async () => {\n clearCredentials();\n return { success: true as const, message: \"Logged out.\" };\n});\n","import { createRequire } from \"module\";\nimport { createTool } from \"../shared\";\nimport { qrGenerateSchema } from \"./schema\";\n\nconst require = createRequire(import.meta.url);\nconst qrcode = require(\"qrcode-terminal\") as {\n generate: (text: string, opts: { small?: boolean }, cb: (code: string) => void) => void;\n};\n\nexport const qrGenerate = createTool(qrGenerateSchema, async (params) => {\n qrcode.generate(params.value, { small: true }, (code: string) => {\n process.stderr.write(`\\n${code}\\n`);\n });\n return { value: params.value };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../shared\";\n\nexport const qrGenerateSchema = defineToolSchema({\n name: \"qr_generate\",\n description:\n \"Display a QR code in the terminal. Pass any text — wallet address, URL, token address, etc.\",\n input: z.object({\n value: z.string().describe(\"Text to encode as a QR code\"),\n }),\n output: z.object({\n value: z.string(),\n }),\n});\n","import type { Tool } from \"./tools/shared\";\nimport { walletCreate } from \"./tools/wallet/create/tool\";\nimport { walletImport } from \"./tools/wallet/import/tool\";\nimport { walletList } from \"./tools/wallet/list/tool\";\nimport { walletRetrieve } from \"./tools/wallet/retrieve/tool\";\nimport { walletDelete } from \"./tools/wallet/delete/tool\";\nimport { walletRename } from \"./tools/wallet/rename/tool\";\nimport { walletExport } from \"./tools/wallet/export/tool\";\nimport { transactionSign } from \"./tools/transaction/sign/tool\";\nimport { messageSign } from \"./tools/message/sign/tool\";\nimport { bitcoinBalanceRetrieve } from \"./tools/bitcoin/balance/tool\";\nimport { skillList } from \"./tools/skill/list/tool\";\nimport { skillRetrieve } from \"./tools/skill/retrieve/tool\";\nimport { skillInstall } from \"./tools/skill/install/tool\";\nimport { tokenSwap } from \"./tools/token/swap/tool\";\nimport { tokenBridge } from \"./tools/token/bridge/tool\";\nimport { tokenTransfer } from \"./tools/token/transfer/tool\";\nimport { x402Request } from \"./tools/x402/request/tool\";\nimport { virtualAccountWalletRegister } from \"./tools/virtual-account/wallet/register/tool\";\nimport { consentAccept } from \"./tools/consent/accept/tool\";\nimport { consentCheck } from \"./tools/consent/check/tool\";\nimport { login } from \"./tools/login/tool\";\nimport { verify } from \"./tools/verify/tool\";\nimport { logout } from \"./tools/logout/tool\";\nimport { qrGenerate } from \"./tools/qr/tool\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const LOCAL_TOOLS: Tool<any>[] = [\n walletCreate,\n walletImport,\n walletList,\n walletRetrieve,\n walletDelete,\n walletRename,\n walletExport,\n transactionSign,\n messageSign,\n bitcoinBalanceRetrieve,\n skillList,\n skillRetrieve,\n skillInstall,\n tokenSwap,\n tokenBridge,\n tokenTransfer,\n x402Request,\n virtualAccountWalletRegister,\n consentAccept,\n consentCheck,\n login,\n verify,\n logout,\n qrGenerate,\n];\n\nexport { consentCheck };\n"],"mappings":"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","names":["fs","os","path","z","z","english","z","z","english","z","z","z","z","z","z","z","z","w","z","z","Keypair","privateKeyToAccount","z","z","Keypair","privateKeyToAccount","signed","ecc","createHash","Keypair","bs58","ecc","privateKeyToAccount","z","z","signSolana","signEvm","signBitcoin","Keypair","bs58","privateKeyToAccount","createHash","z","z","findWalletOrThrow","readFileSync","existsSync","mkdirSync","join","homedir","z","z","z","z","z","z","z","z","z","z","z","z","Keypair","VersionedTransaction","privateKeyToAccount","createPublicClient","http","viemChains","z","z","Keypair","VersionedTransaction","privateKeyToAccount","createPublicClient","http","z","z","fs","os","path","z","z","CONFIG_DIR","CONSENT_PATH","CURRENT_TOS_VERSION","z","z","z","z","z","z","z","z","require"]}
|