atpar-mcp-server
Official# atpar-mcp-server
MCP server for the [At Par](https://volta.co) Trading API — trade crypto, manage portfolios, and access market data from any MCP-compatible AI agent.
## Quick start
```bash
npx atpar-mcp-server
```
Requires `VT_API_KEY` and `VT_API_SECRET` environment variables.
## Configuration
### Claude Code (`.mcp.json`)
```json
{
"mcpServers": {
"atpar": {
"command": "npx",
"args": ["-y", "atpar-mcp-server"],
"env": {
"VT_API_KEY": "vtk_...",
"VT_API_SECRET": "..."
}
}
}
}
```
### Claude Desktop
Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"atpar": {
"command": "npx",
"args": ["-y", "atpar-mcp-server"],
"env": {
"VT_API_KEY": "vtk_...",
"VT_API_SECRET": "..."
}
}
}
}
```
## Environment variables
| Variable | Required | Description |
|----------|----------|-------------|
| `VT_API_KEY` | Yes | API key (e.g. `vtk_...`) |
| `VT_API_SECRET` | Yes | Base64-encoded API secret |
| `VT_API_URL` | No | Base URL (defaults to `https://api.solidusx.io`). Use `https://api.demo.solidusx.io` for demo. |
## Tools (16)
### Portfolio
| Tool | Description |
|------|-------------|
| `get_portfolios` | List all portfolios for the authenticated user |
| `get_portfolio_assets` | Get asset balances for a portfolio |
| `get_deposit_address` | Get the deposit address for a portfolio |
| `get_deposits` | List deposits for a portfolio |
| `get_portfolio_ledger` | Get ledger entries for a portfolio |
### Trading
| Tool | Description |
|------|-------------|
| `place_order` | Place a new order (market, limit, or swap) |
| `get_order` | Get details of a specific order |
| `list_orders` | List orders for a portfolio |
| `cancel_order` | Cancel an open order |
| `get_order_fills` | Get fills (executions) for an order |
### Market Data
| Tool | Description |
|------|-------------|
| `get_instruments` | List all available trading instruments |
| `get_prices` | Get current prices for all instruments |
| `get_candles` | Get OHLCV candlestick data for an instrument |
| `get_swap_liquidity` | Get available swap liquidity and pricing |
### Notifications
| Tool | Description |
|------|-------------|
| `get_notifications` | Get notifications for the authenticated user |
| `get_unread_count` | Get the count of unread notifications |
## Resources (2)
| URI | Description |
|-----|-------------|
| `atpar://instruments` | Full list of trading instruments with tick sizes, min order sizes, and status |
| `atpar://assets` | List of supported assets (currencies) on the platform |
## Development
```bash
npm install
npm run build
npm test
```
## License
MIT
TDQS
Scored across 16 tools
Each tool targets a distinct resource (portfolios, ledger, assets, orders, instruments, notifications, etc.), with clear boundaries. The only potential overlap is get_notifications vs. get_unread_count, but they are distinctly a list vs. a count, so there is no real ambiguity.
All tool names follow a consistent snake_case verb_noun pattern (get_*, place_order, cancel_order, list_orders). The few non-get_ prefixes are still action-based and consistent with the overall style, with no mixing of camelCase or other conventions.
The 16 tools are at the upper edge of a well-scoped set, but each one serves a distinct purpose and contributes to the trading/portfolio domain. The count is slightly high but not excessive, and no tools feel redundant or trivial.
The tool surface covers the core trading workflow well: portfolio management, order lifecycle, market data, and notifications. However, there are notable gaps such as order modification and withdrawal functionality, which are common in trading platforms and would be expected for full lifecycle coverage.