[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aave-safe-transactions":3,"mdc--738erv-key":35,"related-repo-aave-safe-transactions":326,"related-org-aave-safe-transactions":388},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":33,"mdContent":34},"safe-transactions","prepare Aave protocol transactions","Prepare an Aave state change — supply, borrow, withdraw, repay, or any other prepare_* action — when asked to supply\u002Fborrow\u002Frepay\u002Fwithdraw, close or adjust a position, or build an Aave transaction.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"aave","Aave","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faave.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Finance","finance","tag",{"name":17,"slug":18,"type":15},"Web3","web3",{"name":20,"slug":21,"type":15},"DeFi","defi",{"name":23,"slug":24,"type":15},"Ethereum","ethereum",0,"https:\u002F\u002Fgithub.com\u002Faave\u002Fskills","2026-08-30T08:53:31.822763",null,1,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":28},[],"https:\u002F\u002Fgithub.com\u002Faave\u002Fskills\u002Ftree\u002FHEAD\u002Fplugins\u002Fmcp\u002Fskills\u002Fsafe-transactions","---\nname: safe-transactions\ndescription: Prepare an Aave state change — supply, borrow, withdraw, repay, or any other prepare_* action — when asked to supply\u002Fborrow\u002Frepay\u002Fwithdraw, close or adjust a position, or build an Aave transaction.\n---\n\n# Aave transaction preparation\n\nNon-custodial: every tool here returns an **unsigned** transaction for the user's own wallet to sign. Say what a prepared transaction will do once signed, and that nothing has been sent.\n\nThe chain is **discover → inspect → simulate → build**, then hand over unsigned.\n\n## Steps\n\n1. **Discover** — `get_markets` with `symbols`, and `user` set to the sender, in this session even when a market looks familiar: selectors (v4 `reserveId`; v3 `market` + `token` + `chainId`) are deployment-specific and cannot be recalled. The `user` rows say what this wallet can actually supply or borrow before anything is built.\n2. **Inspect** — `get_user_summary` for what the wallet already owes and how much room it has, and `get_reserve_details` where the reserve's own parameters bear on the action. A borrow or a withdraw sized without this is a guess.\n3. **Simulate** — `preview_action` with the exact parameters you intend to build. Mandatory before every borrow and withdraw; run it for supply and repay too. An error-level warning means the action cannot succeed as specified: fix the inputs or tell the user, rather than building it.\n4. **Build** — `prepare_action` with the same selectors and amount. Follow the returned plan in order: an approval step comes before the action, and a sent transaction is confirmed with `get_transaction_processed` before building one that depends on it.\n5. **Hand over** — show the unsigned transaction, the simulated outcome (the health factor after, for anything touching debt or collateral), and every warning (warning level succeeds but must reach the user). Then stop: signing is the user's move.\n\n## Rules\n\n- Amounts are in main units (`\"10.5\"` = 10.5 USDC), never base units or wei.\n- Borrowing needs collateral enabled: a plain supply backs nothing. Pass `enableCollateral: true` when the plan includes borrowing against it.\n- The same chain — discover, inspect, simulate, build, hand over unsigned — applies to every other `prepare_*` tool (swaps, collateral toggles, e-mode, rewards, sGHO).\n\n## Done when\n\n- The simulation ran on the exact parameters that were built, and its outcome is in the answer.\n- Every warning the server returned reached the user, by level.\n- The transaction is presented unsigned, with the post-action health factor wherever debt or collateral moved.\n\n## Why simulate first\n\n`preview_action` is the cheapest place for an action to fail, and the only place that reports the position's shape: it returns the resulting health factor, which the build step does not. Skipping it costs a round trip on a refusal and, worse, hands the user a transaction whose effect on their health factor nobody has read. A clean simulation reports the position's own limits, not token allowances — an approval step can still be waiting in the plan.\n",{"data":36,"body":37},{"name":4,"description":6},{"type":38,"children":39},"root",[40,49,63,75,82,237,243,286,292,310,316],{"type":41,"tag":42,"props":43,"children":45},"element","h1",{"id":44},"aave-transaction-preparation",[46],{"type":47,"value":48},"text","Aave transaction preparation",{"type":41,"tag":50,"props":51,"children":52},"p",{},[53,55,61],{"type":47,"value":54},"Non-custodial: every tool here returns an ",{"type":41,"tag":56,"props":57,"children":58},"strong",{},[59],{"type":47,"value":60},"unsigned",{"type":47,"value":62}," transaction for the user's own wallet to sign. Say what a prepared transaction will do once signed, and that nothing has been sent.",{"type":41,"tag":50,"props":64,"children":65},{},[66,68,73],{"type":47,"value":67},"The chain is ",{"type":41,"tag":56,"props":69,"children":70},{},[71],{"type":47,"value":72},"discover → inspect → simulate → build",{"type":47,"value":74},", then hand over unsigned.",{"type":41,"tag":76,"props":77,"children":79},"h2",{"id":78},"steps",[80],{"type":47,"value":81},"Steps",{"type":41,"tag":83,"props":84,"children":85},"ol",{},[86,160,185,202,227],{"type":41,"tag":87,"props":88,"children":89},"li",{},[90,95,97,104,106,112,114,120,122,128,130,136,138,144,145,151,153,158],{"type":41,"tag":56,"props":91,"children":92},{},[93],{"type":47,"value":94},"Discover",{"type":47,"value":96}," — ",{"type":41,"tag":98,"props":99,"children":101},"code",{"className":100},[],[102],{"type":47,"value":103},"get_markets",{"type":47,"value":105}," with ",{"type":41,"tag":98,"props":107,"children":109},{"className":108},[],[110],{"type":47,"value":111},"symbols",{"type":47,"value":113},", and ",{"type":41,"tag":98,"props":115,"children":117},{"className":116},[],[118],{"type":47,"value":119},"user",{"type":47,"value":121}," set to the sender, in this session even when a market looks familiar: selectors (v4 ",{"type":41,"tag":98,"props":123,"children":125},{"className":124},[],[126],{"type":47,"value":127},"reserveId",{"type":47,"value":129},"; v3 ",{"type":41,"tag":98,"props":131,"children":133},{"className":132},[],[134],{"type":47,"value":135},"market",{"type":47,"value":137}," + ",{"type":41,"tag":98,"props":139,"children":141},{"className":140},[],[142],{"type":47,"value":143},"token",{"type":47,"value":137},{"type":41,"tag":98,"props":146,"children":148},{"className":147},[],[149],{"type":47,"value":150},"chainId",{"type":47,"value":152},") are deployment-specific and cannot be recalled. The ",{"type":41,"tag":98,"props":154,"children":156},{"className":155},[],[157],{"type":47,"value":119},{"type":47,"value":159}," rows say what this wallet can actually supply or borrow before anything is built.",{"type":41,"tag":87,"props":161,"children":162},{},[163,168,169,175,177,183],{"type":41,"tag":56,"props":164,"children":165},{},[166],{"type":47,"value":167},"Inspect",{"type":47,"value":96},{"type":41,"tag":98,"props":170,"children":172},{"className":171},[],[173],{"type":47,"value":174},"get_user_summary",{"type":47,"value":176}," for what the wallet already owes and how much room it has, and ",{"type":41,"tag":98,"props":178,"children":180},{"className":179},[],[181],{"type":47,"value":182},"get_reserve_details",{"type":47,"value":184}," where the reserve's own parameters bear on the action. A borrow or a withdraw sized without this is a guess.",{"type":41,"tag":87,"props":186,"children":187},{},[188,193,194,200],{"type":41,"tag":56,"props":189,"children":190},{},[191],{"type":47,"value":192},"Simulate",{"type":47,"value":96},{"type":41,"tag":98,"props":195,"children":197},{"className":196},[],[198],{"type":47,"value":199},"preview_action",{"type":47,"value":201}," with the exact parameters you intend to build. Mandatory before every borrow and withdraw; run it for supply and repay too. An error-level warning means the action cannot succeed as specified: fix the inputs or tell the user, rather than building it.",{"type":41,"tag":87,"props":203,"children":204},{},[205,210,211,217,219,225],{"type":41,"tag":56,"props":206,"children":207},{},[208],{"type":47,"value":209},"Build",{"type":47,"value":96},{"type":41,"tag":98,"props":212,"children":214},{"className":213},[],[215],{"type":47,"value":216},"prepare_action",{"type":47,"value":218}," with the same selectors and amount. Follow the returned plan in order: an approval step comes before the action, and a sent transaction is confirmed with ",{"type":41,"tag":98,"props":220,"children":222},{"className":221},[],[223],{"type":47,"value":224},"get_transaction_processed",{"type":47,"value":226}," before building one that depends on it.",{"type":41,"tag":87,"props":228,"children":229},{},[230,235],{"type":41,"tag":56,"props":231,"children":232},{},[233],{"type":47,"value":234},"Hand over",{"type":47,"value":236}," — show the unsigned transaction, the simulated outcome (the health factor after, for anything touching debt or collateral), and every warning (warning level succeeds but must reach the user). Then stop: signing is the user's move.",{"type":41,"tag":76,"props":238,"children":240},{"id":239},"rules",[241],{"type":47,"value":242},"Rules",{"type":41,"tag":244,"props":245,"children":246},"ul",{},[247,260,273],{"type":41,"tag":87,"props":248,"children":249},{},[250,252,258],{"type":47,"value":251},"Amounts are in main units (",{"type":41,"tag":98,"props":253,"children":255},{"className":254},[],[256],{"type":47,"value":257},"\"10.5\"",{"type":47,"value":259}," = 10.5 USDC), never base units or wei.",{"type":41,"tag":87,"props":261,"children":262},{},[263,265,271],{"type":47,"value":264},"Borrowing needs collateral enabled: a plain supply backs nothing. Pass ",{"type":41,"tag":98,"props":266,"children":268},{"className":267},[],[269],{"type":47,"value":270},"enableCollateral: true",{"type":47,"value":272}," when the plan includes borrowing against it.",{"type":41,"tag":87,"props":274,"children":275},{},[276,278,284],{"type":47,"value":277},"The same chain — discover, inspect, simulate, build, hand over unsigned — applies to every other ",{"type":41,"tag":98,"props":279,"children":281},{"className":280},[],[282],{"type":47,"value":283},"prepare_*",{"type":47,"value":285}," tool (swaps, collateral toggles, e-mode, rewards, sGHO).",{"type":41,"tag":76,"props":287,"children":289},{"id":288},"done-when",[290],{"type":47,"value":291},"Done when",{"type":41,"tag":244,"props":293,"children":294},{},[295,300,305],{"type":41,"tag":87,"props":296,"children":297},{},[298],{"type":47,"value":299},"The simulation ran on the exact parameters that were built, and its outcome is in the answer.",{"type":41,"tag":87,"props":301,"children":302},{},[303],{"type":47,"value":304},"Every warning the server returned reached the user, by level.",{"type":41,"tag":87,"props":306,"children":307},{},[308],{"type":47,"value":309},"The transaction is presented unsigned, with the post-action health factor wherever debt or collateral moved.",{"type":41,"tag":76,"props":311,"children":313},{"id":312},"why-simulate-first",[314],{"type":47,"value":315},"Why simulate first",{"type":41,"tag":50,"props":317,"children":318},{},[319,324],{"type":41,"tag":98,"props":320,"children":322},{"className":321},[],[323],{"type":47,"value":199},{"type":47,"value":325}," is the cheapest place for an action to fail, and the only place that reports the position's shape: it returns the resulting health factor, which the build step does not. Skipping it costs a round trip on a refusal and, worse, hands the user a transaction whose effect on their health factor nobody has read. A clean simulation reports the position's own limits, not token allowances — an approval step can still be waiting in the plan.",{"items":327,"total":387},[328,341,354,361,374],{"slug":329,"name":329,"fn":330,"description":331,"org":332,"tags":333,"stars":25,"repoUrl":26,"updatedAt":340},"account-activity","review Aave account activity history","An Aave account's history — past supplies, borrows, repays, withdrawals and collateral changes, and how net worth or health factor moved over time — for \"transaction history\", \"how has my position changed\", what a wallet did on Aave.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[334,337,338,339],{"name":335,"slug":336,"type":15},"Analytics","analytics",{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},"2026-08-30T08:53:32.35737",{"slug":342,"name":342,"fn":343,"description":344,"org":345,"tags":346,"stars":25,"repoUrl":26,"updatedAt":353},"deleverage","reduce risk on Aave positions","Reduce the risk on an Aave position — \"reduce my risk\", \"unwind\", \"get my health factor up\", \"I'm close to liquidation\" — by comparing the routes (repay, repay from collateral, add collateral) on the resulting health factor before recommending one.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[347,348,349,352],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":350,"slug":351,"type":15},"Risk Assessment","risk-assessment",{"name":17,"slug":18,"type":15},"2026-08-30T08:53:35.023521",{"slug":4,"name":4,"fn":5,"description":6,"org":355,"tags":356,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[357,358,359,360],{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"slug":362,"name":362,"fn":363,"description":364,"org":365,"tags":366,"stars":25,"repoUrl":26,"updatedAt":373},"tx-confirmation","confirm Aave transaction status","Confirm what an Aave transaction did after the user signed it — \"did it go through\", \"was my supply processed\", \"check my transaction\" — by reading the position it left behind and comparing with what was simulated.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[367,368,369,372],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":370,"slug":371,"type":15},"Monitoring","monitoring",{"name":17,"slug":18,"type":15},"2026-08-30T08:53:36.065957",{"slug":375,"name":375,"fn":376,"description":377,"org":378,"tags":379,"stars":25,"repoUrl":26,"updatedAt":386},"yield-analysis","analyze Aave yield and interest rates","Compare Aave yields and rates — best APY for an asset, rates across chains or between V3 and V4, APY history and stability, GHO savings (sGHO) — before recommending where to supply or borrow.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[380,383,384,385],{"name":381,"slug":382,"type":15},"Analysis","analysis",{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},"2026-08-30T08:53:35.543006",5,{"items":389,"total":387},[390,397,404,411,418],{"slug":329,"name":329,"fn":330,"description":331,"org":391,"tags":392,"stars":25,"repoUrl":26,"updatedAt":340},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[393,394,395,396],{"name":335,"slug":336,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"slug":342,"name":342,"fn":343,"description":344,"org":398,"tags":399,"stars":25,"repoUrl":26,"updatedAt":353},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[400,401,402,403],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":350,"slug":351,"type":15},{"name":17,"slug":18,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":405,"tags":406,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[407,408,409,410],{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"slug":362,"name":362,"fn":363,"description":364,"org":412,"tags":413,"stars":25,"repoUrl":26,"updatedAt":373},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[414,415,416,417],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":370,"slug":371,"type":15},{"name":17,"slug":18,"type":15},{"slug":375,"name":375,"fn":376,"description":377,"org":419,"tags":420,"stars":25,"repoUrl":26,"updatedAt":386},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[421,422,423,424],{"name":381,"slug":382,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15}]