{"name": "themis", "version": "1", "description": "An adaptive trading desk for Binance perpetuals. It decides; you execute. Alerts carry the whole plan; report your fills.", "base_url": "https://api.themis.trade", "auth": {"write": "x-agent-key header"}, "endpoints": {"call": "https://api.themis.trade/call", "rest": "https://api.themis.trade/<tool>", "openapi": "https://api.themis.trade/openapi.json", "webhook_signature": "X-Themis-Signature: sha256=HMAC_SHA256(secret, raw_body)"}, "tools": [{"name": "list_alerts", "description": "Trade alerts since a cursor: every entry and exit the desk has made, each with the full plan (side, entry, target, invalidation and why it sits there, time limit, size). Poll with the returned cursor; ids are monotonic and never reused.", "input_schema": {"type": "object", "properties": {"since": {"type": "integer", "description": "last alert_id seen; 0 for all"}, "limit": {"type": "integer", "minimum": 1, "maximum": 200}, "kind": {"type": "string", "enum": ["entry", "exit"]}}}, "requires_key": false}, {"name": "get_alert", "description": "One alert by id.", "input_schema": {"type": "object", "required": ["alert_id"], "properties": {"alert_id": {"type": "integer"}}}, "requires_key": false}, {"name": "get_plan", "description": "The desk's plan for a market: an open position's numbers, or what it would open on at the current price on the current lean.", "input_schema": {"type": "object", "required": ["symbol"], "properties": {"symbol": {"type": "string", "description": "e.g. BTC or BTCUSDT"}}}, "requires_key": false}, {"name": "get_market", "description": "The full public analysis for one market: price, levels, on-chain flow, structure, the plan, recent bars.", "input_schema": {"type": "object", "required": ["symbol"], "properties": {"symbol": {"type": "string"}}}, "requires_key": false}, {"name": "search_markets", "description": "Markets the desk reads (market cap above the floor), optionally filtered by a substring.", "input_schema": {"type": "object", "properties": {"q": {"type": "string"}}}, "requires_key": false}, {"name": "get_positions", "description": "Open positions with their plans, and recent closed ones.", "input_schema": {"type": "object", "properties": {"limit": {"type": "integer"}}}, "requires_key": false}, {"name": "report_fill", "description": "Report what you actually did with an alert, so the desk can reconcile its paper book against real execution. Requires the agent key.", "input_schema": {"type": "object", "required": ["status"], "properties": {"alert_id": {"type": "integer"}, "trade_id": {"type": "integer"}, "status": {"type": "string", "enum": ["opened", "closed", "rejected", "skipped"]}, "fill_px": {"type": "number"}, "qty": {"type": "number"}, "venue": {"type": "string"}, "order_id": {"type": "string"}, "note": {"type": "string"}}}, "requires_key": true}, {"name": "list_fills", "description": "Fills previously reported by agents.", "input_schema": {"type": "object", "properties": {"trade_id": {"type": "integer"}}}, "requires_key": false}, {"name": "register_webhook", "description": "Receive every alert by POST as it happens, signed with HMAC-SHA256 of the raw body under your secret. Requires the agent key. https only, five active at most.", "input_schema": {"type": "object", "required": ["url", "secret"], "properties": {"url": {"type": "string"}, "secret": {"type": "string", "minLength": 16}}}, "requires_key": true}, {"name": "list_webhooks", "description": "Your registered webhooks. Requires the agent key.", "input_schema": {"type": "object", "properties": {}}, "requires_key": true}, {"name": "delete_webhook", "description": "Deactivate a webhook. Requires the agent key.", "input_schema": {"type": "object", "required": ["webhook_id"], "properties": {"webhook_id": {"type": "integer"}}}, "requires_key": true}]}