{"components":{"schemas":{"OperationError":{"properties":{"authorization_released":{"type":"boolean"},"kind":{"type":"string"},"message":{"type":"string"},"outcome":{"const":"error"},"receipt_id":{"type":"string"},"retry_safety":{"type":"string"}},"required":["outcome","kind","message"],"type":"object"}},"securitySchemes":{"PaktApiKey":{"bearerFormat":"Pakt API key","scheme":"bearer","type":"http"},"PrivyBrowserToken":{"bearerFormat":"Privy access token","scheme":"bearer","type":"http"}}},"info":{"description":"The HTTP projection of Pakt's authoritative MCP operation catalogue. Pakt authorizes and signs exact requests but never submits them.","title":"Pakt API","version":"0.1.0"},"openapi":"3.1.0","paths":{"/api/v1/api-keys":{"get":{"operationId":"list_api_keys","responses":{"200":{"description":"Active account API keys. Full secrets are never listed."},"400":{"description":"Invalid request"},"401":{"description":"Missing or invalid browser credential"},"403":{"description":"Account tier does not permit key management"},"503":{"description":"A required service is unavailable"}},"security":[{"PrivyBrowserToken":[]}],"summary":"list api keys"},"post":{"operationId":"create_api_key","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"name":{"description":"At most 100 UTF-8 bytes, without surrounding whitespace.","minLength":1,"type":"string"}},"required":["name"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Created. The full secret is returned exactly once."},"400":{"description":"Invalid request"},"401":{"description":"Missing or invalid browser credential"},"403":{"description":"Account tier does not permit key management"},"503":{"description":"A required service is unavailable"}},"security":[{"PrivyBrowserToken":[]}],"summary":"create api key"}},"/api/v1/api-keys/{key_id}":{"delete":{"operationId":"delete_api_key","parameters":[{"in":"path","name":"key_id","required":true,"schema":{"pattern":"^[0-9a-f]{32}$","type":"string"}}],"responses":{"200":{"description":"The key was deleted and is no longer valid."},"400":{"description":"Invalid request"},"401":{"description":"Missing or invalid browser credential"},"403":{"description":"Account tier does not permit key management"},"404":{"description":"No account-owned key has that id"},"503":{"description":"A required service is unavailable"}},"security":[{"PrivyBrowserToken":[]}],"summary":"Delete an API key"}},"/api/v1/execution-completions":{"post":{"description":"Record one terminal venue result observed by the submitting client for an exact signed receipt. Hyperliquid supports a fill, definite no-fill, confirmed cancellation, or deadline-passed result whose earlier venue outcome remains unreconciled. Ethereum supports exact-transaction confirmed success or revert, or a finalized account nonce beyond the durable transaction's nonce. Pakt checks the stored Hyperliquid deadline, exact Ethereum transaction hash, or exact Ethereum nonce as applicable. This display-only annotation cannot authorize, sign, submit, or change replay eligibility. Account identity is server-derived.","operationId":"record_execution_completion","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"completion":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"hyperliquid_filled"},"oid":{"maximum":18446744073709551615,"minimum":1,"type":"integer"}},"required":["kind","oid"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"hyperliquid_no_fill"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"hyperliquid_cancelled"},"oid":{"maximum":18446744073709551615,"minimum":1,"type":"integer"}},"required":["kind","oid"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"hyperliquid_expired_unreconciled"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"ethereum_transaction_confirmed_success"},"tx_hash":{"maxLength":66,"minLength":66,"pattern":"^0x[0-9a-f]{64}$","type":"string"}},"required":["kind","tx_hash"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"ethereum_transaction_confirmed_revert"},"tx_hash":{"maxLength":66,"minLength":66,"pattern":"^0x[0-9a-f]{64}$","type":"string"}},"required":["kind","tx_hash"],"type":"object"},{"additionalProperties":false,"properties":{"finalized_nonce":{"maximum":18446744073709551615,"minimum":1,"type":"integer"},"kind":{"const":"ethereum_transaction_nonce_superseded"}},"required":["kind","finalized_nonce"],"type":"object"}]},"pakt_root":{"maxLength":64,"minLength":64,"pattern":"^[0-9a-f]{64}$","type":"string"},"receipt_id":{"maxLength":81,"minLength":67,"pattern":"^(hl-[0-9a-f]{64}|gateway-(approval|order)-[0-9a-f]{64})$","type":"string"}},"required":["pakt_root","receipt_id","completion"],"type":"object"}}},"required":true},"responses":{"200":{"description":"The exact operation result also returned as MCP structuredContent."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Account tier does not permit this operation"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Operation conflict or recovery required"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Unsupported market metadata"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"The server failed before completing a response"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"This deployment does not integrate execution authorization"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"A required service is unavailable"}},"security":[{"PaktApiKey":[]}],"summary":"record execution completion"}},"/api/v1/execution-context":{"get":{"description":"Read one bounded page of this authenticated account's active, fully revalidated pakt roots, artifact-derived adapters, proposal-relevant policy_rules, and asset selection where applicable. policy_rules is the canonical SSZ-derived readback of numeric limits and refusal conditions; inspect it before constructing a proposal. A Hyperliquid asset_selection is either any or an exact only-list of native indices on the named network, never Pakt-specific ids. It does not claim a planner or strategy capability. AccountId and environment are server-derived. Wallet and operation-authorization readiness are checked only when propose_execution enters the configured hosted authorizer. This call is read-only and never creates an account, provisions a wallet, proves, signs, or submits.","operationId":"get_execution_context","parameters":[{"in":"query","name":"cursor","required":false,"schema":{"description":"Exclusive pakt-root cursor returned as next_cursor by the preceding page.","maxLength":64,"minLength":64,"pattern":"^[0-9a-f]{64}$","type":"string"}},{"in":"query","name":"page_size","required":false,"schema":{"default":10,"maximum":10,"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"The exact operation result also returned as MCP structuredContent."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Account tier does not permit this operation"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Operation conflict or recovery required"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Unsupported market metadata"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"The server failed before completing a response"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"This deployment does not integrate execution authorization"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"A required service is unavailable"}},"security":[{"PaktApiKey":[]}],"summary":"get execution context"}},"/api/v1/execution-proposals":{"post":{"description":"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.","operationId":"propose_execution","requestBody":{"content":{"application/json":{"schema":{"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"}}},"required":true},"responses":{"200":{"description":"The exact operation result also returned as MCP structuredContent."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Account tier does not permit this operation"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Operation conflict or recovery required"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Unsupported market metadata"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"The server failed before completing a response"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"This deployment does not integrate execution authorization"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"A required service is unavailable"}},"security":[{"PaktApiKey":[]}],"summary":"propose execution"}},"/api/v1/hyperliquid/perp-markets":{"get":{"description":"Read one live snapshot of Hyperliquid mainnet's perpetual DEX registry and metadata, resolve default and HIP-3 perps to exact global venue asset ids, and return draft-ready AssetRef JSON. With no arguments, returns up to 500 markets in Hyperliquid registry order; continue from next_cursor only when non-null. An any-asset draft does not require enumerating this catalogue. Read-only and informational: names never enter authorization, and this call does not draft, store, activate, prove, sign, propose, or trade. Market-metadata support covers active USDC-collateralized cross and venue-forced isolated perps with supported precision, margin tiers, and fee metadata. Authorization also checks the committed policy program and account margin modes. The current Hyperliquid policy program supports cross mode on cross-capable markets and isolated mode only where the venue requires it; Pakts committed to the retained legacy program remain cross-only. User-selected isolated mode on a cross-capable market is unsupported. Every open position on a cross-capable market must use cross mode, even when that market is absent from the order. Each cross-capable market named by the order must also have its selected mode set to cross. Closing an isolated position removes the account-wide open-position blocker but does not reset that market's selected mode. Inactive, non-USDC, or invalid-metadata markets also fail closed.","operationId":"list_hyperliquid_perp_markets","parameters":[{"in":"query","name":"cursor","required":false,"schema":{"description":"Return global asset ids strictly after this cursor.","maximum":4294967295,"minimum":0,"type":"integer"}},{"in":"query","name":"include_delisted","required":false,"schema":{"description":"Include venue entries marked delisted; defaults to false.","type":"boolean"}},{"in":"query","name":"page_size","required":false,"schema":{"maximum":500,"minimum":1,"type":"integer"}},{"in":"query","name":"query","required":false,"schema":{"description":"Optional case-insensitive symbol/name substring, for example TSLA or xyz:TSLA.","maxLength":64,"pattern":"^[A-Za-z0-9:_-]*$","type":"string"}}],"responses":{"200":{"description":"The exact operation result also returned as MCP structuredContent."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Account tier does not permit this operation"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Operation conflict or recovery required"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Unsupported market metadata"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"The server failed before completing a response"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"This deployment does not integrate execution authorization"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"A required service is unavailable"}},"security":[{"PaktApiKey":[]}],"summary":"list hyperliquid perp markets"}},"/api/v1/pakt-drafts":{"post":{"description":"Compile exactly one source — a shipped preset id or strict JSON draft — through the deterministic authoring compiler and return canonical SSZ, root, a compact plain-language review with display-ready grouped summaries, separately nested technical details, and the exhaustive dual readback. Present only pakt.review to ordinary users; use pakt.technical_details and dual_readback only for an explicitly requested advanced audit. Presets contain editable example limits, not a judgment about the user's finances. Before personalizing one, ask the intended allocation and risk appetite unless already answered; then propose and explain exact dollar, leverage, and buffer terms and compile the edited source.draft_json. DRAFT CALL WITH NO SIDE EFFECTS: this call neither stores nor activates it (without claiming an identical root is globally absent). That exact canonical SSZ is the only input to prepare_pakt_activation. The human reviews and approves the account/environment/root binding in the dashboard with the bound Pakt signer; the agent never receives key material.","operationId":"draft_pakt","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"draft_json":{"description":"Strict Pakt draft JSON. Send exactly one of draft_json or preset_id; unknown fields and unshipped cells fail closed.","maxLength":131072,"minLength":1,"type":"string"},"preset_id":{"description":"Stable id returned by list_pakt_templates. Send exactly one of preset_id or draft_json.","maxLength":128,"minLength":1,"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"The exact operation result also returned as MCP structuredContent."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Account tier does not permit this operation"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Operation conflict or recovery required"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Unsupported market metadata"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"The server failed before completing a response"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"This deployment does not integrate execution authorization"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"A required service is unavailable"}},"security":[{"PaktApiKey":[]}],"summary":"draft pakt"}},"/api/v1/pakt-templates":{"get":{"description":"List the shipped pakt templates by stable id, name, and description. Pure and non-mutating: it does not provision a wallet, compile, store, activate, sign, or execute anything. Before treating a template as personalized, ask the user how much they intend to allocate to this Pakt and their risk appetite, unless already stated or they explicitly choose unchanged example limits. Use those answers to propose exact leverage, maximum trade size, collateral movement, and account-buffer limits for review; never infer the user's balance.","operationId":"list_pakt_templates","parameters":[],"responses":{"200":{"description":"The exact operation result also returned as MCP structuredContent."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Account tier does not permit this operation"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Operation conflict or recovery required"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Unsupported market metadata"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"The server failed before completing a response"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"This deployment does not integrate execution authorization"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"A required service is unavailable"}},"security":[{"PaktApiKey":[]}],"summary":"list pakt templates"}},"/api/v1/pakts":{"get":{"description":"Read one bounded, root-ordered page of signer-authorized lifecycle summaries for this authenticated account in this deployment environment only. The list path fetches no canonical SSZ and makes no execution-adapter or artifact-validity claim; it strictly verifies stored EIP-712 evidence over the operation, environment, account, root, and Pakt signer identity encoded in the wallet field. A corrupt row is omitted and reported in row_errors without hiding other verified rows. The configured hosted sign-only path performs full artifact validation before consuming an active root; an unconfigured deployment reports NOT_INTEGRATED.","operationId":"list_pakts","parameters":[{"in":"query","name":"cursor","required":false,"schema":{"description":"Exclusive pakt-root cursor returned as next_cursor by the preceding page.","maxLength":64,"minLength":64,"pattern":"^[0-9a-f]{64}$","type":"string"}},{"in":"query","name":"page_size","required":false,"schema":{"default":10,"maximum":10,"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"The exact operation result also returned as MCP structuredContent."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Account tier does not permit this operation"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Operation conflict or recovery required"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Unsupported market metadata"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"The server failed before completing a response"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"This deployment does not integrate execution authorization"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"A required service is unavailable"}},"security":[{"PaktApiKey":[]}],"summary":"list pakts"}},"/api/v1/pakts/activation-requests":{"post":{"description":"Stage one exact canonical Pakt for browser review. This creates a random six-hour EIP-712 challenge bound to the authenticated account, deployment environment, canonical root, and current Pakt signer. It does not activate the Pakt or accept key/signature material from the agent. The human completes activation in the dashboard with the bound Pakt signer.","operationId":"prepare_pakt_activation","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"canonical_ssz":{"description":"Canonical pakt SSZ as lowercase hex without 0x.","maxLength":529256,"minLength":1,"pattern":"^[0-9a-f]+$","type":"string"}},"required":["canonical_ssz"],"type":"object"}}},"required":true},"responses":{"200":{"description":"The exact operation result also returned as MCP structuredContent."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Account tier does not permit this operation"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Operation conflict or recovery required"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Unsupported market metadata"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"The server failed before completing a response"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"This deployment does not integrate execution authorization"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"A required service is unavailable"}},"security":[{"PaktApiKey":[]}],"summary":"prepare pakt activation"}},"/api/v1/pakts/{pakt_root}/disable-requests":{"post":{"description":"Stage terminal disable of one exact account-owned Pakt for browser review. This creates a random six-hour EIP-712 challenge bound to the authenticated account, deployment environment, root, current Pakt signer, and the distinct disable operation. It does not disable the Pakt or accept key/signature material from the agent.","operationId":"prepare_pakt_disable","parameters":[{"in":"path","name":"pakt_root","required":true,"schema":{"description":"The exact active Pakt root to disable.","maxLength":64,"minLength":64,"pattern":"^[0-9a-f]{64}$","type":"string"}}],"responses":{"200":{"description":"The exact operation result also returned as MCP structuredContent."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Account tier does not permit this operation"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Operation conflict or recovery required"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Unsupported market metadata"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"The server failed before completing a response"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"This deployment does not integrate execution authorization"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"A required service is unavailable"}},"security":[{"PaktApiKey":[]}],"summary":"prepare pakt disable"}},"/api/v1/portfolio":{"get":{"description":"Informational snapshot of the authenticated account. Reuses the existing public balance reader and lifecycle projection to return execution-wallet and funding-wallet ETH/USDT, mode-aware Hyperliquid unified-account USDC balances plus current perpetual positions/unrealized PnL, and deployed Pakts. Hyperliquid sections name their public source, freshness, and completeness; missing sources remain local to their section. Realized portfolio history is not reconciled. This call takes no arguments and never provisions, proves, signs, submits, or moves funds.","operationId":"get_portfolio","parameters":[],"responses":{"200":{"description":"The exact operation result also returned as MCP structuredContent."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Missing or invalid API key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Account tier does not permit this operation"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Operation conflict or recovery required"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"Unsupported market metadata"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"The server failed before completing a response"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"This deployment does not integrate execution authorization"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationError"}}},"description":"A required service is unavailable"}},"security":[{"PaktApiKey":[]}],"summary":"get portfolio"}}},"servers":[{"url":"https://api.usepakt.ai"}]}