Odyssey Loopr

io.github.odyssey-financePublished by GitHub account odyssey-financev0.2.0Updated Nov 5, 2026

Quote, build and simulate leveraged DeFi yield positions on Odyssey Loopr.

VerifiedStreamable HTTPWeb executableFinanceAI & ML

Overview

AI-generated overview

Remote MCP server for Odyssey Loopr that lets an assistant quote, build and simulate leveraged DeFi yield positions on EVM chains for the user to sign.

What you can do
  • List and inspect leveraged strategies with APY, leverage bounds, tokens and TVL, filtered by chain, asset or protocol
  • Read an owner address's positions with health, leverage and PnL, and derive the smart contract account holding them
  • Quote opening, adjusting, borrowing, repaying, claiming rewards and closing positions, with health factor and liquidation price
  • Build unsigned transaction steps for each of those actions, plus simulate a build on a fork before signing
When to use it
Useful when someone wants an assistant to explore Loopr leveraged yield strategies, check position health, or prepare and pre-check the transactions for opening, adjusting, repaying or closing a position, while signing themselves in their own wallet.
Requirements
A remote streamable HTTP endpoint at app.odyssey.finance; no packages, environment variables or headers are declared. The user needs an EVM owner address and their own wallet to sign the returned steps. Chain IDs are required for position queries.
Before you install
Deals with real leveraged DeFi positions and funds: builds produce transactions that move collateral and debt, so the user must review and sign each step in their own wallet. The server states it never holds keys or sends transactions. Quotes and builds expire after 180 seconds and builds are single-use; a build should be simulated and checked before signing. Slippage applies to auto-repay and compound claims.

Installation

In SourceWeft

  1. Open Odyssey Loopr in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.odyssey-finance%2Floopr/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "odyssey-loopr": {
      "type": "http",
      "url": "https://app.odyssey.finance/api/mcp"
    }
  }
}

README

This repository has no README.

Tools

17

list_strategies

List strategies

List Loopr leveraged strategies with APY, leverage bounds, deposit/borrow tokens and TVL. Filter by chain, deposit asset or protocol.

ParametersassetschainIdsprotocolsincludeDisabled

get_strategy

Get strategy

Get one strategy. Pass depositToken/borrowToken when several strategies share a strategyId on the same chain.

ParameterschainIdrequiredstrategyIdrequiredborrowTokendepositToken

get_positions

Get positions

List an owner EOA's Loopr positions with health, leverage and PnL. Requires chainId or chainIds. Pass positionAddress (with chainId, not chainIds) to fetch a single position: it returns `{ position, errors, catalogUnavailable }`, and a null `position` with `errors` rows means the chain could not be read, not that the position does not exist.

ParametersownerrequiredchainIdchainIdspositionAddress

get_sca_account

Get smart account

Derive the smart contract account (SCA) that holds Loopr positions for an EOA. Deterministic; the same on every chain.

Parameterseoarequired

quote_open

Quote open

Quote opening a leveraged position: expected collateral, debt, health factor and liquidation price. Returns a quote envelope; `expiresAt` is unix ms and quotes expire after 180 seconds. Amounts are base-unit integer strings.

ParametersamountrequiredchainIdrequiredleveragerequiredslippagestrategyIdrequiredborrowTokencollateralTokenrequired

quote_adjust

Quote adjust

Quote adding collateral ('push', requires leverage) or withdrawing it ('pull'). Returns a quote envelope; `expiresAt` is unix ms and quotes expire after 180 seconds. Amounts are base-unit integer strings.

ParametersamountrequiredchainIdrequiredleverageslippagedirectionrequiredstrategyIdrequiredpositionAddressrequired

quote_borrow

Quote borrow

Quote borrowing more against a position. Returns a quote envelope; `expiresAt` is unix ms and quotes expire after 180 seconds. Amounts are base-unit integer strings.

ParameterschainIdrequiredmarketIdstrategyIdrequiredborrowAmountrequiredpositionAddressrequired

quote_repay

Quote repay

Quote repaying debt. 'auto' repays from collateral via a flash-loan swap and requires slippage; 'manual' repays from the wallet. Returns a quote envelope; `expiresAt` is unix ms and quotes expire after 180 seconds. Amounts are base-unit integer strings.

ParametersmoderequiredchainIdrequiredslippagestrategyIdrequiredrepayAmountrequiredwithdrawAmountpositionAddressrequired

quote_claim

Quote claim

Quote claiming rewards. 'send' pays them to the owner; 'compound' swaps them into the position and requires slippage. The returned `rewards` feed build_claim. Returns a quote envelope; `expiresAt` is unix ms and quotes expire after 180 seconds. Amounts are base-unit integer strings.

ParametersmoderequiredchainIdrequiredslippagestrategyIdrequiredpositionAddressrequired

quote_close

Quote close

Quote closing a position in full. Returns a quote envelope; `expiresAt` is unix ms and quotes expire after 180 seconds. Amounts are base-unit integer strings.

ParameterschainIdrequiredslippagestrategyIdrequiredpositionAddressrequired

build_open

Build open

Build the steps that open a leveraged position. Returns UNSIGNED transaction steps for the owner to sign in order; this server never holds keys or sends transactions. The build expires after 180 seconds (`expiresAt`, unix ms): build immediately before signing, not as a plan for later. Builds are single-use: rebuilding an open predicts a different position address, so never replay one. A successful build does not guarantee a successful transaction: pass `steps` to `simulate` and check `ok` before asking anyone to sign. `tokenIn` (zap-in) is build-only: quote in the collateral token, then set `tokenIn` here to add the swap. With `tokenIn` set, `amount` is in `tokenIn` decimals. A zap-in is simulated by the build itself, and a failure gets 422 `simulation_reverted`. Any build the owner funds (open, adjust push, manual repay), zap-in or not, gets 422 `insufficient_balance` (`token`, `required`, `available`) when the owner holds less than it pulls.

ParametersownerrequiredamountrequiredchainIdrequiredtokenInleveragerequiredslippagestrategyIdrequiredborrowTokenrequiredapprovalModeforceSwappermaxPriceImpacttokenInSwapper+1 more

build_adjust

Build adjust

Build the steps that add collateral ('push': requires collateralToken, amount, borrowToken, leverage) or withdraw it ('pull': requires token, tokenOut, and exactly one of withdrawAmount or withdrawAll). Fields of the other direction are refused, not ignored. Returns UNSIGNED transaction steps for the owner to sign in order; this server never holds keys or sends transactions. The build expires after 180 seconds (`expiresAt`, unix ms): build immediately before signing, not as a plan for later. Builds are single-use: rebuilding an open predicts a different position address, so never replay one. A successful build does not guarantee a successful transaction: pass `steps` to `simulate` and check `ok` before asking anyone to sign. `tokenIn` (zap-in) is build-only: quote in the collateral token, then set `tokenIn` here to add the swap. With `tokenIn` set, `amount` is in `tokenIn` decimals. A zap-in is simulated by the build itself, and a failure gets 422 `simulation_reverted`. Any build the owner funds (open, adjust push, manual repay), zap-in or not, gets 422 `insufficient_balance` (`token`, `required`, `available`) when the owner holds less than it pulls.

ParametersownerrequiredtokenamountchainIdrequiredtokenInleverageslippagetokenOutdirectionrequiredstrategyIdrequiredborrowTokenwithdrawAll+7 more

build_borrow

Build borrow

Build the steps that borrow more against a position. Returns UNSIGNED transaction steps for the owner to sign in order; this server never holds keys or sends transactions. The build expires after 180 seconds (`expiresAt`, unix ms): build immediately before signing, not as a plan for later. Builds are single-use: rebuilding an open predicts a different position address, so never replay one. A successful build does not guarantee a successful transaction: pass `steps` to `simulate` and check `ok` before asking anyone to sign.

ParametersownerrequiredchainIdrequiredmarketIdstrategyIdrequiredborrowAmountrequiredpositionAddressrequired

build_repay

Build repay

Build the steps that repay debt. 'auto' requires slippage; 'manual' repays from the owner's wallet. Returns UNSIGNED transaction steps for the owner to sign in order; this server never holds keys or sends transactions. The build expires after 180 seconds (`expiresAt`, unix ms): build immediately before signing, not as a plan for later. Builds are single-use: rebuilding an open predicts a different position address, so never replay one. A successful build does not guarantee a successful transaction: pass `steps` to `simulate` and check `ok` before asking anyone to sign. Any build the owner funds (open, adjust push, manual repay), zap-in or not, gets 422 `insufficient_balance` (`token`, `required`, `available`) when the owner holds less than it pulls.

ParametersmoderequiredownerrequiredchainIdrequiredslippagestrategyIdrequiredrepayAmountrequiredapprovalModeforceSwapperwithdrawAmountpositionAddressrequired

build_claim

Build claim

Build the steps that claim rewards. Pass `rewards` exactly as quote_claim returned them. 'compound' requires slippage. Returns UNSIGNED transaction steps for the owner to sign in order; this server never holds keys or sends transactions. The build expires after 180 seconds (`expiresAt`, unix ms): build immediately before signing, not as a plan for later. Builds are single-use: rebuilding an open predicts a different position address, so never replay one. A successful build does not guarantee a successful transaction: pass `steps` to `simulate` and check `ok` before asking anyone to sign.

ParametersmoderequiredownerrequiredchainIdrequiredrewardsrequiredslippagestrategyIdrequiredpositionAddressrequired

build_close

Build close

Build the steps that close a position in full. Returns UNSIGNED transaction steps for the owner to sign in order; this server never holds keys or sends transactions. The build expires after 180 seconds (`expiresAt`, unix ms): build immediately before signing, not as a plan for later. Builds are single-use: rebuilding an open predicts a different position address, so never replay one. A successful build does not guarantee a successful transaction: pass `steps` to `simulate` and check `ok` before asking anyone to sign.

ParametersownerrequiredchainIdrequiredslippagestrategyIdrequiredforceSwapperreceiveTokenpositionAddressrequired

simulate

Simulate

Simulate built steps on a fork (Tenderly) from the owner's address before anyone signs. Pass `steps` and `expiresAt` exactly as a build_* tool returned them. Check `ok`; on failure the failing step carries the revert reason; never ask anyone to sign a failing build. A swap-route failure can be retried by rebuilding with `forceSwapper: true` (build_open, build_adjust push, build_repay auto, build_close). `share` defaults to 'failure-only', so a passing simulation never publishes the owner's calldata as a public link.

ParametersfromrequiredsharestepsrequiredexpiresAtrequired

Version history

1
  1. v0.2.0LatestNov 5, 2026

Score

75% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • License10 pts

    Declare a license in the repository or the registry entry.