ZKE Exchange Trading Skill

WarnAudited by ClawScan on May 18, 2026.

Overview

This appears to be a real ZKE trading integration, but it gives the agent live trading, transfer, and withdrawal powers through exchange API keys without clear built-in confirmations or limits.

Install only if you intentionally want OpenClaw to help manage a ZKE account. Use a dedicated API key with withdrawals disabled, IP whitelisting, minimal spot/futures permissions, and host-level approval for every trade, transfer, withdrawal, leverage, margin, or bulk-cancel action. Verify the publisher/source before running the installer.

Findings (6)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

An agent could place real trades if it misinterprets a prompt or is given an overly broad instruction.

Why it was flagged

The MCP server exposes a tool that places live spot orders through the exchange API. The artifact does not show a built-in confirmation step, spend limit, or dry-run default before the mutation.

Skill content
@mcp.tool()
def create_spot_order(symbol: str, side: str, order_type: str, volume: str, price: str = "") -> Dict[str, Any]: ... data, result = order_service.create_order(...)
Recommendation

Use a dedicated low-privilege API key, require host-level approval before order tools run, and test first with read-only or sandbox credentials if available.

What this means

If the configured API key has withdrawals enabled, funds could be sent out of the account.

Why it was flagged

The withdrawal helper constructs and submits a withdrawal request to the exchange. Withdrawals are high-impact and often irreversible, and this code path does not show an allowlist or explicit confirmation gate.

Skill content
body = {"symbol": safe_coin, "address": str(address).strip(), "amount": str(amount).strip(), "withdrawOrderId": safe_wo_id}
result = api.withdraw_apply(body)
Recommendation

Disable withdrawals on any API key used with this skill, use IP whitelisting, and avoid installing the skill with keys that can withdraw funds.

What this means

A single mistaken tool call could cancel many open futures orders at once.

Why it was flagged

The bulk-cancel function allows an empty body when no contract is supplied, which can make one omitted or mistaken parameter affect all futures orders rather than one scoped order.

Skill content
def cancel_all_orders(self, contract_name: Optional[str] = None):
    body: Dict[str, Any] = {}
    if contract_name:
        body["contractName"] = contract_name
    return self.client.request("POST", "/fapi/v1/cancel_all", body=body, signed=True)
Recommendation

Require explicit user confirmation for bulk actions and prefer wrappers that force a contract or order list instead of allowing account-wide defaults.

What this means

A broadly scoped API key would give the agent broad control over the exchange account.

Why it was flagged

The skill requires exchange API credentials and acknowledges that those credentials may authorize transfers and withdrawals. The restriction is only a recommendation, not an enforced boundary in the artifacts.

Skill content
Authentication strictly relies on standard MCP environment variables ... ZKE_API_KEY ... ZKE_SECRET_KEY ... This SDK explicitly supports asset transfers and withdrawals. We strongly recommend that your API Keys have Withdrawals Disabled and are restricted to Read/Trade only.
Recommendation

Create a separate ZKE API key with the narrowest permissions possible, disable withdrawals, restrict IPs, and revoke the key when no longer needed.

What this means

Credentials could be handled in a way users may not expect if they use these CLI commands.

Why it was flagged

A private WebSocket path accepts an API key or token as a command-line argument, which is less protected than the SKILL.md's environment-variable-only authentication description and can expose secrets through shell history or process listings.

Skill content
python3 main.py ws-futures-position-order 30 <apiKey|token>
python3 main.py ws-spot-user-data 30 <apiKey|token>
...
credential = sys.argv[3] if len(sys.argv) > 3 else None
Recommendation

Avoid passing exchange credentials on the command line; prefer OpenClaw-managed environment secrets and remove or guard CLI credential paths.

What this means

The installed dependency versions may vary over time or by environment.

Why it was flagged

The installer builds and enables the local plugin, but it also downloads dependencies from package managers during installation. The provided Python requirements are not fully pinned.

Skill content
npm install >/dev/null 2>&1 && npm run build ... pip install -r requirements.txt >/dev/null 2>&1 ... openclaw plugins install .
Recommendation

Review the installer and dependency files, prefer pinned dependencies or lockfiles, and install only from a verified ZKE source.