{"openapi":"3.1.0","info":{"title":"LI.FI Earn (BYOK) API","version":"0.1.0","description":"LI.FI Earn (BYOK) lets an AI assistant read your own LI.FI Earn data through the LI.FI Earn API with a key you supply (LI.FI API key). Read-only: 5 tools (list_chains, list_protocols, list_vaults, get_vault, get_wallet_positions). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to earn.li.fi. Unofficial connector...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-lifi-earn.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-lifi-earn/docs"},"termsOfService":"https://connectorbay.com/byok-lifi-earn/terms"},"servers":[{"url":"https://byok-lifi-earn.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-lifi-earn/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_chains":{"post":{"operationId":"list_chains","summary":"List the EVM chains covered by LI.FI Earn with chain id and CAIP network id. Use for \"Which chains does LI.FI Earn cover","description":"List the EVM chains covered by LI.FI Earn with chain id and CAIP network id. Use for \"Which chains does LI.FI Earn cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_chainsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_protocols":{"post":{"operationId":"list_protocols","summary":"List the DeFi protocols covered by LI.FI Earn with name and website. Use for \"Which DeFi protocols does LI.FI Earn track","description":"List the DeFi protocols covered by LI.FI Earn with name and website. Use for \"Which DeFi protocols does LI.FI Earn track\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_protocolsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_vaults":{"post":{"operationId":"list_vaults","summary":"List DeFi yield vaults with APY and TVL, filtered by chain, asset, protocol or minimum TVL and sorted by APY or TVL, wit","description":"List DeFi yield vaults with APY and TVL, filtered by chain, asset, protocol or minimum TVL and sorted by APY or TVL, with cursor paging. Use for \"Which USDC vaults on Base have the highest APY\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only vaults on this EVM chain id, for example 8453 for Base.","title":"Chain Id"},"asset":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only vaults of this underlying token symbol or address, for example USDC.","title":"Asset"},"protocol":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only vaults of this protocol name, for example aave-v3.","title":"Protocol"},"min_tvl_usd":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Only vaults with at least this TVL in USD.","title":"Min Tvl Usd"},"sort_by":{"anyOf":[{"enum":["apy","tvl"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by apy (highest total APY first) or tvl (highest first).","title":"Sort By"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's nextCursor field.","title":"Cursor"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page, 1 to 100.","title":"Limit"}},"title":"list_vaultsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_vault":{"post":{"operationId":"get_vault","summary":"Get one vault by chain and address: protocol, underlying tokens, APY over 1, 7 and 30 days, TVL, caps, lock time and red","description":"Get one vault by chain and address: protocol, underlying tokens, APY over 1, 7 and 30 days, TVL, caps, lock time and redemption support. Use for \"What is the APY history of this Base vault\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain_id":{"description":"EVM chain id the vault is on, for example 8453.","minimum":1,"title":"Chain Id","type":"integer"},"address":{"description":"Vault contract address, 0x followed by 40 hex characters.","maxLength":42,"title":"Address","type":"string"}},"required":["chain_id","address"],"title":"get_vaultArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_wallet_positions":{"post":{"operationId":"get_wallet_positions","summary":"List a wallet's DeFi vault positions tracked by LI.FI Earn: protocol, chain, asset and balance in USD. Use for \"What vau","description":"List a wallet's DeFi vault positions tracked by LI.FI Earn: protocol, chain, asset and balance in USD. Use for \"What vault positions does this wallet hold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_address":{"description":"Wallet address, 0x followed by 40 hex characters.","maxLength":42,"title":"User Address","type":"string"}},"required":["user_address"],"title":"get_wallet_positionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}