insumer_check_discount
Calculate discount tier and percentage for a wallet at a merchant by verifying on-chain token balances across EVM, Solana, and XRPL. Returns per-token discount without exposing exact balances.
Instructions
Calculate discount for a wallet at a merchant. Checks on-chain balances and returns tier and discount percentage per token — never raw balance amounts. Free — does not consume credits.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| merchant | Yes | Merchant ID | |
| wallet | No | EVM wallet address (0x...) | |
| solanaWallet | No | Solana wallet address (base58) | |
| xrplWallet | No | XRPL wallet address (r-address) |
Implementation Reference
- src/index.ts:418-441 (registration)Registration of the 'insumer_check_discount' MCP tool using server.tool() with name, description, Zod schema (merchant, wallet, solanaWallet, xrplWallet), and handler.
server.tool( "insumer_check_discount", "Calculate discount for a wallet at a merchant. Checks on-chain balances and returns tier and discount percentage per token — never raw balance amounts. Free — does not consume credits.", { merchant: z.string().describe("Merchant ID"), wallet: z.string().optional().describe("EVM wallet address (0x...)"), solanaWallet: z.string().optional().describe("Solana wallet address (base58)"), xrplWallet: z.string().optional().describe("XRPL wallet address (r-address)"), }, async (args) => { const params = new URLSearchParams(); params.set("merchant", args.merchant); if (args.wallet) params.set("wallet", args.wallet); if (args.solanaWallet) params.set("solanaWallet", args.solanaWallet); if (args.xrplWallet) params.set("xrplWallet", args.xrplWallet); const url = `${API_BASE}/discount/check?${params.toString()}`; const res = await fetch(url, { method: "GET", headers: { "Accept": "application/json" }, }); const result = await res.json() as { ok: boolean; data?: unknown; error?: unknown; meta?: unknown }; return formatResult(result); } ); - src/index.ts:427-440 (handler)Handler function that constructs a URL with query params (merchant, wallet, solanaWallet, xrplWallet) and calls the GET /discount/check API endpoint, returning the formatted result.
async (args) => { const params = new URLSearchParams(); params.set("merchant", args.merchant); if (args.wallet) params.set("wallet", args.wallet); if (args.solanaWallet) params.set("solanaWallet", args.solanaWallet); if (args.xrplWallet) params.set("xrplWallet", args.xrplWallet); const url = `${API_BASE}/discount/check?${params.toString()}`; const res = await fetch(url, { method: "GET", headers: { "Accept": "application/json" }, }); const result = await res.json() as { ok: boolean; data?: unknown; error?: unknown; meta?: unknown }; return formatResult(result); } - src/index.ts:421-426 (schema)Input schema using Zod: merchant (required string), wallet (optional EVM address), solanaWallet (optional Solana address), xrplWallet (optional XRPL address).
{ merchant: z.string().describe("Merchant ID"), wallet: z.string().optional().describe("EVM wallet address (0x...)"), solanaWallet: z.string().optional().describe("Solana wallet address (base58)"), xrplWallet: z.string().optional().describe("XRPL wallet address (r-address)"), },