github Python analyzed f77f65b

psyb0t/ibkr-httpapi

github

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.

maintainer
psyb0t
license
WTFPL
first seen
2026-07-26
last seen
2026-08-02
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 24 tools
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
skills & danger signals github-tarball
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

code evidence vHEAD · github-tarball
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