Documentation Index
Fetch the complete documentation index at: https://mintlify.com/backtest-kit/ai-trading-mcp/llms.txt
Use this file to discover all available pages before exploring further.
get_status is the agent’s primary read tool — a single call delivers a complete snapshot of the entire portfolio alongside a live Telegram news feed. There are no parameters; the engine assembles everything automatically. Every trading decision the agent makes must be grounded in what get_status returns.
Parameters
get_status takes no parameters.
Response Structure
Per-Symbol Portfolio State
For every symbol inCC_SYMBOL_LIST, the agent receives a status message containing the following fields:
The latest market price for the symbol, fetched via
ccxt from Binance.The amount of capital currently deployed in this symbol (in USD).
If a
open_position call has been accepted but not yet filled, this describes the pending entry signal. null when there is no queued entry.The current open position, if any.
If a
close_position call has been accepted but not yet executed, this describes the pending close signal. null when there is no queued close.Telegram Feed
After the portfolio block,get_status appends the last 15 posts from CC_TELEGRAM_CHANNEL, ordered newest first.
A header line stating the channel ID and the number of messages included, e.g.:
Each post is prefixed with its UTC timestamp in ISO 8601 format, e.g.
[2026-08-02T09:34:19.000Z].The text body of the post. For photo-only posts (no caption), the placeholder
(photo post, image attached below) is emitted instead so the agent is never left guessing whether content was omitted.When a post includes a photo — typically an exchange position screenshot — an MCP image block follows immediately after the post’s text block. Each image block has the shape:
The scraper selects the smallest Telegram photo size with width ≥ 800 px (from the 320 / 800 / 1280 / 2560 px ladder) to balance legibility against payload size, with a fallback to the full-size download.
| Field | Value |
|---|---|
id | "<post-id>-photo" |
type | "image" |
mimeType | "image/jpeg" |
data | Base64-encoded JPEG bytes |
Concurrency and the queued() Wrapper
Internally, all get_status invocations pass through a queued() serialization gate. If multiple calls arrive concurrently — for example, when /loop fires while a previous fetch is still in progress — each call waits for the one before it to complete before starting. This prevents concurrent GramJS requests from stampeding the Telegram client.
The 90-Second Timeout
The Telegram feed fetch is wrapped in a hard 90-secondtimeout(). If the fetch does not complete within that window:
- The Telegram connection is torn down (
disconnect()+getTelegram.clear()). - The next
get_statuscall reconnects from scratch. - The current call throws, and the agent receives an
isErrortool result with the messageStatusControllerService.getStatus: timeout fetching feed messages.
Audit Dump
Beforeget_status returns its messages to the agent, StatusMarkdownService writes the full response to disk:
- Text content →
dump/mcp/<minute-stamp>.md, where<minute-stamp>is derived from thewhentimestamp (minute-level granularity viagetMomentStamp). - Image content →
dump/images/<message-id>.png, referenced relatively from the markdown file so the dump renders correctly in any viewer, including the web UI served on:60050.
Example Response
The following is an abridged transcript from a real session. The agent calledget_status to survey the portfolio before deciding whether to act on a Telegram signal.
13 symbols, no open positions. The Telegram feed shows the author shorted BTC at ~63 285 on Aug 2, 09:34 UTC. The position screenshot shows Cross 100x and a BingX referral code — classic scam-channel markers.
get_status is the agent’s only read tool. All trading decisions — entries, holds, and exits — must be based exclusively on what it returns. The engine exposes no other data channel to the agent.