Skip to main content
Glama

Prepare a tokenized-stock buy (Coinbase B20 on Base) as a delegable 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 — submit the pair through otto_submit_under_delegation under the end user's per-swap cap. 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.7/5.0
Behavior5/5

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

Beyond the readOnlyHint/destructiveHint annotations, the description discloses refusal conditions (worst-permissible-fill over pinned tolerance, frozen feed >24h, stale commitment), the 300-second envelope expiry, that the token is never an input, that it never signs or submits, and that it returns the pair unchanged plus a preview. There is no contradiction with annotations; the idempotentHint=false aligns with the fresh-envelope requirement.

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

Conciseness5/5

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

Although long, every clause carries operational weight — mechanism, validation rules, failure modes, return shape, follow-up tool, and expiry policy. The structure is logical and front-loaded with the core purpose, with no filler and no redundant restating of schema text.

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 security-sensitive, delegation-aware tool with nested parameters and an output schema, this is a complete operational contract: it covers what is produced, what is refused and why, the 300s validity window, the non-mutating guarantee, and the required next step. Nothing an agent needs to call it correctly 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 adds real meaning to the domain-critical parameters: executableEquityId names a registry row and is never the token input, registryCommitment must equal the commitment recomputed over the current record, and amount/slippage feed into the worst-permissible-fill check against the equity's Chainlink mark. accountProfile and client_ref remain undocumented in both schema and description, which prevents a 5.

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?

The opening sentence names a specific verb ('prepare'), a precise resource (the otto_prepare_swap envelope + prepareInput pair), and a narrow scope (Coinbase B20 tokenized equities on Base bought with USDC via a LI.FI route through the fenced diamond). This unambiguously differentiates it from siblings such as otto_prepare_swap, otto_prepare_bridge, and otto_prepare_perp_order without needing to open their 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?

The description gives clear operational context: the tool only prepares and previews, the pair must be submitted via otto_submit_under_delegation under the end user's per-swap cap, and a fresh envelope must be requested when one goes stale. It stops short of explicitly stating when NOT to use this versus the generic otto_prepare_swap, though the B20-only scope and 'never an input' phrasing make that exclusion largely implicit.

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