Oneqaz Trading Mcp

Created By
oneqaz-trading2 months ago
Self-verifying trading MCP — regime detection + Trust Layer for crypto, US, KR stocks. 13 trust tools let AI agents verify accuracy, backtest tuning, news causality, feature governance, and strategy performance before recommending. 1,100+ symbols, 24/7 live data.
Overview

oneqaz-trading-mcp

The context layer for financial AI.

Your AI agent shouldn't just see prices — it should understand what regime the market is in, which signals are actually working right now, and how macro flows down to individual assets.

OneQAZ provides this as a single MCP endpoint. Crypto, US stocks, Korean stocks. 1,100+ symbols. 24/7 live.

Keywords: MCP, trading, signals, market analysis, regime, portfolio, sentiment, technical analysis, crypto, stocks, Fear & Greed, cross-market, Claude, model context protocol

Why OneQAZ

Financial data APIs are everywhere. Market intelligence is not.

Typical financial MCPOneQAZ
Price / OHLCV data
Technical indicators
Regime detection (trending / ranging / volatile)
Self-correcting signals (weighted by real outcomes)
Macro → ETF → Individual context chain
Live 24/7 cloud API

Signal weights are adjusted continuously based on actual trade outcomes per regime via Thompson Sampling — not static indicator thresholds. Every response includes an _llm_summary field optimized for AI consumption.

What your AI gets

  • Regime detection: Is the market trending, ranging, or volatile? Per-market and global
  • Self-correcting signals: 1,100+ symbols scored by Thompson Sampling on actual trade outcomes
  • Macro context chain: Global regime → bonds/forex/VIX/commodities → ETF/basket → individual symbol
  • External context: News events, fundamentals, cross-market correlation — pre-processed for LLM consumption
  • 19 Resources + 4 Tools: Stateless HTTP, compatible with any MCP client
  • _llm_summary on every response: Human-readable text summary optimized for AI agent context windows

Market Coverage

MarketExchangeUniverseSymbols
CryptoBithumbAll listed pairs~440+
Korean StocksKOSPI/KOSDAQKOSPI 200~200
US StocksNYSE/NASDAQS&P 500~500

All symbols are monitored 24/7 with automated signal generation, regime detection, and virtual trading.

Quick Start

Option 1: Live API — no install needed

Real-time data, updated every minute.

{
  "mcpServers": {
    "oneqaz-trading": {
      "url": "https://api.oneqaz.com/mcp"
    }
  }
}

Ask Claude: "What's the current market regime?"

Option 2: Local (demo data)

pip install oneqaz-trading-mcp
oneqaz-trading-mcp init    # creates sample SQLite databases
oneqaz-trading-mcp serve   # starts at http://localhost:8010
  • Swagger UI: http://localhost:8010/docs
  • MCP endpoint: http://localhost:8010/mcp

Then connect from Claude:

{
  "mcpServers": {
    "oneqaz-trading": {
      "url": "http://localhost:8010/mcp"
    }
  }
}

Use Cases

1. Give your AI agent market awareness

Connect OneQAZ and your agent understands market context without you building the pipeline:

# Your agent reads regime + signals + macro in one call
context = mcp.read("market://crypto/unified")

# Or go granular
regime = mcp.read("market://crypto/status")          # what phase is the market in?
signals = mcp.call("get_signals", market_id="crypto", min_score=0.7)  # what's working now?
macro = mcp.read("market://global/summary")           # what's driving this from above?

# Feed to your agent's decision layer
prompt = f"""
  Regime: {regime}
  High-confidence signals: {signals}
  Macro context: {macro}

  Recommend portfolio action.
"""

2. Build a regime-aware trading system

Your AI reacts differently based on market state — no hardcoded rules:

regime = mcp.read("market://us_stock/status")
structure = mcp.read("market://us_stock/structure")

if regime["regime"]["stage"] == "volatile":
    signals = mcp.call("get_signals", market_id="us_stock", action_filter="DEFENSIVE")
else:
    signals = mcp.call("get_signals", market_id="us_stock", min_score=0.7)

3. Cross-market macro→micro analysis

Trace how macro shifts flow into individual assets:

# Macro layer
global_regime = mcp.read("market://global/summary")
bonds = mcp.read("market://global/category/bonds")

# Cross-market correlation
cross = mcp.read("market://unified/cross-market")

# Down to individual symbol with full context chain
symbol_ctx = mcp.read("market://us_stock/unified/symbol/NVDA")

4. Ask Claude directly

Already using Claude? Just connect and ask:

"What's the current market regime for crypto?"
"Show me the best performing positions in US stocks"
"Any macro risks I should know about?"
"Compare crypto vs US stock conditions"

Sample Response

Reading market://crypto/status returns:

{
  "market_id": "crypto",
  "regime": {
    "stage": "sideways_bullish",
    "score": 0.42,
    "confidence": 0.78
  },
  "positions": {
    "total": 5,
    "long": 4,
    "short": 1,
    "avg_roi": 3.2
  },
  "signals_24h": {
    "buy": 8,
    "sell": 3,
    "hold": 12,
    "avg_score": 0.65
  },
  "_llm_summary": "Crypto market is sideways_bullish. 5 active positions (avg ROI +3.2%). 8 BUY signals in last 24h."
}

Configuration

All configuration is via environment variables:

VariableDefaultDescription
MCP_SERVER_PORT8010Server port
MCP_SERVER_HOST0.0.0.0Bind host
MCP_LOG_LEVELINFOLog level
DATA_ROOTAuto-detectRoot directory for all data
MCP_COIN_DATA_DIR{DATA_ROOT}/market/coin_market/data_storageCrypto data directory
MCP_KR_DATA_DIR{DATA_ROOT}/market/kr_market/data_storageKR stock data directory
MCP_US_DATA_DIR{DATA_ROOT}/market/us_market/data_storageUS stock data directory
MCP_EXTERNAL_CONTEXT_DATA_DIR{DATA_ROOT}/external_context/data_storageExternal context directory
MCP_GLOBAL_REGIME_DATA_DIR{DATA_ROOT}/market/global_regime/data_storageGlobal regime directory

Resources

Resource URIDescription
market://healthServer health check
market://global/summaryGlobal macro regime summary
market://global/category/{category}Per-category analysis (bonds, commodities, forex, vix, credit, liquidity, inflation)
market://global/categoriesAvailable categories list
market://structure/allAll markets ETF/basket structure
market://{market_id}/structurePer-market structure analysis
market://{market_id}/statusMarket status (regime, positions, performance)
market://{market_id}/positions/snapshotCurrent positions snapshot
market://all/summaryAll markets combined summary
market://indicators/fear-greedFear & Greed Index
market://indicators/contextCombined market context
market://{market_id}/signals/summarySignal summary (24h aggregation)
market://{market_id}/signals/feedbackSignal pattern feedback
market://{market_id}/signals/rolesRole-based signal summary
market://{market_id}/external/summaryExternal context (news, events, fundamentals)
market://{market_id}/external/symbol/{symbol}Per-symbol external context
market://{market_id}/unified/symbol/{symbol}Unified technical + external context
market://{market_id}/unifiedMarket-level unified context
market://unified/cross-marketCross-market pattern analysis

Market IDs: crypto, kr_stock, us_stock (aliases: coin, kr, us)

Tools

ToolParametersDescription
get_trade_historymarket_id, limit, action_filter, min_pnl, max_pnl, hours_backQuery trade history with filters
get_positionsmarket_id, min_roi, max_roi, strategy, sort_by, sort_order, limitQuery open positions
get_signalsmarket_id, symbol, min_score, max_score, action_filter, intervalQuery trading signals
get_latest_decisionsmarket_id, limit, decision_filter, hours_backQuery recent trading decisions

Docker

docker build -t oneqaz-trading-mcp .
docker run -p 8010:8010 oneqaz-trading-mcp

Data Directory Structure

{DATA_ROOT}/
├── market/
│   ├── global_regime/data_storage/
│   │   ├── global_regime_summary.json
│   │   └── {bonds,commodities,forex,vix,...}_analysis.db
│   ├── coin_market/data_storage/
│   │   ├── trading_system.db
│   │   ├── signals/{symbol}_signal.db
│   │   └── regime/market_structure_summary.json
│   ├── kr_market/data_storage/  (same structure)
│   └── us_market/data_storage/  (same structure)
└── external_context/data_storage/
    ├── coin_market/external_context.db
    ├── kr_market/external_context.db
    └── us_market/external_context.db

Rate Limits

The live API (api.oneqaz.com/mcp) has rate limits to ensure fair usage:

LimitValueDescription
Daily quota1,500 requests/IPResets every 24 hours
Burst limit30 requests/min/IPPrevents overloading

What this means:

  • Monitor 2-3 symbols all day: ~500-800 requests → no problem
  • Scan entire market once: ~1,200-1,500 requests → fits in daily quota
  • Exceeding limits returns HTTP 429 with Retry-After header

Response headers on every request:

  • X-RateLimit-Daily-Remaining: requests left today
  • X-RateLimit-Minute-Remaining: requests left this minute

Local self-hosted servers (localhost) have no rate limits.

Disclaimer

This software is provided for informational and educational purposes only. It is not financial advice.

  • All signals, regime analysis, and market data are generated by automated systems and may contain errors.
  • Past performance does not guarantee future results.
  • You are solely responsible for your own investment decisions. The authors and contributors are not liable for any financial losses incurred from using this software.
  • This is not a registered investment advisor, broker-dealer, or financial planner.
  • Always do your own research (DYOR) before making any investment decisions.

By using this software, you acknowledge that you understand and accept these terms.

License

MIT

Project Info
Created At
2 months ago
Updated At
2 months ago
Author Name
oneqaz-trading
Star
-
Language
-
License
-
Category

Recommend Servers

View All