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 supportunsignedTransactions— calldata to signsigningMode—raworeip5792(approve + subscribe batch)instructions— ordered signing stepssimulation— on-chain simulation resultsgasEstimates/gasSummary— advisory gas budget on the selected chainpreflight— operation-specific contextwarnings— non-fatal hintseip5792— batch descriptor whensigningModeiseip5792chainId— selected protocol chain (omitted toolchainId→ Base8453)
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 estimatessimulateFromAddress— address foreth_estimateGaswhen the signing wallet differs from the broadcasterinfiniteApproval: true— onprepare_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
unsignedTransactionsor 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.