Skip to main content
Glama

Prepare a tokenized-stock buy (Coinbase B20 on Base) as an unsigned swap pair

otto_prepare_stock_buy
Read-only

Prepare the EXACT otto_prepare_swap pair (envelope + prepareInput) that buys one of the executable Coinbase B20 tokenized equities on Base with USDC, as a LI.FI route through the fenced diamond whose receiver is the signing account. The token comes from the registry row named by executableEquityId and is never an input; the caller's registryCommitment must equal the commitment recomputed over the current record. The WORST PERMISSIBLE FILL (amount over the route's own floor) is checked against the equity's own Chainlink total-return mark and refused when it exceeds the pinned tolerance, or when the feed is frozen (> 24 h). 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 spend, in atomic units (6 decimals).
slippageYes
client_refNo
accountProfileYes
executableEquityIdYesThe executable equity id the READ half served, e.g. b20-nvda (Coinbase B20 on Base only).
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. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/no-destructive, and the description adds substantial behavior beyond them: worst-permissible-fill is checked against the equity's Chainlink total-return mark and refused when over tolerance or when the feed is frozen (>24h), the pair is returned unchanged plus a preview, and nothing is signed or submitted. It also discloses the 300-second envelope validity window and that stale envelopes are refused by the verifier.

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?

Front-loads the core purpose and organizes the many constraints (fill check, refusal conditions, no signing, delegation retirement, 300s TTL) in a single dense paragraph. Every sentence carries information, though the density borders on a wall of text that could be split for faster scanning.

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 preparation tool with an output schema already documenting return values, the description still covers the important operational facts: authorization status, timing (valid_until), refusal conditions (fill over tolerance, frozen feed), and non-custodial behavior (never signs/submits). Nothing essential to correct invocation is missing.

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?

With 50% schema coverage, the description compensates for the undocumented fields: executableEquityId is explained as naming the registry row and never being an input, and registryCommitment is clarified as having to equal the value recomputed over the CURRENT record (stale/foreign rows refused by name). client_ref and accountProfile remain unaddressed in both schema and description, leaving a modest gap.

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 pair (envelope + prepareInput) that buys one of the executable Coinbase B20 tokenized equities on Base with USDC. It explicitly contrasts with the generic otto_prepare_swap sibling and names the exact scope (B20 on Base only), so an agent can distinguish it without opening schemas.

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?

Gives clear context for use: buying tokenized equities where the equity comes from a registry row rather than as an input, and notes the related otto_submit_under_delegation path refuses this pair and delegated trading is retired. It never states an explicit when-to-use-this-vs-otto_prepare_swap exclusion, but context is strong enough to route correctly.

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