{"info":{"title":"pendle api","version":"1.0.0","description":"## Terms used in the documentation/API Below are some terms used in the documentation/API: - Pendle Assets/Tokens: PT, YT, LP, SY - Non-Pendle Assets: other tokens that are not Pendle assets, such as USDC, USDT, DAI, etc. - Asset ID/Token Id: Is the combination of chain id and token address, e.g. 1-0x5fe30ac5cb1abb0e44cdffb2916c254aeb368650 - Computing unit: Cost of an API call, this is use to rate limit the API calls. More on it at [our document](https://docs.pendle.finance/pendle-v2/Developers"},"paths":{"/tools/sdk_controller_convert":{"post":{"tags":["read","sdk"],"summary":"Universal convert function — The **Convert API** is the recommended endpoint for all Pendle transaction building. It sup","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"sdk_controller_convert","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","slippage","tokensIn","amountsIn","tokensOut"],"properties":{"chainId":{"type":"number","description":"path parameter: chainId (number)"},"receiver":{"type":"string","description":"Recipient address for transaction output"},"slippage":{"type":"number","description":"Maximum slippage tolerance (0-1, where 0.01 equals 1%)"},"tokensIn":{"type":"string","examples":["0x123,0x456"],"description":"Input token addresses, seperate by comma with no spaces"},"amountsIn":{"type":"string","examples":["1000000000000000000,2000000000000000000"],"description":"Input token amounts in wei, seperate by comma with no spaces"},"needScale":{"type":"boolean","description":"Aggregators needScale value, only set to true when amounts are updated onchain. When enabled, please make sure to buffer the amountIn by about 2%"},"tokensOut":{"type":"string","examples":["0x123,0x456"],"description":"Output token addresses, seperate by comma with no spaces"},"aggregators":{"type":"string","examples":["kyberswap,okx"],"description":"List of aggregator names to use for the swap. If not provided, all aggregators will be used.List of supported aggregator can be found at: [getSupportedAggregators](#tag/sdk/get/v1/sdk/{chainId}/supported-aggregators)"},"redeemRewards":{"type":"boolean","description":"Redeem rewards"},"useLimitOrder":{"type":"boolean","description":"To use limit orders when converting, default to true"},"additionalData":{"type":"string","description":"Available fields: `impliedApy`, `effectiveApy`. Comma separated list of fields to return. For example: `field1,field2`. More fields will consume more computing units."},"enableAggregator":{"type":"boolean","description":"Enable swap aggregator to swap between tokens that cannot be natively converted from/to the underlying asset"}}}}},"required":true}}},"/tools/sdk_controller_convert_v3":{"post":{"tags":["write","sdk"],"summary":"Universal convert function (recommended — POST body variant) — The **Convert API** is the recommended endpoint for all P","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"sdk_controller_convert_v3","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","slippage","inputs","outputs"],"properties":{"inputs":{"type":"array","description":"List of input tokens and their amounts"},"chainId":{"type":"number","description":"path parameter: chainId (number)"},"outputs":{"type":"array","description":"Output token addresses"},"receiver":{"type":"string","description":"Recipient address for transaction output"},"slippage":{"type":"number","description":"Maximum slippage tolerance (0-1, where 0.01 equals 1%)"},"needScale":{"type":"boolean","description":"Aggregators needScale value, only set to true when amounts are updated onchain. When enabled, please make sure to buffer the amountIn by about 2%"},"aggregators":{"type":"array","description":"List of aggregator names to use for the swap. If not provided, default aggregators will be used.List of supported aggregator can be found at: [getSupportedAggregators](#tag/sdk/get/v1/sdk/{chainId}/supported-aggregators)"},"okxSwapParams":{"type":"object","description":"okxSwapParams ({ fromTokenReferrerWalletAddress: string, toTokenReferrerWalletAddress: string, feePercent: number, positiveSlippagePercent: number })"},"redeemRewards":{"type":"boolean","description":"Redeem rewards"},"useLimitOrder":{"type":"boolean","description":"To use limit orders when converting, default to true"},"additionalData":{"type":"string","description":"Available fields: `impliedApy`, `effectiveApy`. Comma separated list of fields to return. For example: `field1,field2`. More fields will consume more computing units."},"enableAggregator":{"type":"boolean","description":"Enable swap aggregator to swap between tokens that cannot be natively converted from/to the underlying asset"}}}}},"required":true}}},"/tools/prices_controller_ohlcv_v4":{"post":{"tags":["read","assets","oracle","analytics"],"summary":"Get PT / YT / LP historical price by address — Historical price data for PT / YT tokens / LP tokens. We do not support h","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"prices_controller_ohlcv_v4","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","address"],"properties":{"address":{"type":"string","description":"path parameter: address (string)"},"chainId":{"type":"number","description":"path parameter: chainId (number)"},"time_frame":{"type":"string","description":"Time interval for OHLCV data aggregation. Valid values: `hour`, `day`, `week`."},"timestamp_end":{"type":"string","description":"ISO Date string of the end time you want to query"},"timestamp_start":{"type":"string","description":"ISO Date string of the start time you want to query"}}}}},"required":true}}},"/tools/sdk_controller_get_market_tokens":{"post":{"tags":["read","sdk"],"summary":"Get supported tokens for market — Returns the two sets of tokens relevant for a given market: - **SY input tokens**: tok","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"sdk_controller_get_market_tokens","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","market"],"properties":{"market":{"type":"string","description":"path parameter: market (string)"},"chainId":{"type":"number","description":"path parameter: chainId (number)"}}}}},"required":true}}},"/tools/markets_controller_market_data_v2":{"post":{"tags":["read","markets"],"summary":"Get latest/historical market data by address — Returns the latest or historical data snapshot for a given market. Pass a","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"markets_controller_market_data_v2","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","address"],"properties":{"address":{"type":"string","description":"path parameter: address (string)"},"chainId":{"type":"number","description":"path parameter: chainId (number)"},"timestamp":{"type":"string","description":"query parameter: timestamp (string)"}}}}},"required":true}}},"/tools/limit_orders_controller_create_order":{"post":{"tags":["write","limit orders"],"summary":"Create limit order — Submit a signed limit order to the Pendle order book. Once created, the order is visible to takers ","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"limit_orders_controller_create_order","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","signature","salt","expiry","nonce","type","token","yt","maker","receiver","makingAmount","lnImpliedRate","failSafeRate","permit"],"properties":{"yt":{"type":"string","description":"YT address"},"salt":{"type":"string","description":"BigInt string of salt"},"type":{"type":"number","description":"LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }"},"maker":{"type":"string","description":"Maker address"},"nonce":{"type":"string","description":"BigInt string of nonce"},"token":{"type":"string","description":"Token used by user to make order"},"expiry":{"type":"string","description":"BigInt string of expiry"},"permit":{"type":"string","description":"Bytes string for permit"},"chainId":{"type":"number","description":"Chain Id"},"receiver":{"type":"string","description":"Receiver address"},"signature":{"type":"string","description":"Signature of order, signed by maker"},"failSafeRate":{"type":"string","description":"BigInt string of failSafeRate"},"makingAmount":{"type":"string","description":"BigInt string of making amount"},"lnImpliedRate":{"type":"string","description":"BigInt string of lnImpliedRate"}}}}},"required":true}}},"/tools/sdk_controller_swap_pt_cross_chain_v2":{"post":{"tags":["read","sdk","dex"],"summary":"Swap PT using fixed price AMM for cross-chain operations — Swap a bridged PT on a spoke chain back to a regular token us","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"sdk_controller_swap_pt_cross_chain_v2","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","slippage","pt","exactPtIn","tokenOut"],"properties":{"pt":{"type":"string","description":"PT token address"},"chainId":{"type":"number","description":"path parameter: chainId (number)"},"receiver":{"type":"string","description":"Recipient address for transaction output"},"slippage":{"type":"number","description":"Maximum slippage tolerance (0-1, where 0.01 equals 1%)"},"tokenOut":{"type":"string","description":"Output token address"},"exactPtIn":{"type":"string","description":"Exact amount value PT in"},"aggregators":{"type":"string","examples":["kyberswap,okx"],"description":"List of aggregator names to use for the swap. If not provided, all aggregators will be used.List of supported aggregator can be found at: [getSupportedAggregators](#tag/sdk/get/v1/sdk/{chainId}/supported-aggregators)"},"enableAggregator":{"type":"boolean","description":"Enable swap aggregator to swap between tokens that cannot be natively converted from/to the underlying asset"}}}}},"required":true}}},"/tools/sdk_controller_cancel_all_limit_orders":{"post":{"tags":["read","sdk"],"summary":"Cancel all limit orders — Generate the transaction payload to cancel all active limit orders for a user in a single on-c","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"sdk_controller_cancel_all_limit_orders","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","userAddress"],"properties":{"chainId":{"type":"number","description":"path parameter: chainId (number)"},"userAddress":{"type":"string","description":"User Address"}}}}},"required":true}}},"/tools/dashboard_controller_get_user_positions":{"post":{"tags":["read","dashboard"],"summary":"Get user positions by address — Returns a complete snapshot of a user's Pendle positions across all supported chains, in","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"dashboard_controller_get_user_positions","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["user"],"properties":{"user":{"type":"string","description":"path parameter: user (string)"},"filterUsd":{"type":"number","examples":[0.1],"description":"Minimum USD value threshold to filter positions"}}}}},"required":true}}},"/tools/transactions_controller_transactions_v5":{"post":{"tags":["read","transactions"],"summary":"Get market transactions by address — Return transactions with: user action (long or short yield, add or remove liquidity","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"transactions_controller_transactions_v5","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","address"],"properties":{"skip":{"type":"number","description":"Use `resumeToken` instead."},"type":{"type":"string","description":"Transaction type to filter by. Valid values: `TRADES`, `LIQUIDITY`."},"limit":{"type":"number","description":"Maximum number of results to return. The parameter is capped at 1000."},"action":{"type":"string","description":"Specific transaction action to filter by. Valid values: `LONG_YIELD`, `SHORT_YIELD`, `ADD_LIQUIDITY`, `REMOVE_LIQUIDITY`."},"address":{"type":"string","description":"path parameter: address (string)"},"chainId":{"type":"number","description":"path parameter: chainId (number)"},"minValue":{"type":"number","description":"Minimum transaction value filter in USD"},"txOrigin":{"type":"string","description":"Address of the transaction executor"},"resumeToken":{"type":"string","description":"Resume token for pagination. Use this to continue a previous query."}}}}},"required":true}}},"/tools/sdk_controller_cancel_single_limit_order":{"post":{"tags":["read","sdk"],"summary":"Cancel one single limit order by order hash — Generate the transaction payload to cancel a specific limit order on-chain","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"sdk_controller_cancel_single_limit_order","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","userAddress","salt","expiry","nonce","orderType","token","YT","maker","receiver","makingAmount","lnImpliedRate","failSafeRate","permit"],"properties":{"YT":{"type":"string","description":"YT address"},"salt":{"type":"string","description":"BigInt string of salt"},"maker":{"type":"string","description":"Maker address"},"nonce":{"type":"string","description":"BigInt string of nonce"},"token":{"type":"string","description":"Token used by user to make order"},"expiry":{"type":"string","description":"BigInt string of expiry"},"permit":{"type":"string","description":"Bytes string for permit"},"chainId":{"type":"number","description":"path parameter: chainId (number)"},"receiver":{"type":"string","description":"Receiver address"},"orderType":{"type":"number","description":"LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }"},"userAddress":{"type":"string","description":"User Address"},"failSafeRate":{"type":"string","description":"BigInt string of failSafeRate"},"makingAmount":{"type":"string","description":"BigInt string of making amount"},"lnImpliedRate":{"type":"string","description":"BigInt string of lnImpliedRate (natural logarithm of the implied rate)"}}}}},"required":true}}},"/tools/sdk_controller_get_supported_aggregators":{"post":{"tags":["read","sdk"],"summary":"Get supported aggregators for a chain — Returns the list of DEX aggregators available on this chain for routing token sw","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"sdk_controller_get_supported_aggregators","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId"],"properties":{"chainId":{"type":"number","description":"path parameter: chainId (number)"}}}}},"required":true}}},"/tools/transactions_controller_get_transactions":{"post":{"tags":["read","transactions"],"summary":"Get user transaction history — Returns the on-chain transaction history for a user address across all Pendle operations.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"transactions_controller_get_transactions","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["user"],"properties":{"skip":{"type":"number","description":"Number of results to skip. The parameter is capped at 1000."},"user":{"type":"string","description":"query parameter: user (string)"},"limit":{"type":"number","description":"Maximum number of results to return. The parameter is capped at 1000."},"market":{"type":"string","description":"Market address"},"chainId":{"type":"number","description":"Chain ID"}}}}},"required":true}}},"/tools/chains_controller_get_supported_chain_ids":{"post":{"tags":["read","chains"],"summary":"Get supported chain IDs Returns: { chainIds: number[] }.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"chains_controller_get_supported_chain_ids","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}},"required":true}}},"/tools/pendle_emission_controller_pendle_emission":{"post":{"tags":["read","pendle emission"],"summary":"Get Pendle Emission — Returns the latest confirmed PENDLE emission across all eligible markets. Each market includes a b","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"pendle_emission_controller_pendle_emission","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}},"required":true}}},"/tools/sdk_controller_get_pt_cross_chain_metadata":{"post":{"tags":["read","sdk"],"summary":"PT cross-chain metadata — Returns metadata for a PT that has been bridged to a spoke chain, including maturity, underlyi","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"sdk_controller_get_pt_cross_chain_metadata","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","pt"],"properties":{"pt":{"type":"string","description":"path parameter: pt (string)"},"chainId":{"type":"number","description":"path parameter: chainId (number)"}}}}},"required":true}}},"/tools/ve_pendle_controller_all_market_total_fees":{"post":{"tags":["read","ve pendle"],"summary":"[Deprecated] Get market fees chart — **Deprecated**: vePENDLE has been replaced by sPENDLE. The epoch-based fee distribu","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"ve_pendle_controller_all_market_total_fees","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"timestamp_end":{"type":"string","description":"Should be rounded up to time frame (in UTC)"},"timestamp_start":{"type":"string","description":"Should be rounded up to time frame (in UTC)"}}}}},"required":true}}},"/tools/sdk_controller_redeem_interests_and_rewards":{"post":{"tags":["read","sdk","vault"],"summary":"Redeem rewards and interests from positions — Generate a transaction payload to claim all accrued interest and incentive","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"sdk_controller_redeem_interests_and_rewards","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","receiver"],"properties":{"sys":{"type":"string","description":"Use comma separated values to search by multiple addresses"},"yts":{"type":"string","description":"Use comma separated values to search by multiple addresses"},"chainId":{"type":"number","description":"path parameter: chainId (number)"},"markets":{"type":"string","description":"Use comma separated values to search by multiple addresses"},"receiver":{"type":"string","description":"The address to receive the output of the action"}}}}},"required":true}}},"/tools/limit_orders_controller_get_all_limit_orders":{"post":{"tags":["read","limit orders"],"summary":"Get all limit orders for analytics — This endpoint is for analytics purpose, if you want to analyze the limit orders dat","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"limit_orders_controller_get_all_limit_orders","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"yt":{"type":"string","description":"Market address to filter orders by"},"limit":{"type":"number","description":"Maximum number of results to return. The parameter is capped at 1000."},"maker":{"type":"string","description":"Maker address to filter orders by"},"chainId":{"type":"number","description":"Chain id to filter by, leave blank to fetch all chains."},"resumeToken":{"type":"string","description":"Resume token for pagination"},"timestamp_end":{"type":"string","description":"query parameter: timestamp_end (string)"},"timestamp_start":{"type":"string","description":"query parameter: timestamp_start (string)"}}}}},"required":true}}},"/tools/markets_controller_market_historical_data_v2":{"post":{"tags":["read","markets"],"summary":"Get market time-series data by address — Returns the time-series data for a given market. Useful to draw charts or do da","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"markets_controller_market_historical_data_v2","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","address"],"properties":{"fields":{"type":"string","examples":["timestamp,maxApy,baseApy,underlyingApy,impliedApy,tvl,totalTvl,underlyingInterestApy,underlyingRewardApy,ytFloatingApy,swapFeeApy,voterApr,pendleApy,lpRewardApy,totalPt,totalSy,totalSupply,ptPrice,ytPrice,syPrice,lpPrice,lastEpochVotes,tradingVolume"],"description":"Comma-separated list of fields to include in the response. Use `all` to include all fields. Available fields could be found in the table above. Although you could use `all` to include all fields, it is not recommended because the bigger the payload is, the slower the response will be."},"address":{"type":"string","description":"path parameter: address (string)"},"chainId":{"type":"number","description":"path parameter: chainId (number)"},"time_frame":{"type":"string","description":"query parameter: time_frame (\"hour\" | \"day\" | \"week\")"},"timestamp_end":{"type":"string","description":"query parameter: timestamp_end (string)"},"timestamp_start":{"type":"string","description":"query parameter: timestamp_start (string)"},"includeFeeBreakdown":{"type":"boolean","description":"Whether you want to fetch fee breakdown data. Default is false. If enable, the response will include 3 fields: explicitSwapFee, implicitSwapFee, limitOrderFee and computing unit cost will be doubled. Fee breakdown is only available for daily and weekly timeframes."}}}}},"required":true}}},"/tools/ve_pendle_controller_ve_pendle_extended_data":{"post":{"tags":["read","ve pendle"],"summary":"[Deprecated] Get vePendle statistics — **Deprecated**: vePENDLE has been replaced by sPENDLE. This endpoint returns vePE","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"ve_pendle_controller_ve_pendle_extended_data","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}},"required":true}}},"/tools/limit_orders_controller_get_maker_limit_order":{"post":{"tags":["read","limit orders"],"summary":"Get user limit orders in market — Returns the active and historical limit orders placed by a specific user in a market. ","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"limit_orders_controller_get_maker_limit_order","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","maker"],"properties":{"yt":{"type":"string","description":"Order's YT address"},"skip":{"type":"number","description":"Number of results to skip. The parameter is capped at 1000."},"type":{"type":"number","description":"LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }"},"limit":{"type":"number","description":"Maximum number of results to return. The parameter is capped at 100."},"maker":{"type":"string","description":"Maker's address"},"chainId":{"type":"number","description":"ChainId"},"isActive":{"type":"boolean","description":"isActive=true to get all maker's active orders, isActive=false otherwise and do not set isActive if you want to fetch all maker's orders"}}}}},"required":true}}},"/tools/sdk_controller_get_market_spot_swapping_price":{"post":{"tags":["read","sdk","oracle","dex"],"summary":"Get real-time PT/YT swap price of a market — Return price by swapping 1 unit underlying token to PT/ YT, and 1 unit of P","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"sdk_controller_get_market_spot_swapping_price","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","market"],"properties":{"market":{"type":"string","description":"path parameter: market (string)"},"chainId":{"type":"number","description":"path parameter: chainId (number)"}}}}},"required":true}}},"/tools/limit_orders_controller_get_taker_limit_orders":{"post":{"tags":["read","limit orders"],"summary":"Get limit orders to match by YT address — Returns the best-matching active limit orders for a given YT address, sorted b","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"limit_orders_controller_get_taker_limit_orders","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","yt","type"],"properties":{"yt":{"type":"string","description":"Order's YT address"},"skip":{"type":"number","description":"Number of results to skip. The parameter is capped at 1000."},"type":{"type":"number","description":"LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }"},"limit":{"type":"number","description":"Maximum number of results to return. The parameter is capped at 100."},"sortBy":{"type":"string","description":"query parameter: sortBy (\"Implied Rate\")"},"chainId":{"type":"number","description":"ChainId"},"sortOrder":{"type":"string","description":"query parameter: sortOrder (\"asc\" | \"desc\")"}}}}},"required":true}}},"/tools/markets_cross_chain_controller_get_all_markets":{"post":{"tags":["read","markets"],"summary":"Get all markets (cross-chain) — Returns the complete list of whitelisted Pendle markets across all supported chains with","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"markets_cross_chain_controller_get_all_markets","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"string","examples":["1-0x7b246b8dbc2a640bf2d8221890cee8327fc23917,1-0x44474d98d1484c26e8d296a43a721998731cf775"],"description":"Market ids to fetch metadata for (comma-separated), leave blank to fetch all markets. Up to 20 ids allowed."},"chainId":{"type":"number","description":"Filter to markets on a specific blockchain network"},"isActive":{"type":"boolean","description":"Filter to active or inactive markets"}}}}},"required":true}}},"/tools/dashboard_controller_get_merkle_claimed_rewards":{"post":{"tags":["read","dashboard"],"summary":"Get all merkle claimed rewards for a user — Returns the historical record of all merkle rewards that a user has already ","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"dashboard_controller_get_merkle_claimed_rewards","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["user"],"properties":{"user":{"type":"string","description":"Ethereum address of the user"}}}}},"required":true}}},"/tools/limit_orders_controller_get_limit_order_book_v2":{"post":{"tags":["read","limit orders"],"summary":"Get order book v2 — Returns the consolidated order book for a market, aggregating both limit orders and AMM liquidity de","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"limit_orders_controller_get_limit_order_book_v2","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","precisionDecimal","market"],"properties":{"limit":{"type":"number","description":"Maximum number of results to return. The parameter is capped at 200."},"market":{"type":"string","description":"Market address"},"chainId":{"type":"number","description":"path parameter: chainId (number)"},"includeAmm":{"type":"boolean","description":"Include AMM orders in the order book"},"precisionDecimal":{"type":"number","description":"Min: 0, Max: 3, returned impliedApy will have precision upto 10^{-precisionDecimal}%"}}}}},"required":true}}},"/tools/limit_orders_controller_generate_limit_order_data":{"post":{"tags":["write","limit orders","oracle"],"summary":"Generate limit order data for signing — Generate the EIP-712 typed data payload for a limit order. Sign the returned dat","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"limit_orders_controller_generate_limit_order_data","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","YT","orderType","token","maker","makingAmount","impliedApy","expiry"],"properties":{"YT":{"type":"string","description":"YT address"},"maker":{"type":"string","description":"Maker address"},"token":{"type":"string","description":"Input token if type is TOKEN_FOR_PT or TOKEN_FOR_YT, output token otherwise"},"expiry":{"type":"string","description":"Timestamp of order's expiry, in seconds"},"chainId":{"type":"number","description":"Chain Id"},"orderType":{"type":"number","description":"LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }"},"impliedApy":{"type":"number","description":"Implied APY of this limit order"},"makingAmount":{"type":"string","description":"BigInt string of making amount, the amount of token if the order is TOKEN_FOR_PT or TOKEN_FOR_YT, otherwise the amount of PT or YT"}}}}},"required":true}}},"/tools/markets_cross_chain_controller_get_points_markets":{"post":{"tags":["read","markets"],"summary":"Get points markets — Returns all active markets that have a points reward programme — markets where trading or providing","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"markets_cross_chain_controller_get_points_markets","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"chainId":{"type":"number","description":"Filter to markets on a specific blockchain network"},"isActive":{"type":"boolean","description":"Filter to active or inactive markets"}}}}},"required":true}}},"/tools/statistics_controller_get_distinct_user_from_token":{"post":{"tags":["read","statistics"],"summary":"Get distinct users for a specific token — Returns a list of unique wallet addresses that have interacted with a specific","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"statistics_controller_get_distinct_user_from_token","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string","examples":["0x0000000000000000000000000000000000000000"],"description":"Token address to query. Can be any Pendle token (PT, YT, SY, LP). Address will be normalized to lowercase."},"chainId":{"type":"number","description":"Optional chain ID to filter results. If provided, returns only users who interacted with the token on the specified chain. If omitted, returns users across all chains where the token exists."}}}}},"required":true}}},"/tools/limit_orders_controller_get_all_archived_limit_orders":{"post":{"tags":["read","limit orders"],"summary":"Get all archived limit orders for analytics — This have the same interface and usecase as the endpoint above, but it ret","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"limit_orders_controller_get_all_archived_limit_orders","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"yt":{"type":"string","description":"Market address to filter orders by"},"limit":{"type":"number","description":"Maximum number of results to return. The parameter is capped at 1000."},"maker":{"type":"string","description":"Maker address to filter orders by"},"chainId":{"type":"number","description":"Chain id to filter by, leave blank to fetch all chains."},"resumeToken":{"type":"string","description":"Resume token for pagination"},"timestamp_end":{"type":"string","description":"query parameter: timestamp_end (string)"},"timestamp_start":{"type":"string","description":"query parameter: timestamp_start (string)"}}}}},"required":true}}},"/tools/assets_cross_chain_controller_get_pendle_assets_metadata":{"post":{"tags":["read","assets"],"summary":"Get all assets (cross-chain) — Returns the flat list of all PT, YT, LP, and SY tokens supported in the Pendle app, acros","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"assets_cross_chain_controller_get_pendle_assets_metadata","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"string","examples":["1-0x5fe30ac5cb1abb0e44cdffb2916c254aeb368650,1-0xc5cd692e9b4622ab8cdb57c83a0f99f874a169cd"],"description":"Token ids to data for (comma-separated), leave blank to fetch all tokens. Up to 20 ids allowed."},"skip":{"type":"number","description":"Number of results to skip."},"type":{"type":"string","description":"Asset types to filter by (comma-separated). Valid values: `PENDLE_LP`, `SY`, `PT`, `YT`. Leave blank to fetch all assets types."},"limit":{"type":"number","description":"Maximum number of results to return. Leave blank to fetch all results."},"chainId":{"type":"number","examples":[1],"description":"Chain id to filter by, leave blank to fetch all chains."}}}}},"required":true}}},"/tools/limit_orders_controller_generate_scaled_limit_order_data":{"post":{"tags":["write","limit orders","oracle"],"summary":"Generate list of limit orders (scaled) for signing — Generate a batch of limit orders spread across a price (implied APY","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"limit_orders_controller_generate_scaled_limit_order_data","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["chainId","YT","orderType","token","maker","makingAmount","lowerImpliedApy","upperImpliedApy","orderCount","sizeDistribution","expiry"],"properties":{"YT":{"type":"string","description":"YT address"},"maker":{"type":"string","description":"Maker address"},"token":{"type":"string","description":"Input token if type is TOKEN_FOR_PT or TOKEN_FOR_YT, output token otherwise"},"expiry":{"type":"string","description":"Timestamp of order's expiry, in seconds"},"chainId":{"type":"number","description":"Chain Id"},"orderType":{"type":"number","description":"LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }"},"orderCount":{"type":"number","description":"Upper implied APY of this scaled order"},"makingAmount":{"type":"string","description":"BigInt string of making amount, the amount of token if the order is TOKEN_FOR_PT or TOKEN_FOR_YT, otherwise the amount of PT or YT"},"lowerImpliedApy":{"type":"number","description":"Lower implied APY of this scaled order"},"upperImpliedApy":{"type":"number","description":"Upper implied APY of this scaled order"},"sizeDistribution":{"type":"string","description":"Scaled Order Distribution Type { }"}}}}},"required":true}}},"/tools/prices_cross_chain_controller_get_all_asset_prices_by_addresses_cross_chains":{"post":{"tags":["read","assets","oracle"],"summary":"Get asset prices (cross-chain) — Returns USD prices for Pendle-supported tokens across all chains. Covers all token type","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tool result"}},"operationId":"prices_cross_chain_controller_get_all_asset_prices_by_addresses_cross_chains","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"string","examples":["1-0x5fe30ac5cb1abb0e44cdffb2916c254aeb368650,1-0xc5cd692e9b4622ab8cdb57c83a0f99f874a169cd"],"description":"Token ids to data for (comma-separated), leave blank to fetch all tokens. Up to 20 ids allowed."},"skip":{"type":"number","description":"Number of results to skip."},"type":{"type":"string","description":"Asset types to filter by (comma-separated). Valid values: `PENDLE_LP`, `SY`, `PT`, `YT`. Leave blank to fetch all assets types."},"limit":{"type":"number","description":"Maximum number of results to return. Leave blank to fetch all results."},"chainId":{"type":"number","examples":[1],"description":"Chain id to filter by, leave blank to fetch all chains."}}}}},"required":true}}}},"openapi":"3.1.0","servers":[{"url":"https://aarna.mcp.junct.dev"}]}