Skip to main content
Glama

Prepare a Yield Copilot vault deposit (Morpho USDC on Base) as an unsigned swap pair

otto_prepare_yield_deposit
Read-only

Prepare the EXACT otto_prepare_swap pair (envelope + prepareInput) that deposits USDC into one of the executable Morpho vaults from the Yield Copilot registry, as a LI.FI position-acquisition route (which may buy shares or compose a protocol deposit) whose output token is the vault's ERC-4626 share token and whose receiver is the signing account. The vault comes from the registry row named by executableMarketId and is never an input; the caller's registryCommitment must equal the commitment recomputed over the current record. The quoted shares are checked against the vault's own previewDeposit and refused when they fall short by more than the pinned tolerance. Returns the pair unchanged plus a preview; never signs or submits. New Model B delegated trading is retired, including under existing grants: otto_submit_under_delegation refuses this pair. Preparation does not authorize execution. Every envelope from this server is valid for 300 seconds from construction (valid_until); a stale envelope is refused by the verifier — request a fresh one.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
amountYesExact USDC amount to deposit, in atomic units (6 decimals).
slippageYes
client_refNo
accountProfileYes
executableMarketIdYesThe executable market id the READ half served (`GET /api/yield-copilot` rows with deployable:true), e.g. base-usdc-morpho-gauntlet-prime.
registryCommitmentYesThe registry commitment served with that row. It must equal the commitment this server recomputes over the CURRENT record; a stale or foreign row is refused by name.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
previewYes
envelopeYes
prepareInputYes
registry_commitmentYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / preview / properties / route_semantics
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "action": {
      +      "enum": [
      +        "deposit",
      +        "withdraw"
      +      ],
      +      "type": "string"
      +    },
      +    "classification": {
      +      "enum": [
      +        "share-purchase",
      +        "share-sale",
      +        "protocol-composition",
      +        "mixed",
      +        "unclassified"
      +      ],
      +      "type": "string"
      +    },
      +    "evidence": {
      +      "const": "provider-quote-steps",
      +      "type": "string"
      +    },
      +    "protocol_action_verified": {
      +      "const": false,
      +      "type": "boolean"
      +    },
      +    "tools": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "transport": {
      +      "const": "lifi",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "transport",
      +    "action",
      +    "classification",
      +    "evidence",
      +    "protocol_action_verified",
      +    "tools"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / preview / required
      Previous value: -[
      -  "market_id",
      -  "venue",
      -  "protocol",
      -  "chain_id",
      -  "vault",
      -  "asset",
      -  "amount",
      -  "expected_shares",
      -  "min_shares",
      -  "preview_deposit_shares",
      -  "parity_shortfall_bps",
      -  "parity_tolerance_bps",
      -  "quoted_fees"
      -]New value: +[
      +  "market_id",
      +  "venue",
      +  "protocol",
      +  "chain_id",
      +  "vault",
      +  "asset",
      +  "amount",
      +  "expected_shares",
      +  "min_shares",
      +  "preview_deposit_shares",
      +  "parity_shortfall_bps",
      +  "parity_tolerance_bps",
      +  "quoted_fees",
      +  "route_semantics"
      +]
  2. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/openWorld/non-idempotent/non-destructive), it discloses that it never signs or submits, that preparation does not authorize execution, that shares are checked against the vault's previewDeposit and refused past a pinned tolerance, and that every envelope is valid for 300 seconds before the verifier refuses it. That is rich operational context the annotations alone cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the core commitment/tolerance constraints are front-loaded, and nearly every sentence carries a distinct constraint. It is a dense single block with several long clauses, so it loses a little on scannability but wastes little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 6-parameter mutation-preparation tool, it covers the essential safety story: registry sourcing, commitment freshness, previewDeposit tolerance, non-authorization, non-submission, and envelope expiry. An output schema exists, so return values need not be restated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 50% schema coverage, the description compensates by explaining that executableMarketId must name a registry row (not a vault) and that registryCommitment must equal the commitment recomputed over the current record or the row is refused as stale/foreign. It also clarifies the receiver is the signing account (relating to accountProfile) and refers to the pinned slippage tolerance, though slippage.maxBps and client_ref remain undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource: it prepares the exact otto_prepare_swap envelope+prepareInput pair that deposits USDC into an executable Morpho vault on Base, with the vault's ERC-4626 share token as output. It explicitly differentiates itself from otto_prepare_swap (same pair shape), the withdraw counterpart, and the retired delegation path, so an agent can tell the siblings apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly scopes use to vaults pulled from the Yield Copilot registry rows and notes that otto_submit_under_delegation refuses this pair, which steers the agent away from the execution path. It does not explicitly state when to prefer this over otto_prepare_swap or otto_prepare_yield_withdraw, so the exclusions are implied rather than fully enumerated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources