o
?+h\% � @ sZ d dl Z d dlZd dlZd dlmZ d dlmZmZmZm Z m
Z
mZmZ d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d d lmZ d d
lmZ d dlmZmZ d dlm Z d d
l!m"Z"m#Z# d dl$m%Z% e� e j&e j'ej(d� e �)e*�Z+ed�Z,dZ-dZ.dZ/G dd� d�Z0edddd�Z1e�2dd�Z3e0e�2dd�d� ed�fde4fdd�Z5e d�Z6d efd!d"�Z7e1j8j9�:e#d#e7d$gd%�� e1j8j9�:e"de6j;d&�� e1j<d'e e5�gd(�d)d*� �Z=e1j>d+e e5�gd(�ed,�e
d,�fd-e4d.e?fd/d0��Z@e1�<d1�d2d3� �ZAd4d5� ZBe*d6k�r+d7ejCv �r&d dlDZDeDjEd8d9eFe�2d:d;��d<d=� dS eB� dS dS )>� N)�load_dotenv)�FastAPI�Request�
HTTPException�Depends�Body�Path�Header)�APIKeyHeader)�BaseHTTPMiddleware)r )�Response)�FastMCP)� TonClient)�
PromptManager)�ToolManager�base64url_to_hex)�SseServerTransport)�Mount�Route)�Any)�level�streamzTON MCP ServerZ0EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9cZ0UQBXbfJhkqlCpDXPn_x5uXDR_cqC7xfjx3jhwx5DOO1DWqZnZ0EQAvlWFDxGF2lXm67y4yzC17wYKD9A0guwPkMs1gOsM__NOTc @ s0 e Zd Zddedefdd�Zdd� Zdd � Zd
S )�TonMcpServer� https://tonapi.io�api_key�base_urlc C sF t �d|� || _t||�| _t� | _t| j�| _| � � | �
� d S )Nz6Initializing TonMcpServer with API key and base_url=%s)�logger�debugr r Z
ton_clientr �prompt_managerr �tool_manager�_register_tools�_register_prompts)�selfr r � r# �G/Users/devon/ton-mcp/ton-blockchain-mcp-remote/src/tonmcp/mcp_server.py�__init__! s zTonMcpServer.__init__c s� t �d� tjdd�d!dtdtdtf� fdd �
�}tjd
d�dtdtf� fdd
��}tjdd�d"dtdtdtf� fdd�
�}tjdd�d#dtdtdtf� fdd�
�}tjdd�d$dtdtf� fdd�
�}tjdd�d$dtdtdtf� fdd �
�}d S )%NzRegistering tools...z�Analyze a TON address for its balance, jetton holdings, NFTs, and recent activity. Optionally performs deep forensic analysis if deep_analysis is True. Use for questions about account overview, holdings, or activity.)�descriptionF�address�
deep_analysis�returnc � sB �t �d| � d|� �� � jj| |d�I dH }t �d|� �� |S )z�Example: analyze_address(address='UQ...youraddress...', deep_analysis=True)
Analyze a TON address including balance, transactions, and patterns.
z$analyze_address called with address=z, deep_analysis=)r'