# tasty-agent: A TastyTrade MCP Server
A Model Context Protocol server for TastyTrade brokerage accounts. Enables LLMs to monitor portfolios, analyze positions, and execute trades.
## Installation
```bash
uvx tasty-agent
```
### Authentication
Set up credentials (stored in system keyring):
```bash
uvx tasty-agent setup
```
Or use environment variables:
- `TASTYTRADE_USERNAME`
- `TASTYTRADE_PASSWORD`
- `TASTYTRADE_ACCOUNT_ID` (optional)
## MCP Tools
### Account & Portfolio
- **`get_balances()`** - Account balances and buying power
- **`get_positions()`** - All open positions with current values
- **`get_net_liquidating_value_history(time_back='1y')`** - Portfolio value history ('1d', '1m', '3m', '6m', '1y', 'all')
- **`get_history(start_date=None)`** - Transaction history (format: YYYY-MM-DD, default: last 90 days)
### Market Data & Research
- **`get_quote(symbol, option_type=None, strike_price=None, expiration_date=None, timeout=10.0)`** - Real-time quotes for stocks and options via DXLink streaming
- **`get_market_metrics(symbols)`** - IV rank, percentile, beta, liquidity for multiple symbols
- **`market_status(exchanges=['Equity'])`** - Market hours and status ('Equity', 'CME', 'CFE', 'Smalls')
- **`search_symbols(symbol)`** - Search for symbols by name/ticker
### Order Management
- **`get_live_orders()`** - Currently active orders
- **`place_order(symbol, order_type, action, quantity, price, strike_price=None, expiration_date=None, time_in_force='Day', dry_run=False)`** - Simplified order placement for stocks and options
- **`delete_order(order_id)`** - Cancel orders by ID
### Watchlist Management
- **`get_public_watchlists(name=None)`** - Get public watchlists (all watchlists if name=None, specific watchlist if name provided)
- **`get_private_watchlists(name=None)`** - Get private watchlists (all watchlists if name=None, specific watchlist if name provided)
- **`create_private_watchlist(name, entries=[], group_name='main')`** - Create new private watchlist
- **`add_symbol_to_private_watchlist(watchlist_name, symbol, instrument_type)`** - Add symbol to existing watchlist
- **`remove_symbol_from_private_watchlist(watchlist_name, symbol, instrument_type)`** - Remove symbol from watchlist
- **`delete_private_watchlist(name)`** - Delete private watchlist
## Watchlist Entry Format
Watchlist entries use this format:
```json
[
{
"symbol": "AAPL",
"instrument_type": "Equity"
},
{
"symbol": "AAPL240119C00150000",
"instrument_type": "Equity Option"
}
]
```
## Key Features
- **Real-time streaming** quotes via DXLink WebSocket
- **Watchlist management** for portfolio organization
- **Dry-run testing** for all order operations
- **Automatic symbol normalization** for options
- **Fresh data** always from TastyTrade API
## Usage with Claude Desktop
Add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"tastytrade": {
"command": "uvx",
"args": ["tasty-agent"]
}
}
}
```
## Examples
```
"Get my account balances and current positions"
"Get real-time quote for SPY"
"Get quote for TQQQ C option with strike 100 expiring 2026-01-16"
"Place dry-run order: buy 100 AAPL shares at $150"
"Place order: buy 17 TQQQ C contracts at $8.55, strike 100, expiring 2026-01-16"
"Cancel order 12345"
"Create a watchlist called 'Tech Stocks' with AAPL and MSFT"
"Add TSLA to my Tech Stocks watchlist"
```
## Development
Debug with MCP inspector:
```bash
npx @modelcontextprotocol/inspector uvx tasty-agent
```
## License
MIT
Raw data
{
"_id": null,
"home_page": null,
"name": "tasty-agent",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "broker, mcp, model context protocol, robinhood, tastytrade, trading, wallstreetbets",
"author": null,
"author_email": "Ferdous <ferdous@hey.com>",
"download_url": "https://files.pythonhosted.org/packages/ed/b5/e6e1608136332b16b44a5eee2fa0e29d1ece253c37b93f44f42d2d3cafa8/tasty_agent-1.2.0.tar.gz",
"platform": null,
"description": "# tasty-agent: A TastyTrade MCP Server\n\nA Model Context Protocol server for TastyTrade brokerage accounts. Enables LLMs to monitor portfolios, analyze positions, and execute trades.\n\n## Installation\n\n```bash\nuvx tasty-agent\n```\n\n### Authentication\n\nSet up credentials (stored in system keyring):\n```bash\nuvx tasty-agent setup\n```\n\nOr use environment variables:\n- `TASTYTRADE_USERNAME`\n- `TASTYTRADE_PASSWORD`\n- `TASTYTRADE_ACCOUNT_ID` (optional)\n\n## MCP Tools\n\n### Account & Portfolio\n- **`get_balances()`** - Account balances and buying power\n- **`get_positions()`** - All open positions with current values\n- **`get_net_liquidating_value_history(time_back='1y')`** - Portfolio value history ('1d', '1m', '3m', '6m', '1y', 'all')\n- **`get_history(start_date=None)`** - Transaction history (format: YYYY-MM-DD, default: last 90 days)\n\n### Market Data & Research\n- **`get_quote(symbol, option_type=None, strike_price=None, expiration_date=None, timeout=10.0)`** - Real-time quotes for stocks and options via DXLink streaming\n- **`get_market_metrics(symbols)`** - IV rank, percentile, beta, liquidity for multiple symbols\n- **`market_status(exchanges=['Equity'])`** - Market hours and status ('Equity', 'CME', 'CFE', 'Smalls')\n- **`search_symbols(symbol)`** - Search for symbols by name/ticker\n\n### Order Management\n- **`get_live_orders()`** - Currently active orders\n- **`place_order(symbol, order_type, action, quantity, price, strike_price=None, expiration_date=None, time_in_force='Day', dry_run=False)`** - Simplified order placement for stocks and options\n- **`delete_order(order_id)`** - Cancel orders by ID\n\n### Watchlist Management\n- **`get_public_watchlists(name=None)`** - Get public watchlists (all watchlists if name=None, specific watchlist if name provided)\n- **`get_private_watchlists(name=None)`** - Get private watchlists (all watchlists if name=None, specific watchlist if name provided)\n- **`create_private_watchlist(name, entries=[], group_name='main')`** - Create new private watchlist\n- **`add_symbol_to_private_watchlist(watchlist_name, symbol, instrument_type)`** - Add symbol to existing watchlist\n- **`remove_symbol_from_private_watchlist(watchlist_name, symbol, instrument_type)`** - Remove symbol from watchlist\n- **`delete_private_watchlist(name)`** - Delete private watchlist\n\n## Watchlist Entry Format\n\nWatchlist entries use this format:\n```json\n[\n {\n \"symbol\": \"AAPL\",\n \"instrument_type\": \"Equity\"\n },\n {\n \"symbol\": \"AAPL240119C00150000\",\n \"instrument_type\": \"Equity Option\"\n }\n]\n```\n\n## Key Features\n\n- **Real-time streaming** quotes via DXLink WebSocket\n- **Watchlist management** for portfolio organization\n- **Dry-run testing** for all order operations\n- **Automatic symbol normalization** for options\n- **Fresh data** always from TastyTrade API\n\n## Usage with Claude Desktop\n\nAdd to `claude_desktop_config.json`:\n```json\n{\n \"mcpServers\": {\n \"tastytrade\": {\n \"command\": \"uvx\",\n \"args\": [\"tasty-agent\"]\n }\n }\n}\n```\n\n## Examples\n\n```\n\"Get my account balances and current positions\"\n\"Get real-time quote for SPY\"\n\"Get quote for TQQQ C option with strike 100 expiring 2026-01-16\"\n\"Place dry-run order: buy 100 AAPL shares at $150\"\n\"Place order: buy 17 TQQQ C contracts at $8.55, strike 100, expiring 2026-01-16\"\n\"Cancel order 12345\"\n\"Create a watchlist called 'Tech Stocks' with AAPL and MSFT\"\n\"Add TSLA to my Tech Stocks watchlist\"\n```\n\n## Development\n\nDebug with MCP inspector:\n```bash\nnpx @modelcontextprotocol/inspector uvx tasty-agent\n```\n\n## License\n\nMIT\n",
"bugtrack_url": null,
"license": null,
"summary": "A Model Context Protocol server for interacting with TastyTrade brokerage accounts",
"version": "1.2.0",
"project_urls": null,
"split_keywords": [
"broker",
" mcp",
" model context protocol",
" robinhood",
" tastytrade",
" trading",
" wallstreetbets"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "7e486971ff7567ca09d904b4bd2515b9385e556c7dffcfbe97006be4aa92dbd1",
"md5": "497c3e3c2dc35238972c025e7cff6c82",
"sha256": "d09f0fda68e6da10e3ef9250c74ee440d40721b94b88b7f103b2a5aa017d310a"
},
"downloads": -1,
"filename": "tasty_agent-1.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "497c3e3c2dc35238972c025e7cff6c82",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 10062,
"upload_time": "2025-07-22T12:32:17",
"upload_time_iso_8601": "2025-07-22T12:32:17.437542Z",
"url": "https://files.pythonhosted.org/packages/7e/48/6971ff7567ca09d904b4bd2515b9385e556c7dffcfbe97006be4aa92dbd1/tasty_agent-1.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "edb5e6e1608136332b16b44a5eee2fa0e29d1ece253c37b93f44f42d2d3cafa8",
"md5": "ea23a67e3c299d557ab876d2fa71e84d",
"sha256": "456344e231a76d69fb2eda230af684bc697da20f9731909323f3a13c1f5b0557"
},
"downloads": -1,
"filename": "tasty_agent-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "ea23a67e3c299d557ab876d2fa71e84d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 47475,
"upload_time": "2025-07-22T12:32:18",
"upload_time_iso_8601": "2025-07-22T12:32:18.544470Z",
"url": "https://files.pythonhosted.org/packages/ed/b5/e6e1608136332b16b44a5eee2fa0e29d1ece253c37b93f44f42d2d3cafa8/tasty_agent-1.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-22 12:32:18",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "tasty-agent"
}