Free public Telegram bot — regime alerts + AlgoVault trade calls (BUY/SELL) for AI traders + agents.
@algovaultofficialbot on Telegram. Built by AlgoVault Labs.
Two kinds of alerts pushed to your watchlist, automatically:
| Alert | Free? | Cadence |
|---|---|---|
📊 Regime shifts (TRENDING_UP / TRENDING_DOWN / RANGING / VOLATILE) |
Counts toward your free 200 alerts/month (and 100/day) | Per chosen TF, fired only after 2 confirming cycles (no flap) |
| 📈 Trade calls (BUY / SELL only — HOLD verdicts are silent) | Counts against your free 200 alerts/month (and 100/day) cap | Per chosen TF, real-time |
Free tier covers all 720+ assets and all 11 timeframes (1m → 1d). You pick what to watch — more assets + lower timeframes = faster quota burn.
The bot is a thin client over the crypto-quant-signal-mcp composite-verdict signal API. Every alert traces back to the same on-chain-anchored signal stream that AlgoVault publishes via MCP.
- Open Telegram → search
@algovaultofficialbot→ tap Start. - Add your first watchlist entry:
/watch BTC 4h - List what you're watching:
/list - Help:
/help
/start — show welcome message
/watch <COIN> <TF> [EXCHANGE] [TYPE] — add to watchlist
/unwatch <COIN> <TF> [EXCHANGE] — remove from watchlist
/list — show your watchlist
/help — full command reference
Arguments:
COIN— uppercase 2-10 chars (BTC,ETH,SOL,1000PEPE, etc.)TF—1m 3m 5m 15m 30m 1h 2h 4h 8h 12h 1dEXCHANGE—HL BINANCE BYBIT OKX BITGET(default:BINANCE)TYPE—regime,calls, orboth(default:calls)
Per-user cap: 50 watchlist entries.
Examples:
/watch BTC 4h — trade calls only, default exchange
/watch ETH 1h HL regime — regime-only on Hyperliquid
/watch SOL 15m BYBIT both — regime + trade calls on Bybit
/unwatch BTC 4h — remove BTC 4h on BINANCE
Trade-call alerts on busier (lower-TF) pairs consume your free 200 alerts/month faster:
| Watch | Approx. burn |
|---|---|
/watch BTC 1d |
~1 alert / mo |
/watch BTC 4h |
~5 alerts / mo per pair |
/watch BTC 15m |
~30 alerts / mo per pair |
/watch BTC 1m |
quota blown in days |
Smart routing:
- HOLD verdicts are silent, so there is no alert to meter and no quota tick. This bot bills DELIVERED ALERTS; the API bills every verdict, HOLD included. The divergence is deliberate and declared — see docs/METERING-DIVERGENCE.md.
- Regime alerts count toward your 200/mo (parity with the AlgoVault API/MCP, which meters
get_market_regime). - Trade-call alerts (BUY/SELL only) tick your 200/mo counter.
- Both also tick a 100 per UTC day meter. A call is refused when EITHER is spent; the daily one resets at 00:00 UTC.
When you hit the cap, upgrade to Starter ($9.99/mo or $39.90/6mo → 10,000 API calls/mo) or pay per call via x402.org.
Free tier: two meters, and a call is refused when either is spent.
- 200 alerts / rolling 30 days, anchored on your first alert (not a calendar month).
- 100 alerts / UTC day, reset at 00:00 UTC.
Paid tiers: the free meters do not apply. A delivered alert draws down your plan allowance instead, and you are walled at the plan ceiling — see docs/METERING-DIVERGENCE.md.
Corrected 2026-08-27 (
GROWTH-TG-QUOTA-PARITY-W1). This section used to document three per-user 24h caps — 20 regime / 30 trade-call / 50 fetches — and state that they lapse on upgrade. All four claims were false. Those caps were removed before this README was written and the code says so in two places (alert_engine.py: "No 24h cap — only the quota gate applies") as doestests/test_anti_abuse.py; the columns survive indb.pyas deadC5_MIGRATIONSthat nothing reads. And upgrading has never removed a ceiling — it replaces the free meters with the plan's.
Telegram-side: bot uses an asyncio.Semaphore(25) to stay under Telegram's 30 msg/sec ceiling.
- The bot stores only: your
chat_id, Telegramusername(if public), Telegram language code, and your watchlist entries. - No message history. No payment data (signups happen on
algovault.comvia Stripe; the bot never handles PII or cards). - Bot calls
crypto-quant-signal-mcpserver-side via a single internal-bypass key — your individualchat_idis not propagated to the upstream signal server. - All UTM-tagged signups (
utm_source=tg_bot) live in Plausible — operator-side analytics only; no per-user tracking.
┌─────────────────────────────────────────────┐
│ Hetzner CPX22 (204.168.185.24) │
│ │
You ──Telegram──▶│ algovault-bot.service │
│ ├── /etc/algovault-bot/env (mode 600) │
│ ├── /var/lib/algovault-bot/state.db │
│ │ SQLite WAL, mode 660 │
│ └── /var/log/algovault-bot/alerts.log │
│ (logrotate weekly × 8) │
│ │
│ algovault-bot-cron.timer │
│ fires every 1 min @ HH:MM:00 │
│ ↓ │
│ algovault-bot-cron.service │
│ per-TF lazy dispatch │
│ ↓ X-AlgoVault-Internal-Key │
│ http://127.0.0.1:3000/mcp │
│ crypto-quant-signal-mcp │
│ (tier:'internal' bypass; bot enforces │
│ per-user quota in its own SQLite) │
└─────────────────────────────────────────────┘
- One systemd timer fires the alert engine every minute.
- The engine queries the SQLite watchlist for rows due (per-TF lazy dispatch:
now - last_fetched_at >= TF_SECONDS). - Each due row makes a single MCP
tools/callagainstcrypto-quant-signal-mcpover loopback (no Cloudflare round-trip). - Quota counting and rate-limiting are all bot-side; signal-MCP sees a single internal-bypass tier.
MIT. Built by AlgoVault Labs.
Source: this repo. Issues + feature requests: GitHub Issues.