Skip to main content

MCP Write Workflow

All MCP writes follow the prepare-only model:

check_*_readiness (optional) → prepare_* → sign → broadcast → get_transaction_status

The server never relays signed transactions.

Prepare response

Full prepare returns:

  • requestId — correlation ID for support
  • unsignedTransactions — calldata to sign
  • signingModeraw or eip5792 (approve + subscribe batch)
  • instructions — ordered signing steps
  • simulation — on-chain simulation results
  • gasEstimates / gasSummary — advisory gas budget on the selected chain
  • preflight — operation-specific context
  • warnings — non-fatal hints
  • eip5792 — batch descriptor when signingMode is eip5792
  • chainId — selected protocol chain (omitted tool chainId → Base 8453)

Optional request fields

On prepare_* tools:

  • chainId — protocol chain (8453, "8453", or "eip155:8453"). Omitted uses Base. See MCP chain selection.
  • readinessOnly: true — preflight only; no unsigned transactions or gas estimates
  • simulateFromAddress — address for eth_estimateGas when the signing wallet differs from the broadcaster
  • infiniteApproval: true — on prepare_subscribe / prepare_subscribe_by_id, request max ERC-20 allowance instead of amount-scoped approve

Readiness-only mode

Pass readinessOnly: true to any prepare_* tool:

  • Returns ready, errors, warnings, details
  • No unsignedTransactions or simulation
  • Counts against the same free/developer rate limits as other MCP tool calls — there is no per-call payment

Dedicated readiness tools: check_subscribe_readiness, check_subscribe_readiness_by_id (preferred when the id is known), check_remit_readiness.

After broadcast

Poll get_transaction_status with { "txHash": "0x…" } (same chainId as prepare). Include requestId when reporting issues.

Remit

check_remit_readiness → prepare_remit → sign → broadcast → repeat until caught up

One remit() clears at most maxRemits payments per transaction. When the backlog needs multiple broadcasts, preflight.expectedTransactions and gasSummary.backlogMultiplier describe the total gas budget.

See Remit caller workflow.