@@ -21,9 +21,9 @@ class GetAddressCountTool(BaseTool):
2121
2222 async def execute (self , network : str = "testnet" ) -> ToolResult :
2323 try :
24- provider = get_provider (network )
25- result = await provider .get_address_count ()
26- return ToolResult (output = f"Address count: { result } " )
24+ async with get_provider (network ) as provider :
25+ result = await provider .get_address_count ()
26+ return ToolResult (output = f"Address count: { result } " )
2727 except Exception as e :
2828 return ToolResult (error = str (e ))
2929
@@ -49,9 +49,9 @@ class GetAddressInfoTool(BaseTool):
4949
5050 async def execute (self , address : str , network : str = "testnet" ) -> ToolResult :
5151 try :
52- provider = get_provider (network )
53- result = await provider .get_address_info (address )
54- return ToolResult (output = f"Address info: { result } " )
52+ async with get_provider (network ) as provider :
53+ result = await provider .get_address_info (address )
54+ return ToolResult (output = f"Address info: { result } " )
5555 except Exception as e :
5656 return ToolResult (error = str (e ))
5757
@@ -81,11 +81,11 @@ class GetActiveAddressesTool(BaseTool):
8181
8282 async def execute (self , days : int , network : str = "testnet" ) -> ToolResult :
8383 try :
84- provider = get_provider (network )
85- result = await provider .get_active_addresses (days )
86- if not result :
87- return ToolResult (output = "Active addresses data not available with current neo-mamba implementation" )
88- return ToolResult (output = f"Active addresses: { result } " )
84+ async with get_provider (network ) as provider :
85+ result = await provider .get_active_addresses (days )
86+ if not result :
87+ return ToolResult (output = "Active addresses data not available with current neo-mamba implementation" )
88+ return ToolResult (output = f"Active addresses: { result } " )
8989 except Exception as e :
9090 return ToolResult (error = str (e ))
9191
@@ -112,26 +112,26 @@ class GetTagByAddressesTool(BaseTool):
112112 "required" : ["addresses" ]
113113 }
114114
115- async def execute (self , addresses : str , network : str = "testnet" ) -> ToolResult :
116- try :
117- provider = get_provider (network )
118- # Convert string to list if needed
119- if isinstance (addresses , str ):
120- addresses = [addr .strip () for addr in addresses .split ("," )]
121-
122- # Note: neo-mamba doesn't have a direct GetTagByAddresses method
123- # For now, we'll get basic balance information for each address
124- results = {}
125- for addr in addresses :
126- try :
127- addr_info = await provider .get_address_info (addr )
128- results [addr ] = addr_info
129- except Exception as e :
130- results [addr ] = {"error" : str (e )}
131-
132- return ToolResult (output = f"Address information: { results } " )
133- except Exception as e :
134- return ToolResult (error = str (e ))
115+ async def execute (self , addresses : str , network : str = "testnet" ) -> ToolResult :
116+ try :
117+ async with get_provider (network ) as provider :
118+ # Convert string to list if needed
119+ if isinstance (addresses , str ):
120+ addresses = [addr .strip () for addr in addresses .split ("," )]
121+
122+ # Note: neo-mamba doesn't have a direct GetTagByAddresses method
123+ # For now, we'll get basic balance information for each address
124+ results = {}
125+ for addr in addresses :
126+ try :
127+ addr_info = await provider .get_address_info (addr )
128+ results [addr ] = addr_info
129+ except Exception as e :
130+ results [addr ] = {"error" : str (e )}
131+
132+ return ToolResult (output = f"Address information: { results } " )
133+ except Exception as e :
134+ return ToolResult (error = str (e ))
135135
136136class GetTotalSentAndReceivedTool (BaseTool ):
137137 name : str = "get_total_sent_and_received"
@@ -159,26 +159,26 @@ class GetTotalSentAndReceivedTool(BaseTool):
159159
160160 async def execute (self , contract_hash : str , address : str , network : str = "testnet" ) -> ToolResult :
161161 try :
162- provider = get_provider (network )
163- validated_address = provider ._validate_address (address )
162+ async with get_provider (network ) as provider :
163+ validated_address = await provider ._validate_address (address )
164164
165- # Note: neo-mamba doesn't have GetTotalSentAndReceived method
166- # We'll use get_nep17_transfers to get transfer history
167- transfers = await provider .rpc_client .get_nep17_transfers (validated_address )
165+ # Note: neo-mamba doesn't have GetTotalSentAndReceived method
166+ # We'll use get_nep17_transfers to get transfer history
167+ transfers = await provider .rpc_client .get_nep17_transfers (validated_address )
168168
169169 # Calculate totals from transfer history
170170 sent_total = 0
171171 received_total = 0
172172
173- if transfers and 'sent' in transfers :
174- for transfer in transfers [ ' sent' ] :
175- if transfer . get ( 'contract' ) == contract_hash :
176- sent_total += int (transfer . get ( 'amount' , 0 ))
173+ if transfers and hasattr ( transfers , 'sent' ) and transfers . sent :
174+ for transfer in transfers . sent :
175+ if hasattr ( transfer , 'contract' ) and str ( transfer . contract ) == contract_hash :
176+ sent_total += int (getattr ( transfer , 'amount' , 0 ))
177177
178- if transfers and 'received' in transfers :
179- for transfer in transfers [ ' received' ] :
180- if transfer . get ( 'contract' ) == contract_hash :
181- received_total += int (transfer . get ( 'amount' , 0 ))
178+ if transfers and hasattr ( transfers , 'received' ) and transfers . received :
179+ for transfer in transfers . received :
180+ if hasattr ( transfer , 'contract' ) and str ( transfer . contract ) == contract_hash :
181+ received_total += int (getattr ( transfer , 'amount' , 0 ))
182182
183183 result = {
184184 "address" : address ,
@@ -213,12 +213,12 @@ class GetRawTransactionByAddressTool(BaseTool):
213213
214214 async def execute (self , address : str , network : str = "testnet" ) -> ToolResult :
215215 try :
216- provider = get_provider (network )
217- validated_address = provider ._validate_address (address )
218- # Note: neo-mamba doesn't have GetRawTransactionByAddress method
219- # We'll use get_nep17_transfers as an alternative
220- transfers = await provider .rpc_client .get_nep17_transfers (validated_address )
221- return ToolResult (output = f"Transfer data: { transfers } " )
216+ async with get_provider (network ) as provider :
217+ validated_address = await provider ._validate_address (address )
218+ # Note: neo-mamba doesn't have GetRawTransactionByAddress method
219+ # We'll use get_nep17_transfers as an alternative
220+ transfers = await provider .rpc_client .get_nep17_transfers (validated_address )
221+ return ToolResult (output = f"Transfer data: { transfers } " )
222222 except Exception as e :
223223 return ToolResult (error = str (e ))
224224
@@ -244,11 +244,11 @@ class GetTransferByAddressTool(BaseTool):
244244
245245 async def execute (self , address : str , network : str = "testnet" ) -> ToolResult :
246246 try :
247- provider = get_provider (network )
248- validated_address = provider ._validate_address (address )
249- # Use neo-mamba's get_nep17_transfers method
250- transfers = await provider .rpc_client .get_nep17_transfers (validated_address )
251- return ToolResult (output = f"Transfer data: { transfers } " )
247+ async with get_provider (network ) as provider :
248+ validated_address = await provider ._validate_address (address )
249+ # Use neo-mamba's get_nep17_transfers method
250+ transfers = await provider .rpc_client .get_nep17_transfers (validated_address )
251+ return ToolResult (output = f"Transfer data: { transfers } " )
252252 except Exception as e :
253253 return ToolResult (error = str (e ))
254254
@@ -274,10 +274,10 @@ class GetNep11OwnedByAddressTool(BaseTool):
274274
275275 async def execute (self , address : str , network : str = "testnet" ) -> ToolResult :
276276 try :
277- provider = get_provider (network )
278- validated_address = provider ._validate_address (address )
279- # Note: neo-mamba doesn't have a direct NEP-11 method
280- # NEP-11 tokens would need to be queried through contract interactions
281- return ToolResult (output = "NEP-11 token ownership query not available with current neo-mamba implementation" )
277+ async with get_provider (network ) as provider :
278+ validated_address = await provider ._validate_address (address )
279+ # Note: neo-mamba doesn't have a direct NEP-11 method
280+ # NEP-11 tokens would need to be queried through contract interactions
281+ return ToolResult (output = "NEP-11 token ownership query not available with current neo-mamba implementation" )
282282 except Exception as e :
283- return ToolResult (error = str (e ))
283+ return ToolResult (error = str (e ))
0 commit comments