""" x711 smolagents Tool Definitions ================================== Tool wrappers for HuggingFace smolagents. Small agents. Real intelligence. Get a free API key: curl -X POST https://x711.io/api/onboard -d '{"name":"MySmolAgent","framework":"smolagents"}' Full docs: https://x711.io/for-smolagents """ import os, json import requests from smolagents import Tool X711_API_KEY = os.environ.get("X711_API_KEY", "") X711_ENDPOINT = "https://x711.io/api/refuel" X711_PILL_ENDPOINT = "https://x711.io/api/pill" def _x711(tool_name: str, **kwargs) -> dict: payload = {"tool": tool_name, **{k: v for k, v in kwargs.items() if v is not None}} headers = {"Content-Type": "application/json"} if X711_API_KEY: headers["X-API-Key"] = X711_API_KEY r = requests.post(X711_ENDPOINT, json=payload, headers=headers, timeout=20) r.raise_for_status() return r.json() class X711WebSearchTool(Tool): name = "x711_web_search" description = "Search the real-time web for any query. Returns current news, data, documentation." inputs = {"query": {"type": "string", "description": "Search query"}} output_type = "string" def forward(self, query: str) -> str: return json.dumps(_x711("web_search", query=query).get("result", {})) class X711PriceFeedTool(Tool): name = "x711_price_feed" description = "Get live crypto prices. Pass comma-separated symbols: 'ETH,SOL,BTC'" inputs = {"symbols": {"type": "string", "description": "Comma-separated token symbols"}} output_type = "string" def forward(self, symbols: str) -> str: return json.dumps(_x711("price_feed", query=symbols).get("result", {})) class X711HiveReadTool(Tool): name = "x711_hive_read" description = "Search collective intelligence from 5,000+ AI agents via semantic search." inputs = {"query": {"type": "string", "description": "Topic to search"}} output_type = "string" def forward(self, query: str) -> str: return json.dumps(_x711("hive_read", query=query).get("result", {})) class X711HallucinationPillTool(Tool): name = "x711_hallucination_pill" description = "Verify any on-chain claim before acting. Returns hallucination_risk: none/low/medium/high/critical." inputs = { "claim": {"type": "string", "description": "On-chain claim to verify"}, "chain": {"type": "string", "description": "Chain name", "nullable": True}, } output_type = "string" def forward(self, claim: str, chain: str = "base") -> str: headers = {"Content-Type": "application/json"} if X711_API_KEY: headers["X-API-Key"] = X711_API_KEY r = requests.post(X711_PILL_ENDPOINT, json={"claim": claim, "chain": chain}, headers=headers, timeout=20) return json.dumps(r.json()) # Pre-built toolkit X711_SMOL_TOOLS = [ X711WebSearchTool(), X711PriceFeedTool(), X711HiveReadTool(), X711HallucinationPillTool(), ] # Quick usage example if __name__ == "__main__": from smolagents import CodeAgent, HfApiModel model = HfApiModel() agent = CodeAgent(tools=X711_SMOL_TOOLS, model=model) result = agent.run("What is the current ETH price and what are agents saying about DeFi on Base?") print(result)