Share Logs
API Name: synthos
Model: claude-3-7-sonnet-202502192025-08-30 09:39:26
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with keys: summary, tools. Write a concise summary (1-2 sentences) describing what the contract does overall and how its read functions are useful for apps. If docs are provided, use them. You are given readFunctions (name and inputs). For every entry in readFunctions, output one tool with: - name: EXACTLY the same as the function name provided (do not rename). - description: a concise, helpful, non-empty sentence describing what the function returns/does, leveraging docs when available. - inputSchema: JSON Schema object with type=\"object\", properties keyed by the EXACT input names provided, each with type and a non-empty human-readable description of the purpose of that parameter (not just Solidity type). Also include a short summary: 1-2 sentences describing what this contract enables at a high level, how the read tools can be used, and any safety notes.\n Never omit tools or descriptions. Never leave any description empty. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"readFunctions\":[{\"name\":\"ADDRESSES_PROVIDER\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"inputs\":[]},{\"name\":\"MAX_NUMBER_RESERVES\",\"inputs\":[]},{\"name\":\"POOL_REVISION\",\"inputs\":[]},{\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"inputs\":[]},{\"name\":\"UMBRELLA\",\"inputs\":[]},{\"name\":\"getBorrowLogic\",\"inputs\":[]},{\"name\":\"getConfiguration\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getEModeCategoryBorrowableBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralConfig\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryData\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryLabel\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeLogic\",\"inputs\":[]},{\"name\":\"getFlashLoanLogic\",\"inputs\":[]},{\"name\":\"getLiquidationGracePeriod\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getLiquidationLogic\",\"inputs\":[]},{\"name\":\"getPoolLogic\",\"inputs\":[]},{\"name\":\"getReserveAToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveAddressById\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint16\"}]},{\"name\":\"getReserveData\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveDeficit\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedIncome\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedVariableDebt\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveVariableDebtToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReservesCount\",\"inputs\":[]},{\"name\":\"getReservesList\",\"inputs\":[]},{\"name\":\"getSupplyLogic\",\"inputs\":[]},{\"name\":\"getUserAccountData\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserConfiguration\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserEMode\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getVirtualUnderlyingBalance\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"isApprovedPositionManager\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"},{\"name\":\"positionManager\",\"type\":\"address\"}]}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\"}" } ]
Response:
{
"summary": "This contract is a lending pool that allows users to supply assets as collateral and borrow other assets, with functions to query reserve data, user positions, and E-Mode categories for efficient risk management.",
"tools": [
{
"name": "ADDRESSES_PROVIDER",
"description": "Returns the address of the PoolAddressesProvider contract that this pool is connected to.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TOTAL",
"description": "Returns the total flash loan premium percentage charged on flash loans.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TO_PROTOCOL",
"description": "Returns the portion of the flash loan premium that goes to the protocol treasury.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "MAX_NUMBER_RESERVES",
"description": "Returns the maximum number of reserve assets that can be supported by this pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "POOL_REVISION",
"description": "Returns the revision number of the pool contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "RESERVE_INTEREST_RATE_STRATEGY",
"description": "Returns the address of the interest rate strategy contract used by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "UMBRELLA",
"description": "Returns the umbrella identifier bytes32 value for the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getBorrowLogic",
"description": "Returns the address of the borrow logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getConfiguration",
"description": "Returns the configuration parameters of a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get configuration for"
}
}
}
},
{
"name": "getEModeCategoryBorrowableBitmap",
"description": "Returns the bitmap of borrowable assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralBitmap",
"description": "Returns the bitmap of collateral assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralConfig",
"description": "Returns the collateral configuration for a specific E-Mode category including LTV, liquidation threshold, and liquidation bonus.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryData",
"description": "Returns the complete data for a specific E-Mode category including LTV, liquidation parameters, price source, and label.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryLabel",
"description": "Returns the human-readable label for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeLogic",
"description": "Returns the address of the E-Mode logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getFlashLoanLogic",
"description": "Returns the address of the flash loan logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getLiquidationGracePeriod",
"description": "Returns the liquidation grace period for a specific asset, during which liquidations are not allowed.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to query the grace period for"
}
}
}
},
{
"name": "getLiquidationLogic",
"description": "Returns the address of the liquidation logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getPoolLogic",
"description": "Returns the address of the main pool logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReserveAToken",
"description": "Returns the address of the aToken contract for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the underlying reserve asset"
}
}
}
},
{
"name": "getReserveAddressById",
"description": "Returns the address of a reserve asset by its ID in the reserves list.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the reserve in the reserves list"
}
}
}
},
{
"name": "getReserveData",
"description": "Returns the complete data for a specific reserve asset including configuration, rates, and token addresses.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query data for"
}
}
}
},
{
"name": "getReserveDeficit",
"description": "Returns the current deficit amount for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the deficit for"
}
}
}
},
{
"name": "getReserveNormalizedIncome",
"description": "Returns the normalized income of a reserve, which represents how much the liquidity index has increased since inception.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query"
}
}
}
},
{
"name": "getReserveNormalizedVariableDebt",
"description": "Returns the normalized variable debt of a reserve, which represents how much the variable debt index has increased since inception.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query"
}
}
}
},
{
"name": "getReserveVariableDebtToken",
"description": "Returns the address of the variable debt token for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the underlying reserve asset"
}
}
}
},
{
"name": "getReservesCount",
"description": "Returns the total number of reserves currently active in the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReservesList",
"description": "Returns an array containing the addresses of all reserve assets in the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getSupplyLogic",
"description": "Returns the address of the supply logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getUserAccountData",
"description": "Returns the aggregated data of a user's account including total collateral, debt, borrowing power, and health factor.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query account data for"
}
}
}
},
{
"name": "getUserConfiguration",
"description": "Returns the configuration of a user's positions, showing which reserves they are using as collateral or for borrowing.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query configuration for"
}
}
}
},
{
"name": "getUserEMode",
"description": "Returns the E-Mode category ID that a user is currently using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query E-Mode for"
}
}
}
},
{
"name": "getVirtualUnderlyingBalance",
"description": "Returns the virtual balance of the underlying asset in the reserve, which may differ from the actual balance.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the virtual balance for"
}
}
}
},
{
"name": "isApprovedPositionManager",
"description": "Checks if a position manager is approved to manage positions on behalf of a specific user.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user who may have approved the position manager"
},
"positionManager": {
"type": "string",
"description": "The address of the position manager to check approval for"
}
}
}
}
]
}
Model: claude-3-7-sonnet-202502192025-08-29 19:19:15
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with keys: summary, tools. Write a concise summary (1-2 sentences) describing what the contract does overall and how its read functions are useful for apps. If docs are provided, use them. You are given readFunctions (name and inputs). For every entry in readFunctions, output one tool with: - name: EXACTLY the same as the function name provided (do not rename). - description: a concise, helpful, non-empty sentence describing what the function returns/does, leveraging docs when available. - inputSchema: JSON Schema object with type=\"object\", properties keyed by the EXACT input names provided, each with type and a non-empty human-readable description of the purpose of that parameter (not just Solidity type). Also include a short summary: 1-2 sentences describing what this contract enables at a high level, how the read tools can be used, and any safety notes.\n Never omit tools or descriptions. Never leave any description empty. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"readFunctions\":[{\"name\":\"ADDRESSES_PROVIDER\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"inputs\":[]},{\"name\":\"MAX_NUMBER_RESERVES\",\"inputs\":[]},{\"name\":\"POOL_REVISION\",\"inputs\":[]},{\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"inputs\":[]},{\"name\":\"UMBRELLA\",\"inputs\":[]},{\"name\":\"getBorrowLogic\",\"inputs\":[]},{\"name\":\"getConfiguration\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getEModeCategoryBorrowableBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralConfig\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryData\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryLabel\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeLogic\",\"inputs\":[]},{\"name\":\"getFlashLoanLogic\",\"inputs\":[]},{\"name\":\"getLiquidationGracePeriod\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getLiquidationLogic\",\"inputs\":[]},{\"name\":\"getPoolLogic\",\"inputs\":[]},{\"name\":\"getReserveAToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveAddressById\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint16\"}]},{\"name\":\"getReserveData\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveDeficit\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedIncome\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedVariableDebt\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveVariableDebtToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReservesCount\",\"inputs\":[]},{\"name\":\"getReservesList\",\"inputs\":[]},{\"name\":\"getSupplyLogic\",\"inputs\":[]},{\"name\":\"getUserAccountData\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserConfiguration\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserEMode\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getVirtualUnderlyingBalance\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"isApprovedPositionManager\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"},{\"name\":\"positionManager\",\"type\":\"address\"}]}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\"}" } ]
Response:
{
"summary": "This contract is a lending pool that allows users to supply assets as collateral and borrow other assets, with functions to query reserve data, user positions, and E-Mode categories for efficient risk management.",
"tools": [
{
"name": "ADDRESSES_PROVIDER",
"description": "Returns the address of the Pool Addresses Provider contract that this pool is connected to.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TOTAL",
"description": "Returns the total flash loan premium percentage charged on flash loans.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TO_PROTOCOL",
"description": "Returns the portion of the flash loan premium that goes to the protocol treasury.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "MAX_NUMBER_RESERVES",
"description": "Returns the maximum number of reserve assets that can be supported by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "POOL_REVISION",
"description": "Returns the current revision version of the pool contract.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "RESERVE_INTEREST_RATE_STRATEGY",
"description": "Returns the address of the interest rate strategy contract used by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "UMBRELLA",
"description": "Returns the umbrella identifier bytes32 value used by the protocol.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getBorrowLogic",
"description": "Returns the address of the borrow logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getConfiguration",
"description": "Returns the configuration parameters of a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get configuration for"
}
}
}
},
{
"name": "getEModeCategoryBorrowableBitmap",
"description": "Returns the bitmap of borrowable assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralBitmap",
"description": "Returns the bitmap of collateral assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralConfig",
"description": "Returns the collateral configuration parameters for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryData",
"description": "Returns the complete data for a specific E-Mode category including LTV, liquidation threshold, and bonus.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryLabel",
"description": "Returns the human-readable label for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeLogic",
"description": "Returns the address of the E-Mode logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getFlashLoanLogic",
"description": "Returns the address of the flash loan logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getLiquidationGracePeriod",
"description": "Returns the liquidation grace period for a specific asset, during which liquidations are not allowed.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to query the grace period for"
}
}
}
},
{
"name": "getLiquidationLogic",
"description": "Returns the address of the liquidation logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getPoolLogic",
"description": "Returns the address of the main pool logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReserveAToken",
"description": "Returns the address of the aToken contract for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the aToken for"
}
}
}
},
{
"name": "getReserveAddressById",
"description": "Returns the address of a reserve asset by its ID in the reserves list.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the reserve in the reserves list"
}
}
}
},
{
"name": "getReserveData",
"description": "Returns the complete data for a specific reserve asset including rates, indexes, and token addresses.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get data for"
}
}
}
},
{
"name": "getReserveDeficit",
"description": "Returns the current deficit amount for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the deficit for"
}
}
}
},
{
"name": "getReserveNormalizedIncome",
"description": "Returns the normalized income of a reserve, which represents how much the liquidity index has increased over time.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the normalized income for"
}
}
}
},
{
"name": "getReserveNormalizedVariableDebt",
"description": "Returns the normalized variable debt of a reserve, which represents how much the variable debt index has increased over time.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the normalized variable debt for"
}
}
}
},
{
"name": "getReserveVariableDebtToken",
"description": "Returns the address of the variable debt token contract for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the variable debt token for"
}
}
}
},
{
"name": "getReservesCount",
"description": "Returns the total number of reserve assets currently supported by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReservesList",
"description": "Returns an array containing the addresses of all reserve assets in the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getSupplyLogic",
"description": "Returns the address of the supply logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getUserAccountData",
"description": "Returns the aggregated data of a user's account including total collateral, debt, available borrows, and health factor.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get account data for"
}
}
}
},
{
"name": "getUserConfiguration",
"description": "Returns the configuration of a user's positions across all reserves.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get configuration for"
}
}
}
},
{
"name": "getUserEMode",
"description": "Returns the E-Mode category ID that a user is currently using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get the E-Mode category for"
}
}
}
},
{
"name": "getVirtualUnderlyingBalance",
"description": "Returns the virtual underlying balance of a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the virtual underlying balance for"
}
}
}
},
{
"name": "isApprovedPositionManager",
"description": "Checks if a position manager is approved to manage positions on behalf of a specific user.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user who may have approved the position manager"
},
"positionManager": {
"type": "string",
"description": "The address of the position manager to check approval for"
}
}
}
}
]
}
Model: claude-3-7-sonnet-202502192025-08-29 19:00:17
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with keys: summary, tools. Write a concise summary (1-2 sentences) describing what the contract does overall and how its read functions are useful for apps. If docs are provided, use them. You are given readFunctions (name and inputs). For every entry in readFunctions, output one tool with: - name: EXACTLY the same as the function name provided (do not rename). - description: a concise, helpful, non-empty sentence describing what the function returns/does, leveraging docs when available. - inputSchema: JSON Schema object with type=\"object\", properties keyed by the EXACT input names provided, each with type and a non-empty human-readable description of the purpose of that parameter (not just Solidity type). Also include a short summary: 1-2 sentences describing what this contract enables at a high level, how the read tools can be used, and any safety notes.\n Never omit tools or descriptions. Never leave any description empty. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"readFunctions\":[{\"name\":\"ADDRESSES_PROVIDER\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"inputs\":[]},{\"name\":\"MAX_NUMBER_RESERVES\",\"inputs\":[]},{\"name\":\"POOL_REVISION\",\"inputs\":[]},{\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"inputs\":[]},{\"name\":\"UMBRELLA\",\"inputs\":[]},{\"name\":\"getBorrowLogic\",\"inputs\":[]},{\"name\":\"getConfiguration\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getEModeCategoryBorrowableBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralConfig\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryData\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryLabel\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeLogic\",\"inputs\":[]},{\"name\":\"getFlashLoanLogic\",\"inputs\":[]},{\"name\":\"getLiquidationGracePeriod\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getLiquidationLogic\",\"inputs\":[]},{\"name\":\"getPoolLogic\",\"inputs\":[]},{\"name\":\"getReserveAToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveAddressById\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint16\"}]},{\"name\":\"getReserveData\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveDeficit\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedIncome\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedVariableDebt\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveVariableDebtToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReservesCount\",\"inputs\":[]},{\"name\":\"getReservesList\",\"inputs\":[]},{\"name\":\"getSupplyLogic\",\"inputs\":[]},{\"name\":\"getUserAccountData\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserConfiguration\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserEMode\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getVirtualUnderlyingBalance\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"isApprovedPositionManager\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"},{\"name\":\"positionManager\",\"type\":\"address\"}]}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\"}" } ]
Response:
{
"summary": "This contract is a lending pool that allows users to supply assets as collateral and borrow other assets, with functions to query reserve data, user positions, and E-Mode categories for risk management.",
"tools": [
{
"name": "ADDRESSES_PROVIDER",
"description": "Returns the address of the Pool Addresses Provider contract that manages the registry of protocol-related addresses.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TOTAL",
"description": "Returns the total flash loan premium percentage charged on flash loans.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TO_PROTOCOL",
"description": "Returns the portion of the flash loan premium that goes to the protocol treasury.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "MAX_NUMBER_RESERVES",
"description": "Returns the maximum number of reserve assets that can be supported by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "POOL_REVISION",
"description": "Returns the current revision version of the pool contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "RESERVE_INTEREST_RATE_STRATEGY",
"description": "Returns the address of the interest rate strategy contract used by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "UMBRELLA",
"description": "Returns the bytes32 identifier for the Umbrella protocol.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getBorrowLogic",
"description": "Returns the address of the contract that implements the borrow logic for the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getConfiguration",
"description": "Returns the configuration parameters of a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get configuration for"
}
}
}
},
{
"name": "getEModeCategoryBorrowableBitmap",
"description": "Returns the bitmap of borrowable assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralBitmap",
"description": "Returns the bitmap of collateral assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralConfig",
"description": "Returns the collateral configuration (LTV, liquidation threshold, liquidation bonus) for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryData",
"description": "Returns the complete data for a specific E-Mode category including LTV, liquidation parameters, price source, and label.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryLabel",
"description": "Returns the human-readable label for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeLogic",
"description": "Returns the address of the contract that implements the E-Mode logic for the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getFlashLoanLogic",
"description": "Returns the address of the contract that implements the flash loan logic for the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getLiquidationGracePeriod",
"description": "Returns the liquidation grace period for a specific asset, during which liquidations are not allowed.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to query the liquidation grace period for"
}
}
}
},
{
"name": "getLiquidationLogic",
"description": "Returns the address of the contract that implements the liquidation logic for the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getPoolLogic",
"description": "Returns the address of the contract that implements the core pool logic.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReserveAToken",
"description": "Returns the address of the aToken contract for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the aToken for"
}
}
}
},
{
"name": "getReserveAddressById",
"description": "Returns the address of a reserve asset by its ID in the reserves list.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the reserve in the reserves list"
}
}
}
},
{
"name": "getReserveData",
"description": "Returns the complete data for a specific reserve asset including configuration, rates, and token addresses.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get data for"
}
}
}
},
{
"name": "getReserveDeficit",
"description": "Returns the current deficit amount for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the deficit for"
}
}
}
},
{
"name": "getReserveNormalizedIncome",
"description": "Returns the normalized income of a reserve, which represents how much the liquidity index has increased since inception.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get normalized income for"
}
}
}
},
{
"name": "getReserveNormalizedVariableDebt",
"description": "Returns the normalized variable debt of a reserve, which represents how much the variable debt index has increased since inception.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get normalized variable debt for"
}
}
}
},
{
"name": "getReserveVariableDebtToken",
"description": "Returns the address of the variable debt token contract for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the variable debt token for"
}
}
}
},
{
"name": "getReservesCount",
"description": "Returns the total number of reserve assets currently supported by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReservesList",
"description": "Returns an array containing the addresses of all reserve assets supported by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getSupplyLogic",
"description": "Returns the address of the contract that implements the supply logic for the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getUserAccountData",
"description": "Returns the aggregated data of a user's account including total collateral, debt, available borrows, and health factor.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get account data for"
}
}
}
},
{
"name": "getUserConfiguration",
"description": "Returns the configuration of a user's positions, indicating which reserves they are using as collateral or for borrowing.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get configuration for"
}
}
}
},
{
"name": "getUserEMode",
"description": "Returns the E-Mode category ID that a user is currently using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get E-Mode category for"
}
}
}
},
{
"name": "getVirtualUnderlyingBalance",
"description": "Returns the virtual balance of the underlying asset in the reserve, which may differ from the actual balance.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to get the virtual underlying balance for"
}
}
}
},
{
"name": "isApprovedPositionManager",
"description": "Checks if a position manager is approved to manage positions on behalf of a specific user.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user who may have approved the position manager"
},
"positionManager": {
"type": "string",
"description": "The address of the position manager to check approval for"
}
}
}
}
]
}
Model: claude-3-7-sonnet-202502192025-08-29 18:10:32
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with keys: summary, tools. Write a concise summary (1-2 sentences) describing what the contract does overall and how its read functions are useful for apps. If docs are provided, use them. You are given readFunctions (name and inputs). For every entry in readFunctions, output one tool with: - name: EXACTLY the same as the function name provided (do not rename). - description: a concise, helpful, non-empty sentence describing what the function returns/does, leveraging docs when available. - inputSchema: JSON Schema object with type=\"object\", properties keyed by the EXACT input names provided, each with type and a non-empty human-readable description of the purpose of that parameter (not just Solidity type). Also include a short summary: 1-2 sentences describing what this contract enables at a high level, how the read tools can be used, and any safety notes.\n Never omit tools or descriptions. Never leave any description empty. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"readFunctions\":[{\"name\":\"ADDRESSES_PROVIDER\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"inputs\":[]},{\"name\":\"MAX_NUMBER_RESERVES\",\"inputs\":[]},{\"name\":\"POOL_REVISION\",\"inputs\":[]},{\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"inputs\":[]},{\"name\":\"UMBRELLA\",\"inputs\":[]},{\"name\":\"getBorrowLogic\",\"inputs\":[]},{\"name\":\"getConfiguration\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getEModeCategoryBorrowableBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralConfig\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryData\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryLabel\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeLogic\",\"inputs\":[]},{\"name\":\"getFlashLoanLogic\",\"inputs\":[]},{\"name\":\"getLiquidationGracePeriod\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getLiquidationLogic\",\"inputs\":[]},{\"name\":\"getPoolLogic\",\"inputs\":[]},{\"name\":\"getReserveAToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveAddressById\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint16\"}]},{\"name\":\"getReserveData\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveDeficit\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedIncome\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedVariableDebt\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveVariableDebtToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReservesCount\",\"inputs\":[]},{\"name\":\"getReservesList\",\"inputs\":[]},{\"name\":\"getSupplyLogic\",\"inputs\":[]},{\"name\":\"getUserAccountData\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserConfiguration\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserEMode\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getVirtualUnderlyingBalance\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"isApprovedPositionManager\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"},{\"name\":\"positionManager\",\"type\":\"address\"}]}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\"}" } ]
Response:
{
"summary": "This contract is a lending pool that allows users to supply assets as collateral and borrow other assets, with functions to query reserve data, user positions, and E-Mode categories for efficient risk management.",
"tools": [
{
"name": "ADDRESSES_PROVIDER",
"description": "Returns the address of the Pool Addresses Provider contract that this pool is connected to.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TOTAL",
"description": "Returns the total flash loan premium percentage charged on flash loans.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TO_PROTOCOL",
"description": "Returns the portion of the flash loan premium that goes to the protocol treasury.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "MAX_NUMBER_RESERVES",
"description": "Returns the maximum number of reserve assets that can be supported by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "POOL_REVISION",
"description": "Returns the current revision version of the pool contract.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "RESERVE_INTEREST_RATE_STRATEGY",
"description": "Returns the address of the interest rate strategy contract used by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "UMBRELLA",
"description": "Returns the umbrella identifier bytes32 value used by the protocol.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getBorrowLogic",
"description": "Returns the address of the borrow logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getConfiguration",
"description": "Returns the configuration parameters of a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get configuration for"
}
}
}
},
{
"name": "getEModeCategoryBorrowableBitmap",
"description": "Returns the bitmap of borrowable assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralBitmap",
"description": "Returns the bitmap of collateral assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralConfig",
"description": "Returns the collateral configuration parameters for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryData",
"description": "Returns the complete data for a specific E-Mode category including LTV, liquidation threshold, and bonus.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryLabel",
"description": "Returns the human-readable label for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeLogic",
"description": "Returns the address of the E-Mode logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getFlashLoanLogic",
"description": "Returns the address of the flash loan logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getLiquidationGracePeriod",
"description": "Returns the liquidation grace period for a specific asset, during which liquidations are not allowed.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to query the grace period for"
}
}
}
},
{
"name": "getLiquidationLogic",
"description": "Returns the address of the liquidation logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getPoolLogic",
"description": "Returns the address of the main pool logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReserveAToken",
"description": "Returns the address of the aToken contract for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the aToken for"
}
}
}
},
{
"name": "getReserveAddressById",
"description": "Returns the address of a reserve asset by its ID in the reserves list.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the reserve in the reserves list"
}
}
}
},
{
"name": "getReserveData",
"description": "Returns the complete data for a specific reserve asset including rates, indexes, and token addresses.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get data for"
}
}
}
},
{
"name": "getReserveDeficit",
"description": "Returns the current deficit amount for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the deficit for"
}
}
}
},
{
"name": "getReserveNormalizedIncome",
"description": "Returns the normalized income of a reserve, representing the current liquidity index.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the normalized income for"
}
}
}
},
{
"name": "getReserveNormalizedVariableDebt",
"description": "Returns the normalized variable debt of a reserve, representing the current variable debt index.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the normalized variable debt for"
}
}
}
},
{
"name": "getReserveVariableDebtToken",
"description": "Returns the address of the variable debt token for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the variable debt token for"
}
}
}
},
{
"name": "getReservesCount",
"description": "Returns the total number of reserves currently active in the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReservesList",
"description": "Returns an array of addresses for all reserve assets currently active in the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getSupplyLogic",
"description": "Returns the address of the supply logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getUserAccountData",
"description": "Returns the user's aggregated position data including total collateral, debt, available borrows, and health factor.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get account data for"
}
}
}
},
{
"name": "getUserConfiguration",
"description": "Returns the configuration of a user's positions across all reserves.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get configuration for"
}
}
}
},
{
"name": "getUserEMode",
"description": "Returns the E-Mode category ID that the user is currently using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get E-Mode category for"
}
}
}
},
{
"name": "getVirtualUnderlyingBalance",
"description": "Returns the virtual underlying balance of a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the virtual underlying balance for"
}
}
}
},
{
"name": "isApprovedPositionManager",
"description": "Checks if a position manager is approved to manage positions on behalf of a specific user.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user who may have approved the position manager"
},
"positionManager": {
"type": "string",
"description": "The address of the position manager to check approval for"
}
}
}
}
]
}
Model: claude-3-7-sonnet-202502192025-08-29 18:07:47
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with keys: summary, tools. Write a concise summary (1-2 sentences) describing what the contract does overall and how its read functions are useful for apps. If docs are provided, use them. You are given readFunctions (name and inputs). For every entry in readFunctions, output one tool with: - name: EXACTLY the same as the function name provided (do not rename). - description: a concise, helpful, non-empty sentence describing what the function returns/does, leveraging docs when available. - inputSchema: JSON Schema object with type=\"object\", properties keyed by the EXACT input names provided, each with type and a non-empty human-readable description of the purpose of that parameter (not just Solidity type). Also include a short summary: 1-2 sentences describing what this contract enables at a high level, how the read tools can be used, and any safety notes.\n Never omit tools or descriptions. Never leave any description empty. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"readFunctions\":[{\"name\":\"ADDRESSES_PROVIDER\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"inputs\":[]},{\"name\":\"MAX_NUMBER_RESERVES\",\"inputs\":[]},{\"name\":\"POOL_REVISION\",\"inputs\":[]},{\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"inputs\":[]},{\"name\":\"UMBRELLA\",\"inputs\":[]},{\"name\":\"getBorrowLogic\",\"inputs\":[]},{\"name\":\"getConfiguration\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getEModeCategoryBorrowableBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralConfig\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryData\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryLabel\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeLogic\",\"inputs\":[]},{\"name\":\"getFlashLoanLogic\",\"inputs\":[]},{\"name\":\"getLiquidationGracePeriod\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getLiquidationLogic\",\"inputs\":[]},{\"name\":\"getPoolLogic\",\"inputs\":[]},{\"name\":\"getReserveAToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveAddressById\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint16\"}]},{\"name\":\"getReserveData\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveDeficit\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedIncome\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedVariableDebt\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveVariableDebtToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReservesCount\",\"inputs\":[]},{\"name\":\"getReservesList\",\"inputs\":[]},{\"name\":\"getSupplyLogic\",\"inputs\":[]},{\"name\":\"getUserAccountData\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserConfiguration\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserEMode\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getVirtualUnderlyingBalance\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"isApprovedPositionManager\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"},{\"name\":\"positionManager\",\"type\":\"address\"}]}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\"}" } ]
Response:
{
"summary": "This contract is a lending pool that allows users to supply assets as collateral and borrow other assets, with functions to query reserve data, user positions, and E-Mode categories for efficient risk management.",
"tools": [
{
"name": "ADDRESSES_PROVIDER",
"description": "Returns the address of the Pool Addresses Provider contract that this pool is connected to.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TOTAL",
"description": "Returns the total flash loan premium percentage charged on flash loans.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TO_PROTOCOL",
"description": "Returns the portion of the flash loan premium that goes to the protocol treasury.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "MAX_NUMBER_RESERVES",
"description": "Returns the maximum number of reserve assets that can be supported by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "POOL_REVISION",
"description": "Returns the current revision version of the pool contract.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "RESERVE_INTEREST_RATE_STRATEGY",
"description": "Returns the address of the interest rate strategy contract used by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "UMBRELLA",
"description": "Returns the umbrella identifier bytes32 value used by the protocol.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getBorrowLogic",
"description": "Returns the address of the borrow logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getConfiguration",
"description": "Returns the configuration parameters of a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get configuration for"
}
}
}
},
{
"name": "getEModeCategoryBorrowableBitmap",
"description": "Returns the bitmap of borrowable assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralBitmap",
"description": "Returns the bitmap of collateral assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralConfig",
"description": "Returns the collateral configuration parameters for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryData",
"description": "Returns the complete data for a specific E-Mode category including LTV, liquidation threshold, and bonus.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryLabel",
"description": "Returns the human-readable label for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeLogic",
"description": "Returns the address of the E-Mode logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getFlashLoanLogic",
"description": "Returns the address of the flash loan logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getLiquidationGracePeriod",
"description": "Returns the liquidation grace period for a specific asset, during which liquidations are not allowed.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to query the grace period for"
}
}
}
},
{
"name": "getLiquidationLogic",
"description": "Returns the address of the liquidation logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getPoolLogic",
"description": "Returns the address of the main pool logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReserveAToken",
"description": "Returns the address of the aToken contract for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the aToken for"
}
}
}
},
{
"name": "getReserveAddressById",
"description": "Returns the address of a reserve asset by its ID in the reserves list.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the reserve in the reserves list"
}
}
}
},
{
"name": "getReserveData",
"description": "Returns the complete data for a specific reserve asset including rates, indexes, and token addresses.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get data for"
}
}
}
},
{
"name": "getReserveDeficit",
"description": "Returns the current deficit amount for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the deficit for"
}
}
}
},
{
"name": "getReserveNormalizedIncome",
"description": "Returns the normalized income of a reserve, representing the current liquidity index.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the normalized income for"
}
}
}
},
{
"name": "getReserveNormalizedVariableDebt",
"description": "Returns the normalized variable debt of a reserve, representing the current variable debt index.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the normalized variable debt for"
}
}
}
},
{
"name": "getReserveVariableDebtToken",
"description": "Returns the address of the variable debt token for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the variable debt token for"
}
}
}
},
{
"name": "getReservesCount",
"description": "Returns the total number of reserves currently active in the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReservesList",
"description": "Returns an array of addresses for all reserve assets currently active in the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getSupplyLogic",
"description": "Returns the address of the supply logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getUserAccountData",
"description": "Returns the user's aggregated position data including total collateral, debt, and health factor.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get account data for"
}
}
}
},
{
"name": "getUserConfiguration",
"description": "Returns the configuration of a user's positions across all reserves.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get configuration for"
}
}
}
},
{
"name": "getUserEMode",
"description": "Returns the E-Mode category ID that the user is currently using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get E-Mode category for"
}
}
}
},
{
"name": "getVirtualUnderlyingBalance",
"description": "Returns the virtual balance of the underlying asset in the reserve.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to get the virtual underlying balance for"
}
}
}
},
{
"name": "isApprovedPositionManager",
"description": "Checks if a position manager is approved to manage positions on behalf of a user.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user who may have approved the position manager"
},
"positionManager": {
"type": "string",
"description": "The address of the position manager to check approval for"
}
}
}
}
]
}
Model: claude-3-7-sonnet-202502192025-08-29 17:40:03
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with keys: summary, tools. Write a concise summary (1-2 sentences) describing what the contract does overall and how its read functions are useful for apps. If docs are provided, use them. You are given readFunctions (name and inputs). For every entry in readFunctions, output one tool with: - name: EXACTLY the same as the function name provided (do not rename). - description: a concise, helpful, non-empty sentence describing what the function returns/does, leveraging docs when available. - inputSchema: JSON Schema object with type=\"object\", properties keyed by the EXACT input names provided, each with type and a non-empty human-readable description of the purpose of that parameter (not just Solidity type). Also include a short summary: 1-2 sentences describing what this contract enables at a high level, how the read tools can be used, and any safety notes.\n Never omit tools or descriptions. Never leave any description empty. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"readFunctions\":[{\"name\":\"ADDRESSES_PROVIDER\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"inputs\":[]},{\"name\":\"MAX_NUMBER_RESERVES\",\"inputs\":[]},{\"name\":\"POOL_REVISION\",\"inputs\":[]},{\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"inputs\":[]},{\"name\":\"UMBRELLA\",\"inputs\":[]},{\"name\":\"getBorrowLogic\",\"inputs\":[]},{\"name\":\"getConfiguration\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getEModeCategoryBorrowableBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralConfig\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryData\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryLabel\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeLogic\",\"inputs\":[]},{\"name\":\"getFlashLoanLogic\",\"inputs\":[]},{\"name\":\"getLiquidationGracePeriod\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getLiquidationLogic\",\"inputs\":[]},{\"name\":\"getPoolLogic\",\"inputs\":[]},{\"name\":\"getReserveAToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveAddressById\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint16\"}]},{\"name\":\"getReserveData\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveDeficit\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedIncome\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedVariableDebt\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveVariableDebtToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReservesCount\",\"inputs\":[]},{\"name\":\"getReservesList\",\"inputs\":[]},{\"name\":\"getSupplyLogic\",\"inputs\":[]},{\"name\":\"getUserAccountData\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserConfiguration\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserEMode\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getVirtualUnderlyingBalance\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"isApprovedPositionManager\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"},{\"name\":\"positionManager\",\"type\":\"address\"}]}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\"}" } ]
Response:
{
"summary": "This contract is a lending pool that allows users to supply assets as collateral and borrow other assets, with functions to query reserve data, user positions, and E-Mode categories for efficient risk management.",
"tools": [
{
"name": "ADDRESSES_PROVIDER",
"description": "Returns the address of the Pool Addresses Provider contract that this pool is connected to.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TOTAL",
"description": "Returns the total flash loan premium percentage charged on flash loans.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TO_PROTOCOL",
"description": "Returns the portion of the flash loan premium that goes to the protocol.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "MAX_NUMBER_RESERVES",
"description": "Returns the maximum number of reserves that can be supported by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "POOL_REVISION",
"description": "Returns the revision number of the pool implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "RESERVE_INTEREST_RATE_STRATEGY",
"description": "Returns the address of the interest rate strategy contract used by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "UMBRELLA",
"description": "Returns the umbrella identifier bytes32 value for the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getBorrowLogic",
"description": "Returns the address of the borrow logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getConfiguration",
"description": "Returns the configuration parameters of a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get configuration for"
}
}
}
},
{
"name": "getEModeCategoryBorrowableBitmap",
"description": "Returns the bitmap of borrowable assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralBitmap",
"description": "Returns the bitmap of collateral assets for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralConfig",
"description": "Returns the collateral configuration for a specific E-Mode category including LTV, liquidation threshold, and liquidation bonus.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryData",
"description": "Returns the complete data for a specific E-Mode category including LTV, liquidation parameters, price source, and label.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeCategoryLabel",
"description": "Returns the human-readable label for a specific E-Mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
}
}
},
{
"name": "getEModeLogic",
"description": "Returns the address of the E-Mode logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getFlashLoanLogic",
"description": "Returns the address of the flash loan logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getLiquidationGracePeriod",
"description": "Returns the liquidation grace period for a specific asset, during which liquidations are not allowed.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to query the grace period for"
}
}
}
},
{
"name": "getLiquidationLogic",
"description": "Returns the address of the liquidation logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getPoolLogic",
"description": "Returns the address of the main pool logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReserveAToken",
"description": "Returns the address of the aToken contract for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the aToken for"
}
}
}
},
{
"name": "getReserveAddressById",
"description": "Returns the reserve asset address for a given reserve ID.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the reserve to get the address for"
}
}
}
},
{
"name": "getReserveData",
"description": "Returns comprehensive data about a specific reserve including configuration, rates, indexes, and token addresses.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get data for"
}
}
}
},
{
"name": "getReserveDeficit",
"description": "Returns the current deficit amount for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the deficit for"
}
}
}
},
{
"name": "getReserveNormalizedIncome",
"description": "Returns the normalized income of a reserve, which represents how much the liquidity index has increased over time.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the normalized income for"
}
}
}
},
{
"name": "getReserveNormalizedVariableDebt",
"description": "Returns the normalized variable debt of a reserve, which represents how much the variable debt index has increased over time.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the normalized variable debt for"
}
}
}
},
{
"name": "getReserveVariableDebtToken",
"description": "Returns the address of the variable debt token contract for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the variable debt token for"
}
}
}
},
{
"name": "getReservesCount",
"description": "Returns the total number of reserves currently active in the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReservesList",
"description": "Returns an array of all reserve asset addresses currently active in the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getSupplyLogic",
"description": "Returns the address of the supply logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getUserAccountData",
"description": "Returns aggregated data about a user's account including total collateral, debt, available borrows, and health factor.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get account data for"
}
}
}
},
{
"name": "getUserConfiguration",
"description": "Returns the configuration of a user's positions, showing which reserves they are using as collateral or for borrowing.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get configuration for"
}
}
}
},
{
"name": "getUserEMode",
"description": "Returns the E-Mode category ID that a user is currently using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get E-Mode category for"
}
}
}
},
{
"name": "getVirtualUnderlyingBalance",
"description": "Returns the virtual underlying balance of a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get the virtual underlying balance for"
}
}
}
},
{
"name": "isApprovedPositionManager",
"description": "Checks if a position manager is approved to manage positions on behalf of a specific user.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user who may have approved the position manager"
},
"positionManager": {
"type": "string",
"description": "The address of the position manager to check approval for"
}
}
}
}
]
}
Model: claude-3-7-sonnet-202502192025-08-29 16:19:50
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. You are given readFunctions (name and inputs). For every entry in readFunctions, output one tool with: - name: EXACTLY the same as the function name provided (do not rename). - description: a concise, helpful, non-empty sentence describing what the function returns/does, leveraging docs when available. - inputSchema: JSON Schema object with type=\"object\", properties keyed by the EXACT input names provided, each with type and a non-empty human-readable description of the purpose of that parameter (not just Solidity type). Never omit tools or descriptions. Never leave any description empty. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"readFunctions\":[{\"name\":\"ADDRESSES_PROVIDER\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"inputs\":[]},{\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"inputs\":[]},{\"name\":\"MAX_NUMBER_RESERVES\",\"inputs\":[]},{\"name\":\"POOL_REVISION\",\"inputs\":[]},{\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"inputs\":[]},{\"name\":\"UMBRELLA\",\"inputs\":[]},{\"name\":\"getBorrowLogic\",\"inputs\":[]},{\"name\":\"getConfiguration\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getEModeCategoryBorrowableBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralBitmap\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryCollateralConfig\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryData\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeCategoryLabel\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint8\"}]},{\"name\":\"getEModeLogic\",\"inputs\":[]},{\"name\":\"getFlashLoanLogic\",\"inputs\":[]},{\"name\":\"getLiquidationGracePeriod\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getLiquidationLogic\",\"inputs\":[]},{\"name\":\"getPoolLogic\",\"inputs\":[]},{\"name\":\"getReserveAToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveAddressById\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint16\"}]},{\"name\":\"getReserveData\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveDeficit\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedIncome\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveNormalizedVariableDebt\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReserveVariableDebtToken\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"getReservesCount\",\"inputs\":[]},{\"name\":\"getReservesList\",\"inputs\":[]},{\"name\":\"getSupplyLogic\",\"inputs\":[]},{\"name\":\"getUserAccountData\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserConfiguration\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getUserEMode\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"}]},{\"name\":\"getVirtualUnderlyingBalance\",\"inputs\":[{\"name\":\"asset\",\"type\":\"address\"}]},{\"name\":\"isApprovedPositionManager\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\"},{\"name\":\"positionManager\",\"type\":\"address\"}]}],\"docs\":\"<!DOCTYPE html><html><head><meta charSet=\\\"utf-8\\\"/><meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1, maximum-scale=1\\\"/><meta name=\\\"msapplication-navbutton-color\\\" content=\\\"#ffffff\\\"/><meta name=\\\"apple-mobile-web-app-status-bar-style\\\" content=\\\"#ffffff\\\"/><title>L2 Pool | Aave Protocol Documentation</title><meta name=\\\"description\\\" content=\\\"Understanding the L2Pool smart contract in Aave Protocol.\\\"/><meta name=\\\"msapplication-TileColor\\\" content=\\\"#FFFFFF\\\"/><meta name=\\\"theme-color\\\" content=\\\"#FFFFFF\\\"/><meta property=\\\"og:title\\\" content=\\\"L2 Pool\\\"/><meta property=\\\"og:description\\\" content=\\\"Understanding the L2Pool smart contract in Aave Protocol.\\\"/><meta property=\\\"og:site_name\\\" content=\\\"Docs\\\"/><meta property=\\\"og:url\\\" content=\\\"https://docs-aave.vercel.app/docs/developers/smart-contracts/l2-pool\\\"/><meta property=\\\"og:type\\\" content=\\\"website\\\"/><meta property=\\\"og:image\\\" content=\\\"https://docs-aave.vercel.app/docs/api/og?slug=developerssmart-contractsl2-pool\\\"/><meta property=\\\"og:image:width\\\" content=\\\"1080\\\"/><meta property=\\\"og:image:height\\\" content=\\\"570\\\"/><meta name=\\\"twitter:domain\\\" content=\\\"https://docs-aave.vercel.app/docs\\\"/><meta name=\\\"twitter:card\\\" content=\\\"summary_large_image\\\"/><meta name=\\\"twitter:site\\\" content=\\\"@Aave\\\"/><meta name=\\\"twitter:creator\\\" content=\\\"@Aave\\\"/><meta name=\\\"twitter:title\\\" content=\\\"L2 Pool\\\"/><meta name=\\\"twitter:description\\\" content=\\\"Understanding the L2Pool smart contract in Aave Protocol.\\\"/><meta name=\\\"twitter:url\\\" content=\\\"https://docs-aave.vercel.app/docs/developers/smart-contracts/l2-pool\\\"/><meta property=\\\"twitter:image\\\" content=\\\"https://docs-aave.vercel.app/docs/api/og?slug=developerssmart-contractsl2-pool\\\"/><meta name=\\\"next-head-count\\\" content=\\\"24\\\"/><script defer=\\\"\\\" data-domain=\\\"docs.aave.com\\\" src=\\\"https://plausible.io/js/script.js\\\"></script><link rel=\\\"icon\\\" href=\\\"/docs/favicon.png\\\"/><link rel=\\\"preconnect\\\" href=\\\"https://fonts.googleapis.com\\\"/><link rel=\\\"preconnect\\\" href=\\\"https://fonts.gstatic.com\\\" crossorigin=\\\"\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/InterVariable.woff2\\\" type=\\\"font/woff2\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/FTRegolaNeue-Medium.otf\\\" type=\\\"font/otf\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/FTRegolaNeue-Semibold.otf\\\" type=\\\"font/otf\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/RobotoMono-Regular.ttf\\\" type=\\\"font/ttf\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"stylesheet\\\" href=\\\"https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css\\\" integrity=\\\"sha384-Xi8rHCmBmhbuyyhbI88391ZKP2dmfnOl4rT9ZfRI7mLTdk1wblIUnrIq35nqwEvC\\\" crossorigin=\\\"anonymous\\\"/><style>\\n :root{\\n // --scrollbar-width:var(--ck-scrollbar-width);\\n }\\n \\n #__ROOT_PORTAL__ .bg{\\n background:rgba(31, 26, 20, 0.4);\\n }\\n\\n /* Toast */\\n #__ROOT_PORTAL__ > div > div > div > span[fontSize=\\\"14\\\"] > strong {\\n font-weight: 550 !important;\\n color: #1a1a1a !important;\\n }\\n \\n @font-face {\\n font-family: \\\"Inter\\\";\\n src: url(\\\"/docs/fonts/InterVariable.woff2\\\") format(\\\"woff2-variations\\\");\\n font-weight: 100 900;\\n font-display: swap;\\n }\\n\\n @font-face {\\n font-family: \\\"FT Regola Neue\\\";\\n src: url(\\\"/docs/fonts/FTRegolaNeue-Medium.otf\\\") format(\\\"opentype\\\");\\n font-weight: 500;\\n font-display: swap;\\n }\\n\\n @font-face {\\n font-family: \\\"FT Regola Neue\\\";\\n src: url(\\\"/docs/fonts/FTRegolaNeue-Semibold.otf\\\") format(\\\"opentype\\\");\\n font-weight: 600;\\n font-display: swap;\\n }\\n\\n @font-face {\\n font-family: \\\"Roboto Mono\\\";\\n src: url(\\\"/docs/fonts/RobotoMono-Regular.ttf\\\") format(\\\"truetype\\\");\\n font-weight: 400;\\n font-display: swap;\\n }\\n </style><link rel=\\\"preload\\\" href=\\\"/docs/_next/static/css/d2ff4e7e3712d099.css\\\" as=\\\"style\\\"/><link rel=\\\"stylesheet\\\" href=\\\"/docs/_next/static/css/d2ff4e7e3712d099.css\\\" data-n-g=\\\"\\\"/><link rel=\\\"preload\\\" href=\\\"/docs/_next/static/css/fe46e38e136edcb4.css\\\" as=\\\"style\\\"/><link rel=\\\"stylesheet\\\" href=\\\"/docs/_next/static/css/fe46e38e136edcb4.css\\\" data-n-p=\\\"\\\"/><noscript data-n-css=\\\"\\\"></noscript><script defer=\\\"\\\" nomodule=\\\"\\\" src=\\\"/docs/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js\\\"></script><script src=\\\"/docs/_next/static/chunks/webpack-714653dde7a51eea.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/framework-d726d6d8b7df724b.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/main-dcbdf8f264a59c46.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/pages/_app-09defa2aeea42bd6.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/7857be50-52b43fc17bbb5747.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/4090-4ce46d759742ef02.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/6739-0cd86c846c7a0bce.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/pages/developers/smart-contracts/l2-pool-377378d24f01b372.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/JBo6QGVdRZAk96tG7V5Gn/_buildManifest.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/JBo6QGVdRZAk96tG7V5Gn/_ssgManifest.js\\\" defer=\\\"\\\"></script><style data-styled=\\\"\\\" data-styled-version=\\\"5.3.11\\\">.gJAfGz{display:block;font-size:14px;line-height:22px;}/*!sc*/\\n.gJAfGz::before{content:'';margin-bottom:-0.4512em;display:table;}/*!sc*/\\n.gJAfGz::after{content:'';margin-top:-0.4122em;display:table;}/*!sc*/\\n.brTrVz{display:block;}/*!sc*/\\n.cqzZa-D{display:block;font-size:18px;line-height:21.48px;font-weight:600;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";-webkit-letter-spacing:-0.33px;-moz-letter-spacing:-0.33px;-ms-letter-spacing:-0.33px;letter-spacing:-0.33px;font-size:20px;line-height:22.67px;font-weight:600;}/*!sc*/\\n.cqzZa-D::before{content:'';margin-bottom:-0.2622em;display:table;}/*!sc*/\\n.cqzZa-D::after{content:'';margin-top:-0.2231em;display:table;}/*!sc*/\\n.cqzZa-D::before{content:'';margin-bottom:-0.2323em;display:table;}/*!sc*/\\n.cqzZa-D::after{content:'';margin-top:-0.1932em;display:table;}/*!sc*/\\n.gLzrMZ{display:block;font-size:16px;line-height:19px;font-weight:600;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";-webkit-letter-spacing:-0.18px;-moz-letter-spacing:-0.18px;-ms-letter-spacing:-0.18px;letter-spacing:-0.18px;font-size:16px;line-height:22.67px;font-weight:600;}/*!sc*/\\n.gLzrMZ::before{content:'';margin-bottom:-0.2593em;display:table;}/*!sc*/\\n.gLzrMZ::after{content:'';margin-top:-0.2202em;display:table;}/*!sc*/\\n.gLzrMZ::before{content:'';margin-bottom:-0.374em;display:table;}/*!sc*/\\n.gLzrMZ::after{content:'';margin-top:-0.3349em;display:table;}/*!sc*/\\n.ixFGtv{display:block;font-size:15px;line-height:18px;font-weight:500;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";-webkit-letter-spacing:-0.09px;-moz-letter-spacing:-0.09px;-ms-letter-spacing:-0.09px;letter-spacing:-0.09px;font-size:16px;line-height:22.67px;font-weight:500;}/*!sc*/\\n.ixFGtv::before{content:'';margin-bottom:-0.2655em;display:table;}/*!sc*/\\n.ixFGtv::after{content:'';margin-top:-0.2265em;display:table;}/*!sc*/\\n.ixFGtv::before{content:'';margin-bottom:-0.374em;display:table;}/*!sc*/\\n.ixFGtv::after{content:'';margin-top:-0.3349em;display:table;}/*!sc*/\\ndata-styled.g1[id=\\\"sc-aXZVg\\\"]{content:\\\"gJAfGz,brTrVz,cqzZa-D,gLzrMZ,ixFGtv,\\\"}/*!sc*/\\n.fDzIsf{position:relative;width:100%;}/*!sc*/\\ndata-styled.g2[id=\\\"sc-gEvEer\\\"]{content:\\\"fDzIsf,\\\"}/*!sc*/\\n.iqfBFi{display:block;position:relative;width:100%;max-width:100%;overflow-x:auto;}/*!sc*/\\n.iqfBFi strong,.iqfBFi code{color:#201D1D;}/*!sc*/\\n.iqfBFi code{font-weight:600;}/*!sc*/\\n.iqfBFi table{border-radius:2px;overflow:hidden;display:table;margin:0 auto;border-spacing:0;border-collapse:collapse;width:100%;text-align:left;}/*!sc*/\\n.iqfBFi table tr th,.iqfBFi table tr td{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:1px;white-space:nowrap;padding:0 8px;}/*!sc*/\\n.iqfBFi table thead{text-align:left;color:#201D1D;border-bottom:1px solid #e4e8ed;}/*!sc*/\\n.iqfBFi table thead tr th{font-weight:400;padding-top:16px;padding-bottom:16px;background:#fff;}/*!sc*/\\n.iqfBFi table tfoot{text-align:left;font-weight:400;}/*!sc*/\\n.iqfBFi table tfoot tr th{padding-top:16px;padding-bottom:16px;}/*!sc*/\\n.iqfBFi table tbody{color:#8F8E8E;}/*!sc*/\\n.iqfBFi table tbody tr{line-height:1;border-bottom:1px solid #e4e8ed;}/*!sc*/\\n.iqfBFi table tbody tr:nth-child(even){background:#fcfcfd;}/*!sc*/\\n.iqfBFi table tbody tr td{padding-top:16px;padding-bottom:16px;white-space:break-spaces;}/*!sc*/\\n.iqfBFi table tbody tr td:first-child,.iqfBFi table tbody tr td:last-child{white-space:nowrap;}/*!sc*/\\ndata-styled.g64[id=\\\"sc-bypJrT\\\"]{content:\\\"iqfBFi,\\\"}/*!sc*/\\n.kGGtlD{display:inline-block;vertical-align:text-top;max-width:100%;position:relative;font-size:0.9375em;line-height:1.2;margin:0;padding:1px 4px 1px 3px;overflow:hidden;border-radius:4px;font-family:\\\"Roboto Mono\\\",SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier,monospace;color:#474645;background:#FAFAFA;box-shadow:inset 0 0 0 1px #E8E8E8;}/*!sc*/\\ndata-styled.g115[id=\\\"sc-hHOBiw\\\"]{content:\\\"kGGtlD,\\\"}/*!sc*/\\n.jRyHdr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;}/*!sc*/\\n.jRyHdr > hr{margin:16px 0 48px;}/*!sc*/\\n.jRyHdr > .sc-eqUAAy{padding-bottom:24px;}/*!sc*/\\n.jRyHdr > .sc-gEvEer{padding-bottom:24px;}/*!sc*/\\n.jRyHdr > .sc-aXZVg{padding-bottom:32px;}/*!sc*/\\n.jRyHdr > .sc-aXZVg + .sc-aXZVg{margin-top:-8px;}/*!sc*/\\n.jRyHdr > .sc-kqGoIF,.jRyHdr > .sc-tagGq,.jRyHdr > .sc-bypJrT{margin-bottom:48px;}/*!sc*/\\n.jRyHdr > .sc-kqGoIF + .sc-tagGq{margin-top:-24px;}/*!sc*/\\n.jRyHdr > .sc-kqGoIF + .sc-kqGoIF,.jRyHdr > .sc-tagGq + .sc-tagGq,.jRyHdr > .sc-bypJrT + .sc-bypJrT{margin-top:-32px;}/*!sc*/\\n.jRyHdr > .sc-tagGq + .sc-aXZVg{margin-top:-18px;}/*!sc*/\\n.jRyHdr > hr + section{margin-top:0;margin-top:14px;}/*!sc*/\\ndata-styled.g193[id=\\\"sc-gweoQa\\\"]{content:\\\"jRyHdr,\\\"}/*!sc*/\\n:root{--color-anchor:#6187FE;--color-primary:#343433;--color-text:#343433;--color-border:#E8E8E8;--color-valid:#00C454;--background-valid:rgba(0,196,84,0.1);--color-invalid:#FF4E4E;--background-invalid:#fff0f0;--color-warning:#F6C30F;--background-warning:#fefae6;}/*!sc*/\\n*{outline:0;padding:0;margin:0;border:0;box-sizing:border-box;}/*!sc*/\\n*::-webkit-scrollbar{width:6px;height:6px;}/*!sc*/\\n*::-webkit-scrollbar-track{background:transparent;}/*!sc*/\\n*::-webkit-scrollbar-thumb{background:rgba(0,0,0,0);border-radius:100px;}/*!sc*/\\n*:hover::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.15);}/*!sc*/\\n*::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,0.25);}/*!sc*/\\nhtml,html body{min-height:100%;}/*!sc*/\\nhtml{color:#8F8E8E;background:#fff;-webkit-scroll-padding-top:128px;-moz-scroll-padding-top:128px;-ms-scroll-padding-top:128px;scroll-padding-top:128px;}/*!sc*/\\nbody{overflow-x:hidden;overflow-y:scroll;padding-right:var(--scrollbar-width);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";font-display:auto;font-weight:400;font-size:16px;}/*!sc*/\\nsection,article{width:100%;}/*!sc*/\\ninput[type=text],input,input[type=button],button,textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;-moz-appearance:none;-webkit-appearance:none;}/*!sc*/\\ninput,select,textarea,button{font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";}/*!sc*/\\na{display:inline;cursor:pointer;-webkit-text-decoration:none;text-decoration:none;position:relative;color:inherit;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;font-weight:500;}/*!sc*/\\np a{position:relative;color:inherit;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/\\nh1,h2,h3,h4,h5,h6{color:#201D1D;-webkit-text-stroke:0.001px transparent;}/*!sc*/\\nstrong{font-weight:600;}/*!sc*/\\nimg,svg{display:inline-block;max-width:100%;height:auto;}/*!sc*/\\ncode{font-family:\\\"Roboto Mono\\\",SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier,monospace;}/*!sc*/\\n.container{position:relative;margin:0 auto;width:100%;max-width:calc(1008px + 2rem);padding:0 1rem;}/*!sc*/\\nhr{margin:0;width:100%;height:1px;background:#EDEDED;}/*!sc*/\\n@-webkit-keyframes hr{from{background-position:0 0;}to{background-position:100% 0;}}/*!sc*/\\n@keyframes hr{from{background-position:0 0;}to{background-position:100% 0;}}/*!sc*/\\nhr.dashed,article hr{background:linear-gradient(90deg,#E4E8ED,#E4E8ED 50%,transparent 50%,transparent 100%);background-size:6px 1px;-webkit-animation:hr 120s linear infinite forwards;animation:hr 120s linear infinite forwards;}/*!sc*/\\n[data-rmiz-wrap=\\\"visible\\\"],[data-rmiz-wrap=\\\"hidden\\\"]{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/\\n[data-rmiz-wrap=\\\"hidden\\\"]{visibility:hidden;}/*!sc*/\\n[data-rmiz-overlay]{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-webkit-transition-property:background-color;transition-property:background-color;}/*!sc*/\\n[data-rmiz-btn-open],[data-rmiz-btn-close]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;border:none;border-radius:0;font:inherit;color:inherit;background:none;-webkit-appearance:none;-moz-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;}/*!sc*/\\n[data-rmiz-btn-open]{cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in;}/*!sc*/\\n[data-rmiz-btn-close]{cursor:-webkit-zoom-out;cursor:-moz-zoom-out;cursor:zoom-out;}/*!sc*/\\n[data-rmiz-modal-content]{position:absolute;-webkit-transition-property:-webkit-transform;-webkit-transition-property:transform;transition-property:transform;-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;}/*!sc*/\\ndata-styled.g198[id=\\\"sc-global-eKEVfJ1\\\"]{content:\\\"sc-global-eKEVfJ1,\\\"}/*!sc*/\\n.CQWDI{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;gap:8px;position:relative;border-radius:5rem;padding:0 14px;height:2rem;background:#1a1a1a;font-weight:500;font-size:14px;-webkit-letter-spacing:-0.13px;-moz-letter-spacing:-0.13px;-ms-letter-spacing:-0.13px;letter-spacing:-0.13px;color:#fff;-webkit-transition:opacity 0.15s ease;transition:opacity 0.15s ease;cursor:pointer;background:#1a1a1a;}/*!sc*/\\n.CQWDI:disabled{pointer-events:none;opacity:0.5;}/*!sc*/\\n.CQWDI:hover{opacity:0.8;}/*!sc*/\\ndata-styled.g230[id=\\\"Button__Container-sc-2vskfl-0\\\"]{content:\\\"CQWDI,\\\"}/*!sc*/\\n@-webkit-keyframes fadeIn{to{opacity:1;}}/*!sc*/\\n@keyframes fadeIn{to{opacity:1;}}/*!sc*/\\n@-webkit-keyframes scaleIn{from{-webkit-transform:scale(.92);-ms-transform:scale(.92);transform:scale(.92);opacity:0;}}/*!sc*/\\n@keyframes scaleIn{from{-webkit-transform:scale(.92);-ms-transform:scale(.92);transform:scale(.92);opacity:0;}}/*!sc*/\\n[cmdk-bg]{z-index:2147483646;position:fixed;inset:0;background-color:rgb(0 0 0 / 0.4);opacity:0;-webkit-transition:opacity 200ms ease;transition:opacity 200ms ease;pointer-events:none;}/*!sc*/\\n@media (max-width:574px){[cmdk-bg]{background-color:transparent;-webkit-transition-duration:0s;transition-duration:0s;}}/*!sc*/\\n[cmdk-bg][data-open]{opacity:1;}/*!sc*/\\n[cmdk-root]{position:fixed;z-index:2147483647;top:20%;right:0;left:0;margin:8px auto;border-radius:12px;width:96%;max-width:637px;background-color:#fff;box-shadow:0 2px 8px 0 rgb(0 0 0 / .04);overflow:hidden;-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-property:transform,opacity;transition-property:transform,opacity;-webkit-transition-duration:150ms;transition-duration:150ms;-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-animation:scaleIn 150ms ease;animation:scaleIn 150ms ease;}/*!sc*/\\n@media (max-width:574px){[cmdk-root]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;top:0;margin:0;border-radius:0;max-width:100%;height:100%;-webkit-transition-duration:150ms;transition-duration:150ms;-webkit-animation:scaleIn 150ms ease;animation:scaleIn 150ms ease;}}/*!sc*/\\n[cmdk-highlight]{position:absolute;z-index:-1;top:0;left:12px;height:48px;border-radius:8px;width:calc(100% - 24px);background-color:#fafafa;visibility:hidden;-webkit-transition:100ms cubic-bezier(0,0,0.2,1);transition:100ms cubic-bezier(0,0,0.2,1);-webkit-transition-property:-webkit-transform,height;-webkit-transition-property:transform,height;transition-property:transform,height;will-change:transform,height;}/*!sc*/\\n@media (hover:none){[cmdk-highlight]{display:none;}}/*!sc*/\\n[cmdk-input]{margin:0;border-bottom:1px solid #f9f9f9;border-radius:0;padding:12px 40px;font-size:14px;-webkit-letter-spacing:-0.09px;-moz-letter-spacing:-0.09px;-ms-letter-spacing:-0.09px;letter-spacing:-0.09px;width:100%;height:48px;color:#1A1A1A;font-weight:500;text-overflow:ellipsis;}/*!sc*/\\n@media (max-width:574px){[cmdk-input]{padding-right:48px;border-color:#f0f0f0;height:56px;font-size:16px;}}/*!sc*/\\n[cmdk-input]::-webkit-input-placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-input]::-moz-placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-input]:-ms-input-placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-input]::placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-content]{position:relative;-webkit-transition:opacity 400ms ease;transition:opacity 400ms ease;}/*!sc*/\\n@media (max-width:574px){[cmdk-content]{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;overflow:hidden;}}/*!sc*/\\n[cmdk-content][data-loading=\\\"true\\\"]{opacity:0.5;}/*!sc*/\\n[cmdk-content][data-loading=\\\"true\\\"]:before{display:block;}/*!sc*/\\n[cmdk-content]:before{display:none;z-index:2;content:'';position:absolute;inset:0;background:#fff;-webkit-animation:hDLHza 1s infinite ease-in-out;animation:hDLHza 1s infinite ease-in-out;}/*!sc*/\\n[cmdk-list]{position:relative;padding:8px 8px 0;height:373px;box-sizing:content-box;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}/*!sc*/\\n@media (max-width:574px){[cmdk-list]{height:calc(100% - 8px);}}/*!sc*/\\n[cmdk-list-sizer]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}/*!sc*/\\n[cmdk-group]:last-child{padding-bottom:8px;}/*!sc*/\\n[cmdk-group-heading]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 12px;height:32px;font-size:12px;font-weight:500;color:#1A1A1A;}/*!sc*/\\n[cmdk-group-heading] span{display:none;}/*!sc*/\\n[cmdk-item]\",\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\",\"docsUrl\":\"https://aave.com/docs/developers/smart-contracts/l2-pool\"}" } ]
Response:
{
"tools": [
{
"name": "ADDRESSES_PROVIDER",
"description": "Returns the address of the Pool Addresses Provider contract that this pool is connected to.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TOTAL",
"description": "Returns the total flash loan premium percentage charged on flash loans.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "FLASHLOAN_PREMIUM_TO_PROTOCOL",
"description": "Returns the portion of the flash loan premium that goes to the protocol.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "MAX_NUMBER_RESERVES",
"description": "Returns the maximum number of reserves that can be supported by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "POOL_REVISION",
"description": "Returns the current revision version of the pool contract.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "RESERVE_INTEREST_RATE_STRATEGY",
"description": "Returns the address of the interest rate strategy contract used by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "UMBRELLA",
"description": "Returns the umbrella identifier bytes32 value used in the protocol.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getBorrowLogic",
"description": "Returns the address of the borrow logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getConfiguration",
"description": "Returns the configuration data for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get configuration for"
}
}
}
},
{
"name": "getEModeCategoryBorrowableBitmap",
"description": "Returns the borrowable assets bitmap for a specific efficiency mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "The ID of the efficiency mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralBitmap",
"description": "Returns the collateral assets bitmap for a specific efficiency mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "The ID of the efficiency mode category to query"
}
}
}
},
{
"name": "getEModeCategoryCollateralConfig",
"description": "Returns the collateral configuration for a specific efficiency mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "The ID of the efficiency mode category to query"
}
}
}
},
{
"name": "getEModeCategoryData",
"description": "Returns the complete data for a specific efficiency mode category including LTV, liquidation threshold, and bonus.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "The ID of the efficiency mode category to query"
}
}
}
},
{
"name": "getEModeCategoryLabel",
"description": "Returns the descriptive label for a specific efficiency mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "The ID of the efficiency mode category to query"
}
}
}
},
{
"name": "getEModeLogic",
"description": "Returns the address of the efficiency mode logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getFlashLoanLogic",
"description": "Returns the address of the flash loan logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getLiquidationGracePeriod",
"description": "Returns the liquidation grace period for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query"
}
}
}
},
{
"name": "getLiquidationLogic",
"description": "Returns the address of the liquidation logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getPoolLogic",
"description": "Returns the address of the main pool logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReserveAToken",
"description": "Returns the aToken address associated with a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query"
}
}
}
},
{
"name": "getReserveAddressById",
"description": "Returns the reserve asset address for a given reserve ID.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "The ID of the reserve to query"
}
}
}
},
{
"name": "getReserveData",
"description": "Returns the complete reserve data for a specific asset including configuration, rates, and token addresses.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query"
}
}
}
},
{
"name": "getReserveDeficit",
"description": "Returns the current deficit amount for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query"
}
}
}
},
{
"name": "getReserveNormalizedIncome",
"description": "Returns the normalized income for a specific reserve asset, representing the current liquidity index.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query"
}
}
}
},
{
"name": "getReserveNormalizedVariableDebt",
"description": "Returns the normalized variable debt for a specific reserve asset, representing the current variable debt index.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query"
}
}
}
},
{
"name": "getReserveVariableDebtToken",
"description": "Returns the variable debt token address associated with a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query"
}
}
}
},
{
"name": "getReservesCount",
"description": "Returns the total number of reserves currently active in the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getReservesList",
"description": "Returns an array of all reserve asset addresses currently supported by the pool.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getSupplyLogic",
"description": "Returns the address of the supply logic contract implementation.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "getUserAccountData",
"description": "Returns the user's account data including collateral, debt, borrowing power, and health factor.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query account data for"
}
}
}
},
{
"name": "getUserConfiguration",
"description": "Returns the user's configuration data showing which reserves they are using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query configuration for"
}
}
}
},
{
"name": "getUserEMode",
"description": "Returns the efficiency mode category ID that the user is currently using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query E-Mode for"
}
}
}
},
{
"name": "getVirtualUnderlyingBalance",
"description": "Returns the virtual underlying balance for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query"
}
}
}
},
{
"name": "isApprovedPositionManager",
"description": "Checks if a position manager is approved for a specific user.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to check"
},
"positionManager": {
"type": "string",
"description": "The address of the position manager to check approval for"
}
}
}
}
]
}
Model: claude-3-7-sonnet-202502192025-08-29 16:15:01
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. Each tool should include: name, description, inputSchema (JSON Schema object with meaningful parameter descriptions). For inputSchema properties, generate human-readable descriptions explaining what each parameter does, not just the Solidity type. Example: instead of \"uint256\" use \"Amount of tokens to transfer\", instead of \"address\" use \"Recipient wallet address\". Include ONLY read-only functions (stateMutability view or pure). Exclude nonpayable and payable functions entirely. Generate descriptive tool names and descriptions based on function purpose. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\",\"docsUrl\":\"https://aave.com/docs/developers/smart-contracts/l2-pool\",\"docs\":\"<!DOCTYPE html><html><head><meta charSet=\\\"utf-8\\\"/><meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1, maximum-scale=1\\\"/><meta name=\\\"msapplication-navbutton-color\\\" content=\\\"#ffffff\\\"/><meta name=\\\"apple-mobile-web-app-status-bar-style\\\" content=\\\"#ffffff\\\"/><title>L2 Pool | Aave Protocol Documentation</title><meta name=\\\"description\\\" content=\\\"Understanding the L2Pool smart contract in Aave Protocol.\\\"/><meta name=\\\"msapplication-TileColor\\\" content=\\\"#FFFFFF\\\"/><meta name=\\\"theme-color\\\" content=\\\"#FFFFFF\\\"/><meta property=\\\"og:title\\\" content=\\\"L2 Pool\\\"/><meta property=\\\"og:description\\\" content=\\\"Understanding the L2Pool smart contract in Aave Protocol.\\\"/><meta property=\\\"og:site_name\\\" content=\\\"Docs\\\"/><meta property=\\\"og:url\\\" content=\\\"https://docs-aave.vercel.app/docs/developers/smart-contracts/l2-pool\\\"/><meta property=\\\"og:type\\\" content=\\\"website\\\"/><meta property=\\\"og:image\\\" content=\\\"https://docs-aave.vercel.app/docs/api/og?slug=developerssmart-contractsl2-pool\\\"/><meta property=\\\"og:image:width\\\" content=\\\"1080\\\"/><meta property=\\\"og:image:height\\\" content=\\\"570\\\"/><meta name=\\\"twitter:domain\\\" content=\\\"https://docs-aave.vercel.app/docs\\\"/><meta name=\\\"twitter:card\\\" content=\\\"summary_large_image\\\"/><meta name=\\\"twitter:site\\\" content=\\\"@Aave\\\"/><meta name=\\\"twitter:creator\\\" content=\\\"@Aave\\\"/><meta name=\\\"twitter:title\\\" content=\\\"L2 Pool\\\"/><meta name=\\\"twitter:description\\\" content=\\\"Understanding the L2Pool smart contract in Aave Protocol.\\\"/><meta name=\\\"twitter:url\\\" content=\\\"https://docs-aave.vercel.app/docs/developers/smart-contracts/l2-pool\\\"/><meta property=\\\"twitter:image\\\" content=\\\"https://docs-aave.vercel.app/docs/api/og?slug=developerssmart-contractsl2-pool\\\"/><meta name=\\\"next-head-count\\\" content=\\\"24\\\"/><script defer=\\\"\\\" data-domain=\\\"docs.aave.com\\\" src=\\\"https://plausible.io/js/script.js\\\"></script><link rel=\\\"icon\\\" href=\\\"/docs/favicon.png\\\"/><link rel=\\\"preconnect\\\" href=\\\"https://fonts.googleapis.com\\\"/><link rel=\\\"preconnect\\\" href=\\\"https://fonts.gstatic.com\\\" crossorigin=\\\"\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/InterVariable.woff2\\\" type=\\\"font/woff2\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/FTRegolaNeue-Medium.otf\\\" type=\\\"font/otf\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/FTRegolaNeue-Semibold.otf\\\" type=\\\"font/otf\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/RobotoMono-Regular.ttf\\\" type=\\\"font/ttf\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"stylesheet\\\" href=\\\"https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css\\\" integrity=\\\"sha384-Xi8rHCmBmhbuyyhbI88391ZKP2dmfnOl4rT9ZfRI7mLTdk1wblIUnrIq35nqwEvC\\\" crossorigin=\\\"anonymous\\\"/><style>\\n :root{\\n // --scrollbar-width:var(--ck-scrollbar-width);\\n }\\n \\n #__ROOT_PORTAL__ .bg{\\n background:rgba(31, 26, 20, 0.4);\\n }\\n\\n /* Toast */\\n #__ROOT_PORTAL__ > div > div > div > span[fontSize=\\\"14\\\"] > strong {\\n font-weight: 550 !important;\\n color: #1a1a1a !important;\\n }\\n \\n @font-face {\\n font-family: \\\"Inter\\\";\\n src: url(\\\"/docs/fonts/InterVariable.woff2\\\") format(\\\"woff2-variations\\\");\\n font-weight: 100 900;\\n font-display: swap;\\n }\\n\\n @font-face {\\n font-family: \\\"FT Regola Neue\\\";\\n src: url(\\\"/docs/fonts/FTRegolaNeue-Medium.otf\\\") format(\\\"opentype\\\");\\n font-weight: 500;\\n font-display: swap;\\n }\\n\\n @font-face {\\n font-family: \\\"FT Regola Neue\\\";\\n src: url(\\\"/docs/fonts/FTRegolaNeue-Semibold.otf\\\") format(\\\"opentype\\\");\\n font-weight: 600;\\n font-display: swap;\\n }\\n\\n @font-face {\\n font-family: \\\"Roboto Mono\\\";\\n src: url(\\\"/docs/fonts/RobotoMono-Regular.ttf\\\") format(\\\"truetype\\\");\\n font-weight: 400;\\n font-display: swap;\\n }\\n </style><link rel=\\\"preload\\\" href=\\\"/docs/_next/static/css/d2ff4e7e3712d099.css\\\" as=\\\"style\\\"/><link rel=\\\"stylesheet\\\" href=\\\"/docs/_next/static/css/d2ff4e7e3712d099.css\\\" data-n-g=\\\"\\\"/><link rel=\\\"preload\\\" href=\\\"/docs/_next/static/css/fe46e38e136edcb4.css\\\" as=\\\"style\\\"/><link rel=\\\"stylesheet\\\" href=\\\"/docs/_next/static/css/fe46e38e136edcb4.css\\\" data-n-p=\\\"\\\"/><noscript data-n-css=\\\"\\\"></noscript><script defer=\\\"\\\" nomodule=\\\"\\\" src=\\\"/docs/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js\\\"></script><script src=\\\"/docs/_next/static/chunks/webpack-714653dde7a51eea.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/framework-d726d6d8b7df724b.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/main-dcbdf8f264a59c46.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/pages/_app-09defa2aeea42bd6.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/7857be50-52b43fc17bbb5747.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/4090-4ce46d759742ef02.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/6739-0cd86c846c7a0bce.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/pages/developers/smart-contracts/l2-pool-377378d24f01b372.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/JBo6QGVdRZAk96tG7V5Gn/_buildManifest.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/JBo6QGVdRZAk96tG7V5Gn/_ssgManifest.js\\\" defer=\\\"\\\"></script><style data-styled=\\\"\\\" data-styled-version=\\\"5.3.11\\\">.gJAfGz{display:block;font-size:14px;line-height:22px;}/*!sc*/\\n.gJAfGz::before{content:'';margin-bottom:-0.4512em;display:table;}/*!sc*/\\n.gJAfGz::after{content:'';margin-top:-0.4122em;display:table;}/*!sc*/\\n.brTrVz{display:block;}/*!sc*/\\n.cqzZa-D{display:block;font-size:18px;line-height:21.48px;font-weight:600;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";-webkit-letter-spacing:-0.33px;-moz-letter-spacing:-0.33px;-ms-letter-spacing:-0.33px;letter-spacing:-0.33px;font-size:20px;line-height:22.67px;font-weight:600;}/*!sc*/\\n.cqzZa-D::before{content:'';margin-bottom:-0.2622em;display:table;}/*!sc*/\\n.cqzZa-D::after{content:'';margin-top:-0.2231em;display:table;}/*!sc*/\\n.cqzZa-D::before{content:'';margin-bottom:-0.2323em;display:table;}/*!sc*/\\n.cqzZa-D::after{content:'';margin-top:-0.1932em;display:table;}/*!sc*/\\n.gLzrMZ{display:block;font-size:16px;line-height:19px;font-weight:600;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";-webkit-letter-spacing:-0.18px;-moz-letter-spacing:-0.18px;-ms-letter-spacing:-0.18px;letter-spacing:-0.18px;font-size:16px;line-height:22.67px;font-weight:600;}/*!sc*/\\n.gLzrMZ::before{content:'';margin-bottom:-0.2593em;display:table;}/*!sc*/\\n.gLzrMZ::after{content:'';margin-top:-0.2202em;display:table;}/*!sc*/\\n.gLzrMZ::before{content:'';margin-bottom:-0.374em;display:table;}/*!sc*/\\n.gLzrMZ::after{content:'';margin-top:-0.3349em;display:table;}/*!sc*/\\n.ixFGtv{display:block;font-size:15px;line-height:18px;font-weight:500;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";-webkit-letter-spacing:-0.09px;-moz-letter-spacing:-0.09px;-ms-letter-spacing:-0.09px;letter-spacing:-0.09px;font-size:16px;line-height:22.67px;font-weight:500;}/*!sc*/\\n.ixFGtv::before{content:'';margin-bottom:-0.2655em;display:table;}/*!sc*/\\n.ixFGtv::after{content:'';margin-top:-0.2265em;display:table;}/*!sc*/\\n.ixFGtv::before{content:'';margin-bottom:-0.374em;display:table;}/*!sc*/\\n.ixFGtv::after{content:'';margin-top:-0.3349em;display:table;}/*!sc*/\\ndata-styled.g1[id=\\\"sc-aXZVg\\\"]{content:\\\"gJAfGz,brTrVz,cqzZa-D,gLzrMZ,ixFGtv,\\\"}/*!sc*/\\n.fDzIsf{position:relative;width:100%;}/*!sc*/\\ndata-styled.g2[id=\\\"sc-gEvEer\\\"]{content:\\\"fDzIsf,\\\"}/*!sc*/\\n.iqfBFi{display:block;position:relative;width:100%;max-width:100%;overflow-x:auto;}/*!sc*/\\n.iqfBFi strong,.iqfBFi code{color:#201D1D;}/*!sc*/\\n.iqfBFi code{font-weight:600;}/*!sc*/\\n.iqfBFi table{border-radius:2px;overflow:hidden;display:table;margin:0 auto;border-spacing:0;border-collapse:collapse;width:100%;text-align:left;}/*!sc*/\\n.iqfBFi table tr th,.iqfBFi table tr td{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:1px;white-space:nowrap;padding:0 8px;}/*!sc*/\\n.iqfBFi table thead{text-align:left;color:#201D1D;border-bottom:1px solid #e4e8ed;}/*!sc*/\\n.iqfBFi table thead tr th{font-weight:400;padding-top:16px;padding-bottom:16px;background:#fff;}/*!sc*/\\n.iqfBFi table tfoot{text-align:left;font-weight:400;}/*!sc*/\\n.iqfBFi table tfoot tr th{padding-top:16px;padding-bottom:16px;}/*!sc*/\\n.iqfBFi table tbody{color:#8F8E8E;}/*!sc*/\\n.iqfBFi table tbody tr{line-height:1;border-bottom:1px solid #e4e8ed;}/*!sc*/\\n.iqfBFi table tbody tr:nth-child(even){background:#fcfcfd;}/*!sc*/\\n.iqfBFi table tbody tr td{padding-top:16px;padding-bottom:16px;white-space:break-spaces;}/*!sc*/\\n.iqfBFi table tbody tr td:first-child,.iqfBFi table tbody tr td:last-child{white-space:nowrap;}/*!sc*/\\ndata-styled.g64[id=\\\"sc-bypJrT\\\"]{content:\\\"iqfBFi,\\\"}/*!sc*/\\n.kGGtlD{display:inline-block;vertical-align:text-top;max-width:100%;position:relative;font-size:0.9375em;line-height:1.2;margin:0;padding:1px 4px 1px 3px;overflow:hidden;border-radius:4px;font-family:\\\"Roboto Mono\\\",SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier,monospace;color:#474645;background:#FAFAFA;box-shadow:inset 0 0 0 1px #E8E8E8;}/*!sc*/\\ndata-styled.g115[id=\\\"sc-hHOBiw\\\"]{content:\\\"kGGtlD,\\\"}/*!sc*/\\n.jRyHdr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;}/*!sc*/\\n.jRyHdr > hr{margin:16px 0 48px;}/*!sc*/\\n.jRyHdr > .sc-eqUAAy{padding-bottom:24px;}/*!sc*/\\n.jRyHdr > .sc-gEvEer{padding-bottom:24px;}/*!sc*/\\n.jRyHdr > .sc-aXZVg{padding-bottom:32px;}/*!sc*/\\n.jRyHdr > .sc-aXZVg + .sc-aXZVg{margin-top:-8px;}/*!sc*/\\n.jRyHdr > .sc-kqGoIF,.jRyHdr > .sc-tagGq,.jRyHdr > .sc-bypJrT{margin-bottom:48px;}/*!sc*/\\n.jRyHdr > .sc-kqGoIF + .sc-tagGq{margin-top:-24px;}/*!sc*/\\n.jRyHdr > .sc-kqGoIF + .sc-kqGoIF,.jRyHdr > .sc-tagGq + .sc-tagGq,.jRyHdr > .sc-bypJrT + .sc-bypJrT{margin-top:-32px;}/*!sc*/\\n.jRyHdr > .sc-tagGq + .sc-aXZVg{margin-top:-18px;}/*!sc*/\\n.jRyHdr > hr + section{margin-top:0;margin-top:14px;}/*!sc*/\\ndata-styled.g193[id=\\\"sc-gweoQa\\\"]{content:\\\"jRyHdr,\\\"}/*!sc*/\\n:root{--color-anchor:#6187FE;--color-primary:#343433;--color-text:#343433;--color-border:#E8E8E8;--color-valid:#00C454;--background-valid:rgba(0,196,84,0.1);--color-invalid:#FF4E4E;--background-invalid:#fff0f0;--color-warning:#F6C30F;--background-warning:#fefae6;}/*!sc*/\\n*{outline:0;padding:0;margin:0;border:0;box-sizing:border-box;}/*!sc*/\\n*::-webkit-scrollbar{width:6px;height:6px;}/*!sc*/\\n*::-webkit-scrollbar-track{background:transparent;}/*!sc*/\\n*::-webkit-scrollbar-thumb{background:rgba(0,0,0,0);border-radius:100px;}/*!sc*/\\n*:hover::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.15);}/*!sc*/\\n*::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,0.25);}/*!sc*/\\nhtml,html body{min-height:100%;}/*!sc*/\\nhtml{color:#8F8E8E;background:#fff;-webkit-scroll-padding-top:128px;-moz-scroll-padding-top:128px;-ms-scroll-padding-top:128px;scroll-padding-top:128px;}/*!sc*/\\nbody{overflow-x:hidden;overflow-y:scroll;padding-right:var(--scrollbar-width);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";font-display:auto;font-weight:400;font-size:16px;}/*!sc*/\\nsection,article{width:100%;}/*!sc*/\\ninput[type=text],input,input[type=button],button,textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;-moz-appearance:none;-webkit-appearance:none;}/*!sc*/\\ninput,select,textarea,button{font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";}/*!sc*/\\na{display:inline;cursor:pointer;-webkit-text-decoration:none;text-decoration:none;position:relative;color:inherit;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;font-weight:500;}/*!sc*/\\np a{position:relative;color:inherit;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/\\nh1,h2,h3,h4,h5,h6{color:#201D1D;-webkit-text-stroke:0.001px transparent;}/*!sc*/\\nstrong{font-weight:600;}/*!sc*/\\nimg,svg{display:inline-block;max-width:100%;height:auto;}/*!sc*/\\ncode{font-family:\\\"Roboto Mono\\\",SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier,monospace;}/*!sc*/\\n.container{position:relative;margin:0 auto;width:100%;max-width:calc(1008px + 2rem);padding:0 1rem;}/*!sc*/\\nhr{margin:0;width:100%;height:1px;background:#EDEDED;}/*!sc*/\\n@-webkit-keyframes hr{from{background-position:0 0;}to{background-position:100% 0;}}/*!sc*/\\n@keyframes hr{from{background-position:0 0;}to{background-position:100% 0;}}/*!sc*/\\nhr.dashed,article hr{background:linear-gradient(90deg,#E4E8ED,#E4E8ED 50%,transparent 50%,transparent 100%);background-size:6px 1px;-webkit-animation:hr 120s linear infinite forwards;animation:hr 120s linear infinite forwards;}/*!sc*/\\n[data-rmiz-wrap=\\\"visible\\\"],[data-rmiz-wrap=\\\"hidden\\\"]{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/\\n[data-rmiz-wrap=\\\"hidden\\\"]{visibility:hidden;}/*!sc*/\\n[data-rmiz-overlay]{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-webkit-transition-property:background-color;transition-property:background-color;}/*!sc*/\\n[data-rmiz-btn-open],[data-rmiz-btn-close]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;border:none;border-radius:0;font:inherit;color:inherit;background:none;-webkit-appearance:none;-moz-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;}/*!sc*/\\n[data-rmiz-btn-open]{cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in;}/*!sc*/\\n[data-rmiz-btn-close]{cursor:-webkit-zoom-out;cursor:-moz-zoom-out;cursor:zoom-out;}/*!sc*/\\n[data-rmiz-modal-content]{position:absolute;-webkit-transition-property:-webkit-transform;-webkit-transition-property:transform;transition-property:transform;-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;}/*!sc*/\\ndata-styled.g198[id=\\\"sc-global-eKEVfJ1\\\"]{content:\\\"sc-global-eKEVfJ1,\\\"}/*!sc*/\\n.CQWDI{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;gap:8px;position:relative;border-radius:5rem;padding:0 14px;height:2rem;background:#1a1a1a;font-weight:500;font-size:14px;-webkit-letter-spacing:-0.13px;-moz-letter-spacing:-0.13px;-ms-letter-spacing:-0.13px;letter-spacing:-0.13px;color:#fff;-webkit-transition:opacity 0.15s ease;transition:opacity 0.15s ease;cursor:pointer;background:#1a1a1a;}/*!sc*/\\n.CQWDI:disabled{pointer-events:none;opacity:0.5;}/*!sc*/\\n.CQWDI:hover{opacity:0.8;}/*!sc*/\\ndata-styled.g230[id=\\\"Button__Container-sc-2vskfl-0\\\"]{content:\\\"CQWDI,\\\"}/*!sc*/\\n@-webkit-keyframes fadeIn{to{opacity:1;}}/*!sc*/\\n@keyframes fadeIn{to{opacity:1;}}/*!sc*/\\n@-webkit-keyframes scaleIn{from{-webkit-transform:scale(.92);-ms-transform:scale(.92);transform:scale(.92);opacity:0;}}/*!sc*/\\n@keyframes scaleIn{from{-webkit-transform:scale(.92);-ms-transform:scale(.92);transform:scale(.92);opacity:0;}}/*!sc*/\\n[cmdk-bg]{z-index:2147483646;position:fixed;inset:0;background-color:rgb(0 0 0 / 0.4);opacity:0;-webkit-transition:opacity 200ms ease;transition:opacity 200ms ease;pointer-events:none;}/*!sc*/\\n@media (max-width:574px){[cmdk-bg]{background-color:transparent;-webkit-transition-duration:0s;transition-duration:0s;}}/*!sc*/\\n[cmdk-bg][data-open]{opacity:1;}/*!sc*/\\n[cmdk-root]{position:fixed;z-index:2147483647;top:20%;right:0;left:0;margin:8px auto;border-radius:12px;width:96%;max-width:637px;background-color:#fff;box-shadow:0 2px 8px 0 rgb(0 0 0 / .04);overflow:hidden;-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-property:transform,opacity;transition-property:transform,opacity;-webkit-transition-duration:150ms;transition-duration:150ms;-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-animation:scaleIn 150ms ease;animation:scaleIn 150ms ease;}/*!sc*/\\n@media (max-width:574px){[cmdk-root]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;top:0;margin:0;border-radius:0;max-width:100%;height:100%;-webkit-transition-duration:150ms;transition-duration:150ms;-webkit-animation:scaleIn 150ms ease;animation:scaleIn 150ms ease;}}/*!sc*/\\n[cmdk-highlight]{position:absolute;z-index:-1;top:0;left:12px;height:48px;border-radius:8px;width:calc(100% - 24px);background-color:#fafafa;visibility:hidden;-webkit-transition:100ms cubic-bezier(0,0,0.2,1);transition:100ms cubic-bezier(0,0,0.2,1);-webkit-transition-property:-webkit-transform,height;-webkit-transition-property:transform,height;transition-property:transform,height;will-change:transform,height;}/*!sc*/\\n@media (hover:none){[cmdk-highlight]{display:none;}}/*!sc*/\\n[cmdk-input]{margin:0;border-bottom:1px solid #f9f9f9;border-radius:0;padding:12px 40px;font-size:14px;-webkit-letter-spacing:-0.09px;-moz-letter-spacing:-0.09px;-ms-letter-spacing:-0.09px;letter-spacing:-0.09px;width:100%;height:48px;color:#1A1A1A;font-weight:500;text-overflow:ellipsis;}/*!sc*/\\n@media (max-width:574px){[cmdk-input]{padding-right:48px;border-color:#f0f0f0;height:56px;font-size:16px;}}/*!sc*/\\n[cmdk-input]::-webkit-input-placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-input]::-moz-placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-input]:-ms-input-placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-input]::placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-content]{position:relative;-webkit-transition:opacity 400ms ease;transition:opacity 400ms ease;}/*!sc*/\\n@media (max-width:574px){[cmdk-content]{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;overflow:hidden;}}/*!sc*/\\n[cmdk-content][data-loading=\\\"true\\\"]{opacity:0.5;}/*!sc*/\\n[cmdk-content][data-loading=\\\"true\\\"]:before{display:block;}/*!sc*/\\n[cmdk-content]:before{display:none;z-index:2;content:'';position:absolute;inset:0;background:#fff;-webkit-animation:hDLHza 1s infinite ease-in-out;animation:hDLHza 1s infinite ease-in-out;}/*!sc*/\\n[cmdk-list]{position:relative;padding:8px 8px 0;height:373px;box-sizing:content-box;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}/*!sc*/\\n@media (max-width:574px){[cmdk-list]{height:calc(100% - 8px);}}/*!sc*/\\n[cmdk-list-sizer]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}/*!sc*/\\n[cmdk-group]:last-child{padding-bottom:8px;}/*!sc*/\\n[cmdk-group-heading]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 12px;height:32px;font-size:12px;font-weight:500;color:#1A1A1A;}/*!sc*/\\n[cmdk-group-heading] span{display:none;}/*!sc*/\\n[cmdk-item]\"}" } ]
Response:
{
"tools": [
{
"name": "Get Pool Address Provider",
"description": "Retrieves the address of the Pool Addresses Provider contract that this pool is connected to.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Flashloan Premium Total",
"description": "Returns the total premium percentage charged for flashloans in basis points.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Flashloan Premium To Protocol",
"description": "Returns the portion of the flashloan premium that goes to the protocol in basis points.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Maximum Number of Reserves",
"description": "Returns the maximum number of reserve assets that can be supported by this pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Pool Revision",
"description": "Returns the current revision number of the pool implementation.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserve Interest Rate Strategy",
"description": "Returns the address of the interest rate strategy contract used by the pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Umbrella Identifier",
"description": "Returns the identifier bytes32 value for the Umbrella protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Asset Configuration",
"description": "Retrieves the configuration parameters for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query configuration for"
}
},
"required": ["asset"]
}
},
{
"name": "Get EMode Category Borrowable Bitmap",
"description": "Returns the bitmap of assets that can be borrowed in the specified efficiency mode (eMode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the eMode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Collateral Bitmap",
"description": "Returns the bitmap of assets that can be used as collateral in the specified efficiency mode (eMode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the eMode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Collateral Config",
"description": "Retrieves the collateral configuration parameters for a specific efficiency mode (eMode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the eMode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Data",
"description": "Retrieves all configuration data for a specific efficiency mode (eMode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the eMode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Label",
"description": "Returns the descriptive label for a specific efficiency mode (eMode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the eMode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get Borrow Logic Address",
"description": "Returns the address of the contract that implements borrowing logic for the pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get EMode Logic Address",
"description": "Returns the address of the contract that implements efficiency mode (eMode) logic for the pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Flashloan Logic Address",
"description": "Returns the address of the contract that implements flashloan logic for the pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Liquidation Grace Period",
"description": "Returns the grace period (in seconds) before a position can be liquidated for a specific asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to query the liquidation grace period for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Liquidation Logic Address",
"description": "Returns the address of the contract that implements liquidation logic for the pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Pool Logic Address",
"description": "Returns the address of the contract that implements core pool logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserve AToken Address",
"description": "Returns the address of the aToken (interest-bearing token) for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the aToken for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Address By ID",
"description": "Returns the address of a reserve asset by its numeric ID in the pool.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The numeric ID of the reserve in the pool"
}
},
"required": ["id"]
}
},
{
"name": "Get Reserve Data",
"description": "Retrieves comprehensive data about a specific reserve asset in the pool.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query data for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Deficit",
"description": "Returns the current deficit amount for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the deficit for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Normalized Income",
"description": "Returns the normalized income per unit of asset, representing how much the asset has appreciated due to interest.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query normalized income for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Normalized Variable Debt",
"description": "Returns the normalized variable debt per unit of asset, representing how much variable debt has accumulated.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query normalized variable debt for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Variable Debt Token",
"description": "Returns the address of the variable debt token for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the variable debt token for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserves Count",
"description": "Returns the total number of reserve assets currently supported by the pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserves List",
"description": "Returns an array containing the addresses of all reserve assets in the pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Supply Logic Address",
"description": "Returns the address of the contract that implements supply logic for the pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get User Account Data",
"description": "Retrieves comprehensive account data for a specific user, including collateral, debt, and health factor.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query account data for"
}
},
"required": ["user"]
}
},
{
"name": "Get User Configuration",
"description": "Returns the configuration bitmap that shows which assets a user is using as collateral and which they have borrowed.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query configuration for"
}
},
"required": ["user"]
}
},
{
"name": "Get User EMode",
"description": "Returns the efficiency mode (eMode) category ID that a user is currently using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query eMode for"
}
},
"required": ["user"]
}
},
{
"name": "Get Virtual Underlying Balance",
"description": "Returns the virtual balance of the underlying asset in the reserve, which may differ from the actual balance.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the virtual balance for"
}
},
"required": ["asset"]
}
},
{
"name": "Check If Position Manager Is Approved",
"description": "Checks if a specific position manager is approved to manage positions on behalf of a user.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user who may have approved the position manager"
},
"positionManager": {
"type": "string",
"description": "The address of the position manager to check approval for"
}
},
"required": ["user", "positionManager"]
}
}
]
}
Model: claude-3-7-sonnet-202502192025-08-29 16:13:49
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. Each tool should include: name, description, inputSchema (JSON Schema object with meaningful parameter descriptions). For inputSchema properties, generate human-readable descriptions explaining what each parameter does, not just the Solidity type. Example: instead of \"uint256\" use \"Amount of tokens to transfer\", instead of \"address\" use \"Recipient wallet address\". Include ONLY read-only functions (stateMutability view or pure). Exclude nonpayable and payable functions entirely. Generate descriptive tool names and descriptions based on function purpose. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\",\"docsUrl\":\"https://aave.com/docs/developers/smart-contracts/l2-pool\",\"docs\":\"<!DOCTYPE html><html><head><meta charSet=\\\"utf-8\\\"/><meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1, maximum-scale=1\\\"/><meta name=\\\"msapplication-navbutton-color\\\" content=\\\"#ffffff\\\"/><meta name=\\\"apple-mobile-web-app-status-bar-style\\\" content=\\\"#ffffff\\\"/><title>L2 Pool | Aave Protocol Documentation</title><meta name=\\\"description\\\" content=\\\"Understanding the L2Pool smart contract in Aave Protocol.\\\"/><meta name=\\\"msapplication-TileColor\\\" content=\\\"#FFFFFF\\\"/><meta name=\\\"theme-color\\\" content=\\\"#FFFFFF\\\"/><meta property=\\\"og:title\\\" content=\\\"L2 Pool\\\"/><meta property=\\\"og:description\\\" content=\\\"Understanding the L2Pool smart contract in Aave Protocol.\\\"/><meta property=\\\"og:site_name\\\" content=\\\"Docs\\\"/><meta property=\\\"og:url\\\" content=\\\"https://docs-aave.vercel.app/docs/developers/smart-contracts/l2-pool\\\"/><meta property=\\\"og:type\\\" content=\\\"website\\\"/><meta property=\\\"og:image\\\" content=\\\"https://docs-aave.vercel.app/docs/api/og?slug=developerssmart-contractsl2-pool\\\"/><meta property=\\\"og:image:width\\\" content=\\\"1080\\\"/><meta property=\\\"og:image:height\\\" content=\\\"570\\\"/><meta name=\\\"twitter:domain\\\" content=\\\"https://docs-aave.vercel.app/docs\\\"/><meta name=\\\"twitter:card\\\" content=\\\"summary_large_image\\\"/><meta name=\\\"twitter:site\\\" content=\\\"@Aave\\\"/><meta name=\\\"twitter:creator\\\" content=\\\"@Aave\\\"/><meta name=\\\"twitter:title\\\" content=\\\"L2 Pool\\\"/><meta name=\\\"twitter:description\\\" content=\\\"Understanding the L2Pool smart contract in Aave Protocol.\\\"/><meta name=\\\"twitter:url\\\" content=\\\"https://docs-aave.vercel.app/docs/developers/smart-contracts/l2-pool\\\"/><meta property=\\\"twitter:image\\\" content=\\\"https://docs-aave.vercel.app/docs/api/og?slug=developerssmart-contractsl2-pool\\\"/><meta name=\\\"next-head-count\\\" content=\\\"24\\\"/><script defer=\\\"\\\" data-domain=\\\"docs.aave.com\\\" src=\\\"https://plausible.io/js/script.js\\\"></script><link rel=\\\"icon\\\" href=\\\"/docs/favicon.png\\\"/><link rel=\\\"preconnect\\\" href=\\\"https://fonts.googleapis.com\\\"/><link rel=\\\"preconnect\\\" href=\\\"https://fonts.gstatic.com\\\" crossorigin=\\\"\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/InterVariable.woff2\\\" type=\\\"font/woff2\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/FTRegolaNeue-Medium.otf\\\" type=\\\"font/otf\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/FTRegolaNeue-Semibold.otf\\\" type=\\\"font/otf\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"preload\\\" as=\\\"font\\\" href=\\\"/docs/fonts/RobotoMono-Regular.ttf\\\" type=\\\"font/ttf\\\" crossorigin=\\\"anonymous\\\"/><link rel=\\\"stylesheet\\\" href=\\\"https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css\\\" integrity=\\\"sha384-Xi8rHCmBmhbuyyhbI88391ZKP2dmfnOl4rT9ZfRI7mLTdk1wblIUnrIq35nqwEvC\\\" crossorigin=\\\"anonymous\\\"/><style>\\n :root{\\n // --scrollbar-width:var(--ck-scrollbar-width);\\n }\\n \\n #__ROOT_PORTAL__ .bg{\\n background:rgba(31, 26, 20, 0.4);\\n }\\n\\n /* Toast */\\n #__ROOT_PORTAL__ > div > div > div > span[fontSize=\\\"14\\\"] > strong {\\n font-weight: 550 !important;\\n color: #1a1a1a !important;\\n }\\n \\n @font-face {\\n font-family: \\\"Inter\\\";\\n src: url(\\\"/docs/fonts/InterVariable.woff2\\\") format(\\\"woff2-variations\\\");\\n font-weight: 100 900;\\n font-display: swap;\\n }\\n\\n @font-face {\\n font-family: \\\"FT Regola Neue\\\";\\n src: url(\\\"/docs/fonts/FTRegolaNeue-Medium.otf\\\") format(\\\"opentype\\\");\\n font-weight: 500;\\n font-display: swap;\\n }\\n\\n @font-face {\\n font-family: \\\"FT Regola Neue\\\";\\n src: url(\\\"/docs/fonts/FTRegolaNeue-Semibold.otf\\\") format(\\\"opentype\\\");\\n font-weight: 600;\\n font-display: swap;\\n }\\n\\n @font-face {\\n font-family: \\\"Roboto Mono\\\";\\n src: url(\\\"/docs/fonts/RobotoMono-Regular.ttf\\\") format(\\\"truetype\\\");\\n font-weight: 400;\\n font-display: swap;\\n }\\n </style><link rel=\\\"preload\\\" href=\\\"/docs/_next/static/css/d2ff4e7e3712d099.css\\\" as=\\\"style\\\"/><link rel=\\\"stylesheet\\\" href=\\\"/docs/_next/static/css/d2ff4e7e3712d099.css\\\" data-n-g=\\\"\\\"/><link rel=\\\"preload\\\" href=\\\"/docs/_next/static/css/fe46e38e136edcb4.css\\\" as=\\\"style\\\"/><link rel=\\\"stylesheet\\\" href=\\\"/docs/_next/static/css/fe46e38e136edcb4.css\\\" data-n-p=\\\"\\\"/><noscript data-n-css=\\\"\\\"></noscript><script defer=\\\"\\\" nomodule=\\\"\\\" src=\\\"/docs/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js\\\"></script><script src=\\\"/docs/_next/static/chunks/webpack-714653dde7a51eea.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/framework-d726d6d8b7df724b.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/main-dcbdf8f264a59c46.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/pages/_app-09defa2aeea42bd6.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/7857be50-52b43fc17bbb5747.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/4090-4ce46d759742ef02.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/6739-0cd86c846c7a0bce.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/chunks/pages/developers/smart-contracts/l2-pool-377378d24f01b372.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/JBo6QGVdRZAk96tG7V5Gn/_buildManifest.js\\\" defer=\\\"\\\"></script><script src=\\\"/docs/_next/static/JBo6QGVdRZAk96tG7V5Gn/_ssgManifest.js\\\" defer=\\\"\\\"></script><style data-styled=\\\"\\\" data-styled-version=\\\"5.3.11\\\">.gJAfGz{display:block;font-size:14px;line-height:22px;}/*!sc*/\\n.gJAfGz::before{content:'';margin-bottom:-0.4512em;display:table;}/*!sc*/\\n.gJAfGz::after{content:'';margin-top:-0.4122em;display:table;}/*!sc*/\\n.brTrVz{display:block;}/*!sc*/\\n.cqzZa-D{display:block;font-size:18px;line-height:21.48px;font-weight:600;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";-webkit-letter-spacing:-0.33px;-moz-letter-spacing:-0.33px;-ms-letter-spacing:-0.33px;letter-spacing:-0.33px;font-size:20px;line-height:22.67px;font-weight:600;}/*!sc*/\\n.cqzZa-D::before{content:'';margin-bottom:-0.2622em;display:table;}/*!sc*/\\n.cqzZa-D::after{content:'';margin-top:-0.2231em;display:table;}/*!sc*/\\n.cqzZa-D::before{content:'';margin-bottom:-0.2323em;display:table;}/*!sc*/\\n.cqzZa-D::after{content:'';margin-top:-0.1932em;display:table;}/*!sc*/\\n.gLzrMZ{display:block;font-size:16px;line-height:19px;font-weight:600;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";-webkit-letter-spacing:-0.18px;-moz-letter-spacing:-0.18px;-ms-letter-spacing:-0.18px;letter-spacing:-0.18px;font-size:16px;line-height:22.67px;font-weight:600;}/*!sc*/\\n.gLzrMZ::before{content:'';margin-bottom:-0.2593em;display:table;}/*!sc*/\\n.gLzrMZ::after{content:'';margin-top:-0.2202em;display:table;}/*!sc*/\\n.gLzrMZ::before{content:'';margin-bottom:-0.374em;display:table;}/*!sc*/\\n.gLzrMZ::after{content:'';margin-top:-0.3349em;display:table;}/*!sc*/\\n.ixFGtv{display:block;font-size:15px;line-height:18px;font-weight:500;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";-webkit-letter-spacing:-0.09px;-moz-letter-spacing:-0.09px;-ms-letter-spacing:-0.09px;letter-spacing:-0.09px;font-size:16px;line-height:22.67px;font-weight:500;}/*!sc*/\\n.ixFGtv::before{content:'';margin-bottom:-0.2655em;display:table;}/*!sc*/\\n.ixFGtv::after{content:'';margin-top:-0.2265em;display:table;}/*!sc*/\\n.ixFGtv::before{content:'';margin-bottom:-0.374em;display:table;}/*!sc*/\\n.ixFGtv::after{content:'';margin-top:-0.3349em;display:table;}/*!sc*/\\ndata-styled.g1[id=\\\"sc-aXZVg\\\"]{content:\\\"gJAfGz,brTrVz,cqzZa-D,gLzrMZ,ixFGtv,\\\"}/*!sc*/\\n.fDzIsf{position:relative;width:100%;}/*!sc*/\\ndata-styled.g2[id=\\\"sc-gEvEer\\\"]{content:\\\"fDzIsf,\\\"}/*!sc*/\\n.iqfBFi{display:block;position:relative;width:100%;max-width:100%;overflow-x:auto;}/*!sc*/\\n.iqfBFi strong,.iqfBFi code{color:#201D1D;}/*!sc*/\\n.iqfBFi code{font-weight:600;}/*!sc*/\\n.iqfBFi table{border-radius:2px;overflow:hidden;display:table;margin:0 auto;border-spacing:0;border-collapse:collapse;width:100%;text-align:left;}/*!sc*/\\n.iqfBFi table tr th,.iqfBFi table tr td{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:1px;white-space:nowrap;padding:0 8px;}/*!sc*/\\n.iqfBFi table thead{text-align:left;color:#201D1D;border-bottom:1px solid #e4e8ed;}/*!sc*/\\n.iqfBFi table thead tr th{font-weight:400;padding-top:16px;padding-bottom:16px;background:#fff;}/*!sc*/\\n.iqfBFi table tfoot{text-align:left;font-weight:400;}/*!sc*/\\n.iqfBFi table tfoot tr th{padding-top:16px;padding-bottom:16px;}/*!sc*/\\n.iqfBFi table tbody{color:#8F8E8E;}/*!sc*/\\n.iqfBFi table tbody tr{line-height:1;border-bottom:1px solid #e4e8ed;}/*!sc*/\\n.iqfBFi table tbody tr:nth-child(even){background:#fcfcfd;}/*!sc*/\\n.iqfBFi table tbody tr td{padding-top:16px;padding-bottom:16px;white-space:break-spaces;}/*!sc*/\\n.iqfBFi table tbody tr td:first-child,.iqfBFi table tbody tr td:last-child{white-space:nowrap;}/*!sc*/\\ndata-styled.g64[id=\\\"sc-bypJrT\\\"]{content:\\\"iqfBFi,\\\"}/*!sc*/\\n.kGGtlD{display:inline-block;vertical-align:text-top;max-width:100%;position:relative;font-size:0.9375em;line-height:1.2;margin:0;padding:1px 4px 1px 3px;overflow:hidden;border-radius:4px;font-family:\\\"Roboto Mono\\\",SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier,monospace;color:#474645;background:#FAFAFA;box-shadow:inset 0 0 0 1px #E8E8E8;}/*!sc*/\\ndata-styled.g115[id=\\\"sc-hHOBiw\\\"]{content:\\\"kGGtlD,\\\"}/*!sc*/\\n.jRyHdr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;}/*!sc*/\\n.jRyHdr > hr{margin:16px 0 48px;}/*!sc*/\\n.jRyHdr > .sc-eqUAAy{padding-bottom:24px;}/*!sc*/\\n.jRyHdr > .sc-gEvEer{padding-bottom:24px;}/*!sc*/\\n.jRyHdr > .sc-aXZVg{padding-bottom:32px;}/*!sc*/\\n.jRyHdr > .sc-aXZVg + .sc-aXZVg{margin-top:-8px;}/*!sc*/\\n.jRyHdr > .sc-kqGoIF,.jRyHdr > .sc-tagGq,.jRyHdr > .sc-bypJrT{margin-bottom:48px;}/*!sc*/\\n.jRyHdr > .sc-kqGoIF + .sc-tagGq{margin-top:-24px;}/*!sc*/\\n.jRyHdr > .sc-kqGoIF + .sc-kqGoIF,.jRyHdr > .sc-tagGq + .sc-tagGq,.jRyHdr > .sc-bypJrT + .sc-bypJrT{margin-top:-32px;}/*!sc*/\\n.jRyHdr > .sc-tagGq + .sc-aXZVg{margin-top:-18px;}/*!sc*/\\n.jRyHdr > hr + section{margin-top:0;margin-top:14px;}/*!sc*/\\ndata-styled.g193[id=\\\"sc-gweoQa\\\"]{content:\\\"jRyHdr,\\\"}/*!sc*/\\n:root{--color-anchor:#6187FE;--color-primary:#343433;--color-text:#343433;--color-border:#E8E8E8;--color-valid:#00C454;--background-valid:rgba(0,196,84,0.1);--color-invalid:#FF4E4E;--background-invalid:#fff0f0;--color-warning:#F6C30F;--background-warning:#fefae6;}/*!sc*/\\n*{outline:0;padding:0;margin:0;border:0;box-sizing:border-box;}/*!sc*/\\n*::-webkit-scrollbar{width:6px;height:6px;}/*!sc*/\\n*::-webkit-scrollbar-track{background:transparent;}/*!sc*/\\n*::-webkit-scrollbar-thumb{background:rgba(0,0,0,0);border-radius:100px;}/*!sc*/\\n*:hover::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.15);}/*!sc*/\\n*::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,0.25);}/*!sc*/\\nhtml,html body{min-height:100%;}/*!sc*/\\nhtml{color:#8F8E8E;background:#fff;-webkit-scroll-padding-top:128px;-moz-scroll-padding-top:128px;-ms-scroll-padding-top:128px;scroll-padding-top:128px;}/*!sc*/\\nbody{overflow-x:hidden;overflow-y:scroll;padding-right:var(--scrollbar-width);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";font-display:auto;font-weight:400;font-size:16px;}/*!sc*/\\nsection,article{width:100%;}/*!sc*/\\ninput[type=text],input,input[type=button],button,textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;-moz-appearance:none;-webkit-appearance:none;}/*!sc*/\\ninput,select,textarea,button{font-family:\\\"Inter\\\",-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Helvetica,\\\"Apple Color Emoji\\\",Arial,sans-serif,\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";}/*!sc*/\\na{display:inline;cursor:pointer;-webkit-text-decoration:none;text-decoration:none;position:relative;color:inherit;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;font-weight:500;}/*!sc*/\\np a{position:relative;color:inherit;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/\\nh1,h2,h3,h4,h5,h6{color:#201D1D;-webkit-text-stroke:0.001px transparent;}/*!sc*/\\nstrong{font-weight:600;}/*!sc*/\\nimg,svg{display:inline-block;max-width:100%;height:auto;}/*!sc*/\\ncode{font-family:\\\"Roboto Mono\\\",SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier,monospace;}/*!sc*/\\n.container{position:relative;margin:0 auto;width:100%;max-width:calc(1008px + 2rem);padding:0 1rem;}/*!sc*/\\nhr{margin:0;width:100%;height:1px;background:#EDEDED;}/*!sc*/\\n@-webkit-keyframes hr{from{background-position:0 0;}to{background-position:100% 0;}}/*!sc*/\\n@keyframes hr{from{background-position:0 0;}to{background-position:100% 0;}}/*!sc*/\\nhr.dashed,article hr{background:linear-gradient(90deg,#E4E8ED,#E4E8ED 50%,transparent 50%,transparent 100%);background-size:6px 1px;-webkit-animation:hr 120s linear infinite forwards;animation:hr 120s linear infinite forwards;}/*!sc*/\\n[data-rmiz-wrap=\\\"visible\\\"],[data-rmiz-wrap=\\\"hidden\\\"]{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/\\n[data-rmiz-wrap=\\\"hidden\\\"]{visibility:hidden;}/*!sc*/\\n[data-rmiz-overlay]{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-webkit-transition-property:background-color;transition-property:background-color;}/*!sc*/\\n[data-rmiz-btn-open],[data-rmiz-btn-close]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;border:none;border-radius:0;font:inherit;color:inherit;background:none;-webkit-appearance:none;-moz-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;}/*!sc*/\\n[data-rmiz-btn-open]{cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in;}/*!sc*/\\n[data-rmiz-btn-close]{cursor:-webkit-zoom-out;cursor:-moz-zoom-out;cursor:zoom-out;}/*!sc*/\\n[data-rmiz-modal-content]{position:absolute;-webkit-transition-property:-webkit-transform;-webkit-transition-property:transform;transition-property:transform;-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;}/*!sc*/\\ndata-styled.g198[id=\\\"sc-global-eKEVfJ1\\\"]{content:\\\"sc-global-eKEVfJ1,\\\"}/*!sc*/\\n.CQWDI{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;gap:8px;position:relative;border-radius:5rem;padding:0 14px;height:2rem;background:#1a1a1a;font-weight:500;font-size:14px;-webkit-letter-spacing:-0.13px;-moz-letter-spacing:-0.13px;-ms-letter-spacing:-0.13px;letter-spacing:-0.13px;color:#fff;-webkit-transition:opacity 0.15s ease;transition:opacity 0.15s ease;cursor:pointer;background:#1a1a1a;}/*!sc*/\\n.CQWDI:disabled{pointer-events:none;opacity:0.5;}/*!sc*/\\n.CQWDI:hover{opacity:0.8;}/*!sc*/\\ndata-styled.g230[id=\\\"Button__Container-sc-2vskfl-0\\\"]{content:\\\"CQWDI,\\\"}/*!sc*/\\n@-webkit-keyframes fadeIn{to{opacity:1;}}/*!sc*/\\n@keyframes fadeIn{to{opacity:1;}}/*!sc*/\\n@-webkit-keyframes scaleIn{from{-webkit-transform:scale(.92);-ms-transform:scale(.92);transform:scale(.92);opacity:0;}}/*!sc*/\\n@keyframes scaleIn{from{-webkit-transform:scale(.92);-ms-transform:scale(.92);transform:scale(.92);opacity:0;}}/*!sc*/\\n[cmdk-bg]{z-index:2147483646;position:fixed;inset:0;background-color:rgb(0 0 0 / 0.4);opacity:0;-webkit-transition:opacity 200ms ease;transition:opacity 200ms ease;pointer-events:none;}/*!sc*/\\n@media (max-width:574px){[cmdk-bg]{background-color:transparent;-webkit-transition-duration:0s;transition-duration:0s;}}/*!sc*/\\n[cmdk-bg][data-open]{opacity:1;}/*!sc*/\\n[cmdk-root]{position:fixed;z-index:2147483647;top:20%;right:0;left:0;margin:8px auto;border-radius:12px;width:96%;max-width:637px;background-color:#fff;box-shadow:0 2px 8px 0 rgb(0 0 0 / .04);overflow:hidden;-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-property:transform,opacity;transition-property:transform,opacity;-webkit-transition-duration:150ms;transition-duration:150ms;-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-animation:scaleIn 150ms ease;animation:scaleIn 150ms ease;}/*!sc*/\\n@media (max-width:574px){[cmdk-root]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;top:0;margin:0;border-radius:0;max-width:100%;height:100%;-webkit-transition-duration:150ms;transition-duration:150ms;-webkit-animation:scaleIn 150ms ease;animation:scaleIn 150ms ease;}}/*!sc*/\\n[cmdk-highlight]{position:absolute;z-index:-1;top:0;left:12px;height:48px;border-radius:8px;width:calc(100% - 24px);background-color:#fafafa;visibility:hidden;-webkit-transition:100ms cubic-bezier(0,0,0.2,1);transition:100ms cubic-bezier(0,0,0.2,1);-webkit-transition-property:-webkit-transform,height;-webkit-transition-property:transform,height;transition-property:transform,height;will-change:transform,height;}/*!sc*/\\n@media (hover:none){[cmdk-highlight]{display:none;}}/*!sc*/\\n[cmdk-input]{margin:0;border-bottom:1px solid #f9f9f9;border-radius:0;padding:12px 40px;font-size:14px;-webkit-letter-spacing:-0.09px;-moz-letter-spacing:-0.09px;-ms-letter-spacing:-0.09px;letter-spacing:-0.09px;width:100%;height:48px;color:#1A1A1A;font-weight:500;text-overflow:ellipsis;}/*!sc*/\\n@media (max-width:574px){[cmdk-input]{padding-right:48px;border-color:#f0f0f0;height:56px;font-size:16px;}}/*!sc*/\\n[cmdk-input]::-webkit-input-placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-input]::-moz-placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-input]:-ms-input-placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-input]::placeholder{color:#c3c3c3;}/*!sc*/\\n[cmdk-content]{position:relative;-webkit-transition:opacity 400ms ease;transition:opacity 400ms ease;}/*!sc*/\\n@media (max-width:574px){[cmdk-content]{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;overflow:hidden;}}/*!sc*/\\n[cmdk-content][data-loading=\\\"true\\\"]{opacity:0.5;}/*!sc*/\\n[cmdk-content][data-loading=\\\"true\\\"]:before{display:block;}/*!sc*/\\n[cmdk-content]:before{display:none;z-index:2;content:'';position:absolute;inset:0;background:#fff;-webkit-animation:hDLHza 1s infinite ease-in-out;animation:hDLHza 1s infinite ease-in-out;}/*!sc*/\\n[cmdk-list]{position:relative;padding:8px 8px 0;height:373px;box-sizing:content-box;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}/*!sc*/\\n@media (max-width:574px){[cmdk-list]{height:calc(100% - 8px);}}/*!sc*/\\n[cmdk-list-sizer]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}/*!sc*/\\n[cmdk-group]:last-child{padding-bottom:8px;}/*!sc*/\\n[cmdk-group-heading]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 12px;height:32px;font-size:12px;font-weight:500;color:#1A1A1A;}/*!sc*/\\n[cmdk-group-heading] span{display:none;}/*!sc*/\\n[cmdk-item]\"}" } ]
Response:
```json
{
"tools": [
{
"name": "Get Pool Address Provider",
"description": "Retrieves the address of the Pool Addresses Provider contract that this pool is connected to.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Flash Loan Premium",
"description": "Returns the total flash loan premium percentage charged on flash loans.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Flash Loan Protocol Premium",
"description": "Returns the portion of the flash loan premium that goes to the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Maximum Number of Reserves",
"description": "Returns the maximum number of reserve assets that can be supported by the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Pool Revision",
"description": "Returns the current revision number of the Pool contract implementation.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserve Interest Rate Strategy",
"description": "Returns the address of the interest rate strategy contract used by the pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Umbrella Identifier",
"description": "Returns the identifier bytes32 value for the Umbrella protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Check Position Manager Approval",
"description": "Checks if a specific position manager is approved for a user's account.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user whose approval status is being checked"
},
"positionManager": {
"type": "string",
"description": "The address of the position manager to check approval for"
}
},
"required": ["user", "positionManager"]
}
},
{
"name": "Get Reserve Configuration",
"description": "Retrieves the configuration parameters for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get configuration for"
}
},
"required": ["asset"]
}
},
{
"name": "Get EMode Category Borrowable Bitmap",
"description": "Returns the bitmap of assets that can be borrowed in a specific efficiency mode (eMode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the eMode category"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Collateral Bitmap",
"description": "Returns the bitmap of assets that can be used as collateral in a specific efficiency mode (eMode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the eMode category"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Collateral Config",
"description": "Returns the collateral configuration parameters for a specific efficiency mode (eMode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the eMode category"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Data",
"description": "Returns all configuration data for a specific efficiency mode (eMode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the eMode category"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Label",
"description": "Returns the descriptive label for a specific efficiency mode (eMode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the eMode category"
}
},
"required": ["id"]
}
},
{
"name": "Get Liquidation Grace Period",
"description": "Returns the grace period before liquidation can occur for a specific asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to check the liquidation grace period for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve AToken",
"description": "Returns the address of the aToken (interest-bearing token) for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Address By ID",
"description": "Returns the address of a reserve asset by its ID in the protocol.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the reserve in the protocol"
}
},
"required": ["id"]
}
},
{
"name": "Get Reserve Data",
"description": "Returns comprehensive data about a specific reserve asset including rates, indexes, and configuration.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to get data for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Deficit",
"description": "Returns the current deficit amount for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to check deficit for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Normalized Income",
"description": "Returns the normalized income per unit of asset, representing how much the liquidity index has increased over time.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Normalized Variable Debt",
"description": "Returns the normalized variable debt per unit of asset, representing how much the variable debt index has increased over time.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Variable Debt Token",
"description": "Returns the address of the variable debt token for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserves Count",
"description": "Returns the total number of reserve assets currently supported by the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserves List",
"description": "Returns an array of addresses for all reserve assets currently supported by the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get User Account Data",
"description": "Returns comprehensive data about a user's account including collateral, debt, borrowing power, and health factor.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get account data for"
}
},
"required": ["user"]
}
},
{
"name": "Get User Configuration",
"description": "Returns the configuration of a user's positions, showing which assets they are using as collateral or borrowing.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to get configuration for"
}
},
"required": ["user"]
}
},
{
"name": "Get User EMode",
"description": "Returns the efficiency mode (eMode) category ID that a user is currently using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to check eMode for"
}
},
"required": ["user"]
}
},
{
"name": "Get Virtual Underlying Balance",
"description": "Returns the virtual balance of the underlying asset in the reserve, which may differ from the actual balance.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset"
}
},
"required": ["asset"]
}
}
]
}
```
Model: claude-3-7-sonnet-202502192025-08-29 16:08:40
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. Each tool should include: name, description, inputSchema (JSON Schema object with meaningful parameter descriptions). For inputSchema properties, generate human-readable descriptions explaining what each parameter does, not just the Solidity type. Example: instead of \"uint256\" use \"Amount of tokens to transfer\", instead of \"address\" use \"Recipient wallet address\". Include ONLY read-only functions (stateMutability view or pure). Exclude nonpayable and payable functions entirely. Generate descriptive tool names and descriptions based on function purpose. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\"}" } ]
Response:
{
"tools": [
{
"name": "Get Pool Address Provider",
"description": "Retrieves the address of the Pool Addresses Provider contract that this pool is connected to.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Flash Loan Premium",
"description": "Returns the total flash loan premium percentage charged on flash loans.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Flash Loan Protocol Premium",
"description": "Returns the portion of the flash loan premium that goes to the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Maximum Number of Reserves",
"description": "Returns the maximum number of reserve assets that can be supported by the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Pool Revision",
"description": "Returns the current revision version of the pool contract.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserve Interest Rate Strategy",
"description": "Returns the address of the interest rate strategy contract used by the pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Umbrella Identifier",
"description": "Returns the identifier bytes32 value for the Umbrella protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Borrow Logic Address",
"description": "Returns the address of the contract that implements borrowing logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserve Configuration",
"description": "Retrieves the configuration parameters for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query configuration for"
}
},
"required": ["asset"]
}
},
{
"name": "Get EMode Category Borrowable Bitmap",
"description": "Returns the bitmap of assets that can be borrowed in the specified efficiency mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the efficiency mode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Collateral Bitmap",
"description": "Returns the bitmap of assets that can be used as collateral in the specified efficiency mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the efficiency mode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Collateral Config",
"description": "Returns the collateral configuration parameters for a specific efficiency mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the efficiency mode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Data",
"description": "Returns all configuration data for a specific efficiency mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the efficiency mode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Label",
"description": "Returns the descriptive label for a specific efficiency mode category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the efficiency mode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Logic Address",
"description": "Returns the address of the contract that implements efficiency mode logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Flash Loan Logic Address",
"description": "Returns the address of the contract that implements flash loan logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Liquidation Grace Period",
"description": "Returns the grace period before liquidation can occur for a specific asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to query the liquidation grace period for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Liquidation Logic Address",
"description": "Returns the address of the contract that implements liquidation logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Pool Logic Address",
"description": "Returns the address of the contract that implements core pool logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserve AToken",
"description": "Returns the address of the aToken (interest-bearing token) for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the aToken for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Address By Id",
"description": "Returns the address of a reserve asset by its numeric ID in the protocol.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The numeric ID of the reserve asset in the protocol"
}
},
"required": ["id"]
}
},
{
"name": "Get Reserve Data",
"description": "Returns comprehensive data about a specific reserve asset including rates, indexes, and token addresses.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query data for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Deficit",
"description": "Returns the current deficit amount for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the deficit for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Normalized Income",
"description": "Returns the normalized income per unit of asset, representing how much the liquidity index has increased over time.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query normalized income for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Normalized Variable Debt",
"description": "Returns the normalized variable debt per unit of asset, representing how much the variable debt index has increased over time.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query normalized variable debt for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Variable Debt Token",
"description": "Returns the address of the variable debt token for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the variable debt token for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserves Count",
"description": "Returns the total number of reserve assets currently supported by the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserves List",
"description": "Returns an array of addresses for all reserve assets currently supported by the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Supply Logic Address",
"description": "Returns the address of the contract that implements supply logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get User Account Data",
"description": "Returns aggregated data about a user's positions including total collateral, debt, available borrows, and health factor.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query account data for"
}
},
"required": ["user"]
}
},
{
"name": "Get User Configuration",
"description": "Returns the configuration bitmap that represents which assets a user is using as collateral and which they have borrowed.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query configuration for"
}
},
"required": ["user"]
}
},
{
"name": "Get User EMode",
"description": "Returns the efficiency mode (E-Mode) category ID that a user is currently using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query E-Mode for"
}
},
"required": ["user"]
}
},
{
"name": "Get Virtual Underlying Balance",
"description": "Returns the virtual balance of the underlying asset in the reserve.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the virtual underlying balance for"
}
},
"required": ["asset"]
}
},
{
"name": "Check Approved Position Manager",
"description": "Checks if a specific position manager is approved for a user.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to check position manager approval for"
},
"positionManager": {
"type": "string",
"description": "The address of the position manager to check approval status for"
}
},
"required": ["user", "positionManager"]
}
}
]
}
Model: claude-3-7-sonnet-202502192025-08-29 16:03:26
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. Each tool should include: name, description, inputSchema (JSON Schema object with meaningful parameter descriptions). For inputSchema properties, generate human-readable descriptions explaining what each parameter does, not just the Solidity type. Example: instead of \"uint256\" use \"Amount of tokens to transfer\", instead of \"address\" use \"Recipient wallet address\". Include ONLY read-only functions (stateMutability view or pure). Exclude nonpayable and payable functions entirely. Generate descriptive tool names and descriptions based on function purpose. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\"}" } ]
Response:
{
"tools": [
{
"name": "Get Pool Address Provider",
"description": "Retrieves the address of the Pool Addresses Provider contract that this pool is connected to.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Flash Loan Premium",
"description": "Returns the total flash loan premium percentage charged on flash loans.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Flash Loan Protocol Premium",
"description": "Returns the portion of the flash loan premium that goes to the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Maximum Number of Reserves",
"description": "Returns the maximum number of reserve assets that can be supported by the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Pool Revision",
"description": "Returns the current revision version of the pool contract.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserve Interest Rate Strategy",
"description": "Returns the address of the interest rate strategy contract used by the pool.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Umbrella Identifier",
"description": "Returns the identifier for the Umbrella protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Borrow Logic Address",
"description": "Returns the address of the contract that implements borrowing logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserve Configuration",
"description": "Retrieves the configuration parameters for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query configuration for"
}
},
"required": ["asset"]
}
},
{
"name": "Get EMode Category Borrowable Bitmap",
"description": "Returns the bitmap of assets that can be borrowed in a specific efficiency mode (E-Mode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Collateral Bitmap",
"description": "Returns the bitmap of assets that can be used as collateral in a specific efficiency mode (E-Mode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Collateral Config",
"description": "Retrieves the collateral configuration parameters for a specific efficiency mode (E-Mode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Data",
"description": "Retrieves all configuration data for a specific efficiency mode (E-Mode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Category Label",
"description": "Returns the descriptive label for a specific efficiency mode (E-Mode) category.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the E-Mode category to query"
}
},
"required": ["id"]
}
},
{
"name": "Get EMode Logic Address",
"description": "Returns the address of the contract that implements E-Mode logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Flash Loan Logic Address",
"description": "Returns the address of the contract that implements flash loan logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Liquidation Grace Period",
"description": "Returns the grace period for liquidations for a specific asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the asset to query the liquidation grace period for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Liquidation Logic Address",
"description": "Returns the address of the contract that implements liquidation logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Pool Logic Address",
"description": "Returns the address of the contract that implements core pool logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserve AToken",
"description": "Returns the address of the aToken (interest-bearing token) for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the aToken for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Address By ID",
"description": "Returns the address of a reserve asset by its ID in the protocol.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the reserve asset to query"
}
},
"required": ["id"]
}
},
{
"name": "Get Reserve Data",
"description": "Retrieves comprehensive data about a specific reserve asset, including rates, indexes, and token addresses.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query data for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Deficit",
"description": "Returns the current deficit amount for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the deficit for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Normalized Income",
"description": "Returns the normalized income per unit of asset, representing how much the liquidity index has increased over time.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the normalized income for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Normalized Variable Debt",
"description": "Returns the normalized variable debt per unit of asset, representing how much the variable debt index has increased over time.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the normalized variable debt for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserve Variable Debt Token",
"description": "Returns the address of the variable debt token for a specific reserve asset.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the variable debt token for"
}
},
"required": ["asset"]
}
},
{
"name": "Get Reserves Count",
"description": "Returns the total number of reserve assets currently supported by the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Reserves List",
"description": "Returns a list of all reserve asset addresses currently supported by the protocol.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get Supply Logic Address",
"description": "Returns the address of the contract that implements supply logic.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Get User Account Data",
"description": "Retrieves comprehensive account data for a user, including collateral, debt, borrowing power, and health factor.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query account data for"
}
},
"required": ["user"]
}
},
{
"name": "Get User Configuration",
"description": "Returns the configuration of a user's positions, showing which assets they are using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query configuration for"
}
},
"required": ["user"]
}
},
{
"name": "Get User EMode",
"description": "Returns the efficiency mode (E-Mode) category that a user is currently using.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to query E-Mode for"
}
},
"required": ["user"]
}
},
{
"name": "Get Virtual Underlying Balance",
"description": "Returns the virtual balance of the underlying asset in the reserve.",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The address of the reserve asset to query the virtual underlying balance for"
}
},
"required": ["asset"]
}
},
{
"name": "Check Approved Position Manager",
"description": "Checks if a position manager is approved for a specific user.",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The address of the user to check approval for"
},
"positionManager": {
"type": "string",
"description": "The address of the position manager to check if approved"
}
},
"required": ["user", "positionManager"]
}
}
]
}
Model: claude-3-7-sonnet-202502192025-08-29 15:53:09
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. Each tool should include: name, description, inputSchema (JSON Schema object with meaningful parameter descriptions). For inputSchema properties, generate human-readable descriptions explaining what each parameter does, not just the Solidity type. Example: instead of \"uint256\" use \"Amount of tokens to transfer\", instead of \"address\" use \"Recipient wallet address\". Generate descriptive tool names and descriptions based on function purpose. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\"}" } ]
Response:
```json
{
"tools": [
{
"name": "Supply Assets",
"description": "Supply tokens to the lending pool as collateral or for earning interest",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Token address you want to supply to the lending pool"
},
"amount": {
"type": "string",
"description": "Amount of tokens to supply (in wei)"
},
"onBehalfOf": {
"type": "string",
"description": "Address that will receive the aTokens (usually your address)"
},
"referralCode": {
"type": "integer",
"description": "Referral code for the transaction (use 0 if none)"
}
},
"required": ["asset", "amount", "onBehalfOf", "referralCode"]
}
},
{
"name": "Withdraw Assets",
"description": "Withdraw previously supplied tokens from the lending pool",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Token address you want to withdraw from the lending pool"
},
"amount": {
"type": "string",
"description": "Amount of tokens to withdraw (in wei)"
},
"to": {
"type": "string",
"description": "Address that will receive the withdrawn tokens"
}
},
"required": ["asset", "amount", "to"]
}
},
{
"name": "Borrow Assets",
"description": "Borrow tokens from the lending pool using your supplied assets as collateral",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Token address you want to borrow from the lending pool"
},
"amount": {
"type": "string",
"description": "Amount of tokens to borrow (in wei)"
},
"interestRateMode": {
"type": "integer",
"description": "Interest rate mode: 1 for stable, 2 for variable"
},
"referralCode": {
"type": "integer",
"description": "Referral code for the transaction (use 0 if none)"
},
"onBehalfOf": {
"type": "string",
"description": "Address that will incur the debt (usually your address)"
}
},
"required": ["asset", "amount", "interestRateMode", "referralCode", "onBehalfOf"]
}
},
{
"name": "Repay Loan",
"description": "Repay borrowed tokens to the lending pool",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Token address of the debt you want to repay"
},
"amount": {
"type": "string",
"description": "Amount of tokens to repay (in wei, use MAX_UINT256 for full debt)"
},
"interestRateMode": {
"type": "integer",
"description": "Interest rate mode of the debt: 1 for stable, 2 for variable"
},
"onBehalfOf": {
"type": "string",
"description": "Address whose debt will be repaid (usually your address)"
}
},
"required": ["asset", "amount", "interestRateMode", "onBehalfOf"]
}
},
{
"name": "Repay With aTokens",
"description": "Repay borrowed tokens using aTokens (interest-bearing tokens) without needing to withdraw first",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Token address of the debt you want to repay"
},
"amount": {
"type": "string",
"description": "Amount of aTokens to use for repayment (in wei, use MAX_UINT256 for full debt)"
},
"interestRateMode": {
"type": "integer",
"description": "Interest rate mode of the debt: 1 for stable, 2 for variable"
}
},
"required": ["asset", "amount", "interestRateMode"]
}
},
{
"name": "Set Collateral Usage",
"description": "Enable or disable an asset to be used as collateral for borrowing",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Token address to set as collateral or not"
},
"useAsCollateral": {
"type": "boolean",
"description": "True to use the asset as collateral, false to disable it as collateral"
}
},
"required": ["asset", "useAsCollateral"]
}
},
{
"name": "Set E-Mode",
"description": "Set the efficiency mode (E-Mode) for your account to optimize borrowing power for a specific asset class",
"inputSchema": {
"type": "object",
"properties": {
"categoryId": {
"type": "integer",
"description": "E-Mode category ID to set (0 for regular mode, other values for specific asset categories)"
}
},
"required": ["categoryId"]
}
},
{
"name": "Get User Account Data",
"description": "Retrieve account health data including collateral, debt, and borrowing power",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "Address of the user to get account data for"
}
},
"required": ["user"]
}
},
{
"name": "Flash Loan",
"description": "Borrow assets without collateral for a single transaction (must be repaid in the same transaction)",
"inputSchema": {
"type": "object",
"properties": {
"receiverAddress": {
"type": "string",
"description": "Address of the contract that will receive and handle the flash loan"
},
"assets": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of token addresses to borrow in the flash loan"
},
"amounts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of amounts to borrow for each asset (in wei)"
},
"interestRateModes": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Array of interest rate modes for each asset (0 for no debt, 1 for stable, 2 for variable)"
},
"onBehalfOf": {
"type": "string",
"description": "Address that will incur the flash loan debt if not repaid"
},
"params": {
"type": "string",
"description": "Encoded parameters to pass to the receiver contract"
},
"referralCode": {
"type": "integer",
"description": "Referral code for the transaction (use 0 if none)"
}
},
"required": ["receiverAddress", "assets", "amounts", "interestRateModes", "onBehalfOf", "params", "referralCode"]
}
},
{
"name": "Get Reserve Data",
"description": "Get detailed information about a specific asset in the lending pool",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Token address to get reserve data for"
}
},
"required": ["asset"]
}
}
]
}
```
Model: claude-3-7-sonnet-202502192025-08-29 14:10:12
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. Each tool should include: name, description, inputSchema (JSON Schema object). Generate human-friendly names/descriptions based on function purpose. Infer parameter names/types for inputSchema. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"},{\"internalType\":\"contract IReserveInterestRateStrategy\",\"name\":\"interestRateStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetNotListed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPoolConfigurator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotPositionManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotUmbrella\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EModeCategoryReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddressesProvider\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCovered\",\"type\":\"uint256\"}],\"name\":\"DeficitCovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCreated\",\"type\":\"uint256\"}],\"name\":\"DeficitCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum DataTypes.InterestRateMode\",\"name\":\"interestRateMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"premium\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"IsolationModeTotalDebtUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidatedCollateralAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"LiquidationCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountMinted\",\"type\":\"uint256\"}],\"name\":\"MintedToTreasury\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"PositionManagerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"repayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"useATokens\",\"type\":\"bool\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"}],\"name\":\"ReserveDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ReserveUsedAsCollateralEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"UserEModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER\",\"outputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TOTAL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FLASHLOAN_PREMIUM_TO_PROTOCOL\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUMBER_RESERVES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REVISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_INTEREST_RATE_STRATEGY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UMBRELLA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approve\",\"type\":\"bool\"}],\"name\":\"approvePositionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryBaseConfiguration\",\"name\":\"category\",\"type\":\"tuple\"}],\"name\":\"configureEModeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"borrowableBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryBorrowableBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint128\",\"name\":\"collateralBitmap\",\"type\":\"uint128\"}],\"name\":\"configureEModeCategoryCollateralBitmap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"dropReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"eliminateReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"scaledAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceFromBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scaledBalanceToBefore\",\"type\":\"uint256\"}],\"name\":\"finalizeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"interestRateModes\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"flashLoanSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryBorrowableBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralBitmap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryCollateralConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"}],\"internalType\":\"struct DataTypes.CollateralConfig\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"ltv\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"liquidationBonus\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceSource\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"internalType\":\"struct DataTypes.EModeCategoryLegacy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"}],\"name\":\"getEModeCategoryLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEModeLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getLiquidationGracePeriod\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidationLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveAToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getReserveAddressById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentStableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"accruedToTreasury\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"unbacked\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"isolationModeTotalDebt\",\"type\":\"uint128\"}],\"internalType\":\"struct DataTypes.ReserveDataLegacy\",\"name\":\"res\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveDeficit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getReserveVariableDebtToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalCollateralBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDebtBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsBase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.UserConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserEMode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVirtualUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtAddress\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolAddressesProvider\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"positionManager\",\"type\":\"address\"}],\"name\":\"isApprovedPositionManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateralAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"debtAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debtToCover\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"args2\",\"type\":\"bytes32\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"mintToTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"renouncePositionManagerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"repayWithATokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"repayWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"resetIsolationModeTotalDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"until\",\"type\":\"uint40\"}],\"name\":\"setLiquidationGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"}],\"name\":\"setUserEMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"categoryId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserEModeOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useAsCollateral\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"setUserUseReserveAsCollateralOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"permitV\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"permitR\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"permitS\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"supplyWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncIndexesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"syncRatesState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"flashLoanPremium\",\"type\":\"uint128\"}],\"name\":\"updateFlashloanPremium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"args\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"chainId\":1,\"address\":\"0xA238Dd80C259a72e81d7e4664a9801593F98d1c5\"}" } ]
Response:
```json
{
"tools": [
{
"name": "Supply Assets",
"description": "Supply assets to the lending pool as collateral to earn interest and enable borrowing",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Address of the asset to supply"
},
"amount": {
"type": "string",
"description": "Amount to supply (in wei)"
},
"onBehalfOf": {
"type": "string",
"description": "Address that will receive the aTokens (default: your address)",
"default": ""
},
"referralCode": {
"type": "integer",
"description": "Referral code for tracking",
"default": 0
}
},
"required": ["asset", "amount"]
}
},
{
"name": "Withdraw Assets",
"description": "Withdraw previously supplied assets from the lending pool",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Address of the asset to withdraw"
},
"amount": {
"type": "string",
"description": "Amount to withdraw (in wei, use MAX_UINT256 for full balance)"
},
"to": {
"type": "string",
"description": "Address that will receive the withdrawn assets (default: your address)",
"default": ""
}
},
"required": ["asset", "amount"]
}
},
{
"name": "Borrow Assets",
"description": "Borrow assets from the lending pool using your supplied collateral",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Address of the asset to borrow"
},
"amount": {
"type": "string",
"description": "Amount to borrow (in wei)"
},
"interestRateMode": {
"type": "integer",
"description": "Interest rate mode (1 for stable, 2 for variable)",
"enum": [1, 2],
"default": 2
},
"referralCode": {
"type": "integer",
"description": "Referral code for tracking",
"default": 0
},
"onBehalfOf": {
"type": "string",
"description": "Address that will incur the debt (default: your address)",
"default": ""
}
},
"required": ["asset", "amount", "interestRateMode"]
}
},
{
"name": "Repay Loan",
"description": "Repay borrowed assets to reduce or eliminate debt",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Address of the asset to repay"
},
"amount": {
"type": "string",
"description": "Amount to repay (in wei, use MAX_UINT256 for full debt)"
},
"interestRateMode": {
"type": "integer",
"description": "Interest rate mode (1 for stable, 2 for variable)",
"enum": [1, 2],
"default": 2
},
"onBehalfOf": {
"type": "string",
"description": "Address whose debt to repay (default: your address)",
"default": ""
}
},
"required": ["asset", "amount", "interestRateMode"]
}
},
{
"name": "Set Collateral Usage",
"description": "Enable or disable an asset as collateral for borrowing",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Address of the asset to configure"
},
"useAsCollateral": {
"type": "boolean",
"description": "Whether to use the asset as collateral"
}
},
"required": ["asset", "useAsCollateral"]
}
},
{
"name": "Get User Account Data",
"description": "Retrieve user account health and borrowing capacity information",
"inputSchema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "Address of the user to check (default: your address)",
"default": ""
}
}
}
},
{
"name": "Set E-Mode",
"description": "Set the efficiency mode category for the user to optimize borrowing power",
"inputSchema": {
"type": "object",
"properties": {
"categoryId": {
"type": "integer",
"description": "E-Mode category ID (0 for disabled, other values for specific asset categories)",
"minimum": 0
}
},
"required": ["categoryId"]
}
},
{
"name": "Flash Loan",
"description": "Borrow assets without collateral for a single transaction (advanced users)",
"inputSchema": {
"type": "object",
"properties": {
"receiverAddress": {
"type": "string",
"description": "Address of the contract that will receive the flash loan"
},
"assets": {
"type": "array",
"description": "Array of asset addresses to borrow",
"items": {
"type": "string"
}
},
"amounts": {
"type": "array",
"description": "Array of amounts to borrow (in wei)",
"items": {
"type": "string"
}
},
"interestRateModes": {
"type": "array",
"description": "Array of interest rate modes (0 for no debt, 1 for stable, 2 for variable)",
"items": {
"type": "integer",
"enum": [0, 1, 2]
}
},
"onBehalfOf": {
"type": "string",
"description": "Address that will incur the flash loan debt (default: your address)",
"default": ""
},
"params": {
"type": "string",
"description": "Encoded parameters for the receiver contract",
"default": "0x"
},
"referralCode": {
"type": "integer",
"description": "Referral code for tracking",
"default": 0
}
},
"required": ["receiverAddress", "assets", "amounts", "interestRateModes"]
}
},
{
"name": "Get Reserve Data",
"description": "Get detailed information about a specific asset in the lending pool",
"inputSchema": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Address of the asset to query"
}
},
"required": ["asset"]
}
}
]
}
```
Model: claude-3-7-sonnet-202502192025-08-29 14:02:51
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. Each tool should include: name, description, inputSchema (JSON Schema object). Generate human-friendly names/descriptions based on function purpose. Infer parameter names/types for inputSchema. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmountIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmountInERC20Execute\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmountInERC20ExecuteRelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmountInETHExecute\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCallType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callTo\",\"type\":\"address\"}],\"name\":\"TargetNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"name\":\"TargetAllowedStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"partnerId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"callTo\",\"type\":\"address\"}],\"name\":\"XPlore\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_feeRecipient\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"allowTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"}],\"name\":\"allowTargets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"disallowTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"}],\"name\":\"disallowTargets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"callTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"approvalTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"partnerId\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relaySolver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"partnerId\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"requestId\",\"type\":\"bytes\"}],\"name\":\"executeRelay\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"isTargetAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"setFeeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum XPloreRouter.CallType\",\"name\":\"callType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"callTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"approvalTo\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"relaySolver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"requestId\",\"type\":\"bytes\"}],\"internalType\":\"struct XPloreRouter.UnifiedMulticallData[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"partnerId\",\"type\":\"uint32\"}],\"name\":\"unifiedMulticall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"chainId\":1,\"address\":\"0x0A4c32FB20212bB4B3fB436A7883BA0d7D7Ed004\"}" } ]
Response:
```json
{
"tools": [
{
"name": "Execute Transaction",
"description": "Execute a transaction with a specified token input, allowing interaction with approved contracts",
"inputSchema": {
"type": "object",
"properties": {
"tokenIn": {
"type": "string",
"description": "Address of the input token (use 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for ETH)"
},
"amountIn": {
"type": "string",
"description": "Amount of input token to use (in wei)"
},
"callTo": {
"type": "string",
"description": "Address of the contract to call"
},
"approvalTo": {
"type": "string",
"description": "Address to approve for token spending (if needed)"
},
"fee": {
"type": "string",
"description": "Fee amount to pay for the transaction (in wei)"
},
"partnerId": {
"type": "integer",
"description": "Partner ID for attribution"
},
"callData": {
"type": "string",
"description": "Encoded call data for the transaction"
}
},
"required": ["tokenIn", "amountIn", "callTo", "approvalTo", "fee", "partnerId", "callData"]
}
},
{
"name": "Execute Relay Transaction",
"description": "Execute a relay transaction with a specified token input",
"inputSchema": {
"type": "object",
"properties": {
"tokenIn": {
"type": "string",
"description": "Address of the input token (use 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for ETH)"
},
"amountIn": {
"type": "string",
"description": "Amount of input token to use (in wei)"
},
"relaySolver": {
"type": "string",
"description": "Address of the relay solver"
},
"fee": {
"type": "string",
"description": "Fee amount to pay for the transaction (in wei)"
},
"partnerId": {
"type": "integer",
"description": "Partner ID for attribution"
},
"requestId": {
"type": "string",
"description": "Unique identifier for the relay request"
}
},
"required": ["tokenIn", "amountIn", "relaySolver", "fee", "partnerId", "requestId"]
}
},
{
"name": "Unified Multicall",
"description": "Execute multiple calls in a single transaction with unified parameters",
"inputSchema": {
"type": "object",
"properties": {
"calls": {
"type": "array",
"items": {
"type": "object",
"properties": {
"callType": {
"type": "integer",
"description": "Type of call to execute (0 for standard, 1 for relay)"
},
"tokenIn": {
"type": "string",
"description": "Address of the input token (use 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for ETH)"
},
"amountIn": {
"type": "string",
"description": "Amount of input token to use (in wei)"
},
"value": {
"type": "string",
"description": "ETH value to send with the call (in wei)"
},
"callTo": {
"type": "string",
"description": "Address of the contract to call"
},
"approvalTo": {
"type": "string",
"description": "Address to approve for token spending (if needed)"
},
"callData": {
"type": "string",
"description": "Encoded call data for the transaction"
},
"relaySolver": {
"type": "string",
"description": "Address of the relay solver (for relay calls)"
},
"requestId": {
"type": "string",
"description": "Unique identifier for relay requests"
}
},
"required": ["callType", "tokenIn", "amountIn"]
}
},
"fee": {
"type": "string",
"description": "Fee amount to pay for the transaction (in wei)"
},
"partnerId": {
"type": "integer",
"description": "Partner ID for attribution"
}
},
"required": ["calls", "fee", "partnerId"]
}
},
{
"name": "Check Target Allowance",
"description": "Check if a target contract address is allowed for interactions",
"inputSchema": {
"type": "object",
"properties": {
"target": {
"type": "string",
"description": "Address of the target contract to check"
}
},
"required": ["target"]
}
}
]
}
```
Model: claude-3-7-sonnet-202502192025-08-29 11:06:30
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. Each tool should include: name, description, inputSchema (JSON Schema object). Generate human-friendly names/descriptions based on function purpose. Infer parameter names/types for inputSchema. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_maxTxAmount\",\"type\":\"uint256\"}],\"name\":\"MaxTxAmountUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenTrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tax\",\"type\":\"uint256\"}],\"name\":\"TransferTaxUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_maxTaxSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxTxAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxWalletSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_taxSwapThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableTrading\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxDetails\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"initialBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transferTax\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rescueETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tradingOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"chainId\":1,\"address\":\"0x4983cF8050fFE5ed13EA8fD28cC062091B4348Be\"}" } ]
Response:
```json
{
"tools": [
{
"name": "Get Token Information",
"description": "Retrieve basic information about the token including name, symbol, decimals, and total supply.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Check Token Balance",
"description": "Get the token balance of a specific address.",
"inputSchema": {
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "The address to check the balance of"
}
},
"required": ["account"]
}
},
{
"name": "Transfer Tokens",
"description": "Transfer tokens from your address to another address.",
"inputSchema": {
"type": "object",
"properties": {
"recipient": {
"type": "string",
"description": "The address to receive the tokens"
},
"amount": {
"type": "string",
"description": "The amount of tokens to transfer"
}
},
"required": ["recipient", "amount"]
}
},
{
"name": "Approve Token Spending",
"description": "Approve another address (like a contract) to spend tokens on your behalf.",
"inputSchema": {
"type": "object",
"properties": {
"spender": {
"type": "string",
"description": "The address to approve for spending tokens"
},
"amount": {
"type": "string",
"description": "The amount of tokens to approve"
}
},
"required": ["spender", "amount"]
}
},
{
"name": "Check Allowance",
"description": "Check how many tokens an owner has allowed a spender to use.",
"inputSchema": {
"type": "object",
"properties": {
"owner": {
"type": "string",
"description": "The address that owns the tokens"
},
"spender": {
"type": "string",
"description": "The address that is allowed to spend tokens"
}
},
"required": ["owner", "spender"]
}
},
{
"name": "Transfer From",
"description": "Transfer tokens from one address to another using an allowance.",
"inputSchema": {
"type": "object",
"properties": {
"sender": {
"type": "string",
"description": "The address sending the tokens"
},
"recipient": {
"type": "string",
"description": "The address receiving the tokens"
},
"amount": {
"type": "string",
"description": "The amount of tokens to transfer"
}
},
"required": ["sender", "recipient", "amount"]
}
},
{
"name": "Get Tax Details",
"description": "Retrieve the current tax configuration for the token.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Check Trading Status",
"description": "Check if trading is currently enabled for the token.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Check Transaction Limits",
"description": "Get information about maximum transaction amount and wallet size limits.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Check Contract Owner",
"description": "Get the address of the current contract owner.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
}
]
}
```
Model: claude-3-7-sonnet-202502192025-08-29 10:59:27
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. Each tool should include: name, description, inputSchema (JSON Schema object). Generate human-friendly names/descriptions based on function purpose. Infer parameter names/types for inputSchema. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"chainId\":1,\"address\":\"0x623a2D3b609c389bb3e1dC141Ff0Ce6D18618F9c\"}" } ]
Response:
```json
{
"tools": [
{
"name": "Check Token Allowance",
"description": "View the amount of tokens that a spender is allowed to withdraw from an owner's account",
"inputSchema": {
"type": "object",
"properties": {
"owner": {
"type": "string",
"description": "The address of the token owner"
},
"spender": {
"type": "string",
"description": "The address of the account allowed to spend tokens"
}
},
"required": ["owner", "spender"]
}
},
{
"name": "Approve Token Spending",
"description": "Approve a spender to withdraw a specified amount of tokens from your account",
"inputSchema": {
"type": "object",
"properties": {
"spender": {
"type": "string",
"description": "The address authorized to spend tokens"
},
"value": {
"type": "string",
"description": "The amount of tokens to approve for spending"
}
},
"required": ["spender", "value"]
}
},
{
"name": "Check Token Balance",
"description": "View the token balance of a specific account",
"inputSchema": {
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "The address to check the balance of"
}
},
"required": ["account"]
}
},
{
"name": "Get Token Decimals",
"description": "View the number of decimals used by the token",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "Get Token Name",
"description": "View the full name of the token",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "Get Token Symbol",
"description": "View the symbol of the token (e.g., ETH, BTC)",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "Get Total Token Supply",
"description": "View the total supply of the token",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "Transfer Tokens",
"description": "Transfer tokens from your address to another address",
"inputSchema": {
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "The recipient address"
},
"value": {
"type": "string",
"description": "The amount of tokens to transfer"
}
},
"required": ["to", "value"]
}
},
{
"name": "Transfer Tokens From Another Account",
"description": "Transfer tokens from one address to another (requires approval)",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"description": "The address to transfer tokens from"
},
"to": {
"type": "string",
"description": "The recipient address"
},
"value": {
"type": "string",
"description": "The amount of tokens to transfer"
}
},
"required": ["from", "to", "value"]
}
}
]
}
```
Model: claude-3-7-sonnet-202502192025-08-29 10:55:05
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. Each tool should include: name, description, inputSchema (JSON Schema object). Generate human-friendly names/descriptions based on function purpose. Infer parameter names/types for inputSchema. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_maxTxAmount\",\"type\":\"uint256\"}],\"name\":\"MaxTxAmountUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenTrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tax\",\"type\":\"uint256\"}],\"name\":\"TransferTaxUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_maxTaxSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxTxAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxWalletSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_taxSwapThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableTrading\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxDetails\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"initialBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transferTax\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rescueETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tradingOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"chainId\":1,\"address\":\"0x4983cF8050fFE5ed13EA8fD28cC062091B4348Be\"}" } ]
Response:
```json
{
"tools": [
{
"name": "Get Token Information",
"description": "Retrieve basic information about the token including name, symbol, decimals, and total supply.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Check Token Balance",
"description": "Get the token balance of a specific address.",
"inputSchema": {
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "The address to check the balance of"
}
},
"required": ["account"]
}
},
{
"name": "Transfer Tokens",
"description": "Transfer tokens from your address to another address.",
"inputSchema": {
"type": "object",
"properties": {
"recipient": {
"type": "string",
"description": "The address to receive the tokens"
},
"amount": {
"type": "string",
"description": "The amount of tokens to transfer"
}
},
"required": ["recipient", "amount"]
}
},
{
"name": "Approve Token Spending",
"description": "Approve another address (like a contract) to spend tokens on your behalf.",
"inputSchema": {
"type": "object",
"properties": {
"spender": {
"type": "string",
"description": "The address to approve for spending your tokens"
},
"amount": {
"type": "string",
"description": "The amount of tokens to approve"
}
},
"required": ["spender", "amount"]
}
},
{
"name": "Check Allowance",
"description": "Check how many tokens an owner has allowed a spender to use.",
"inputSchema": {
"type": "object",
"properties": {
"owner": {
"type": "string",
"description": "The address that owns the tokens"
},
"spender": {
"type": "string",
"description": "The address that is allowed to spend tokens"
}
},
"required": ["owner", "spender"]
}
},
{
"name": "Transfer From",
"description": "Transfer tokens from one address to another using an allowance.",
"inputSchema": {
"type": "object",
"properties": {
"sender": {
"type": "string",
"description": "The address sending the tokens"
},
"recipient": {
"type": "string",
"description": "The address receiving the tokens"
},
"amount": {
"type": "string",
"description": "The amount of tokens to transfer"
}
},
"required": ["sender", "recipient", "amount"]
}
},
{
"name": "Get Tax Details",
"description": "Retrieve the current tax configuration for the token.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Check Trading Status",
"description": "Check if trading is currently enabled for the token.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Check Transaction Limits",
"description": "Get information about maximum transaction and wallet size limits.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "Check Contract Owner",
"description": "Get the address of the current contract owner.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
}
]
}
```
Model: claude-3-7-sonnet-202502192025-08-29 10:52:53
Context:
[ { "role": "system", "content": "You are an ABI analyzer for MCP tool generation. Return ONLY one JSON object with a single key: tools. Each tool should include: name, description, inputSchema (JSON Schema object). Generate human-friendly names/descriptions based on function purpose. Infer parameter names/types for inputSchema. Do not include resources or prompts. Output valid JSON only." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNewEnabledStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoActiveSubscription\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredAmount_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableAmount_\",\"type\":\"uint256\"}],\"name\":\"NotEnoughTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroMasterKey\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"EnabledStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPDATE_ENABLED_STATUS_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPDATE_MASTER_KEY_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_STORAGE_SLOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WITHDRAW_TOKENS_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToDeposit_\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr_\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled_\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"nonce_\",\"type\":\"uint256\"}],\"name\":\"hashUpdateEnabledStatus\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newMasterKey_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce_\",\"type\":\"uint256\"}],\"name\":\"hashUpdateMasterKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce_\",\"type\":\"uint256\"}],\"name\":\"hashWithdrawTokens\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"masterKey_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isVaultEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled_\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature_\",\"type\":\"bytes\"}],\"name\":\"updateEnabledStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newMasterKey_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature_\",\"type\":\"bytes\"}],\"name\":\"updateMasterKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokensAmount_\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature_\",\"type\":\"bytes\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"chainId\":1,\"address\":\"0x032c562b3fc67B94c67955Ac89e19dd238D6c724\"}" } ]
Response:
```json
{
"tools": [
{
"name": "Deposit Tokens",
"description": "Deposit tokens into the vault. For ETH deposits, use the zero address as tokenAddr.",
"inputSchema": {
"type": "object",
"properties": {
"tokenAddr_": {
"type": "string",
"description": "The address of the token to deposit. Use zero address (0x0000000000000000000000000000000000000000) for ETH."
},
"amountToDeposit_": {
"type": "string",
"description": "The amount of tokens to deposit (in wei format)."
}
},
"required": ["tokenAddr_", "amountToDeposit_"]
}
},
{
"name": "Withdraw Tokens",
"description": "Withdraw tokens from the vault. Requires a valid signature from the master key.",
"inputSchema": {
"type": "object",
"properties": {
"tokenAddr_": {
"type": "string",
"description": "The address of the token to withdraw."
},
"recipient_": {
"type": "string",
"description": "The address that will receive the withdrawn tokens."
},
"tokensAmount_": {
"type": "string",
"description": "The amount of tokens to withdraw (in wei format)."
},
"signature_": {
"type": "string",
"description": "The signature from the master key authorizing this withdrawal."
}
},
"required": ["tokenAddr_", "recipient_", "tokensAmount_", "signature_"]
}
},
{
"name": "Update Enabled Status",
"description": "Enable or disable the vault. Requires a valid signature from the master key.",
"inputSchema": {
"type": "object",
"properties": {
"enabled_": {
"type": "boolean",
"description": "The new enabled status for the vault."
},
"signature_": {
"type": "string",
"description": "The signature from the master key authorizing this status change."
}
},
"required": ["enabled_", "signature_"]
}
},
{
"name": "Update Master Key",
"description": "Update the master key address for the vault. Requires a valid signature from the current master key.",
"inputSchema": {
"type": "object",
"properties": {
"newMasterKey_": {
"type": "string",
"description": "The new master key address."
},
"signature_": {
"type": "string",
"description": "The signature from the current master key authorizing this change."
}
},
"required": ["newMasterKey_", "signature_"]
}
},
{
"name": "Get Token Balance",
"description": "Get the balance of a specific token in the vault.",
"inputSchema": {
"type": "object",
"properties": {
"tokenAddr_": {
"type": "string",
"description": "The address of the token to check the balance for."
}
},
"required": ["tokenAddr_"]
}
},
{
"name": "Check Vault Status",
"description": "Check if the vault is currently enabled.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "Get Account Nonce",
"description": "Get the current nonce for an account, used for signature generation.",
"inputSchema": {
"type": "object",
"properties": {
"owner": {
"type": "string",
"description": "The address to get the nonce for."
}
},
"required": ["owner"]
}
}
]
}
```
Model: claude-3-7-sonnet-202502192025-08-29 09:28:19
Context:
[ { "role": "system", "content": "You are an ABI analyzer that prepares manifests for MCP servers. Return ONLY one JSON object with keys exactly: summary, tools, resources, prompts. Classification rules: - Tools = ABI items of type \"function\". - kind = \"read\" when stateMutability in [\"view\",\"pure\"], else \"write\". - Include: name, kind, stateMutability, params (name,type), returns (type). - Prefer canonical param names; if missing use arg0,arg1,... - Resources = context data the application can fetch and pass to the model. - Event resources: For each event create a resource with name = \"<EventName> events\", topic = \"event:<EventName>\", schema = { <paramName>: <solidityType> }. - Getter resources: Identify high-signal view/pure getters (e.g., name,symbol,decimals,totalSupply,owner,paused,fee settings). Represent them as resource templates with uriTemplate and mimeType (application/json). For zero-arg getters, emit direct templates like \"contract://{chainId}/{address}/call/name\". For arg getters (e.g., balanceOf(address)), emit templates with params: \"contract://{chainId}/{address}/call/balanceOf/{account}\" and include schema with parameter names/types. - Prompts = short helper prompts for agents interacting with this contract. - Include at least: tx_approval (explain risks, require explicit approval) and how_to_use (step-by-step guidance). Output must be valid JSON. Do not include markdown, code fences, or commentary." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNewEnabledStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoActiveSubscription\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredAmount_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableAmount_\",\"type\":\"uint256\"}],\"name\":\"NotEnoughTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroMasterKey\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"EnabledStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensWithdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPDATE_ENABLED_STATUS_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPDATE_MASTER_KEY_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_STORAGE_SLOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WITHDRAW_TOKENS_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToDeposit_\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr_\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled_\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"nonce_\",\"type\":\"uint256\"}],\"name\":\"hashUpdateEnabledStatus\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newMasterKey_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce_\",\"type\":\"uint256\"}],\"name\":\"hashUpdateMasterKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce_\",\"type\":\"uint256\"}],\"name\":\"hashWithdrawTokens\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"masterKey_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isVaultEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled_\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature_\",\"type\":\"bytes\"}],\"name\":\"updateEnabledStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newMasterKey_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature_\",\"type\":\"bytes\"}],\"name\":\"updateMasterKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokensAmount_\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature_\",\"type\":\"bytes\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"chainId\":1,\"address\":\"0x032c562b3fc67B94c67955Ac89e19dd238D6c724\"}" } ]
Response:
{
"summary": "This is a secure token vault contract that allows users to deposit tokens and withdraw them using signed approvals. It implements EIP-712 for secure transaction signing, has ownership controls, and includes safety features like reentrancy protection. The vault can be enabled/disabled and requires signature verification from a master key for critical operations.",
"tools": [
{
"name": "deposit",
"kind": "write",
"stateMutability": "payable",
"params": [
{
"name": "tokenAddr",
"type": "address"
},
{
"name": "amountToDeposit",
"type": "uint256"
}
],
"returns": []
},
{
"name": "withdrawTokens",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "tokenAddr",
"type": "address"
},
{
"name": "recipient",
"type": "address"
},
{
"name": "tokensAmount",
"type": "uint256"
},
{
"name": "signature",
"type": "bytes"
}
],
"returns": []
},
{
"name": "updateEnabledStatus",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "enabled",
"type": "bool"
},
{
"name": "signature",
"type": "bytes"
}
],
"returns": []
},
{
"name": "updateMasterKey",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "newMasterKey",
"type": "address"
},
{
"name": "signature",
"type": "bytes"
}
],
"returns": []
},
{
"name": "initialize",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "masterKey",
"type": "address"
}
],
"returns": []
},
{
"name": "getBalance",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "tokenAddr",
"type": "address"
}
],
"returns": [
{
"type": "uint256"
}
]
},
{
"name": "isVaultEnabled",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": [
{
"type": "bool"
}
]
},
{
"name": "owner",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": [
{
"type": "address"
}
]
},
{
"name": "nonces",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "owner",
"type": "address"
}
],
"returns": [
{
"type": "uint256"
}
]
},
{
"name": "getVaultFactory",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": [
{
"type": "address"
}
]
},
{
"name": "hashWithdrawTokens",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "tokenAddr",
"type": "address"
},
{
"name": "recipient",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "nonce",
"type": "uint256"
}
],
"returns": [
{
"type": "bytes32"
}
]
},
{
"name": "hashUpdateEnabledStatus",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "enabled",
"type": "bool"
},
{
"name": "nonce",
"type": "uint256"
}
],
"returns": [
{
"type": "bytes32"
}
]
},
{
"name": "hashUpdateMasterKey",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "newMasterKey",
"type": "address"
},
{
"name": "nonce",
"type": "uint256"
}
],
"returns": [
{
"type": "bytes32"
}
]
},
{
"name": "eip712Domain",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": [
{
"type": "bytes1"
},
{
"type": "string"
},
{
"type": "string"
},
{
"type": "uint256"
},
{
"type": "address"
},
{
"type": "bytes32"
},
{
"type": "uint256[]"
}
]
},
{
"name": "WITHDRAW_TOKENS_TYPEHASH",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": [
{
"type": "bytes32"
}
]
},
{
"name": "UPDATE_ENABLED_STATUS_TYPEHASH",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": [
{
"type": "bytes32"
}
]
},
{
"name": "UPDATE_MASTER_KEY_TYPEHASH",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": [
{
"type": "bytes32"
}
]
},
{
"name": "VAULT_STORAGE_SLOT",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": [
{
"type": "bytes32"
}
]
}
],
"resources": [
{
"name": "TokensDeposited events",
"topic": "event:TokensDeposited",
"schema": {
"token": "address",
"sender": "address",
"amount": "uint256"
}
},
{
"name": "TokensWithdrawn events",
"topic": "event:TokensWithdrawn",
"schema": {
"token": "address",
"recipient": "address",
"amount": "uint256"
}
},
{
"name": "EnabledStatusUpdated events",
"topic": "event:EnabledStatusUpdated",
"schema": {
"enabled": "bool"
}
},
{
"name": "OwnershipTransferred events",
"topic": "event:OwnershipTransferred",
"schema": {
"previousOwner": "address",
"newOwner": "address"
}
},
{
"name": "Vault Status",
"uriTemplate": "contract://{chainId}/{address}/call/isVaultEnabled",
"mimeType": "application/json"
},
{
"name": "Vault Owner",
"uriTemplate": "contract://{chainId}/{address}/call/owner",
"mimeType": "application/json"
},
{
"name": "Token Balance",
"uriTemplate": "contract://{chainId}/{address}/call/getBalance/{tokenAddr}",
"mimeType": "application/json",
"schema": {
"tokenAddr": "address"
}
},
{
"name": "Account Nonce",
"uriTemplate": "contract://{chainId}/{address}/call/nonces/{owner}",
"mimeType": "application/json",
"schema": {
"owner": "address"
}
}
],
"prompts": {
"tx_approval": "WARNING: You are about to interact with a token vault contract. Please verify the following carefully:\n1. For deposits: Confirm the token address and amount are correct\n2. For withdrawals: Verify the token, recipient address, and amount\n3. For status updates: Confirm the enabled/disabled state change is intended\n4. For master key updates: Verify the new master key address is correct and trusted\n\nAll critical operations require a valid signature from the authorized master key. Do not proceed unless you fully understand the transaction and its implications.",
"how_to_use": "To use this token vault:\n\n1. Deposit tokens:\n - Approve the vault to spend your tokens (for ERC20)\n - Call deposit() with the token address and amount\n\n2. Withdraw tokens:\n - Get a signed withdrawal message from the master key holder\n - Call withdrawTokens() with token address, recipient, amount and signature\n\n3. Check balances:\n - Call getBalance(tokenAddr) to see how many tokens are in the vault\n\n4. Manage vault settings (requires master key signature):\n - Enable/disable the vault with updateEnabledStatus()\n - Update the master key with updateMasterKey()\n\nNote: The vault must be enabled for withdrawals to work, and all signatures must be created using EIP-712 standard with the correct domain and type hashes."
}
}
Model: claude-3-7-sonnet-202502192025-08-29 09:22:09
Context:
[ { "role": "system", "content": "You are an ABI analyzer that prepares manifests for MCP servers. Return ONLY one JSON object with keys exactly: summary, tools, resources, prompts. Classification rules: - Tools = ABI items of type \"function\". - kind = \"read\" when stateMutability in [\"view\",\"pure\"], else \"write\". - Include: name, kind, stateMutability, params (name,type), returns (type). - Prefer canonical param names; if missing use arg0,arg1,... - Resources = context data the application can fetch and pass to the model. - Event resources: For each event create a resource with name = \"<EventName> events\", topic = \"event:<EventName>\", schema = { <paramName>: <solidityType> }. - Getter resources: Identify high-signal view/pure getters (e.g., name,symbol,decimals,totalSupply,owner,paused,fee settings). Represent them as resource templates with uriTemplate and mimeType (application/json). For zero-arg getters, emit direct templates like \"contract://{chainId}/{address}/call/name\". For arg getters (e.g., balanceOf(address)), emit templates with params: \"contract://{chainId}/{address}/call/balanceOf/{account}\" and include schema with parameter names/types. - Prompts = short helper prompts for agents interacting with this contract. - Include at least: tx_approval (explain risks, require explicit approval) and how_to_use (step-by-step guidance). Output must be valid JSON. Do not include markdown, code fences, or commentary." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_base\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_cross\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_quote\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_oracleBaseCross\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_oracleCrossQuote\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"base\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"quote\",\"type\":\"address\"}],\"name\":\"PriceOracle_NotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"base\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cross\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"base\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"quote\",\"type\":\"address\"}],\"name\":\"getQuote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"base\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"quote\",\"type\":\"address\"}],\"name\":\"getQuotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracleBaseCross\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracleCrossQuote\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"chainId\":1,\"address\":\"0x04edc51C6A821AF4D7981e6FB6e9e5668bC1aE34\"}" } ]
Response:
{
"summary": "A price oracle contract that calculates quotes between token pairs using a cross token as an intermediary. It uses two separate oracles to determine prices between base-cross and cross-quote pairs.",
"tools": [
{
"name": "base",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["address"]
},
{
"name": "cross",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["address"]
},
{
"name": "quote",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["address"]
},
{
"name": "oracleBaseCross",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["address"]
},
{
"name": "oracleCrossQuote",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["address"]
},
{
"name": "name",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "getQuote",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "inAmount", "type": "uint256"},
{"name": "base", "type": "address"},
{"name": "quote", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "getQuotes",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "inAmount", "type": "uint256"},
{"name": "base", "type": "address"},
{"name": "quote", "type": "address"}
],
"returns": ["uint256", "uint256"]
}
],
"resources": [
{
"name": "Oracle configuration",
"uriTemplate": "contract://{chainId}/{address}/call/base",
"mimeType": "application/json"
},
{
"name": "Cross token",
"uriTemplate": "contract://{chainId}/{address}/call/cross",
"mimeType": "application/json"
},
{
"name": "Quote token",
"uriTemplate": "contract://{chainId}/{address}/call/quote",
"mimeType": "application/json"
},
{
"name": "Base-Cross Oracle",
"uriTemplate": "contract://{chainId}/{address}/call/oracleBaseCross",
"mimeType": "application/json"
},
{
"name": "Cross-Quote Oracle",
"uriTemplate": "contract://{chainId}/{address}/call/oracleCrossQuote",
"mimeType": "application/json"
},
{
"name": "Oracle name",
"uriTemplate": "contract://{chainId}/{address}/call/name",
"mimeType": "application/json"
},
{
"name": "Token price quote",
"uriTemplate": "contract://{chainId}/{address}/call/getQuote/{inAmount}/{base}/{quote}",
"mimeType": "application/json",
"schema": {
"inAmount": "uint256",
"base": "address",
"quote": "address"
}
},
{
"name": "Detailed token price quotes",
"uriTemplate": "contract://{chainId}/{address}/call/getQuotes/{inAmount}/{base}/{quote}",
"mimeType": "application/json",
"schema": {
"inAmount": "uint256",
"base": "address",
"quote": "address"
}
}
],
"prompts": {
"tx_approval": "This contract is a read-only price oracle that provides price quotes between token pairs using a cross token as an intermediary. There are no approval risks as it doesn't require any transactions that modify state.",
"how_to_use": "1. Identify the token pair you want to get a price quote for (base and quote tokens)\n2. Determine the amount of base tokens you want to get a quote for\n3. Call getQuote(inAmount, base, quote) to get the equivalent amount in quote tokens\n4. For more detailed information, call getQuotes(inAmount, base, quote) which returns two values representing intermediate calculations\n5. Note that the contract only supports specific token pairs configured at deployment"
}
}
Model: claude-3-7-sonnet-202502192025-08-29 09:07:22
Context:
[ { "role": "system", "content": "You are an ABI analyzer that prepares manifests for MCP servers. Return ONLY one JSON object with keys exactly: summary, tools, resources, prompts. Classification rules: - Tools = ABI items of type \"function\". - kind = \"read\" when stateMutability in [\"view\",\"pure\"], else \"write\". - Include: name, kind, stateMutability, params (name,type), returns (type). - Prefer canonical param names; if missing use arg0,arg1,... - Resources = context data the application can fetch and pass to the model. - Event resources: For each event create a resource with name = \"<EventName> events\", topic = \"event:<EventName>\", schema = { <paramName>: <solidityType> }. - Getter resources: Identify high-signal view/pure getters (e.g., name,symbol,decimals,totalSupply,owner,paused,fee settings). Represent them as resource templates with uriTemplate and mimeType (application/json). For zero-arg getters, emit direct templates like \"contract://{chainId}/{address}/call/name\". For arg getters (e.g., balanceOf(address)), emit templates with params: \"contract://{chainId}/{address}/call/balanceOf/{account}\" and include schema with parameter names/types. - Prompts = short helper prompts for agents interacting with this contract. - Include at least: tx_approval (explain risks, require explicit approval) and how_to_use (step-by-step guidance). Output must be valid JSON. Do not include markdown, code fences, or commentary." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBlacklistAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CooldownOff\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CooldownOn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExcessiveRedeemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExcessiveRepayment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExcessiveWithdrawAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAssets\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCooldown\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinSharesViolation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperationNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StillVesting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isFullBlacklisting\",\"type\":\"bool\"}],\"name\":\"AddedToBlacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"AdminRepayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"AdminWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"cooldownDuration\",\"type\":\"uint24\"}],\"name\":\"CooldownDurationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LockedAmountRedistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isFullBlacklisting\",\"type\":\"bool\"}],\"name\":\"RemovedFromBlacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint104\",\"name\":\"cooldownEnd\",\"type\":\"uint104\"}],\"name\":\"UnstakeRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Unstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"vestingPeriod\",\"type\":\"uint256\"}],\"name\":\"VestingPeriodSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isFullBlacklisting\",\"type\":\"bool\"}],\"name\":\"addToBlacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminBorrowedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"adminRepay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"adminWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"cooldownAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cooldownDuration\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"cooldownShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"cooldowns\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"cooldownEnd\",\"type\":\"uint104\"},{\"internalType\":\"uint152\",\"name\":\"underlyingAmount\",\"type\":\"uint152\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnvestedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_initialRewarder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastDistributionTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"redistributeLockedAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isFullBlacklisting\",\"type\":\"bool\"}],\"name\":\"removeFromBlacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"_cooldownDuration\",\"type\":\"uint24\"}],\"name\":\"setCooldownDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_vestingPeriod\",\"type\":\"uint256\"}],\"name\":\"setVestingPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"silo\",\"outputs\":[{\"internalType\":\"contract Silo\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferInRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vestingAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vestingPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"chainId\":1,\"address\":\"0x25bC53B44fCc8109f45E4163377FBD169243D79c\"}" } ]
Response:
{
"summary": "This is an ERC4626 tokenized vault contract that allows users to stake assets and earn rewards. It includes features like cooldown periods for unstaking, blacklisting, admin controls, and vesting mechanisms for rewards distribution. The contract implements ERC20 functionality, access control, pausability, and upgradability.",
"tools": [
{
"name": "DEFAULT_ADMIN_ROLE",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "bytes32"
},
{
"name": "DOMAIN_SEPARATOR",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "bytes32"
},
{
"name": "UPGRADE_INTERFACE_VERSION",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "string"
},
{
"name": "addToBlacklist",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "target",
"type": "address"
},
{
"name": "isFullBlacklisting",
"type": "bool"
}
],
"returns": null
},
{
"name": "adminBorrowedAmount",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "uint256"
},
{
"name": "adminRepay",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "amount",
"type": "uint256"
}
],
"returns": null
},
{
"name": "adminWithdraw",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "amount",
"type": "uint256"
}
],
"returns": null
},
{
"name": "allowance",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "owner",
"type": "address"
},
{
"name": "spender",
"type": "address"
}
],
"returns": "uint256"
},
{
"name": "approve",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "spender",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"returns": "bool"
},
{
"name": "asset",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "address"
},
{
"name": "balanceOf",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "account",
"type": "address"
}
],
"returns": "uint256"
},
{
"name": "convertToAssets",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "shares",
"type": "uint256"
}
],
"returns": "uint256"
},
{
"name": "convertToShares",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "assets",
"type": "uint256"
}
],
"returns": "uint256"
},
{
"name": "cooldownAssets",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "assets",
"type": "uint256"
}
],
"returns": "uint256"
},
{
"name": "cooldownDuration",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "uint24"
},
{
"name": "cooldownShares",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "shares",
"type": "uint256"
}
],
"returns": "uint256"
},
{
"name": "cooldowns",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "account",
"type": "address"
}
],
"returns": "tuple"
},
{
"name": "decimals",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": "uint8"
},
{
"name": "deposit",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "assets",
"type": "uint256"
},
{
"name": "receiver",
"type": "address"
}
],
"returns": "uint256"
},
{
"name": "eip712Domain",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "tuple"
},
{
"name": "getRoleAdmin",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "role",
"type": "bytes32"
}
],
"returns": "bytes32"
},
{
"name": "getUnvestedAmount",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "uint256"
},
{
"name": "grantRole",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "role",
"type": "bytes32"
},
{
"name": "account",
"type": "address"
}
],
"returns": null
},
{
"name": "hasRole",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "role",
"type": "bytes32"
},
{
"name": "account",
"type": "address"
}
],
"returns": "bool"
},
{
"name": "initialize",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "_asset",
"type": "address"
},
{
"name": "_initialRewarder",
"type": "address"
},
{
"name": "_admin",
"type": "address"
}
],
"returns": null
},
{
"name": "lastDistributionTimestamp",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "uint256"
},
{
"name": "maxDeposit",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "account",
"type": "address"
}
],
"returns": "uint256"
},
{
"name": "maxMint",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "account",
"type": "address"
}
],
"returns": "uint256"
},
{
"name": "maxRedeem",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "owner",
"type": "address"
}
],
"returns": "uint256"
},
{
"name": "maxWithdraw",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "owner",
"type": "address"
}
],
"returns": "uint256"
},
{
"name": "mint",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "shares",
"type": "uint256"
},
{
"name": "receiver",
"type": "address"
}
],
"returns": "uint256"
},
{
"name": "name",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "string"
},
{
"name": "nonces",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "owner",
"type": "address"
}
],
"returns": "uint256"
},
{
"name": "pause",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": null
},
{
"name": "paused",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "bool"
},
{
"name": "permit",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "owner",
"type": "address"
},
{
"name": "spender",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "deadline",
"type": "uint256"
},
{
"name": "v",
"type": "uint8"
},
{
"name": "r",
"type": "bytes32"
},
{
"name": "s",
"type": "bytes32"
}
],
"returns": null
},
{
"name": "previewDeposit",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "assets",
"type": "uint256"
}
],
"returns": "uint256"
},
{
"name": "previewMint",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "shares",
"type": "uint256"
}
],
"returns": "uint256"
},
{
"name": "previewRedeem",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "shares",
"type": "uint256"
}
],
"returns": "uint256"
},
{
"name": "previewWithdraw",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "assets",
"type": "uint256"
}
],
"returns": "uint256"
},
{
"name": "proxiableUUID",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "bytes32"
},
{
"name": "redeem",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "shares",
"type": "uint256"
},
{
"name": "receiver",
"type": "address"
},
{
"name": "_owner",
"type": "address"
}
],
"returns": "uint256"
},
{
"name": "redistributeLockedAmount",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "from",
"type": "address"
},
{
"name": "to",
"type": "address"
}
],
"returns": null
},
{
"name": "removeFromBlacklist",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "target",
"type": "address"
},
{
"name": "isFullBlacklisting",
"type": "bool"
}
],
"returns": null
},
{
"name": "renounceRole",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "role",
"type": "bytes32"
},
{
"name": "account",
"type": "address"
}
],
"returns": null
},
{
"name": "rescueTokens",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "token",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "to",
"type": "address"
}
],
"returns": null
},
{
"name": "revokeRole",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "role",
"type": "bytes32"
},
{
"name": "account",
"type": "address"
}
],
"returns": null
},
{
"name": "setCooldownDuration",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "_cooldownDuration",
"type": "uint24"
}
],
"returns": null
},
{
"name": "setVestingPeriod",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{
"name": "_vestingPeriod",
"type": "uint256"
}
],
"returns": null
},
{
"name": "silo",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": "address"
},
{
"name": "supportsInterface",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "interface
Model: claude-3-7-sonnet-202502192025-08-29 08:56:54
Context:
[ { "role": "system", "content": "You are an ABI analyzer that prepares manifests for MCP servers. Return ONLY one JSON object with keys exactly: summary, tools, resources, prompts. Classification rules: - Tools = ABI items of type \"function\". - kind = \"read\" when stateMutability in [\"view\",\"pure\"], else \"write\". - Include: name, kind, stateMutability, params (name,type), returns (type). - Prefer canonical param names; if missing use arg0,arg1,... - Resources = context data the application can fetch and pass to the model. - Event resources: For each event create a resource with name = \"<EventName> events\", topic = \"event:<EventName>\", schema = { <paramName>: <solidityType> }. - Getter resources: Identify high-signal view/pure getters (e.g., name,symbol,decimals,totalSupply,owner,paused,fee settings). Represent them as resource templates with uriTemplate and mimeType (application/json). For zero-arg getters, emit direct templates like \"contract://{chainId}/{address}/call/name\". For arg getters (e.g., balanceOf(address)), emit templates with params: \"contract://{chainId}/{address}/call/balanceOf/{account}\" and include schema with parameter names/types. - Prompts = short helper prompts for agents interacting with this contract. - Include at least: tx_approval (explain risks, require explicit approval) and how_to_use (step-by-step guidance). Output must be valid JSON. Do not include markdown, code fences, or commentary." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_maxTxAmount\",\"type\":\"uint256\"}],\"name\":\"MaxTxAmountUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenTrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tax\",\"type\":\"uint256\"}],\"name\":\"TransferTaxUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_maxTaxSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxTxAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxWalletSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_taxSwapThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableTrading\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxDetails\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"initialBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transferTax\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rescueETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tradingOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"chainId\":1,\"address\":\"0x380Bfb9d43Ad0D62235d41467Ebd517eb823bb04\"}" } ]
Response:
{
"summary": "This is an ERC-20 token contract with tax mechanisms on transfers, buys, and sells. It includes transaction limits (_maxTxAmount), wallet size limits (_maxWalletSize), and owner-controlled trading activation. The contract has functions to manage tax rates, enable/disable trading, and perform manual swaps of collected taxes. The owner can rescue ETH from the contract and has the ability to remove transaction limits.",
"tools": [
{
"name": "_maxTaxSwap",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxTxAmount",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxWalletSize",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_taxSwapThreshold",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "allowance",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "owner", "type": "address"},
{"name": "spender", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "approve",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "spender", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "balanceOf",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "account", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "decimals",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint8"]
},
{
"name": "enableTrading",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "getTaxDetails",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256", "uint256", "uint256", "uint256", "uint256"]
},
{
"name": "manualSwap",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "name",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "owner",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["address"]
},
{
"name": "removeLimit",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "renounceOwnership",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "rescueETH",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "symbol",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "totalSupply",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint256"]
},
{
"name": "tradingOpen",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["bool"]
},
{
"name": "transfer",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "transferFrom",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "sender", "type": "address"},
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
}
],
"resources": [
{
"name": "Approval events",
"topic": "event:Approval",
"schema": {
"owner": "address",
"spender": "address",
"value": "uint256"
}
},
{
"name": "MaxTxAmountUpdated events",
"topic": "event:MaxTxAmountUpdated",
"schema": {
"_maxTxAmount": "uint256"
}
},
{
"name": "OpenTrade events",
"topic": "event:OpenTrade",
"schema": {
"owner": "address",
"timestamp": "uint256"
}
},
{
"name": "OwnershipTransferred events",
"topic": "event:OwnershipTransferred",
"schema": {
"previousOwner": "address",
"newOwner": "address"
}
},
{
"name": "Transfer events",
"topic": "event:Transfer",
"schema": {
"from": "address",
"to": "address",
"value": "uint256"
}
},
{
"name": "TransferTaxUpdated events",
"topic": "event:TransferTaxUpdated",
"schema": {
"_tax": "uint256"
}
},
{
"name": "Token Name",
"uriTemplate": "contract://{chainId}/{address}/call/name",
"mimeType": "application/json"
},
{
"name": "Token Symbol",
"uriTemplate": "contract://{chainId}/{address}/call/symbol",
"mimeType": "application/json"
},
{
"name": "Token Decimals",
"uriTemplate": "contract://{chainId}/{address}/call/decimals",
"mimeType": "application/json"
},
{
"name": "Total Supply",
"uriTemplate": "contract://{chainId}/{address}/call/totalSupply",
"mimeType": "application/json"
},
{
"name": "Contract Owner",
"uriTemplate": "contract://{chainId}/{address}/call/owner",
"mimeType": "application/json"
},
{
"name": "Trading Status",
"uriTemplate": "contract://{chainId}/{address}/call/tradingOpen",
"mimeType": "application/json"
},
{
"name": "Max Transaction Amount",
"uriTemplate": "contract://{chainId}/{address}/call/_maxTxAmount",
"mimeType": "application/json"
},
{
"name": "Max Wallet Size",
"uriTemplate": "contract://{chainId}/{address}/call/_maxWalletSize",
"mimeType": "application/json"
},
{
"name": "Tax Details",
"uriTemplate": "contract://{chainId}/{address}/call/getTaxDetails",
"mimeType": "application/json"
},
{
"name": "Token Balance",
"uriTemplate": "contract://{chainId}/{address}/call/balanceOf/{account}",
"mimeType": "application/json",
"schema": {
"account": "address"
}
},
{
"name": "Token Allowance",
"uriTemplate": "contract://{chainId}/{address}/call/allowance/{owner}/{spender}",
"mimeType": "application/json",
"schema": {
"owner": "address",
"spender": "address"
}
}
],
"prompts": {
"tx_approval": "WARNING: This token contract contains tax mechanisms that deduct fees on transfers, buys, and sells. It also has transaction limits (_maxTxAmount) and wallet size limits (_maxWalletSize) that may restrict your ability to trade. The contract owner has significant control, including the ability to enable/disable trading and modify tax parameters. Before approving any transaction, verify the current tax rates using getTaxDetails(), check if trading is enabled with tradingOpen(), and confirm the transaction and wallet limits. Only proceed if you fully understand and accept these conditions.",
"how_to_use": "To use this token:\n1. Check if trading is enabled using tradingOpen()\n2. Review current tax rates with getTaxDetails() to understand fees on buys, sells, and transfers\n3. Check transaction limits (_maxTxAmount) and wallet limits (_maxWalletSize)\n4. To buy tokens, use a DEX like Uniswap, ensuring your purchase amount is below _maxTxAmount\n5. To transfer tokens, call transfer(recipient, amount) or first approve(spender, amount) then let the spender call transferFrom\n6. Note that all transfers, buys, and sells will incur the taxes shown in getTaxDetails()\n7. Monitor your balance with balanceOf(yourAddress) to confirm transactions\n8. Be aware that the owner can change tax rates and limits at any time"
}
}
Model: claude-3-7-sonnet-202502192025-08-29 08:47:50
Context:
[ { "role": "system", "content": "You are an ABI analyzer that prepares manifests for MCP servers. Return ONLY one JSON object with keys exactly: summary, tools, resources, prompts. Classification rules: - Tools = ABI items of type \"function\". - kind = \"read\" when stateMutability in [\"view\",\"pure\"], else \"write\". - Include: name, kind, stateMutability, params (name,type), returns (type). - Prefer canonical param names; if missing use arg0,arg1,... - Resources = context data the application can fetch and pass to the model. - Event resources: For each event create a resource with name = \"<EventName> events\", topic = \"event:<EventName>\", schema = { <paramName>: <solidityType> }. - Getter resources: Identify high-signal view/pure getters (e.g., name,symbol,decimals,totalSupply,owner,paused,fee settings). Represent them as resource templates with uriTemplate and mimeType (application/json). For zero-arg getters, emit direct templates like \"contract://{chainId}/{address}/call/name\". For arg getters (e.g., balanceOf(address)), emit templates with params: \"contract://{chainId}/{address}/call/balanceOf/{account}\" and include schema with parameter names/types. - Prompts = short helper prompts for agents interacting with this contract. - Include at least: tx_approval (explain risks, require explicit approval) and how_to_use (step-by-step guidance). Output must be valid JSON. Do not include markdown, code fences, or commentary." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_maxTxAmount\",\"type\":\"uint256\"}],\"name\":\"MaxTxAmountUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenTrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tax\",\"type\":\"uint256\"}],\"name\":\"TransferTaxUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_maxTaxSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxTxAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxWalletSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_taxSwapThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableTrading\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxDetails\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"initialBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transferTax\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rescueETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tradingOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"chainId\":1,\"address\":\"0x380Bfb9d43Ad0D62235d41467Ebd517eb823bb04\"}" } ]
Response:
{
"summary": "This is an ERC-20 token contract with tax mechanisms on transfers, buys, and sells. It includes transaction limits (_maxTxAmount), wallet size limits (_maxWalletSize), and tax collection features. The contract has owner-controlled functions to enable trading, remove limits, and manage tax collection. Notable features include variable tax rates for buys/sells and manual tax collection via manualSwap.",
"tools": [
{
"name": "_maxTaxSwap",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxTxAmount",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxWalletSize",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_taxSwapThreshold",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "allowance",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "owner", "type": "address"},
{"name": "spender", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "approve",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "spender", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "balanceOf",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "account", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "decimals",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint8"]
},
{
"name": "enableTrading",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "getTaxDetails",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256", "uint256", "uint256", "uint256", "uint256"]
},
{
"name": "manualSwap",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "name",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "owner",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["address"]
},
{
"name": "removeLimit",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "renounceOwnership",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "rescueETH",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "symbol",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "totalSupply",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint256"]
},
{
"name": "tradingOpen",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["bool"]
},
{
"name": "transfer",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "transferFrom",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "sender", "type": "address"},
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
}
],
"resources": [
{
"name": "Approval events",
"topic": "event:Approval",
"schema": {
"owner": "address",
"spender": "address",
"value": "uint256"
}
},
{
"name": "MaxTxAmountUpdated events",
"topic": "event:MaxTxAmountUpdated",
"schema": {
"_maxTxAmount": "uint256"
}
},
{
"name": "OpenTrade events",
"topic": "event:OpenTrade",
"schema": {
"owner": "address",
"timestamp": "uint256"
}
},
{
"name": "OwnershipTransferred events",
"topic": "event:OwnershipTransferred",
"schema": {
"previousOwner": "address",
"newOwner": "address"
}
},
{
"name": "Transfer events",
"topic": "event:Transfer",
"schema": {
"from": "address",
"to": "address",
"value": "uint256"
}
},
{
"name": "TransferTaxUpdated events",
"topic": "event:TransferTaxUpdated",
"schema": {
"_tax": "uint256"
}
},
{
"name": "Token Name",
"uriTemplate": "contract://{chainId}/{address}/call/name",
"mimeType": "application/json"
},
{
"name": "Token Symbol",
"uriTemplate": "contract://{chainId}/{address}/call/symbol",
"mimeType": "application/json"
},
{
"name": "Token Decimals",
"uriTemplate": "contract://{chainId}/{address}/call/decimals",
"mimeType": "application/json"
},
{
"name": "Total Supply",
"uriTemplate": "contract://{chainId}/{address}/call/totalSupply",
"mimeType": "application/json"
},
{
"name": "Contract Owner",
"uriTemplate": "contract://{chainId}/{address}/call/owner",
"mimeType": "application/json"
},
{
"name": "Trading Status",
"uriTemplate": "contract://{chainId}/{address}/call/tradingOpen",
"mimeType": "application/json"
},
{
"name": "Max Transaction Amount",
"uriTemplate": "contract://{chainId}/{address}/call/_maxTxAmount",
"mimeType": "application/json"
},
{
"name": "Max Wallet Size",
"uriTemplate": "contract://{chainId}/{address}/call/_maxWalletSize",
"mimeType": "application/json"
},
{
"name": "Tax Details",
"uriTemplate": "contract://{chainId}/{address}/call/getTaxDetails",
"mimeType": "application/json"
},
{
"name": "Token Balance",
"uriTemplate": "contract://{chainId}/{address}/call/balanceOf/{account}",
"mimeType": "application/json",
"schema": {
"account": "address"
}
},
{
"name": "Token Allowance",
"uriTemplate": "contract://{chainId}/{address}/call/allowance/{owner}/{spender}",
"mimeType": "application/json",
"schema": {
"owner": "address",
"spender": "address"
}
}
],
"prompts": {
"tx_approval": "WARNING: This token has built-in tax mechanisms that deduct fees on transfers, buys, and sells. Before approving any transaction, verify: 1) The current tax rates using getTaxDetails(), 2) Transaction limits (_maxTxAmount), 3) Wallet size limits (_maxWalletSize), and 4) If trading is enabled (tradingOpen). Confirm you understand that a percentage of your transaction will be taken as tax. Only proceed if you explicitly accept these conditions.",
"how_to_use": "To use this token: 1) Check if trading is enabled with tradingOpen(). 2) Review current tax rates with getTaxDetails() to understand fees on buys/sells/transfers. 3) Check transaction limits with _maxTxAmount() and wallet limits with _maxWalletSize(). 4) To transfer tokens, first approve() the spender, then use transfer() or have the spender use transferFrom(). 5) Be aware that transactions will incur the applicable tax rate, reducing the amount received by the recipient. 6) Monitor your balance with balanceOf() to verify transactions.",
"tax_explanation": "This token implements multiple tax mechanisms: 1) Buy tax - applied when purchasing tokens, 2) Sell tax - applied when selling tokens, 3) Transfer tax - applied on wallet-to-wallet transfers. The contract has initial and final tax rates, suggesting the rates may change over time. Use getTaxDetails() to view current rates before any transaction."
}
}
Model: claude-3-7-sonnet-202502192025-08-29 08:25:08
Context:
[ { "role": "system", "content": "You are an ABI analyzer that prepares manifests for MCP servers. Return ONLY one JSON object with keys exactly: summary, tools, resources, prompts. Classification rules: - Tools = ABI items of type \"function\". - kind = \"read\" when stateMutability in [\"view\",\"pure\"], else \"write\". - Include: name, kind, stateMutability, params (name,type), returns (type). - Prefer canonical param names; if missing use arg0,arg1,... - Resources = context data the application can fetch and pass to the model. - Event resources: For each event create a resource with name = \"<EventName> events\", topic = \"event:<EventName>\", schema = { <paramName>: <solidityType> }. - Getter resources: Identify high-signal view/pure getters (e.g., name,symbol,decimals,totalSupply,owner,paused,fee settings). Represent them as resource templates with uriTemplate and mimeType (application/json). For zero-arg getters, emit direct templates like \"contract://{chainId}/{address}/call/name\". For arg getters (e.g., balanceOf(address)), emit templates with params: \"contract://{chainId}/{address}/call/balanceOf/{account}\" and include schema with parameter names/types. - Prompts = short helper prompts for agents interacting with this contract. - Include at least: tx_approval (explain risks, require explicit approval) and how_to_use (step-by-step guidance). Output must be valid JSON. Do not include markdown, code fences, or commentary." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_maxTxAmount\",\"type\":\"uint256\"}],\"name\":\"MaxTxAmountUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenTrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tax\",\"type\":\"uint256\"}],\"name\":\"TransferTaxUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_maxTaxSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxTxAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxWalletSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_taxSwapThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableTrading\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxDetails\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"initialBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transferTax\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rescueETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tradingOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"chainId\":1,\"address\":\"0x380Bfb9d43Ad0D62235d41467Ebd517eb823bb04\"}" } ]
Response:
{
"summary": "This is an ERC-20 token contract with tax mechanisms on transfers, buys, and sells. It includes transaction limits (_maxTxAmount), wallet size limits (_maxWalletSize), and owner-controlled trading activation. The contract has functions to manage tax rates, enable/disable trading, and perform manual swaps of collected taxes. The owner can rescue ETH from the contract and has the ability to remove transaction limits.",
"tools": [
{
"name": "_maxTaxSwap",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxTxAmount",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxWalletSize",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_taxSwapThreshold",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "allowance",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "owner", "type": "address"},
{"name": "spender", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "approve",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "spender", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "balanceOf",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "account", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "decimals",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint8"]
},
{
"name": "enableTrading",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "getTaxDetails",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256", "uint256", "uint256", "uint256", "uint256"]
},
{
"name": "manualSwap",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "name",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "owner",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["address"]
},
{
"name": "removeLimit",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "renounceOwnership",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "rescueETH",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "symbol",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "totalSupply",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint256"]
},
{
"name": "tradingOpen",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["bool"]
},
{
"name": "transfer",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "transferFrom",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "sender", "type": "address"},
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
}
],
"resources": [
{
"name": "Approval events",
"topic": "event:Approval",
"schema": {
"owner": "address",
"spender": "address",
"value": "uint256"
}
},
{
"name": "MaxTxAmountUpdated events",
"topic": "event:MaxTxAmountUpdated",
"schema": {
"_maxTxAmount": "uint256"
}
},
{
"name": "OpenTrade events",
"topic": "event:OpenTrade",
"schema": {
"owner": "address",
"timestamp": "uint256"
}
},
{
"name": "OwnershipTransferred events",
"topic": "event:OwnershipTransferred",
"schema": {
"previousOwner": "address",
"newOwner": "address"
}
},
{
"name": "Transfer events",
"topic": "event:Transfer",
"schema": {
"from": "address",
"to": "address",
"value": "uint256"
}
},
{
"name": "TransferTaxUpdated events",
"topic": "event:TransferTaxUpdated",
"schema": {
"_tax": "uint256"
}
},
{
"name": "Token Name",
"uriTemplate": "contract://{chainId}/{address}/call/name",
"mimeType": "application/json"
},
{
"name": "Token Symbol",
"uriTemplate": "contract://{chainId}/{address}/call/symbol",
"mimeType": "application/json"
},
{
"name": "Token Decimals",
"uriTemplate": "contract://{chainId}/{address}/call/decimals",
"mimeType": "application/json"
},
{
"name": "Total Supply",
"uriTemplate": "contract://{chainId}/{address}/call/totalSupply",
"mimeType": "application/json"
},
{
"name": "Contract Owner",
"uriTemplate": "contract://{chainId}/{address}/call/owner",
"mimeType": "application/json"
},
{
"name": "Trading Status",
"uriTemplate": "contract://{chainId}/{address}/call/tradingOpen",
"mimeType": "application/json"
},
{
"name": "Max Transaction Amount",
"uriTemplate": "contract://{chainId}/{address}/call/_maxTxAmount",
"mimeType": "application/json"
},
{
"name": "Max Wallet Size",
"uriTemplate": "contract://{chainId}/{address}/call/_maxWalletSize",
"mimeType": "application/json"
},
{
"name": "Tax Details",
"uriTemplate": "contract://{chainId}/{address}/call/getTaxDetails",
"mimeType": "application/json"
},
{
"name": "Token Balance",
"uriTemplate": "contract://{chainId}/{address}/call/balanceOf/{account}",
"mimeType": "application/json",
"schema": {
"account": "address"
}
},
{
"name": "Token Allowance",
"uriTemplate": "contract://{chainId}/{address}/call/allowance/{owner}/{spender}",
"mimeType": "application/json",
"schema": {
"owner": "address",
"spender": "address"
}
}
],
"prompts": {
"tx_approval": "WARNING: This token has built-in tax mechanisms that deduct a percentage of your tokens on transfers, buys, and sells. Before approving any transaction, verify: 1) Current tax rates using getTaxDetails(), 2) If trading is enabled (tradingOpen), 3) Transaction limits (_maxTxAmount) and wallet limits (_maxWalletSize). The contract owner has significant control including the ability to enable/disable trading and rescue ETH from the contract. Only proceed if you understand and accept these risks. Confirm the exact amount you're approving and the specific address you're giving approval to.",
"how_to_use": "To use this token: 1) Check if trading is enabled with tradingOpen(). 2) Review current tax rates with getTaxDetails() to understand fees on buys, sells, and transfers. 3) Check transaction limits (_maxTxAmount) and wallet limits (_maxWalletSize) to ensure your transaction won't be rejected. 4) To transfer tokens, use transfer(recipient, amount) or first approve(spender, amount) then have the spender call transferFrom(). 5) To check your balance, call balanceOf(yourAddress). 6) Remember that all transfers, buys, and sells are subject to the configured tax rates, which will reduce the actual amount received by the recipient.",
"explain_taxes": "This token implements various tax mechanisms: 1) Buy taxes (initialBuyTax and finalBuyTax), 2) Sell taxes (initialSellTax and finalSellTax), and 3) Transfer tax for peer-to-peer transfers. These taxes are deducted from transaction amounts and typically accumulate in the contract until swapped for ETH. The getTaxDetails() function returns the current tax rates. The contract has mechanisms to automatically swap collected taxes when they reach _taxSwapThreshold, or the owner can trigger a manual swap with manualSwap()."
}
}
Model: claude-3-7-sonnet-202502192025-08-29 07:41:42
Context:
[ { "role": "system", "content": "You are an ABI analyzer that prepares manifests for MCP servers. Return ONLY one JSON object with keys exactly: summary, tools, resources, prompts. Classification rules: - Tools = ABI items of type \"function\". - kind = \"read\" when stateMutability in [\"view\",\"pure\"], else \"write\". - Include: name, kind, stateMutability, params (name,type), returns (type). - Prefer canonical param names; if missing use arg0,arg1,... - Resources = context data the application can fetch and pass to the model. - Event resources: For each event create a resource with name = \"<EventName> events\", topic = \"event:<EventName>\", schema = { <paramName>: <solidityType> }. - Getter resources: Identify high-signal view/pure getters (e.g., name,symbol,decimals,totalSupply,owner,paused,fee settings). Represent them as resource templates with uriTemplate and mimeType (application/json). For zero-arg getters, emit direct templates like \"contract://{chainId}/{address}/call/name\". For arg getters (e.g., balanceOf(address)), emit templates with params: \"contract://{chainId}/{address}/call/balanceOf/{account}\" and include schema with parameter names/types. - Prompts = short helper prompts for agents interacting with this contract. - Include at least: tx_approval (explain risks, require explicit approval) and how_to_use (step-by-step guidance). Output must be valid JSON. Do not include markdown, code fences, or commentary." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_maxTxAmount\",\"type\":\"uint256\"}],\"name\":\"MaxTxAmountUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenTrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tax\",\"type\":\"uint256\"}],\"name\":\"TransferTaxUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_maxTaxSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxTxAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxWalletSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_taxSwapThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableTrading\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxDetails\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"initialBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transferTax\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rescueETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tradingOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"chainId\":1,\"address\":\"0x380Bfb9d43Ad0D62235d41467Ebd517eb823bb04\"}" } ]
Response:
{
"summary": "This is an ERC-20 token contract with tax mechanisms on transfers, buys, and sells. It includes transaction limits (_maxTxAmount), wallet size limits (_maxWalletSize), and owner-controlled trading activation. The contract has functions to manage tax rates, enable/disable trading, and perform manual swaps of collected taxes. The owner can rescue ETH from the contract and has the ability to remove transaction limits.",
"tools": [
{
"name": "_maxTaxSwap",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxTxAmount",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxWalletSize",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_taxSwapThreshold",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "allowance",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "owner", "type": "address"},
{"name": "spender", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "approve",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "spender", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "balanceOf",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "account", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "decimals",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint8"]
},
{
"name": "enableTrading",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "getTaxDetails",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256", "uint256", "uint256", "uint256", "uint256"]
},
{
"name": "manualSwap",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "name",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "owner",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["address"]
},
{
"name": "removeLimit",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "renounceOwnership",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "rescueETH",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "symbol",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "totalSupply",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint256"]
},
{
"name": "tradingOpen",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["bool"]
},
{
"name": "transfer",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "transferFrom",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "sender", "type": "address"},
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
}
],
"resources": [
{
"name": "Approval events",
"topic": "event:Approval",
"schema": {
"owner": "address",
"spender": "address",
"value": "uint256"
}
},
{
"name": "MaxTxAmountUpdated events",
"topic": "event:MaxTxAmountUpdated",
"schema": {
"_maxTxAmount": "uint256"
}
},
{
"name": "OpenTrade events",
"topic": "event:OpenTrade",
"schema": {
"owner": "address",
"timestamp": "uint256"
}
},
{
"name": "OwnershipTransferred events",
"topic": "event:OwnershipTransferred",
"schema": {
"previousOwner": "address",
"newOwner": "address"
}
},
{
"name": "Transfer events",
"topic": "event:Transfer",
"schema": {
"from": "address",
"to": "address",
"value": "uint256"
}
},
{
"name": "TransferTaxUpdated events",
"topic": "event:TransferTaxUpdated",
"schema": {
"_tax": "uint256"
}
},
{
"name": "Token Name",
"uriTemplate": "contract://{chainId}/{address}/call/name",
"mimeType": "application/json"
},
{
"name": "Token Symbol",
"uriTemplate": "contract://{chainId}/{address}/call/symbol",
"mimeType": "application/json"
},
{
"name": "Token Decimals",
"uriTemplate": "contract://{chainId}/{address}/call/decimals",
"mimeType": "application/json"
},
{
"name": "Total Supply",
"uriTemplate": "contract://{chainId}/{address}/call/totalSupply",
"mimeType": "application/json"
},
{
"name": "Contract Owner",
"uriTemplate": "contract://{chainId}/{address}/call/owner",
"mimeType": "application/json"
},
{
"name": "Trading Status",
"uriTemplate": "contract://{chainId}/{address}/call/tradingOpen",
"mimeType": "application/json"
},
{
"name": "Max Transaction Amount",
"uriTemplate": "contract://{chainId}/{address}/call/_maxTxAmount",
"mimeType": "application/json"
},
{
"name": "Max Wallet Size",
"uriTemplate": "contract://{chainId}/{address}/call/_maxWalletSize",
"mimeType": "application/json"
},
{
"name": "Tax Details",
"uriTemplate": "contract://{chainId}/{address}/call/getTaxDetails",
"mimeType": "application/json"
},
{
"name": "Token Balance",
"uriTemplate": "contract://{chainId}/{address}/call/balanceOf/{account}",
"mimeType": "application/json",
"schema": {
"account": "address"
}
},
{
"name": "Token Allowance",
"uriTemplate": "contract://{chainId}/{address}/call/allowance/{owner}/{spender}",
"mimeType": "application/json",
"schema": {
"owner": "address",
"spender": "address"
}
}
],
"prompts": {
"tx_approval": "WARNING: This token contract includes tax mechanisms on transfers, buys, and sells. It also has transaction limits and wallet size limits. Before approving any transaction: 1) Verify if trading is enabled (tradingOpen), 2) Check the current tax rates using getTaxDetails(), 3) Be aware of maximum transaction and wallet size limits, 4) Confirm the recipient address is correct, and 5) Understand that the owner has significant control over the contract including the ability to rescue ETH. Only proceed if you fully understand and accept these conditions.",
"how_to_use": "To use this token: 1) Check if trading is enabled with tradingOpen(). 2) Review current tax rates with getTaxDetails() to understand buy/sell/transfer fees. 3) Check transaction limits (_maxTxAmount) and wallet limits (_maxWalletSize) to ensure your transaction will succeed. 4) For transfers, use transfer(recipient, amount) or first approve(spender, amount) then have the spender call transferFrom(). 5) To check your balance, call balanceOf(yourAddress). 6) If you're the owner, you can enable trading with enableTrading(), remove limits with removeLimit(), manually swap collected taxes with manualSwap(), or rescue ETH with rescueETH()."
}
}
Model: claude-3-7-sonnet-202502192025-08-29 07:39:34
Context:
[ { "role": "system", "content": "You are an ABI analyzer that prepares manifests for MCP servers. Return ONLY one JSON object with keys exactly: summary, tools, resources, prompts. Classification rules: - Tools = ABI items of type \"function\". - kind = \"read\" when stateMutability in [\"view\",\"pure\"], else \"write\". - Include: name, kind, stateMutability, params (name,type), returns (type). - Prefer canonical param names; if missing use arg0,arg1,... - Resources = context data the application can fetch and pass to the model. - Event resources: For each event create a resource with name = \"<EventName> events\", topic = \"event:<EventName>\", schema = { <paramName>: <solidityType> }. - Getter resources: Identify high-signal view/pure getters (e.g., name,symbol,decimals,totalSupply,owner,paused,fee settings). Represent them as resource templates with uriTemplate and mimeType (application/json). For zero-arg getters, emit direct templates like \"contract://{chainId}/{address}/call/name\". For arg getters (e.g., balanceOf(address)), emit templates with params: \"contract://{chainId}/{address}/call/balanceOf/{account}\" and include schema with parameter names/types. - Prompts = short helper prompts for agents interacting with this contract. - Include at least: tx_approval (explain risks, require explicit approval) and how_to_use (step-by-step guidance). Output must be valid JSON. Do not include markdown, code fences, or commentary." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_maxTxAmount\",\"type\":\"uint256\"}],\"name\":\"MaxTxAmountUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenTrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tax\",\"type\":\"uint256\"}],\"name\":\"TransferTaxUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_maxTaxSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxTxAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxWalletSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_taxSwapThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableTrading\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxDetails\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"initialBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transferTax\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rescueETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tradingOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"chainId\":1,\"address\":\"0x380Bfb9d43Ad0D62235d41467Ebd517eb823bb04\"}" } ]
Response:
{
"summary": "This is an ERC-20 token contract with tax mechanisms on transfers, buys, and sells. It includes transaction limits (_maxTxAmount), wallet size limits (_maxWalletSize), and owner-controlled trading activation. The contract has functions to manage tax rates, enable/disable trading, and perform manual swaps of collected taxes. The owner can rescue ETH from the contract and has the ability to remove transaction limits.",
"tools": [
{
"name": "_maxTaxSwap",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxTxAmount",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxWalletSize",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_taxSwapThreshold",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "allowance",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "owner", "type": "address"},
{"name": "spender", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "approve",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "spender", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "balanceOf",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "account", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "decimals",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint8"]
},
{
"name": "enableTrading",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "getTaxDetails",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256", "uint256", "uint256", "uint256", "uint256"]
},
{
"name": "manualSwap",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "name",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "owner",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["address"]
},
{
"name": "removeLimit",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "renounceOwnership",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "rescueETH",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "symbol",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "totalSupply",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint256"]
},
{
"name": "tradingOpen",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["bool"]
},
{
"name": "transfer",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "transferFrom",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "sender", "type": "address"},
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
}
],
"resources": [
{
"name": "Approval events",
"topic": "event:Approval",
"schema": {
"owner": "address",
"spender": "address",
"value": "uint256"
}
},
{
"name": "MaxTxAmountUpdated events",
"topic": "event:MaxTxAmountUpdated",
"schema": {
"_maxTxAmount": "uint256"
}
},
{
"name": "OpenTrade events",
"topic": "event:OpenTrade",
"schema": {
"owner": "address",
"timestamp": "uint256"
}
},
{
"name": "OwnershipTransferred events",
"topic": "event:OwnershipTransferred",
"schema": {
"previousOwner": "address",
"newOwner": "address"
}
},
{
"name": "Transfer events",
"topic": "event:Transfer",
"schema": {
"from": "address",
"to": "address",
"value": "uint256"
}
},
{
"name": "TransferTaxUpdated events",
"topic": "event:TransferTaxUpdated",
"schema": {
"_tax": "uint256"
}
},
{
"name": "Token Name",
"uriTemplate": "contract://{chainId}/{address}/call/name",
"mimeType": "application/json"
},
{
"name": "Token Symbol",
"uriTemplate": "contract://{chainId}/{address}/call/symbol",
"mimeType": "application/json"
},
{
"name": "Token Decimals",
"uriTemplate": "contract://{chainId}/{address}/call/decimals",
"mimeType": "application/json"
},
{
"name": "Total Supply",
"uriTemplate": "contract://{chainId}/{address}/call/totalSupply",
"mimeType": "application/json"
},
{
"name": "Contract Owner",
"uriTemplate": "contract://{chainId}/{address}/call/owner",
"mimeType": "application/json"
},
{
"name": "Trading Status",
"uriTemplate": "contract://{chainId}/{address}/call/tradingOpen",
"mimeType": "application/json"
},
{
"name": "Max Transaction Amount",
"uriTemplate": "contract://{chainId}/{address}/call/_maxTxAmount",
"mimeType": "application/json"
},
{
"name": "Max Wallet Size",
"uriTemplate": "contract://{chainId}/{address}/call/_maxWalletSize",
"mimeType": "application/json"
},
{
"name": "Tax Details",
"uriTemplate": "contract://{chainId}/{address}/call/getTaxDetails",
"mimeType": "application/json"
},
{
"name": "Token Balance",
"uriTemplate": "contract://{chainId}/{address}/call/balanceOf/{account}",
"mimeType": "application/json",
"schema": {
"account": "address"
}
},
{
"name": "Token Allowance",
"uriTemplate": "contract://{chainId}/{address}/call/allowance/{owner}/{spender}",
"mimeType": "application/json",
"schema": {
"owner": "address",
"spender": "address"
}
}
],
"prompts": {
"tx_approval": "WARNING: This token contract includes tax mechanisms on transfers, buys, and sells. Before approving any transaction, verify: 1) Current tax rates using getTaxDetails(), 2) If trading is enabled via tradingOpen(), 3) Transaction limits via _maxTxAmount() and _maxWalletSize(). Be aware that the owner can modify tax rates and has special privileges including rescuing ETH from the contract. Only approve transactions if you fully understand and accept these conditions.",
"how_to_use": "To use this token: 1) Check if trading is enabled with tradingOpen(). 2) Review current tax rates with getTaxDetails() to understand fees on buys, sells, and transfers. 3) Check transaction limits with _maxTxAmount() and wallet limits with _maxWalletSize(). 4) To transfer tokens, use transfer(recipient, amount) or first approve(spender, amount) then have the spender call transferFrom(). 5) To check your balance, call balanceOf(yourAddress). 6) Be aware that transactions may fail if they exceed limits or if trading is not enabled.",
"tax_explanation": "This token implements various taxes: 1) Buy tax - applied when purchasing tokens on DEXs, 2) Sell tax - applied when selling tokens on DEXs, 3) Transfer tax - applied on direct transfers between wallets. The getTaxDetails() function returns all current tax rates. Taxes may change over time, with initial taxes potentially being higher than final taxes. The contract owner can trigger swaps of collected taxes using manualSwap()."
}
}
Model: claude-3-7-sonnet-202502192025-08-29 07:30:43
Context:
[ { "role": "system", "content": "You are an ABI analyzer that prepares manifests for MCP servers. Return ONLY one JSON object with keys exactly: summary, tools, resources, prompts. Classification rules: - Tools = ABI items of type \"function\". - kind = \"read\" when stateMutability in [\"view\",\"pure\"], else \"write\". - Include: name, kind, stateMutability, params (name,type), returns (type). - Prefer canonical param names; if missing use arg0,arg1,... - Resources = context data the application can fetch and pass to the model. - Event resources: For each event create a resource with name = \"<EventName> events\", topic = \"event:<EventName>\", schema = { <paramName>: <solidityType> }. - Getter resources: Identify high-signal view/pure getters (e.g., name,symbol,decimals,totalSupply,owner,paused,fee settings). Represent them as resource templates with uriTemplate and mimeType (application/json). For zero-arg getters, emit direct templates like \"contract://{chainId}/{address}/call/name\". For arg getters (e.g., balanceOf(address)), emit templates with params: \"contract://{chainId}/{address}/call/balanceOf/{account}\" and include schema with parameter names/types. - Prompts = short helper prompts for agents interacting with this contract. - Include at least: tx_approval (explain risks, require explicit approval) and how_to_use (step-by-step guidance). Output must be valid JSON. Do not include markdown, code fences, or commentary." }, { "role": "user", "content": "{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_maxTxAmount\",\"type\":\"uint256\"}],\"name\":\"MaxTxAmountUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenTrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tax\",\"type\":\"uint256\"}],\"name\":\"TransferTaxUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_maxTaxSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxTxAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_maxWalletSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_taxSwapThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableTrading\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxDetails\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"initialBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalBuyTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalSellTax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transferTax\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rescueETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tradingOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]}" } ]
Response:
{
"summary": "This is an ERC-20 token contract with tax mechanisms on transfers, buys, and sells. It includes transaction limits (_maxTxAmount), wallet size limits (_maxWalletSize), and owner-controlled trading activation. The contract has functions to manage tax thresholds, swap accumulated taxes, and rescue ETH. Notable features include variable tax rates for buys/sells and the ability for the owner to enable/disable trading.",
"tools": [
{
"name": "_maxTaxSwap",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxTxAmount",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_maxWalletSize",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "_taxSwapThreshold",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256"]
},
{
"name": "allowance",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "owner", "type": "address"},
{"name": "spender", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "approve",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "spender", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "balanceOf",
"kind": "read",
"stateMutability": "view",
"params": [
{"name": "account", "type": "address"}
],
"returns": ["uint256"]
},
{
"name": "decimals",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint8"]
},
{
"name": "enableTrading",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "getTaxDetails",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["uint256", "uint256", "uint256", "uint256", "uint256"]
},
{
"name": "manualSwap",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "name",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["string"]
},
{
"name": "owner",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["address"]
},
{
"name": "removeLimit",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "renounceOwnership",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "rescueETH",
"kind": "write",
"stateMutability": "nonpayable",
"params": [],
"returns": []
},
{
"name": "symbol",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["string"]
},
{
"name": "totalSupply",
"kind": "read",
"stateMutability": "pure",
"params": [],
"returns": ["uint256"]
},
{
"name": "tradingOpen",
"kind": "read",
"stateMutability": "view",
"params": [],
"returns": ["bool"]
},
{
"name": "transfer",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
},
{
"name": "transferFrom",
"kind": "write",
"stateMutability": "nonpayable",
"params": [
{"name": "sender", "type": "address"},
{"name": "recipient", "type": "address"},
{"name": "amount", "type": "uint256"}
],
"returns": ["bool"]
}
],
"resources": [
{
"name": "Approval events",
"topic": "event:Approval",
"schema": {
"owner": "address",
"spender": "address",
"value": "uint256"
}
},
{
"name": "MaxTxAmountUpdated events",
"topic": "event:MaxTxAmountUpdated",
"schema": {
"_maxTxAmount": "uint256"
}
},
{
"name": "OpenTrade events",
"topic": "event:OpenTrade",
"schema": {
"owner": "address",
"timestamp": "uint256"
}
},
{
"name": "OwnershipTransferred events",
"topic": "event:OwnershipTransferred",
"schema": {
"previousOwner": "address",
"newOwner": "address"
}
},
{
"name": "Transfer events",
"topic": "event:Transfer",
"schema": {
"from": "address",
"to": "address",
"value": "uint256"
}
},
{
"name": "TransferTaxUpdated events",
"topic": "event:TransferTaxUpdated",
"schema": {
"_tax": "uint256"
}
},
{
"name": "Token Name",
"uriTemplate": "contract://{chainId}/{address}/call/name",
"mimeType": "application/json"
},
{
"name": "Token Symbol",
"uriTemplate": "contract://{chainId}/{address}/call/symbol",
"mimeType": "application/json"
},
{
"name": "Token Decimals",
"uriTemplate": "contract://{chainId}/{address}/call/decimals",
"mimeType": "application/json"
},
{
"name": "Total Supply",
"uriTemplate": "contract://{chainId}/{address}/call/totalSupply",
"mimeType": "application/json"
},
{
"name": "Contract Owner",
"uriTemplate": "contract://{chainId}/{address}/call/owner",
"mimeType": "application/json"
},
{
"name": "Trading Status",
"uriTemplate": "contract://{chainId}/{address}/call/tradingOpen",
"mimeType": "application/json"
},
{
"name": "Max Transaction Amount",
"uriTemplate": "contract://{chainId}/{address}/call/_maxTxAmount",
"mimeType": "application/json"
},
{
"name": "Max Wallet Size",
"uriTemplate": "contract://{chainId}/{address}/call/_maxWalletSize",
"mimeType": "application/json"
},
{
"name": "Tax Details",
"uriTemplate": "contract://{chainId}/{address}/call/getTaxDetails",
"mimeType": "application/json"
},
{
"name": "Token Balance",
"uriTemplate": "contract://{chainId}/{address}/call/balanceOf/{account}",
"mimeType": "application/json",
"schema": {
"account": "address"
}
},
{
"name": "Token Allowance",
"uriTemplate": "contract://{chainId}/{address}/call/allowance/{owner}/{spender}",
"mimeType": "application/json",
"schema": {
"owner": "address",
"spender": "address"
}
}
],
"prompts": {
"tx_approval": "WARNING: This token has built-in tax mechanisms that will deduct a percentage of your tokens on transfers, buys, and sells. The contract also has transaction limits (_maxTxAmount) and wallet size limits (_maxWalletSize) that may restrict your ability to trade. The owner can enable/disable trading and modify tax parameters. Please confirm you understand these risks before approving any transaction with this token.",
"how_to_use": "1. Check if trading is enabled using the tradingOpen function before attempting to trade.\n2. Verify the current tax rates using getTaxDetails to understand fees on buys, sells, and transfers.\n3. Check transaction limits (_maxTxAmount) and wallet size limits (_maxWalletSize) to ensure your transaction won't be rejected.\n4. To buy/sell tokens, first approve the exchange router address using the approve function.\n5. For direct transfers, use the transfer function with recipient address and amount.\n6. To allow another address to spend your tokens, use the approve function.\n7. Monitor your token balance using balanceOf function with your address as parameter.",
"tax_explanation": "This token implements different tax rates for buys, sells, and transfers. The getTaxDetails function returns five values: initialBuyTax, initialSellTax, finalBuyTax, finalSellTax, and transferTax. These taxes are deducted from transaction amounts and may be used to fund project development, marketing, or liquidity. The contract can swap accumulated taxes for ETH using the manualSwap function."
}
}
Model: claude-3-7-sonnet-202502192025-08-29 07:28:51
Context:
[ { "role": "system", "content": "You are an ABI analyzer that prepares manifests for MCP servers. Return ONLY one JSON object with keys exactly: summary, tools, resources, prompts. Classification rules: - Tools = ABI items of type \"function\". - kind = \"read\" when stateMutability in [\"view\",\"pure\"], else \"write\". - Include: name, kind, stateMutability, params (name,type), returns (type). - Prefer canonical param names; if missing use arg0,arg1,... - Resources = context data the application can fetch and pass to the model. - Event resources: For each event create a resource with name = \"<EventName> events\", topic = \"event:<EventName>\", schema = { <paramName>: <solidityType> }. - Getter resources: Identify high-signal view/pure getters (e.g., name,symbol,decimals,totalSupply,owner,paused,fee settings). Represent them as resource templates with uriTemplate and mimeType (application/json). For zero-arg getters, emit direct templates like \"contract://{chainId}/{address}/call/name\". For arg getters (e.g., balanceOf(address)), emit templates with params: \"contract://{chainId}/{address}/call/balanceOf/{account}\" and include schema with parameter names/types. - Prompts = short helper prompts for agents interacting with this contract. - Include at least: tx_approval (explain risks, require explicit approval) and how_to_use (step-by-step guidance). Output must be valid JSON. Do not include markdown, code fences, or commentary." }, { "role": "user", "content": "{\"abi\":[{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"type\":\"address\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[]}]}" } ]
Response:
{
"summary": "This appears to be a token contract with basic ERC-20 functionality. It includes a balanceOf function to check token balances and a Transfer event that likely tracks token movements.",
"tools": [
{
"name": "balanceOf",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "account",
"type": "address"
}
],
"returns": [
{
"type": "uint256"
}
]
}
],
"resources": [
{
"name": "Transfer events",
"topic": "event:Transfer",
"schema": {}
},
{
"name": "Account Balance",
"uriTemplate": "contract://{chainId}/{address}/call/balanceOf/{account}",
"mimeType": "application/json",
"schema": {
"account": "address"
}
}
],
"prompts": {
"tx_approval": "This transaction interacts with a token contract. Before approving, verify the recipient address and token amount. Never approve transactions to unknown or suspicious contracts as they could drain your tokens or other assets.",
"how_to_use": "1. To check your token balance: Call the balanceOf function with your wallet address.\n2. To track token transfers: Monitor the Transfer events emitted by the contract.\n3. Note that this contract appears to have limited functionality based on the provided ABI."
}
}
Model: claude-3-7-sonnet-202502192025-08-29 07:24:56
Context:
[ { "role": "system", "content": "You are an ABI analyzer that prepares manifests for MCP servers. Return ONLY one JSON object with keys exactly: summary, tools, resources, prompts. Classification rules: - Tools = ABI items of type \"function\". - kind = \"read\" when stateMutability in [\"view\",\"pure\"], else \"write\". - Include: name, kind, stateMutability, params (name,type), returns (type). - Prefer canonical param names; if missing use arg0,arg1,... - Resources = context data the application can fetch and pass to the model. - Event resources: For each event create a resource with name = \"<EventName> events\", topic = \"event:<EventName>\", schema = { <paramName>: <solidityType> }. - Getter resources: Identify high-signal view/pure getters (e.g., name,symbol,decimals,totalSupply,owner,paused,fee settings). Represent them as resource templates with uriTemplate and mimeType (application/json). For zero-arg getters, emit direct templates like \"contract://{chainId}/{address}/call/name\". For arg getters (e.g., balanceOf(address)), emit templates with params: \"contract://{chainId}/{address}/call/balanceOf/{account}\" and include schema with parameter names/types. - Prompts = short helper prompts for agents interacting with this contract. - Include at least: tx_approval (explain risks, require explicit approval) and how_to_use (step-by-step guidance). Output must be valid JSON. Do not include markdown, code fences, or commentary." }, { "role": "user", "content": "{\"abi\":[{\"type\":\"function\",\"name\":\"balanceOf\",\"stateMutability\":\"view\",\"inputs\":[{\"type\":\"address\"}],\"outputs\":[{\"type\":\"uint256\"}]},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[]}]}" } ]
Response:
{
"summary": "This appears to be a token contract with basic ERC-20 functionality. It includes a balanceOf function to check token balances and a Transfer event that likely tracks token movements.",
"tools": [
{
"name": "balanceOf",
"kind": "read",
"stateMutability": "view",
"params": [
{
"name": "account",
"type": "address"
}
],
"returns": [
{
"type": "uint256"
}
]
}
],
"resources": [
{
"name": "Transfer events",
"topic": "event:Transfer",
"schema": {}
},
{
"name": "Account Balance",
"uriTemplate": "contract://{chainId}/{address}/call/balanceOf/{account}",
"mimeType": "application/json",
"schema": {
"account": "address"
}
}
],
"prompts": {
"tx_approval": "This transaction interacts with a token contract. Before approving, verify: 1) The contract address is legitimate, 2) The function being called is appropriate, 3) Any token amounts are what you intend to transfer. Never approve transactions from unknown sources.",
"how_to_use": "To use this token contract: 1) Check your token balance using balanceOf(yourAddress), 2) To transfer tokens, you'll need to use a transfer function (not visible in this ABI), 3) Monitor Transfer events to track token movements."
}
}