Raw schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"connect",
"status",
"sign",
"send_transaction",
"disconnect"
],
"description": "Required. One of: connect (start pairing), status (session info), sign (EVM + Solana WC methods), send_transaction (EVM eth_sendTransaction or Solana solana_signAndSendTransaction), disconnect. Only include the fields that apply to this action."
},
"method": {
"description": "Required when action is \"sign\". EVM: personal_sign | eth_signTypedData_v4. Solana: solana_signMessage | solana_signTransaction. Omit for connect, status, send_transaction, disconnect.",
"type": "string",
"enum": [
"personal_sign",
"eth_signTypedData_v4",
"solana_signMessage",
"solana_signTransaction"
]
},
"params": {
"description": "Required when action is \"sign\": exactly two items. personal_sign: [message, 0xAddress]. eth_signTypedData_v4: [0xSigner, typedDataJsonString]. solana_signMessage: [message, pubkey]. solana_signTransaction: [base64Tx, pubkey].",
"type": "array",
"items": {}
},
"chainId": {
"description": "Optional; only when action is \"sign\" and method is personal_sign (EVM numeric chain id). Must be omitted for eth_signTypedData_v4, Solana methods, send_transaction, and other actions.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"solanaChainId": {
"description": "Optional; only when action is \"sign\" and method is solana_signMessage or solana_signTransaction. CAIP-2 string (e.g. solana:5eykt4β¦). When omitted, the server uses the first Solana chain on the session.",
"type": "string"
},
"tx": {
"description": "Required when action is \"send_transaction\". EVM or Solana shape β see `tx` field descriptions. Omit for connect, status, sign, disconnect.",
"type": "object",
"properties": {
"namespace": {
"type": "string",
"enum": [
"eip155",
"solana"
]
},
"to": {
"type": "string"
},
"data": {
"type": "string",
"maxLength": 1000000,
"pattern": "^0x([a-fA-F0-9]{2})*$"
},
"value": {
"type": "string",
"pattern": "^(0x)?[0-9a-fA-F]{1,64}$"
},
"from": {
"type": "string"
},
"chainId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1
}
]
},
"serializedTransaction": {
"type": "string",
"maxLength": 32768
}
}
},
"sessionTtlDays": {
"description": "Optional; only with action \"connect\". How long to persist this WalletConnect client state in Redis (days). Server clamps to [1, WALLETCONNECT_SESSION_TTL_DAYS_MAX] and defaults when omitted.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"pairingTarget": {
"description": "Optional; only with action \"connect\". What to advertise in the WalletConnect proposal: \"eth\" (eip155 only, default), \"solana\" only, or \"both\". Many mobile wallets fail if eip155 and solana are proposed together; use \"solana\" or \"both\" only when needed.",
"type": "string",
"enum": [
"eth",
"solana",
"both"
]
},
"walletSessionToken": {
"description": "Optional durable token for ANONYMOUS (unauthenticated) sessions. A fresh token is returned by `connect`; store it and pass it back on status/sign/send_transaction/disconnect so the wallet session survives MCP session rotation. Treat it as a secret. Omit on `connect` (the server mints one). Ignored for authenticated (OAuth) callers.",
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"action"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}