morpho_health_check
Health Check
Check the health status of the MCP server and connected services
Takes no parameters.
org.morphoPublished by morpho.orgOfficial publisherv1.0.0Updated Nov 7, 2026
Read Morpho vaults and markets data and prepare unsigned transactions.
Reads Morpho lending data (vaults, Blue and Midnight markets, positions) and prepares unsigned DeFi transactions for the user to sign.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
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/org.morpho%2Fmcp/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.Add this to your client's mcpServers config.
{
"mcpServers": {
"morpho": {
"type": "http",
"url": "https://mcp.morpho.org/"
}
}
}Health Check
Check the health status of the MCP server and connected services
Takes no parameters.
Get Supported Chains
List every chain the Morpho MCP serves, by name, with whether Morpho Blue markets, Morpho Vaults (V1 or V2) and Midnight are supported on it. Blue and Vault support come from the Morpho API chain list the read tools use; Midnight support also requires the chain to be accepted by the Midnight tools.
Takes no parameters.
Get Token Balance
Get token balance and whether the user needs to approve Morpho or the Bundler before writing. Balance and allowances are self-describing TokenAmounts.
chainrequireduserAddressrequiredtokenAddressrequiredSimulate Transactions
Simulate transactions on the latest block with eth_simulateV1 and check them against the limits of the Morpho action the user is taking, without sending anything. Use mode "preview" for unsigned calls, listing pending approvals or permits in `authorizations`; use mode "final" for calls whose signatures are already in the calldata, or pass a raw signed transaction as `signedTransaction`. `limits.operations` names each Morpho action in the bundle, for example `{ type: "vaultV2Deposit", vault, inputs: { assets } }` or `{ type: "blueBorrow", marketId, inputs: { assets } }`, so the simulation checks what the user pays, receives and holds; when a prepare tool returned `simulation_limits`, pass that as `limits`; use "none" only for bundles no operation type covers (reward claims, approval-only bundles). Amounts are integer strings in base units. Returns every simulated call, transfers, per-account asset changes and the checked limits, or `status: "failed"` with the error code and revert data. Health factor and LTV are not checked. Nothing is signed or sent.
moderequiredlimitsrequiredchainIdrequiredblockNumbertransactionsrequiredauthorizationsDoc Search
Search the Morpho documentation (docs.morpho.org) by semantic similarity. Returns raw search hits; each hit carries the matched text plus metadata (page title, absolute docs.morpho.org url, breadcrumbs, excerpt).
topKqueryrequiredrerankrewriteQueryscoreThresholdPrepare Deposit
Prepare a deposit into a Morpho vault. Checks on-chain allowance and returns a ready-to-sign transactions array with approval txs (if needed) followed by the deposit tx. Handles USDT reset-to-zero and DAI non-standard approval.
chainrequiredamountrequireduserAddressrequiredvaultAddressrequiredPrepare Withdraw
Prepare a withdraw from a Morpho vault. Returns a ready-to-sign transactions array. Supports "max" for full withdrawal. A vault-share approval transaction may come first and is listed in requirements.
chainrequiredamountrequireduserAddressrequiredvaultAddressrequiredPrepare Supply
Prepare a supply to a Morpho Blue market. Checks on-chain allowance and returns a ready-to-sign transactions array with approval txs (if needed) followed by the supply tx. Handles USDT reset-to-zero and DAI non-standard approval.
chainrequiredamountrequiredmarketIdrequireduserAddressrequiredPrepare Borrow
Prepare a borrow on a Morpho Blue market. Returns a ready-to-sign transactions array with the borrow tx. Includes health factor check against existing collateral position. A BlueBundlesV1 authorization transaction may come first in transactions.
chainrequiredmarketIdrequireduserAddressrequiredborrowAmountrequiredPrepare Repay
Prepare a repay on a Morpho Blue market. Checks on-chain allowance and returns a ready-to-sign transactions array with approval txs (if needed) followed by the repay tx. Supports "max" for full repayment. Handles USDT reset-to-zero and DAI non-standard approval.
chainrequiredamountrequiredmarketIdrequireduserAddressrequiredPrepare Supply Collateral
Prepare a supply of collateral tokens to a Morpho Blue market without borrowing. Checks on-chain allowance and returns a ready-to-sign transactions array with approval txs (if needed) followed by the supply collateral tx. Handles USDT reset-to-zero and DAI non-standard approval.
chainrequiredamountrequiredmarketIdrequireduserAddressrequiredPrepare Withdraw Collateral
Prepare a withdrawal of collateral tokens from a Morpho Blue market position. Returns a ready-to-sign transactions array. Supports "max" for full collateral withdrawal. Includes health factor check when user has active borrows. A BlueBundlesV1 authorization transaction may come first in transactions.
chainrequiredamountrequiredmarketIdrequireduserAddressrequiredPrepare Claim Rewards
Fetch a user's claimable Merkl rewards and prepare a single claim transaction against the canonical Merkl Distributor (0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae). Returns a ready-to-sign transaction; if nothing is claimable, returns an empty transactions array with an info-level warning. No on-chain approval needed — the Distributor pulls from its own balance via Merkle proofs.
chainrequireduserAddressrequiredPrepare Redeem
Prepare a share-based redemption from a Morpho Vault V1 or V2. Checks share allowance and supports "max" for the full share balance. A vault-share approval transaction may come first and is listed in requirements.
chainrequiredsharesrequireduserAddressrequiredvaultAddressrequiredPrepare Redeem In Kind
Prepare an in-kind redemption from a Morpho Vault V1 or V2, exiting through its underlying Blue markets. A vault-share approval transaction may come first and is listed in requirements.
chainrequiredamountrequireduserAddressrequiredvaultAddressrequiredPrepare Force Withdraw
Prepare a Vault V2 force withdrawal. The SDK selects the vault adapter and deallocates as needed.
chainrequiredassetsrequireduserAddressrequiredvaultAddressrequiredPrepare Force Redeem
Prepare a Vault V2 share redemption after user-directed market deallocations. Each deallocation amount should include a buffer for share-price drift.
chainrequiredsharesrequireduserAddressrequiredvaultAddressrequireddeallocationsrequiredPrepare Migrate To Vault V2
Prepare migration of shares from a Vault V1 into a Vault V2 with the same underlying asset. A vault-share approval transaction may come first and is listed in requirements.
chainrequiredsharesrequireduserAddressrequiredvaultAddressrequiredtargetVaultAddressrequiredPrepare Blue Withdraw
Prepare a supply-side withdrawal from a Morpho Blue market. Supports "max" for the full supply position. A BlueBundlesV1 authorization transaction may come first in transactions.
chainrequiredmarketIdrequireduserAddressrequiredwithdrawAmountrequiredPrepare Supply Collateral And Borrow
Prepare one transaction that supplies collateral and borrows from a Morpho Blue market, including when the user has no collateral on-chain yet. A BlueBundlesV1 authorization transaction may come first in transactions.
chainrequiredmarketIdrequireduserAddressrequiredborrowAmountrequiredcollateralAmountrequiredPrepare Repay And Withdraw Collateral
Prepare a combined Morpho Blue debt repayment and collateral withdrawal. Supports "max" for full repayment or all collateral. A BlueBundlesV1 authorization transaction may come first in transactions.
chainrequiredmarketIdrequiredrepayAmountrequireduserAddressrequiredwithdrawCollateralAmountrequiredPrepare Refinance
Prepare a full migration of a Morpho Blue borrow position into a destination market with matching loan and collateral tokens. A BlueBundlesV1 authorization transaction may come first in transactions.
chainrequiredmarketIdrequireduserAddressrequireddestinationMarketIdrequiredPrepare Midnight Take Lend
Prepare a fixed-rate lend on a Midnight market by taking the best ask offers through MidnightBundlesV2. First call `morpho_midnight_get_market` for the loan token and `morpho_midnight_get_book_quote` with side `asks` and the same amount to check the rate and depth. The tool re-quotes the asks book itself. Returns unsigned transactions, approval and MidnightBundlesV2 authorization first, plus a simulation and warnings.
chainrequiredamountrequiredmarketIdrequiredslippageuserAddressrequiredPrepare Midnight Take Borrow
Prepare a fixed-rate borrow on a Midnight market against collateral already supplied, by taking the best bid offers through MidnightBundlesV2. First call `morpho_midnight_get_user_position` to check collateral and `morpho_midnight_get_book_quote` with side `bids` and the same amount. Use `morpho_prepare_midnight_supply_collateral_take_borrow` when collateral is not supplied yet. Returns unsigned transactions, approval and MidnightBundlesV2 authorization first, plus a simulation and warnings.
chainrequiredamountrequiredmarketIdrequiredslippageuserAddressrequiredPrepare Midnight Supply Collateral Take Borrow
Prepare supplying collateral and a fixed-rate borrow on a Midnight market in one MidnightBundlesV2 transaction, taking the best bid offers. First call `morpho_midnight_get_market` for the collateral index and tokens, and `morpho_midnight_get_book_quote` with side `bids` and the same amount. Returns unsigned transactions, approval and MidnightBundlesV2 authorization first, plus a simulation and warnings.
chainrequiredamountrequiredmarketIdrequiredslippageuserAddressrequiredcollateralIndexcollateralAmountrequiredPrepare Midnight Take Withdraw
Prepare exiting a Midnight lend position before maturity: redeems withdrawable credit, then sells the rest to the best bid offers through MidnightBundlesV2. First call `morpho_midnight_get_user_position` for the credit and `morpho_midnight_get_book_quote` with side `bids` and the same amount. After maturity use `morpho_prepare_midnight_redeem`. Returns unsigned transactions, approval and MidnightBundlesV2 authorization first, plus a simulation and warnings.
chainrequiredamountrequiredmarketIdrequiredslippageuserAddressrequiredPrepare Midnight Take Repay Withdraw Collateral
Prepare repaying Midnight debt before maturity by buying back units from the best ask offers, then optionally withdrawing collateral, in one MidnightBundlesV2 transaction. First call `morpho_midnight_get_user_position` for the debt and collateral and `morpho_midnight_get_book_quote` with side `asks` and the same amount. Returns unsigned transactions, approval and MidnightBundlesV2 authorization first, plus a simulation and warnings.
chainrequiredamountrequiredmarketIdrequiredslippageuserAddressrequiredcollateralIndexcollateralAmountPrepare Midnight Supply Collateral
Prepare supplying collateral to a Midnight market directly on Midnight. First call `morpho_midnight_get_market` for the collateral index and token. Returns unsigned transactions, approval and MidnightBundlesV2 authorization first, plus a simulation and warnings.
chainrequiredamountrequiredmarketIdrequireduserAddressrequiredcollateralIndexPrepare Midnight Redeem
Prepare redeeming Midnight lend credit for loan tokens, limited to what the market can pay out now. First call `morpho_midnight_get_user_position` for the credit. Before maturity a market with a continuous fee leaves some credit; redeem again after maturity. Returns unsigned transactions, approval and MidnightBundlesV2 authorization first, plus a simulation and warnings.
chainrequiredamountmarketIdrequireduserAddressrequiredPrepare Midnight Repay Withdraw Collateral
Prepare repaying Midnight debt at face value, withdrawing collateral, or both, in one MidnightBundlesV2 transaction. First call `morpho_midnight_get_user_position` for the debt and collateral. To repay at the book price before maturity, use `morpho_prepare_midnight_take_repay_withdraw_collateral`. Returns unsigned transactions, approval and MidnightBundlesV2 authorization first, plus a simulation and warnings.
chainrequiredmarketIdrequiredrepayAmountuserAddressrequiredcollateralIndexcollateralAmountPrepare Midnight Cancel Offers
Prepare cancelling a maker's Midnight offer groups through MidnightBundlesV2. First call `morpho_midnight_list_user_offer_groups` for the maker's group IDs. Cancels each group whatever has already been filled. Returns unsigned transactions, approval and MidnightBundlesV2 authorization first, plus a simulation and warnings.
chainrequiredgroupsrequireduserAddressrequiredPrepare Midnight Set Authorization
Prepare authorizing or revoking MidnightBundlesV2 on Midnight for the user. The other Midnight prepare tools add the authorization when they need it, so call this only to revoke it or to authorize ahead of time. Returns one unsigned transaction.
chainrequireduserAddressrequiredisAuthorizedGet Vault
Get one Morpho vault (V1 or V2) by vault selector `<chainId>:<vaultAddress>`.
vault-selectorrequiredQuery Vaults
List Morpho vaults (V1 and V2) with net APY, total assets and liquidity in USD, curators, warnings, and `version`. Filter by `chain_ids`, `search`, and other supported fields. Paginate by passing back `cursor` until it is null.
limitassetscursorsearchsort_byversionschain_idscurator_idsnet_apy_gtenet_apy_lteinclude_facetssort_direction+6 moreGet Vault Positions
List a user's Morpho V1 and V2 vault positions with portfolio totals. Paginate by passing back `cursor` until it is null.
limitcursorsort_bychain_idsuser-addressrequiredsort_directionasset_addressesQuery Markets
List Morpho Blue markets, filterable by chain, loan token and collateral token. Paginate by passing back `cursor` until it is null.
limitcursorlistedsort_bychain_idsloan_tokenssort_directioncollateral_tokensGet Market
Get one Morpho Blue market by market selector.
market-selectorrequiredGet Market Positions
List a user's Morpho Blue market positions, filterable by chain. Paginate by passing back `cursor` until it is null.
limitcursorchain_idsuser-addressrequiredMidnight List Markets
Cursor-paginated list of Midnight markets. **Use this to discover markets.** For a given user's positions on those markets, follow up with `morpho_midnight_list_user_positions`. **Filters.** Address filters (`loan_assets`, `collateral_assets`, `oracle_addresses`, `enter_gates`, `liquidator_gates`) must be combined with `chain_ids` — an address alone is not chain-unique. Lowercase addresses are checksummed server-side. Pass `active_only=true` to exclude markets past maturity. **Pagination.** Response follows the list envelope: `{ cursor, data }`. Pass back `cursor` verbatim on the next call. A `null` `cursor` means the last page. **Cache.** `public, max-age=5, stale-while-revalidate=2`.
limitcursorlistedsort_bychain_idsmarket_idsmaturitiesactive_onlyenter_gatesloan_assetsmaturity_gtematurity_lte+11 moreMidnight Get Market
Detail lookup for a single market. `:market-id` is the stable Midnight market id and is unique across supported chains, so no chain id is required. Returns the immutable market configuration inside a `data` envelope. Use `morpho_midnight_get_market_state` for dynamic market state. 404s when the id is unknown.
market-idrequiredMidnight Get Market State
Dynamic state lookup for a single market. `:market-id` is the stable Midnight market id and is unique across supported chains, so no chain id is required. Returns the market state inside a `data` envelope. Use `morpho_midnight_get_market` for immutable market configuration. 404s when the id is unknown.
market-idrequiredMidnight List User Positions
Cursor-paginated list of a user's current Midnight positions. **Position type.** `type` is `lend` for positions with credit, `borrow` for positions with debt, or `collateral_only` for positions with no credit or debt but remaining collateral. Closed positions with no credit, no debt, and no remaining collateral are excluded. **Performance fields.** `cost_basis` uses the average cost method and is returned as a WAD-scaled bigint string in loan-token units. `effective_rate_wad` is the unchanged WAD-scaled compounded IRR+ using a 365.25-day year; `effective_apr` is the simple annualized decimal fraction using a 365-day year, capped at `10`, and derived from persisted open lots. Analytics can be `null` when there is not enough attributable history. **Filters.** `chain_ids` is required when `loan_assets` is provided. `collateral_assets` matches configured market collateral tokens across all chains unless `chain_ids` narrows the query; lowercase addresses are checksummed. Range filters exist on `created_at`, `credit`, `debt`, `cost_basis`, and `effective_rate_wad`. `effective_apr` has no filter or sort key. `active_only=true` excludes matured markets. `listed=true` keeps only positions on listed markets; `listed=false` keeps only positions on unlisted markets. **Pagination.** Response envelope: `{ cursor, data }`. Positions are ordered newest-first by `created_at` by default. **Cache.** `public, max-age=2, stale-while-revalidate=1`.
limittypescursorlistedsort_bydebt_gtedebt_ltechain_idscredit_gtecredit_ltemarket_idsmaturities+16 moreMidnight List Market Positions
Cursor-paginated list of current Midnight positions for a market. `:market-id` is the stable Midnight market id and is globally unique across supported chains. The response uses the same public position item shape as `morpho_midnight_list_user_positions`: `{ cursor, data }`, with `type`, state fields, collateral balances, and performance analytics. **Filters.** Range filters exist on `created_at`, `credit`, `debt`, `cost_basis`, and `effective_rate_wad`. `effective_apr` has no filter or sort key. `active_only=true` excludes matured markets. The path market id is always enforced. **Pagination.** Pass back `cursor` verbatim on the next call. Positions are ordered newest-first by `created_at` by default. **Cache.** `public, max-age=2, stale-while-revalidate=1`.
limittypescursorsort_bydebt_gtedebt_ltechain_idsmarket-idrequiredcredit_gtecredit_ltematuritiesactive_only+12 moreMidnight Get User Position
Detail lookup for a single position by `(market-id, user-address)`. `:market-id` is the stable Midnight market id and is globally unique across supported chains. `:user-address` accepts any casing and is checksummed server-side. Returns the position inside a `data` envelope. When the position is **closed** (no credit, no debt, no remaining collateral) or has never existed for a known market, the endpoint returns zero balances with `type: null`. Positions with `credit == 0 && debt == 0` but non-empty `collaterals` are returned as `type: "collateral_only"`.
market-idrequireduser-addressrequiredMidnight Get User Position Performance
Performance-only lookup for a single position by `(market-id, user-address)`. Returns performance analytics inside a `data` envelope. `effective_rate_wad` is compounded IRR+ using a 365.25-day year; `effective_apr` is simple interest using a 365-day year and is capped at `10` (1000%). The position detail endpoint omits these fields to keep state and performance concerns separate. When the position is closed or has never existed for a known market, this endpoint returns `type: null` and null analytics.
market-idrequireduser-addressrequiredMidnight Get Offer Group
Returns every offer group matching the onchain group id, regardless of lifecycle status. The maker is not required; optional chain_id and maker query parameters can disambiguate the lookup. Distinct chain, maker, and group-id combinations remain separate, and no match returns an empty data array. The endpoint returns every latest offer revision in each matched group and exposes the current lifecycle as `status`. Each group exposes the shared offer intent as `type`, or `null` when its latest offers have inconsistent `buy` and `reduce_only` values. It does not apply Router mempool admission policy: oracle, token, market-triplet, LLTV, RCF threshold, and other mempool-validation policy checks do not gate retrieval. Each nested offer includes the exact per-offer `ratifier_data` bytes originally submitted, plus `parsed_ratifier_data`, a structured view discriminated by `ratifier_type`. The type is identified by matching `ratifier` against the chain's known Midnight ratifier deployments: `rate_v1` exposes `rate_per_second_wad` and `allowed_taker`, `price_v1` exposes `allowed_taker` (the offer-level `tick` is the ratified price), and `ecrecover` and `setter` expose only their type. A zero `allowed_taker` means any taker may take the offer. An unrecognized ratifier address returns `unknown`; a recognized address whose `ratifier_data` cannot be decoded returns `invalid` with `expected_ratifier_type`.
makerchain_idgroup-idrequiredMidnight List User Offer Groups
Cursor-paginated list of a user's offer groups with nested offers. The `statuses` filter accepts one or more lifecycle states with OR semantics. The deprecated singular `status` parameter is a single-value alias; requests containing both are rejected. Omitting both defaults to `active` for backward compatibility. **Maturity policy.** The list includes only offers whose maturity is at 15:00 UTC, the maturities Router quotes. Other offers are excluded before lifecycle, filters, type, callback, and group `expiry` are computed, and groups with no such offer are omitted. The by-group endpoint returns every offer regardless of maturity. Lifecycle is derived from every latest 15:00 UTC offer revision before market, asset, maturity, type, callback, or listing filters are applied. `cancelled` has highest priority and requires an explicit `SetConsumed(type(uint128).max)` event; a `Take` reaching the same numeric value remains `filled`. Otherwise, a group is `filled` when every latest leg has no remaining capacity. It is `active` when at least one remaining leg has started and is at or before both its expiry and non-zero maturity. It is `scheduled` when no leg is active but at least one remaining leg starts in the future without having expired or matured. All remaining groups are `expired`. Active takes remain valid at exact expiry or maturity, matching the onchain inclusive boundary. Nested offers are lifecycle-targeted for list results: active returns live remaining-capacity legs, scheduled returns future remaining-capacity legs, filled and cancelled return all latest legs, and expired returns terminal expired or matured legs. Active and scheduled group `expiry` is the maximum not-yet-ended latest-offer horizon; terminal statuses use the complete latest set. Requesting all five statuses returns every group with a 15:00 UTC offer exactly once. **Callbacks.** A group has `callback.type=blue_buy` only when every latest offer considered for the lifecycle has the same callbac
limittypescursorgroupslistedstatussort_bystatuseschain_idsmarket_idsmaturitiesloan_assets+9 moreMidnight List Books
Returns books for active maturities admitted by the current policy, with market metadata and the top 3 ask/bid levels. Unlisted and past maturities are excluded, even when requested with `ids`. If a maturity leaves the policy, its books are hidden immediately, including books with existing offers. Supports filtering, sorting, and pagination; default sort is `id` ascending.
idssortlimitcursorchain_idsmaturitiesloan_tokensmaturity_gtematurity_ltecollateral_tokensMidnight Get Book
Returns one active book whose maturity is admitted by the current policy, with market metadata and both sides. If its maturity leaves the policy, the book becomes unavailable immediately, including when existing offers remain. A visible book with no offers returns empty `asks` and `bids`. Each side returns up to `depth` levels, sorted best price first.
depthmarket-idrequiredMidnight Get Book Side
Returns one side of a book as price levels grouped by tick with total units, assets, and price, sorted best price first.
siderequireddepthmarket-idrequiredMidnight Get Book Side Takeable Offers
Returns up to 1,000 executable offers for one book side, sorted best price first. This endpoint is not paginated and does not accept a limit or cursor.
siderequiredmarket-idrequiredMidnight Get Book Quote
Returns a bundle-ready quote for the requested assets or units, plus expected best/worst average prices and maximum executable liquidity. The endpoint optimizes for successful target-aware bundle execution under contention: `takeable_offers` are best-priced per-offer caps and their total can exceed the requested target, giving a bundle executor fallback liquidity when earlier offers are partially consumed or skipped. At most `limit` (default and maximum 10,000) best-priced takeable offers are walked and returned; prices and availability always describe exactly the returned window. A request that cannot fill within `limit` offers returns 422. Use the returned takeable offers with a bundle abstraction that stops at your requested target and applies your max/min asset or unit protections. If you execute takeable offers independently with Midnight.take, do not submit every returned unit blindly: clamp each offer to your remaining target and current takeability, or you may execute more than intended. If the requested size cannot be fully satisfied at quote time under the selected guard, the endpoint returns 422.
siderequiredlimitunitsassetsslippagemarket-idrequiredaverage_worst_priceMidnight List Maker Takeable Offers
Returns one maker's active offers. A fresh offer is withheld until measured, unless indexed ratifier state proves both a blocker and maker intent through the tree signature, signer-authorization history, or root history. Eligible blocked offers return with `units` set to `0`; missing state and unproven offers naming the maker remain hidden.
limitmakerrequiredcursorgroupsmarket_ids83% 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.
Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.
A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.