UniClaw Prediction Market

WarnAudited by ClawScan on May 10, 2026.

Overview

The skill is coherent for prediction-market trading, but it directly uses your Unicity wallet keys and can move or trade UCT tokens without built-in confirmation safeguards.

Review this skill carefully before installing. It appears aligned with prediction-market trading, and there is no evidence of hidden private-key exfiltration, but it can use your Unicity wallet authority to deposit, trade, cancel orders, and withdraw UCT. Use a separate low-balance wallet, confirm every trade or transfer manually, do not run the smoke test on a funded account, and only point UNICLAW_SERVER at a server you trust.

Findings (3)

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

If the skill is misused or compromised, it could authenticate as your wallet identity and authorize account actions tied to that wallet.

Why it was flagged

The skill reads the shared Unicity wallet mnemonic and then accesses Sphere's internal identity object to retrieve the raw private key. The artifacts do not show the raw key being sent away, but this gives the skill high-impact authority over the wallet identity.

Skill content
const mnemonicPath = join(config.walletDataDir, 'mnemonic.txt'); ... readFileSync(mnemonicPath, 'utf-8').trim(); ... const fullIdentity = (sphere as any)._identity; ... return fullIdentity.privateKey;
Recommendation

Use a separate low-balance/testnet wallet, avoid storing significant funds in the shared wallet, and prefer a version that declares this credential access clearly and uses a safer SDK signing interface instead of extracting the raw private key.

What this means

A mistaken or unintended invocation could withdraw UCT to the wrong address or an attacker-controlled address.

Why it was flagged

The withdrawal command sends a signed withdrawal request to the UniClaw server for a user-supplied amount and address, with no confirmation prompt, address allowlist, or transfer limit in the script.

Skill content
const result = await apiPost('/api/agent/withdraw', { amount: parseFloat(amount), recipientAddress: to }, privateKey);
Recommendation

Require explicit human approval before withdrawals or deposits, verify destination addresses out of band, and use account-level limits where possible.

What this means

Running the smoke test on a funded account could create a real order, incur losses if filled, or cancel an existing order the user intended to keep.

Why it was flagged

The smoke test is not just read-only: it can place a market order and, if no test order ID is available, cancel the first existing open order it finds.

Skill content
console.log('   Placing test order (YES @ 0.10, qty 1)...'); ... await apiPost(`/markets/${testMarket.id}/orders`, { side: 'yes', price: 0.10, quantity: 1 }, privateKey); ... const orderToCancel = placedOrderId ?? orders[0]?.id; ... await apiDelete(`/markets/${marketId}/orders/${orderToCancel}`, privateKey);
Recommendation

Do not run the smoke test with a funded or production wallet. The developer should make smoke tests dry-run by default or isolate them to a dedicated test server/account.