propose_execution
Synchronously authorize one exact action under one active root.
| Field | Meaning |
|---|---|
| Side effects | Returns a signed, refused, or recovery-required result. Venue submission remains with the client. |
| Next step | Submit a signed result unchanged, stop on refusal, or follow the fault’s recovery guidance. |
Arguments
| Argument | Type | Required |
|---|---|---|
intent | object | yes |
pakt_root | string | yes |
Exact bounds, accepted values, and nested fields are in Full JSON Schema below.
Example
selectedPakt comes from get_execution_context; preparedOrder is a complete unsigned order from your venue client. This call can lead to signing. Obtain the user’s instruction before calling it; it never submits.
With an authenticated MCP client:
await client.callTool({
name: "propose_execution",
arguments: {
pakt_root: selectedPakt.pakt_root,
intent: { kind: "prepared_hyperliquid_order", order: preparedOrder }
},
});Returns
Important fields in the decoded result; this is not a complete response schema.
| Field | Meaning |
|---|---|
status | SIGNED_NOT_SUBMITTED or REFUSED_NOT_SIGNED; recovery-required is returned as a fault. |
receipt_id | Returned with a signed or refused result. Keep it for inspection and completion. |
submission_type / submission | Signed results only: the exact venue-ready payload. Submit unchanged through the venue client. |
reason | Refused results only; can be generic and need not identify the violated constraint. Do not invent a diagnosis or route around the refusal. |
For error handling and retry rules, see Statuses and Errors.
Supported Requests
Set intent.kind to one of:
prepared_hyperliquid_order: one IOC perpetual-order batch inorder; mainnet, no vault.prepared_erc20_approval: finite USDT allowance and Ethereum transaction parameters inapproval.prepared_gateway_order: Gateway order ID and prepared Ethereum transaction inorder.
For Hyperliquid, order.legs contains between one and ten legs. Each
asset is the current venue index, limit_px and sz are canonical
positive decimal strings, and order_type.limit.tif is "ioc". Use grouping: "na"
and vault_address: null; nonce and expires_after_ms are integer
millisecond values supplied by the venue client. Spell 4470 as "4470",
not "4470.0". Passing the JSON schema alone does not establish valid venue
precision, current metadata, freshness, or a permitted order.
Gateway approval and order creation are separately authorized. Confirm a successful finite approval before obtaining and authorizing a fresh order plan.
Authorize one root-first account operation and synchronously return its proof-gated signed, refused, or recovery-required result. One account may have only one proof operation in progress; account_proof_in_progress means this call started no additional proof or signature. Wait for the active operation to finish; retry an uncertain request exactly unchanged so durable replay returns its result, or refresh execution context before building a new proposal. Batch related Hyperliquid trades into one exact unsigned IOC order instead of submitting them concurrently. EVM approval and Gateway V7 order are separate requests: approve first, confirm it, then create and propose a fresh short-lived order. Each request binds and may sign only its own transaction. Pakt validates but never repairs, plans, broadcasts, or registers it. Account identity, wallet, active pakt, authenticated venue evidence, proving, and authorization remain server-owned. An unconfigured deployment fails closed with execution_not_integrated.
From tools/list, MCP protocol revision 2026-07-28.
{
"additionalProperties": false,
"properties": {
"intent": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"approval": {
"additionalProperties": false,
"properties": {
"amount": {
"maximum": 18446744073709551615,
"minimum": 1,
"type": "integer"
},
"gasLimit": {
"maximum": 18446744073709551615,
"minimum": 1,
"type": "integer"
},
"maxFeePerGas": {
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"maxPriorityFeePerGas": {
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"nonce": {
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
}
},
"required": [
"amount",
"nonce",
"gasLimit",
"maxFeePerGas",
"maxPriorityFeePerGas"
],
"type": "object"
},
"kind": {
"const": "prepared_erc20_approval"
}
},
"required": [
"kind",
"approval"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "prepared_gateway_order"
},
"order": {
"additionalProperties": false,
"properties": {
"order_id": {
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"type": "string"
},
"transaction": {
"additionalProperties": false,
"properties": {
"gasLimit": {
"maximum": 18446744073709551615,
"minimum": 1,
"type": "integer"
},
"maxFeePerGas": {
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"maxPriorityFeePerGas": {
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"nonce": {
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"tx": {
"additionalProperties": false,
"properties": {
"chain": {
"minLength": 1,
"type": "string"
},
"data": {
"minLength": 1,
"type": "string"
},
"to": {
"minLength": 1,
"type": "string"
},
"value": {
"pattern": "^[0-9]+$",
"type": "string"
}
},
"required": [
"to",
"data",
"value",
"chain"
],
"type": "object"
}
},
"required": [
"tx",
"nonce",
"gasLimit",
"maxFeePerGas",
"maxPriorityFeePerGas"
],
"type": "object"
}
},
"required": [
"order_id",
"transaction"
],
"type": "object"
}
},
"required": [
"kind",
"order"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "prepared_hyperliquid_order"
},
"order": {
"additionalProperties": false,
"properties": {
"expires_after_ms": {
"maximum": 18446744073709551615,
"minimum": 1,
"type": "integer"
},
"grouping": {
"const": "na"
},
"legs": {
"items": {
"additionalProperties": false,
"properties": {
"asset": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"is_buy": {
"type": "boolean"
},
"limit_px": {
"pattern": "^(?:[1-9][0-9]{0,29}(?:\\.[0-9]{0,7}[1-9])?|0\\.[0-9]{0,7}[1-9])$",
"type": "string"
},
"order_type": {
"additionalProperties": false,
"properties": {
"limit": {
"additionalProperties": false,
"properties": {
"tif": {
"const": "ioc"
}
},
"required": [
"tif"
],
"type": "object"
}
},
"required": [
"limit"
],
"type": "object"
},
"reduce_only": {
"type": "boolean"
},
"sz": {
"pattern": "^(?:[1-9][0-9]{0,29}(?:\\.[0-9]{0,7}[1-9])?|0\\.[0-9]{0,7}[1-9])$",
"type": "string"
}
},
"required": [
"asset",
"is_buy",
"limit_px",
"sz",
"reduce_only",
"order_type"
],
"type": "object"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
},
"nonce": {
"maximum": 18446744073709551615,
"minimum": 1,
"type": "integer"
},
"vault_address": {
"type": "null"
}
},
"required": [
"legs",
"grouping",
"nonce",
"vault_address",
"expires_after_ms"
],
"type": "object"
}
},
"required": [
"kind",
"order"
],
"type": "object"
}
]
},
"pakt_root": {
"maxLength": 64,
"minLength": 64,
"pattern": "^[0-9a-f]{64}$",
"type": "string"
}
},
"required": [
"pakt_root",
"intent"
],
"type": "object"
}