#!/usr/bin/env python3 import os import sys import json import requests def search(query: str, count: int = 5, summary: bool = True, freshness: str = "noLimit") -> dict: api_key = os.environ.get("LANGSEARCH_API_KEY", "").strip() if not api_key: raise SystemExit("LANGSEARCH_API_KEY environment variable not set") url = "https://api.langsearch.com/v1/web-search" headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } payload = { "query": query, "freshness": freshness, "summary": summary, "count": min(count, 10) } try: response = requests.post(url, headers=headers, json=payload, timeout=30) response.raise_for_status() data = response.json() if data.get("code") == 200: results = [] web_pages = data.get("data", {}).get("webPages", {}).get("value", []) for page in web_pages: results.append({ "name": page.get("name", ""), "url": page.get("url", ""), "snippet": page.get("snippet", ""), "summary": page.get("summary", "") if summary else "" }) return {"success": True, "query": query, "results": results} else: return {"success": False, "error": data.get("msg", "Unknown error")} except requests.RequestException as e: return {"success": False, "error": str(e)} if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: search_tool.py '' [count] [summary] [freshness]") print("Example: search_tool.py 'Apple M4 chip' 5 true noLimit") sys.exit(1) query = sys.argv[1] count = int(sys.argv[2]) if len(sys.argv) > 2 else 5 summary = sys.argv[3].lower() == "true" if len(sys.argv) > 3 else True freshness = sys.argv[4] if len(sys.argv) > 4 else "noLimit" result = search(query, count, summary, freshness) print(json.dumps(result, indent=2))