coinbase / coinbase/agentkit

feat: Pendle V2 action provider (PT/YT/LP)

Open
#1,143 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.