From 110ca7f5cfa2377a1ff1247e064a8942dded1da8 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 10 May 2026 08:54:54 +0000 Subject: [PATCH] docs(V2): update README for IBKR integration Add IBKR to the exchange list, endpoint table, audit filter values, and Tool disponibili. Bump test count to 366 and reorder IBKR Setup before Licenza. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 730bf2c..4c7864b 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ sul token bearer fornito dal client. - **Una singola immagine Docker** (`cerbero-mcp`) ospita tutti i router exchange in un unico processo FastAPI -- **Quattro exchange** (Deribit, Bybit, Hyperliquid, Alpaca) e **due data - provider** read-only (Macro, Sentiment) +- **Cinque exchange** (Deribit, Bybit, Hyperliquid, Alpaca, IBKR) e **due + data provider** read-only (Macro, Sentiment) - **Switch testnet/mainnet per-request** tramite header `Authorization: Bearer `: lo stesso container serve entrambi gli ambienti senza riavvii @@ -19,7 +19,7 @@ sul token bearer fornito dal client. override-abili tramite variabili dedicate (`DERIBIT_URL_*`, `BYBIT_URL_*`, `HYPERLIQUID_URL_*`, `ALPACA_URL_*`) - **Documentazione interattiva** OpenAPI/Swagger esposta a `/apidocs` -- **Qualità verificata**: 310 test (unit + integration + smoke), mypy +- **Qualità verificata**: 366 test (unit + integration + smoke), mypy pulito, ruff pulito ## Avvio rapido (sviluppo, senza Docker) @@ -88,6 +88,7 @@ non è richiesto sugli endpoint pubblici (`/health`, `/apidocs`, | `POST /mcp-bybit/tools/{tool}` | Tool exchange Bybit | | `POST /mcp-hyperliquid/tools/{tool}` | Tool exchange Hyperliquid | | `POST /mcp-alpaca/tools/{tool}` | Tool exchange Alpaca | +| `POST /mcp-ibkr/tools/{tool}` | Tool exchange Interactive Brokers | | `POST /mcp-macro/tools/{tool}` | Tool macro/market data | | `POST /mcp-sentiment/tools/{tool}` | Tool sentiment/news | | `GET /admin/audit` | Query dell'audit log JSONL (bearer richiesto, no X-Bot-Tag) | @@ -140,7 +141,7 @@ Parametri di query (tutti opzionali): - `from`, `to`: ISO 8601 datetime (es. `2026-05-01` o `2026-05-01T12:34:56Z`) - `actor`: `testnet` | `mainnet` -- `exchange`: nome dell'exchange (`deribit`, `bybit`, `hyperliquid`, `alpaca`) +- `exchange`: nome dell'exchange (`deribit`, `bybit`, `hyperliquid`, `alpaca`, `ibkr`) - `action`: nome del tool (es. `place_order`) - `bot_tag`: identificatore del bot - `limit`: massimo record restituiti, default `1000`, massimo `10000` @@ -186,6 +187,13 @@ rate, basis spot/perp, place_order, set_stop_loss, set_take_profit. Account, positions, bars, snapshot, option chain, place_order, amend_order, cancel_order, close_position. +### IBKR (Interactive Brokers) +Account, positions, activities, ticker, bars, snapshot, option chain, +search_contracts, clock, streaming (tick + depth via WebSocket +singleton), place_order, amend_order, cancel_order, close_position, +bracket/OCO/OTO orders. Auth via OAuth 1.0a Self-Service con minting +session token unattended (vedi sezione "IBKR Setup" più sotto). + ### Macro Treasury yields, FRED indicators, equity futures, asset prices, calendar, get_yield_curve_slope, get_breakeven_inflation, get_cot_tff, @@ -280,7 +288,7 @@ PORT=9000 TESTNET_TOKEN="$TESTNET_TOKEN" bash tests/smoke/run.sh ```bash uv sync -uv run pytest # tutta la suite (310 test attesi) +uv run pytest # tutta la suite (366 test attesi) uv run pytest tests/unit -v # solo unit uv run pytest tests/integration -v uv run ruff check src/ tests/ @@ -361,10 +369,6 @@ pybit (workaround documentato nel client). Per Alpaca l'override è applicato al solo trading endpoint: gli endpoint dati (`data.alpaca.markets`) restano quelli predefiniti dell'SDK. -## Licenza - -Privato. - ## IBKR Setup IBKR uses OAuth 1.0a Self-Service for fully unattended runtime auth. Setup is @@ -427,3 +431,7 @@ curl -X POST "https://cerbero-mcp./admin/ibkr/rotate-keys/confirm?env=testn -H "Authorization: Bearer " -H "Content-Type: application/json" \ -d '{"new_consumer_key":"...","new_access_token":"...","new_access_token_secret":"..."}' ``` + +## Licenza + +Privato.