Morpho

Morpho lending vault earn actions via Thirdfy. Approvals, deposits, and withdrawals with delegation caveats.

Category: Yield

Morpho vault deposit and withdraw actions are listed in the public catalog under morpho and related earn families. Thirdfy validates allowlists, policy, and delegation caveats before broadcast.

Credential model

PathAuthority
Delegated userActive Gator/ERC-7710 binding must cover approval + vault call shapes
agent_walletSponsored agent wallet on validated Base earn paths
SecretsNo Morpho API keys in Thirdfy. On-chain calls only.

Generic earn writes (deposit_earn_position, withdraw_earn_position) follow the same delegation and MetaMask policy checks as other user-authority EVM actions.

Discovery

curl "https://api.thirdfy.com/api/v1/agent/actions/catalog"
SurfaceExample
MCPgetProviderActions { provider: "morpho" } or provider: "earn"
CLIthirdfy-agent actions

Use it

Ask your agent:

Using Thirdfy, list Morpho USDC vaults on Base that my agent can deposit into, with APY and TVL. Do not deposit anything.

Morpho has no venue readiness check. The vault read is the setup step: it returns the vault, token and chain a deposit needs.

One read. get_earn_opportunities with providerId: "morpho" lists Morpho vaults from the shared earn registry. get_morpho_vaults takes the same filters.

MCP
CLI
REST
agentRun { action: "get_earn_opportunities", params: { providerId: "morpho", chainId: 8453, asset: "USDC", limit: 3, responseFormat: "concise" } }

Trimmed result from a real read on 2026-10-08 (one of three vaults):

{
  "success": true,
  "count": 3,
  "writableCount": 3,
  "writableOpportunities": [
    {
      "opportunityId": "morpho-v1-8453-0xbeefa7b88064feef0cee02aaebbd95d30df3878f",
      "providerId": "morpho",
      "displayName": "Steakhouse High Yield USDC v1.1",
      "chainId": 8453,
      "asset": { "symbol": "USDC", "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "decimals": 6 },
      "vaultAddress": "0xBEEFA7B88064FeEF0cEe02AAeBBd95D30df3878F",
      "tvlUsd": 1016337.07,
      "apyEquivalent": 5.80,
      "riskTier": "medium",
      "actionHints": { "deposit": "deposit_earn_position", "withdraw": "withdraw_earn_position", "position": "get_earn_position" },
      "blockers": [],
      "depositPlan": {
        "providerId": "morpho",
        "opportunityId": "morpho-v1-8453-0xbeefa7b88064feef0cee02aaebbd95d30df3878f",
        "vaultAddress": "0xBEEFA7B88064FeEF0cEe02AAeBBd95D30df3878F",
        "tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "tokenDecimals": 6,
        "chainId": 8453
      }
    }
  ]
}

What to check: pick from writableOpportunities and skip any row with blockers. apyEquivalent and tvlUsd move over time; riskTier is a label, not a guarantee. Pass depositPlan as is into the deposit.

One write. A USDC deposit into that vault:

MCP
CLI
agentRun { action: "deposit_earn_position", params: { providerId: "morpho", opportunityId: "morpho-v1-8453-0xbeefa7b88064feef0cee02aaebbd95d30df3878f", chainId: 8453, vaultAddress: "0xBEEFA7B88064FeEF0cEe02AAeBBd95D30df3878F", tokenAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", amount: "10" } }

Morpho deposits need vaultAddress and tokenAddress. amount is in token units ("10" is 10 USDC). Read the position afterwards with get_earn_position. Run thirdfy-agent preflight with the same flags to check the params before you send it.

Readiness checklist

  • Correct chain (Base and multi-chain per catalog entry).
  • Token approvals for deposit paths (may batch approval + deposit).
  • Amounts match on-chain decimals. Invalid params fail validation before broadcast.
  • delegationStatus or getSelfReadiness before writes.
  • Vault and protocol risk remain user or agent responsibility. Thirdfy validates policy, not market outcomes.

Execution lanes

runModeUse
thirdfy / hybridDelegated user deposits and withdrawals
agent_walletAgent-owned earn execution when funded and allowed

Withdrawals may be asset-denominated, share-denominated, or pool-specific per adapter calldata.

MCP sequence (summary)

  1. getProviderActions { provider: "morpho" }
  2. Readiness and balance checks
  3. walletExecute or executeIntent with deposit/withdraw action

See Thirdfy MCP.

Hosted deploy

Yield templates that include Morpho paths are on EarnOrg (docs.earnorg.com).