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) <noreply@anthropic.com>
This commit is contained in:
root
2026-05-10 08:54:54 +00:00
parent a56baad3dd
commit 110ca7f5cf
+17 -9
View File
@@ -9,8 +9,8 @@ sul token bearer fornito dal client.
- **Una singola immagine Docker** (`cerbero-mcp`) ospita tutti i router - **Una singola immagine Docker** (`cerbero-mcp`) ospita tutti i router
exchange in un unico processo FastAPI exchange in un unico processo FastAPI
- **Quattro exchange** (Deribit, Bybit, Hyperliquid, Alpaca) e **due data - **Cinque exchange** (Deribit, Bybit, Hyperliquid, Alpaca, IBKR) e **due
provider** read-only (Macro, Sentiment) data provider** read-only (Macro, Sentiment)
- **Switch testnet/mainnet per-request** tramite header - **Switch testnet/mainnet per-request** tramite header
`Authorization: Bearer <TOKEN>`: lo stesso container serve entrambi gli `Authorization: Bearer <TOKEN>`: lo stesso container serve entrambi gli
ambienti senza riavvii ambienti senza riavvii
@@ -19,7 +19,7 @@ sul token bearer fornito dal client.
override-abili tramite variabili dedicate (`DERIBIT_URL_*`, override-abili tramite variabili dedicate (`DERIBIT_URL_*`,
`BYBIT_URL_*`, `HYPERLIQUID_URL_*`, `ALPACA_URL_*`) `BYBIT_URL_*`, `HYPERLIQUID_URL_*`, `ALPACA_URL_*`)
- **Documentazione interattiva** OpenAPI/Swagger esposta a `/apidocs` - **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 pulito, ruff pulito
## Avvio rapido (sviluppo, senza Docker) ## 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-bybit/tools/{tool}` | Tool exchange Bybit |
| `POST /mcp-hyperliquid/tools/{tool}` | Tool exchange Hyperliquid | | `POST /mcp-hyperliquid/tools/{tool}` | Tool exchange Hyperliquid |
| `POST /mcp-alpaca/tools/{tool}` | Tool exchange Alpaca | | `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-macro/tools/{tool}` | Tool macro/market data |
| `POST /mcp-sentiment/tools/{tool}` | Tool sentiment/news | | `POST /mcp-sentiment/tools/{tool}` | Tool sentiment/news |
| `GET /admin/audit` | Query dell'audit log JSONL (bearer richiesto, no X-Bot-Tag) | | `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`) - `from`, `to`: ISO 8601 datetime (es. `2026-05-01` o `2026-05-01T12:34:56Z`)
- `actor`: `testnet` | `mainnet` - `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`) - `action`: nome del tool (es. `place_order`)
- `bot_tag`: identificatore del bot - `bot_tag`: identificatore del bot
- `limit`: massimo record restituiti, default `1000`, massimo `10000` - `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, Account, positions, bars, snapshot, option chain, place_order,
amend_order, cancel_order, close_position. 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 ### Macro
Treasury yields, FRED indicators, equity futures, asset prices, calendar, Treasury yields, FRED indicators, equity futures, asset prices, calendar,
get_yield_curve_slope, get_breakeven_inflation, get_cot_tff, 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 ```bash
uv sync 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/unit -v # solo unit
uv run pytest tests/integration -v uv run pytest tests/integration -v
uv run ruff check src/ tests/ 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 applicato al solo trading endpoint: gli endpoint dati
(`data.alpaca.markets`) restano quelli predefiniti dell'SDK. (`data.alpaca.markets`) restano quelli predefiniti dell'SDK.
## Licenza
Privato.
## IBKR Setup ## IBKR Setup
IBKR uses OAuth 1.0a Self-Service for fully unattended runtime auth. Setup is IBKR uses OAuth 1.0a Self-Service for fully unattended runtime auth. Setup is
@@ -427,3 +431,7 @@ curl -X POST "https://cerbero-mcp.<dom>/admin/ibkr/rotate-keys/confirm?env=testn
-H "Authorization: Bearer <ADMIN_TOKEN>" -H "Content-Type: application/json" \ -H "Authorization: Bearer <ADMIN_TOKEN>" -H "Content-Type: application/json" \
-d '{"new_consumer_key":"...","new_access_token":"...","new_access_token_secret":"..."}' -d '{"new_consumer_key":"...","new_access_token":"...","new_access_token_secret":"..."}'
``` ```
## Licenza
Privato.