Vitro

io.github.kadirzarexPublished by GitHub account kadirzarexv1.0.0Updated Nov 1, 2026

Read Vitro markets on Robinhood Chain and prepare unsigned transactions. Unaudited, capped launch.

VerifiedStreamable HTTPWeb executableDatabasesFinance

Overview

AI-generated overview

Reads Vitro markets on Robinhood Chain and prepares unsigned transactions for collateralised expiring synthetics, without holding keys.

What you can do
  • Browse markets and series: list markets, inspect one market with live price and phase, list current and past series, and check settlement rounds
  • Read wallet positions and history: positions per wallet or across all markets, indexed events, protocol stats, and indexer health
  • Quote and explain risk: deposit/mint quotes with fee, collateral ratio and liquidation price, plus plain-language risk notes
  • Prepare ordinary-wallet transactions: create or add to a position, deposit, repay, withdraw, settle after expiry, and close and redeem
  • Prepare mandate-account actions: create a mandate, set limits, grant or revoke session keys, and prepare position, repay, withdraw and settlement calls
When to use it
Use it when you want an assistant to inspect Vitro market data, positions and risk, or to draft unsigned transactions for a user to review and sign in their own wallet. It suits read-heavy analysis and transaction preparation rather than automated trading.
Requirements
A remote streamable HTTP endpoint; no packages, environment variables or headers are declared. A wallet address is needed for position queries, and the user signs prepared transactions in their own wallet.
Before you install
The protocol is described as unaudited with a capped launch. Prepared transactions are unsigned and must be reviewed before signing; the server never signs or sends. Mandate accounts are unaudited, cannot change owner and have no owner recovery, and existing positions cannot be moved into them. Session keys are granted to act within limits.

Installation

In SourceWeft

  1. Open Vitro 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.kadirzarex%2Fvitro/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": {
    "vitro": {
      "type": "http",
      "url": "https://vitro-agent.fly.dev/mcp"
    }
  }
}

Tools

30

list_markets

List markets

All Vitro markets with status, expiry, caps, totals and price (from the Proof API).

Parametersstatus

get_market

Get market

One market in detail (Proof API) plus a live price and phase check from the chain.

Parametersmarketrequired

list_series

List series

Current and past series with settlement round, price and who settled.

Parametersassetstate

get_series_settlement

Series settlement

How a series settled (round id, price, path, caller), or which settlement window applies now and when the next opens.

Parametersmarketrequired

get_position

Get position

A wallet's position: indexed history from Proof plus live collateral, debt, residual, claimable and synth balance from the chain. Omit market for all markets.

Parametersownerrequiredmarket

get_events

Get events

Indexed events (mints, repays, withdrawals, liquidations, settlements, redemptions, ...), filterable and paginated.

ParameterstypelimitordercursormarketaccounttoBlockfromBlock

get_stats

Get stats

TVL, fees to the treasury, liquidations and per-market use of caps.

Takes no parameters.

get_health

Get health

Proof indexer progress and lag versus the chain head.

Takes no parameters.

quote_position

Quote a position

Fee, collateral ratio, liquidation price and headroom for depositing collateral and minting, with the contracts' exact math at the current oracle price. Warns when the price is stale or the market is closed. Read-only.

ParametersownermarketrequiredcollateralrequiredmintTokensmintValueUsdg

explain_risk

Explain risk

Plain-language risk for a position: distance to liquidation, weekend gaps, expiry, settlement rules, USDG pause and freeze risk. Pass owner for a real position, or collateral and debtTokens for a hypothetical one.

ParametersownermarketrequiredcollateraldebtTokens

prepare_create_position

Prepare create position

Open or add to a position: USDG approval (if needed) and create(collateral, tokens). Enforces the 11 USDG minimum for a new position, both caps and a fresh price. Returns UNSIGNED transaction data (to, data, value, gas) for the user's own wallet; simulated against the latest block first and refused if it would revert. Never signs or sends.

ParametersownerrequiredmarketrequiredcollateralrequiredmintTokensrequired

prepare_deposit

Prepare deposit

Add collateral to an existing position: approval (if needed) and deposit(amount). Checks both caps. Returns UNSIGNED transaction data (to, data, value, gas) for the user's own wallet; simulated against the latest block first and refused if it would revert. Never signs or sends.

Parametersownerrequiredamountrequiredmarketrequired

prepare_repay

Prepare repay

Burn synth from the wallet to reduce debt: repay(tokens). "all" repays the whole debt. Returns UNSIGNED transaction data (to, data, value, gas) for the user's own wallet; simulated against the latest block first and refused if it would revert. Never signs or sends.

Parametersownerrequiredmarketrequiredtokensrequired

prepare_withdraw

Prepare withdraw

Withdraw collateral: withdraw(amount). "max" withdraws the most the minimum ratio and 10 USDG floor allow. Needs a fresh price when the position has debt. Returns UNSIGNED transaction data (to, data, value, gas) for the user's own wallet; simulated against the latest block first and refused if it would revert. Never signs or sends.

Parametersownerrequiredamountrequiredmarketrequired

prepare_close_and_redeem

Prepare close and redeem

After settlement: withdrawResidual (closes the sponsor position and pays the residual), redeem the wallet's synth if redemption is open, or claim a top-up. Returns UNSIGNED transaction data (to, data, value, gas) for the user's own wallet; simulated against the latest block first and refused if it would revert. Never signs or sends.

Parametersownerrequiredmarketrequired

prepare_settle

Prepare settle

After expiry: finds the first Chainlink round at or after expiry, encodes the proof as abi.encode(uint80 roundId) and picks the path that applies now: settle(proof) if that round landed within expiry + maxSettleLag; otherwise guardianSettle(proof) for the guardian Safe, or settleBackstop(proof) for anyone from expiry + maxSettleLag + 7 days. Refused before expiry, once settled, and until the round has printed. Returns UNSIGNED transaction data (to, data, value, gas) for the user's own wallet; simulated against the latest block first and refused if it would revert. Never signs or sends.

Parametersfrommarketrequired

prepare_mandate_create

Prepare mandate account

Create a mandate account: a smart account that is itself a sponsor, so limits can bind a session key. Existing positions can't be moved into it. The owner can never change: there is no owner recovery. Unaudited. Refused while mandates aren't enabled on this server. Returns UNSIGNED transaction data for the owner's own wallet; simulated first and refused if it would revert. Never signs or sends.

Parameterssaltownerrequired

prepare_mandate_set_limits

Prepare mandate limits

Set an account's limits and, optionally, the markets it may use with a cap for each. Refuses a minimum ratio at or below any market's own minimum. Binds session keys, not the owner. Returns UNSIGNED transaction data for the owner's own wallet; simulated first and refused if it would revert. Never signs or sends.

ParametersaccountrequiredmarketCapsmintBudgetrequiredmaxActionSizerequiredapprovalThresholdrequiredtotalCollateralCaprequiredminCollateralRatioPctrequired

prepare_mandate_grant_session

Prepare session grant

Let a session key act for the account, inside its limits, on the listed markets until it expires. Replacing a session restarts its mint budget. The key is never held by this server. Returns UNSIGNED transaction data for the owner's own wallet; simulated first and refused if it would revert. Never signs or sends.

ParametersaccountrequiredactionsmarketsrequiredsessionKeyrequiredvalidForSecondsrequired

prepare_mandate_revoke_session

Prepare session revoke

Stop one session key, or all of them with all: true. Takes effect in the next transaction. Returns UNSIGNED transaction data for the owner's own wallet; simulated first and refused if it would revert. Never signs or sends.

ParametersallaccountrequiredsessionKey

prepare_mandate_withdraw

Prepare owner withdraw

Send idle tokens from the account to its owner, the only address the contract can send them to. Collateral in a position is not idle. Returns UNSIGNED transaction data for the owner's own wallet; simulated first and refused if it would revert. Never signs or sends.

Parameterstokenamountrequiredaccountrequired

prepare_mandate_create_position

Prepare mandate position

Open or add to the account's position: create(collateral, tokens) through the account, which sets its own allowance. Checks the account's limits, then returns UNSIGNED transaction data for the session key, simulated first. Above the approval threshold it returns EIP-712 typed data for the owner instead, which only works when the owner is an ordinary wallet: it refuses when the owner is a contract, such as a Safe. Never signs or sends.

ParametersmarketrequiredaccountrequiredapprovalcollateralrequiredmintTokensrequiredsessionKeyrequiredapprovalTtlSeconds

prepare_mandate_deposit

Prepare mandate deposit

Add collateral to the account's position. Checks the account's limits, then returns UNSIGNED transaction data for the session key, simulated first. Above the approval threshold it returns EIP-712 typed data for the owner instead, which only works when the owner is an ordinary wallet: it refuses when the owner is a contract, such as a Safe. Never signs or sends.

ParametersamountrequiredmarketrequiredaccountrequiredapprovalsessionKeyrequiredapprovalTtlSeconds

prepare_mandate_repay

Prepare mandate repay

Burn synth held by the account to reduce its debt. "all" repays the whole debt. Works while the price is stale. Checks the account's limits, then returns UNSIGNED transaction data for the session key, simulated first. Above the approval threshold it returns EIP-712 typed data for the owner instead, which only works when the owner is an ordinary wallet: it refuses when the owner is a contract, such as a Safe. Never signs or sends.

ParametersmarketrequiredtokensrequiredaccountrequiredapprovalsessionKeyrequiredapprovalTtlSeconds

prepare_mandate_withdraw_collateral

Prepare mandate collateral withdraw

Move collateral from the position back to the account, never to any other address. "max" stops at the account's minimum ratio. Checks the account's limits, then returns UNSIGNED transaction data for the session key, simulated first. Above the approval threshold it returns EIP-712 typed data for the owner instead, which only works when the owner is an ordinary wallet: it refuses when the owner is a contract, such as a Safe. Never signs or sends.

ParametersamountrequiredmarketrequiredaccountrequiredapprovalsessionKeyrequiredapprovalTtlSeconds

prepare_mandate_close_and_redeem

Prepare mandate close and redeem

After settlement: withdrawResidual, redeem and claim, paid to the account. Checks the account's limits, then returns UNSIGNED transaction data for the session key, simulated first. Above the approval threshold it returns EIP-712 typed data for the owner instead, which only works when the owner is an ordinary wallet: it refuses when the owner is a contract, such as a Safe. Never signs or sends.

ParametersmarketrequiredaccountrequiredapprovalsessionKeyrequiredapprovalTtlSeconds

prepare_mandate_settle

Prepare mandate settle

After expiry: settle(proof) through the account, only while the first round landed inside the lag. Other settlement paths are not agent actions: use prepare_settle from an ordinary wallet. Checks the account's limits, then returns UNSIGNED transaction data for the session key, simulated first. Above the approval threshold it returns EIP-712 typed data for the owner instead, which only works when the owner is an ordinary wallet: it refuses when the owner is a contract, such as a Safe. Never signs or sends.

ParametersmarketrequiredaccountrequiredapprovalsessionKeyrequiredapprovalTtlSeconds

prepare_mandate_owner_repay

Prepare owner repay

Burn synth held by the account to reduce its debt. "all" repays the whole debt. For the owner only: works with every session key revoked, ignores session limits, and still follows the market's rules. It prepares exactly this one market call and nothing else. Returns UNSIGNED transaction data for the owner's own wallet; simulated first and refused if it would revert. Never signs or sends.

Parametersownerrequiredmarketrequiredtokensrequiredaccountrequired

prepare_mandate_owner_withdraw_collateral

Prepare owner collateral withdraw

Move collateral from the position to the account. "max" is the most the market allows. For the owner only: works with every session key revoked, ignores session limits, and still follows the market's rules. It prepares exactly this one market call and nothing else. Returns UNSIGNED transaction data for the owner's own wallet; simulated first and refused if it would revert. Never signs or sends.

Parametersownerrequiredamountrequiredmarketrequiredaccountrequired

prepare_mandate_owner_withdraw_residual

Prepare owner residual withdraw

After settlement: close the account's position and pay the residual to the account. For the owner only: works with every session key revoked, ignores session limits, and still follows the market's rules. It prepares exactly this one market call and nothing else. Returns UNSIGNED transaction data for the owner's own wallet; simulated first and refused if it would revert. Never signs or sends.

Parametersownerrequiredmarketrequiredaccountrequired

Version history

1
  1. v1.0.0LatestNov 1, 2026

Score

83% 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.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.