mit einem Klick
kraken-error-recovery
// Handle order failures, network errors, and duplicate submissions safely.
// Handle order failures, network errors, and duplicate submissions safely.
Connect MCP clients to kraken-cli for native tool calling without subprocess wrappers.
Install kraken-cli, create API credentials, and go from paper trading to live in under five minutes.
Discover staking strategies, allocate funds, and track earn positions.
Place, manage, and monitor futures orders across the full lifecycle.
Test strategy logic on paper trading before touching live funds.
Promote a validated paper strategy to live trading with safety checks.
| name | kraken-error-recovery |
| version | 1.0.0 |
| description | Handle order failures, network errors, and duplicate submissions safely. |
| metadata | {"openclaw":{"category":"finance"},"requires":{"bins":["kraken"],"skills":["kraken-shared"]}} |
Use this skill for:
Parse the .error field from the JSON response:
| Category | Meaning | Recovery |
|---|---|---|
auth | Credentials invalid or expired | Re-authenticate, do not retry |
rate_limit | Too many requests | Read suggestion and docs_url fields, adapt strategy |
network | Connection failed | Retry with exponential backoff |
validation | Invalid request parameters | Fix inputs, do not retry unchanged |
api | Exchange-side rejection | Inspect error message, adjust request |
After a network error during order submission, the order may or may not have reached the exchange. Check before resubmitting:
kraken open-orders -o json 2>/dev/null
If the order appears in open-orders, do not resubmit. If absent:
kraken trades-history -o json 2>/dev/null
If the order filled immediately, it appears in trades. Only resubmit if the order is absent from both.
Use --cl-ord-id to tag orders with a unique identifier:
kraken order buy BTCUSD 0.001 --type limit --price 50000 --cl-ord-id "dca-2024-01-15-001" -o json 2>/dev/null
If the submission fails, query by client order ID to check if it reached the exchange:
kraken open-orders --cl-ord-id "dca-2024-01-15-001" -o json 2>/dev/null
Cancel by client order ID if needed:
kraken order cancel --cl-ord-id "dca-2024-01-15-001" -o json 2>/dev/null
1. Submit order (capture exit code and response)
2. If exit code != 0 and error == "network":
a. Wait 2 seconds
b. Check open-orders for the order (by cl-ord-id or recent orders)
c. If found → order succeeded, proceed
d. If not found → check trades-history
e. If in trades → order filled, proceed
f. If absent from both → safe to retry
3. Retry with same cl-ord-id
The CLI returns rate limit errors immediately with no internal retry. The error includes actionable fields for the agent to decide next steps.
On rate_limit error:
suggestion field for specific guidance on what limit was hit and how to adapt.docs_url field for the relevant Kraken documentation.# { "error": "rate_limit", "suggestion": "...", "docs_url": "...", "retryable": true }
kraken status -o json 2>/dev/null
If status succeeds, the rate limit has cleared.
Limit orders may partially fill. Check order status:
kraken query-orders <TXID> -o json 2>/dev/null
Fields: vol (requested volume), vol_exec (filled volume), status (open, closed, canceled).
If partially filled and the remaining volume is needed, amend or place a new order for the remaining amount.
An order stuck in open state that should have filled or been canceled:
kraken query-orders <TXID> -o json 2>/dev/null
kraken order cancel <TXID> -o json 2>/dev/null
kraken open-orders -o json 2>/dev/null
--cl-ord-id for all orders in automated loops.