Interactive Brokers, curl-friendly — over REST + MCP. FastAPI + ib_async over a Linux-native IB Gateway: stocks/options/futures/forex/crypto/CFD contracts, quotes, historical bars, orders, positions, executions. Typed MCP tools mirror the whole surface. The IBKR half of mt5-httpapi — same shape, no Windows VM.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport streamable-http counts 24 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
cancel_all_orders
-
cancel_order
-
endpoints
-
exercise_option
-
get_account
-
get_account_values
-
get_completed_orders
-
get_contract
-
get_executions
-
get_future_continuous
-
get_option_chain
-
get_order
-
get_quote
-
get_rates
-
get_rates_ta
-
get_stock_ticks
-
list_accounts
-
list_future_contracts
-
list_orders
-
list_positions
-
ping
-
place_option_combo
-
place_order
-
request
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit f77f65b · analyzer v33 · 2w ago
skills & prompt files 1
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 156
filesystem 8
- fs psyb0t-ibkr-httpapi-f77f65b/ibkrapi/cache_bars.py :201
with open(path, encoding="utf-8", newline="") as fh: - fs psyb0t-ibkr-httpapi-f77f65b/ibkrapi/cache_meta.py :103
with open(path, encoding="utf-8") as fh: - fs psyb0t-ibkr-httpapi-f77f65b/ibkrapi/config.py :56
with open(CONFIG_YAML, encoding="utf-8") as handle: - fs psyb0t-ibkr-httpapi-f77f65b/ibkrapi/exec_history.py :74
with open(path, encoding="utf-8") as fh: - fs psyb0t-ibkr-httpapi-f77f65b/ibkrapi/historian.py :143
with open(path, "a", encoding="utf-8", newline="") as fh: - fs (weak) psyb0t-ibkr-httpapi-f77f65b/scripts/patch_spec_v030.py :73
with open(SPEC, encoding="utf-8") as fh: - fs (weak) psyb0t-ibkr-httpapi-f77f65b/tests/test_cache_meta.py :34
with open(path, encoding="utf-8") as fh: - fs (weak) psyb0t-ibkr-httpapi-f77f65b/tests/test_historian.py :20
with open(path, encoding="utf-8") as fh:
network 46
- net psyb0t-ibkr-httpapi-f77f65b/ibkrapi/marketdata.py :11
from urllib import error as urllib_error - net psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :32
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/cfd/get_cfd_contract.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/cfd/get_cfd_rates.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/cfd/get_cfd_rates_ta.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/cfd/get_cfd_tick.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/crypto/get_crypto_contract.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/crypto/get_crypto_rates.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/crypto/get_crypto_rates_ta.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/crypto/get_crypto_tick.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/forex/get_forex_contract.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/forex/get_forex_rates.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/forex/get_forex_rates_ta.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/forex/get_forex_tick.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/futures/get_continuous_future.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/futures/get_future_contract.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/futures/get_future_rates.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/futures/get_future_rates_ta.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/futures/get_future_tick.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/futures/list_future_contracts.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/history/get_completed_orders.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/history/get_executions.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/options/exercise_option.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/options/get_option_chain.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/options/get_option_contract.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/options/get_option_rates.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/options/get_option_rates_ta.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/options/get_option_tick.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/options/place_option_combo.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/orders/cancel_all_orders.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/orders/cancel_order.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/orders/get_order.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/orders/list_orders.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/orders/place_order.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/stocks/get_stock_contract.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/stocks/get_stock_rates.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/stocks/get_stock_rates_ta.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/stocks/get_stock_tick.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/stocks/get_stock_ticks.py :3
from urllib.parse import quote - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/system/get_account_summary.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/system/get_account_values.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/system/get_ping.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/system/list_accounts.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/api/system/list_positions.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/client.py :4
import httpx - net psyb0t-ibkr-httpapi-f77f65b/pkg/clients/python/ibkr-httpapi-client/ibkr_httpapi_client/types.py :17
# The types that `httpx.Client(files=)` can accept, copied from that library.
secrets 1
- secrets psyb0t-ibkr-httpapi-f77f65b/ibkrapi/config.py :83
API_TOKEN = _args.token or os.environ.get("API_TOKEN", "") or (_cfg.get("api_token") or "")
tool registrations 24
- get_contract psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :133
- get_quote psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :160
- get_rates psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :185
- get_rates_ta psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :222
- get_stock_ticks psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :267
- get_option_chain psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :297
- place_option_combo psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :316
- exercise_option psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :328
- get_future_continuous psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :338
- list_future_contracts psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :349
- list_orders psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :363
- get_order psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :368
- place_order psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :373
- cancel_order psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :417
- cancel_all_orders psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :425
- get_account psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :435
- get_account_values psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :442
- list_accounts psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :449
- list_positions psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :454
- get_executions psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :463
- get_completed_orders psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :489
- ping psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :496
- endpoints psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :503
- request psyb0t-ibkr-httpapi-f77f65b/ibkrapi/mcp_server.py :524
declared dependencies 44
- mcp@==1.27.1 \
- aeventkit@==2.1.0 \
- annotated-doc@==0.0.4 \
- annotated-types@==0.7.0 \
- anyio@==4.13.0 \
- attrs@==26.1.0 \
- certifi@==2026.5.20 \
- cffi@==2.0.0 \
- click@==8.4.1 \
- cryptography@==49.0.0 \
- fastapi@==0.136.3 \
- h11@==0.16.0 \
- httpcore@==1.0.9 \
- httptools@==0.8.0 \
- httpx@==0.28.1 \
- httpx-sse@==0.4.3 \
- ib-async@==2.1.0 \
- idna@==3.18 \
- jsonschema@==4.26.0 \
- jsonschema-specifications@==2025.9.1 \
- nest-asyncio@==1.6.0 \
- numpy@==2.4.6 \
- pycparser@==3.0 \
- pydantic@==2.13.4 \
- pydantic-core@==2.46.4 \
- pydantic-settings@==2.14.1 \
- pyjwt@==2.13.0 \
- python-dotenv@==1.2.2 \
- python-multipart@==0.0.32 \
- pyyaml@==6.0.3 \
- referencing@==0.37.0 \
- rpds-py@==2026.5.1 \
- sse-starlette@==3.4.4 \
- starlette@==1.3.1 \
- typing-extensions@==4.15.0 \
- typing-inspection@==0.4.2 \
- tzdata@==2025.3 \
- uvicorn@==0.49.0 \
- uvloop@==0.22.1 \
- watchfiles@==1.2.0 \
- websockets@==16.0 \
- github.com/oapi-codegen/runtime@v1.4.2
- github.com/apapsch/go-jsonmerge/v2@v2.0.0
- github.com/google/uuid@v1.6.0