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
  • signingMode — raw 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.