feat: Pendle V2 action provider (PT/YT/LP)
- Dominant language
- TypeScript
- Stars
- 1.3k
- Forks
- 815
- Avg merge
- 13h 31m
- Merged PRs (30d)
- 2
Description
### Language Implementation
- [x] Python
### Feature Type
- [x] Action Provider Template
### 🚀 The feature, motivation and pitch
Add a Pendle V2 action provider so AgentKit agents can interact with yield-tokenized assets (PT, YT) and provide liquidity to Pendle markets directly.
Pendle is listed in [WISHLIST.md](https://github.com/coinbase/agentkit/blob/main/WISHLIST.md) under *DeFi → Liquidity & Staking* ("Pendle interactions (LP, PT, YT)") and currently has no PR open or merged.
**Why it matters.** AgentKit covers spot DeFi (Aave merged in #865, Morpho, Aerodrome in flight, vaults via Vaults.fyi), but yield trading — fixed-rate buying via PT, leveraged yield via YT, LP — is a multi-billion-TVL category that's not addressable today. Pendle V2 is deployed on Base mainnet (deployment file [`8453-core.json`](https://github.com/pendle-finance/pendle-core-v2-public/blob/main/deployments/8453-core.json) in `pendle-core-v2-public`) with the same canonical router address used on Ethereum, Arbitrum, BNB, and Mantle:
- PendleRouter (all chains): `0x888888888889758F76e7103c6CbF23ABbF58F946`
- RouterStatic (Base): `0xB4205a645c7e920BD8504181B1D7f2c5C955C3e7`
Active markets churn by maturity, so the provider will fetch the live market set from the Pendle public API (`https://api-v2.pendle.finance/core/v1/8453/markets/active`) at runtime rather than hard-coding addresses.
**Proposed scope** (single Python PR following the Aave precedent in #865):
- Buy PT (fixed yield) with an underlying or stablecoin
- Sell PT back to underlying before or at maturity
- Buy YT (long-yield exposure)
- Add and remove dual-token liquidity to a Pendle pool
- Read market info: PT/YT/SY addresses, expiry, implied APY
TypeScript provider in a follow-up PR after Python lands.
File layout follows the merged Aave action provider in #865. Tests mock the `EvmWalletProvider` and assert against canonical Pendle Router calldata.
### Alternatives
- **Direct interactions via existing `erc20` + `wallet` actions** — agents would need to encode Pendle Router calldata themselves, which is exactly the friction this provider removes.
- **Pendle SDK as a one-off TypeScript dependency** — would block the Python provider; calldata generation via the public API + `web3.py` is language-agnostic.
### Additional context
Happy to scope a first PR to PT-only (buy/sell + market info) if maintainers prefer smaller surface area, with YT and LP in follow-ups. Will follow the merge pattern from #865: `make format && make lint && make test` green, README in alphabetic order, `changelog.d/` entry.
Contributor guide
Assessment
This issue has not been assessed yet.