Metadata-Version: 2.4
Name: ccxt-tool-strands
Version: 0.1.1
Summary: CCXT / CCXT Pro tools for Strands Agents
Project-URL: Homepage, https://github.com/mertozbas/ccxt-tool-strands
Project-URL: Repository, https://github.com/mertozbas/ccxt-tool-strands
Author: macmert
License: MIT
Keywords: ccxt,ccxtpro,strands,tools,trading
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Requires-Dist: ccxt>=4.0.0
Requires-Dist: strands-agents>=1.17.0
Description-Content-Type: text/markdown

# CCXT Tools (for Strands Agents)

A community tool package that exposes **CCXT** (and optional **CCXT Pro**) to Strands Agents via `@tool` wrappers.

- Generic method calling: `fetch_*`, `create_order`, `cancel_order`, etc.
- Optional real-time WebSocket streaming via `ccxt.pro` (`watch_*`).

## Install

```bash
pip install ccxt-tool-strands
```

### Optional: CCXT Pro

CCXT Pro is distributed separately by CCXT.

If you have it available in your environment, `ccxt_pro_watch(...)` will work.
If not, the tool returns a clear ImportError message.

## Tools

- `ccxt_generic(...)`
  - Call **any** CCXT exchange method.
- `ccxt_multi_exchange_orderbook(...)`
  - Compare best bid/ask across multiple exchanges.
- `ccxt_pro_watch(...)`
  - Call `ccxt.pro` `watch_*` methods (bounded snapshots).

## Usage in a Strands Agent

```python
from strands import Agent

# import tools from the installed package
from ccxt_tool_strands.ccxt_generic import ccxt_generic, ccxt_multi_exchange_orderbook
from ccxt_tool_strands.ccxt_pro import ccxt_pro_watch

agent = Agent(
    model="...",
    tools=[ccxt_generic, ccxt_multi_exchange_orderbook, ccxt_pro_watch],
)

# public market data
agent.tool.ccxt_generic(action="call", exchange="bybit", method="fetch_ticker", args='["BTC/USDT"]')
agent.tool.ccxt_generic(action="call", exchange="bybit", method="fetch_ohlcv", args='["BTC/USDT","1m",null,200]')

# multi-exchange best bid/ask
agent.tool.ccxt_multi_exchange_orderbook(exchanges='["binance","bybit","okx"]', symbol="BTC/USDT")
```

## Authentication (recommended: server-side)

Set environment variables in the agent runtime:

```bash
export CCXT_EXCHANGE=bybit
export CCXT_API_KEY=...
export CCXT_SECRET=...
# optional
export CCXT_PASSWORD=...
export CCXT_UID=...
export CCXT_TOKEN=...
export CCXT_DEFAULT_TYPE=swap   # or spot
export CCXT_SANDBOX=true        # optional
```

Then you can omit `exchange=` and call authenticated methods:

```python
agent.tool.ccxt_generic(action="call", method="fetch_balance")
```

## Notes

- **Secrets**: do not put API keys in client-side apps; keep them in the agent/server environment.
- **Rate limits**: CCXT `enableRateLimit=True` is enabled by default in the tool.

## Links

- CCXT: https://github.com/ccxt/ccxt
- Strands community tools: https://strandsagents.com/latest/documentation/docs/community/tools


<!-- auto-publish test: 2026-01-17T18:15:05.148445Z -->
