Modern async client + MCP server for the PocketOption WebSocket API. Exposes binary options trading tools for Claude Code and other MCP hosts.
Server has 9 tools with clear action verbs and reasonable descriptions (avg 180 chars). All tools have input schemas with type definitions and parameter descriptions. However, output schemas are not documented, LLMs cannot predict return structure. Error handling is minimal; no recovery guidance or actionable error messages. Parameter descriptions lack format constraints (e.g., 'expiration in seconds' should specify valid range). place_trade lacks confirmation/dry-run pattern for an irreversible operation. Naming is consistent (get_*, list_*, place_*, check_*) but some descriptions are verbose and could be tightened for LLM clarity.
Wait for a trade to close and return the result (win/loss/profit). Blocks until the trade expires. Timeout defaults to the trade's own duration plus a small margin. Returns the closed deal with won/profit fields populated.
Details for one asset: payout, whether it's open, and allowed expirations.
Get the current account balance and whether it's a demo or live account.
Fetch OHLCV candles for analysis. ``timeframe`` is the candle size in seconds (60=M1, 300=M5, 900=M15, 3600=H1, 14400=H4). Returns candles oldest-first, each with time/open/high/low/close/volume. Call this for several timeframes to analyse multiple horizons at once.
READ THIS FIRST. Explains the platform (PocketOption), how binary options work, every tool you have, your freedoms (any expiration in seconds, any/multiple timeframes, compute your own indicators), OTC vs real pairs, where to get extra data, and the most efficient workflow. Read it once before doing anything else.
Output schemas not documented. LLMs cannot predict return structure (fields, types, pagination). Affects all 9 tools.
place_trade (irreversible operation) lacks confirmation/dry-run pattern. Agents can execute trades without review, risking financial loss.
No error handling guidance. Errors do not tell LLM what to do next (retry, ask user, abort). No recovery paths documented.
Parameter constraints missing. 'expiration' in place_trade should specify valid range (e.g., 60 - 3600 seconds). 'limit' in list_assets and trade_history should have min/max bounds.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Get the current live price for an asset (subscribes and waits for a tick).
List tradeable assets with payout %% and available expirations (in seconds). Filters: active_only (open for trading now), otc_only (synthetic OTC pairs), asset_type ('currency'/'stock'/'crypto'/'commodity'/'index'), search (substring of symbol or name). Sorted by payout, capped at `limit`.
Open a binary-options trade. ``direction``: 'call'/'up' (price goes up) or 'put'/'down' (price goes down). ``amount``: stake in the account currency. ``expiration``: duration in SECONDS — any value the asset allows (e.g. 60, 180, 300). Check get_asset_info for the allowed list.
Fetch closed trades from the server-side history (not just this session). Returns a list of closed deals with their outcomes. Useful for reviewing past performance or checking old trades.
Descriptions are verbose (avg 180 chars, some >250). Trim to 50 - 150 chars for LLM clarity. E.g., get_candles description is 280+ chars.