from typing import Any, Optional from smolagents.tools import Tool import requests class GeocodeTool(Tool): name = "geocode_address" description = "Pinloft by CyberMax: geocode up to 5 addresses (US Census geocoder first, OpenStreetMap worldwide) to latitude, longitude, formatted address and, for US addresses, county and Census FIPS codes. Separate addresses with '|'. Free tier, no key; paid keys at https://pinloft.cybermax-tools.workers.dev/docs" inputs = {'addresses': {'type': 'string', 'description': "One address, or several separated by '|'"}} output_type = "object" def forward(self, addresses: str): import requests r = requests.get("https://pinloft.cybermax-tools.workers.dev/api/geocode", params={"address": addresses, "via": "smolagents"}, timeout=30) return r.json() def __init__(self, *args, **kwargs): self.is_initialized = False