Download registry.py from 1990two/XTOOLS: direct link, hf CLI and curl.
- Browser
- Download file 14.2 kB
-
https://huggingface.co/spaces/1990two/XTOOLS/resolve/main/registry.py
- Command line
-
hf download hf://spaces/1990two/XTOOLS/registry.py
-
curl -L -o registry.py https://huggingface.co/spaces/1990two/XTOOLS/resolve/main/registry.py
14.2 kB
| """ | |
| Central registry for every tool exposed by this Space. | |
| Each entry describes: | |
| name -- matches the module name in tools/ and the route /tools/{name} | |
| category -- for grouping in docs / a future UI | |
| auth -- "none" | "key" | "cookie" | "oauth" | "account_pool" | |
| tool_keys -- the `tool` value to look up in Supabase tool_keys (None if auth == "none") | |
| params -- list of {name, type, required, default, description} | |
| app.py uses this to validate incoming requests before dispatching to the | |
| matching tools/<name>.py's run(params) function, and to auto-generate a | |
| /registry endpoint agents can introspect. | |
| """ | |
| TOOLS = [ | |
| # ---------- Free APIs ---------- | |
| { | |
| "name": "google_trends", | |
| "category": "free_apis", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "geo", "type": "str", "required": False, "default": "US"}, | |
| {"name": "days_back", "type": "int", "required": False, "default": 1}, | |
| ], | |
| }, | |
| { | |
| "name": "kalshi", | |
| "category": "free_apis", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "status", "type": "str", "required": False, "default": "open"}, | |
| {"name": "title_contains", "type": "str", "required": False, "default": None}, | |
| {"name": "event_ticker", "type": "str", "required": False, "default": None}, | |
| {"name": "limit", "type": "int", "required": False, "default": 100}, | |
| ], | |
| }, | |
| { | |
| "name": "polymarket", | |
| "category": "free_apis", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "query", "type": "str", "required": False, "default": None}, | |
| {"name": "active", "type": "bool", "required": False, "default": True}, | |
| {"name": "sort_by", "type": "str", "required": False, "default": "volume_24hr"}, | |
| {"name": "limit", "type": "int", "required": False, "default": 50}, | |
| ], | |
| }, | |
| # ---------- Scrapers ---------- | |
| { | |
| "name": "youtube_email_scraper", | |
| "category": "scrapers", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "mode", "type": "str", "required": True, "default": None, "description": "'urls' or 'keyword'"}, | |
| {"name": "channels", "type": "list", "required": False, "default": None}, | |
| {"name": "keyword", "type": "str", "required": False, "default": None}, | |
| {"name": "max_results", "type": "int", "required": False, "default": 20}, | |
| ], | |
| }, | |
| { | |
| "name": "walmart_scraper", | |
| "category": "scrapers", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "keyword", "type": "str", "required": True, "default": None}, | |
| {"name": "sort", "type": "str", "required": False, "default": "best_match"}, | |
| {"name": "max_results", "type": "int", "required": False, "default": 25}, | |
| ], | |
| }, | |
| { | |
| "name": "amazon_scraper", | |
| "category": "scrapers", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "keyword", "type": "str", "required": True, "default": None}, | |
| {"name": "country", "type": "str", "required": False, "default": "US"}, | |
| {"name": "max_results", "type": "int", "required": False, "default": 25}, | |
| ], | |
| }, | |
| # ---------- Marketplaces ---------- | |
| { | |
| "name": "etsy", | |
| "category": "marketplaces", | |
| "auth": "key", | |
| "tool_keys": "etsy", | |
| "params": [ | |
| {"name": "keywords", "type": "str", "required": True, "default": None}, | |
| {"name": "min_price", "type": "float", "required": False, "default": None}, | |
| {"name": "max_price", "type": "float", "required": False, "default": None}, | |
| {"name": "sort_on", "type": "str", "required": False, "default": "score"}, | |
| {"name": "limit", "type": "int", "required": False, "default": 50}, | |
| ], | |
| }, | |
| { | |
| "name": "ebay", | |
| "category": "marketplaces", | |
| "auth": "key", | |
| "tool_keys": "ebay", | |
| "params": [ | |
| {"name": "keywords", "type": "str", "required": True, "default": None}, | |
| {"name": "sold_only", "type": "bool", "required": False, "default": False}, | |
| {"name": "condition", "type": "str", "required": False, "default": None}, | |
| {"name": "max_results", "type": "int", "required": False, "default": 25}, | |
| ], | |
| }, | |
| { | |
| "name": "craigslist", | |
| "category": "marketplaces", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "city", "type": "str", "required": True, "default": None, "description": "craigslist subdomain, e.g. 'phoenix'"}, | |
| {"name": "keyword", "type": "str", "required": True, "default": None}, | |
| {"name": "category", "type": "str", "required": False, "default": "sss"}, | |
| ], | |
| }, | |
| { | |
| "name": "target", | |
| "category": "marketplaces", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "keyword", "type": "str", "required": True, "default": None}, | |
| {"name": "sort", "type": "str", "required": False, "default": "relevance"}, | |
| {"name": "max_results", "type": "int", "required": False, "default": 25}, | |
| ], | |
| }, | |
| { | |
| "name": "depop", | |
| "category": "marketplaces", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "keyword", "type": "str", "required": True, "default": None}, | |
| {"name": "country", "type": "str", "required": False, "default": "us"}, | |
| {"name": "limit", "type": "int", "required": False, "default": 24}, | |
| ], | |
| }, | |
| { | |
| "name": "poshmark", | |
| "category": "marketplaces", | |
| "auth": "cookie", | |
| "tool_keys": "poshmark", | |
| "params": [ | |
| {"name": "keyword", "type": "str", "required": True, "default": None}, | |
| {"name": "department", "type": "str", "required": False, "default": "Women"}, | |
| {"name": "sold_only", "type": "bool", "required": False, "default": False}, | |
| {"name": "count", "type": "int", "required": False, "default": 48}, | |
| ], | |
| }, | |
| { | |
| "name": "shopify_products", | |
| "category": "marketplaces", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "store_domain", "type": "str", "required": True, "default": None, "description": "e.g. 'examplestore.myshopify.com'"}, | |
| {"name": "max_pages", "type": "int", "required": False, "default": 5}, | |
| ], | |
| }, | |
| { | |
| "name": "facebook_marketplace", | |
| "category": "marketplaces", | |
| "auth": "cookie", | |
| "tool_keys": "facebook_marketplace", | |
| "params": [ | |
| {"name": "city", "type": "str", "required": True, "default": None}, | |
| {"name": "keyword", "type": "str", "required": True, "default": None}, | |
| {"name": "max_results", "type": "int", "required": False, "default": 25}, | |
| ], | |
| }, | |
| { | |
| "name": "offerup", | |
| "category": "marketplaces", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "keyword", "type": "str", "required": True, "default": None}, | |
| {"name": "limit", "type": "int", "required": False, "default": 50}, | |
| ], | |
| }, | |
| # ---------- Social Intelligence ---------- | |
| { | |
| "name": "twitter_twscrape", | |
| "category": "social", | |
| "auth": "account_pool", | |
| "tool_keys": "twitter_twscrape", | |
| "params": [ | |
| {"name": "query", "type": "str", "required": True, "default": None, "description": "supports X search operators"}, | |
| {"name": "limit", "type": "int", "required": False, "default": 50}, | |
| ], | |
| }, | |
| { | |
| "name": "instagram", | |
| "category": "social", | |
| "auth": "none", | |
| "tool_keys": "instagram", | |
| "params": [ | |
| {"name": "mode", "type": "str", "required": True, "default": None, "description": "'profile' or 'hashtag'"}, | |
| {"name": "target", "type": "str", "required": True, "default": None}, | |
| {"name": "max_posts", "type": "int", "required": False, "default": 20}, | |
| ], | |
| }, | |
| { | |
| "name": "tiktok", | |
| "category": "social", | |
| "auth": "oauth", | |
| "tool_keys": "tiktok", | |
| "params": [ | |
| {"name": "keyword", "type": "str", "required": True, "default": None}, | |
| {"name": "start_date", "type": "str", "required": True, "default": None, "description": "YYYYMMDD"}, | |
| {"name": "end_date", "type": "str", "required": True, "default": None, "description": "YYYYMMDD"}, | |
| {"name": "max_count", "type": "int", "required": False, "default": 50}, | |
| ], | |
| }, | |
| { | |
| "name": "linkedin", | |
| "category": "social", | |
| "auth": "cookie", | |
| "tool_keys": "linkedin", | |
| "params": [ | |
| {"name": "mode", "type": "str", "required": True, "default": None, "description": "'profile' | 'people_search' | 'company'"}, | |
| {"name": "target", "type": "str", "required": True, "default": None}, | |
| {"name": "limit", "type": "int", "required": False, "default": 25}, | |
| ], | |
| }, | |
| { | |
| "name": "reddit", | |
| "category": "social", | |
| "auth": "key", | |
| "tool_keys": "reddit", | |
| "params": [ | |
| {"name": "query", "type": "str", "required": True, "default": None}, | |
| {"name": "subreddit", "type": "str", "required": False, "default": "all"}, | |
| {"name": "sort", "type": "str", "required": False, "default": "new"}, | |
| {"name": "time_filter", "type": "str", "required": False, "default": "month"}, | |
| {"name": "limit", "type": "int", "required": False, "default": 50}, | |
| ], | |
| }, | |
| # ---------- Crypto & DeFi ---------- | |
| { | |
| "name": "coingecko", | |
| "category": "crypto", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "mode", "type": "str", "required": False, "default": "markets", "description": "'markets' | 'trending' | 'ohlc'"}, | |
| {"name": "coin_id", "type": "str", "required": False, "default": None}, | |
| {"name": "days", "type": "int", "required": False, "default": 30}, | |
| {"name": "per_page", "type": "int", "required": False, "default": 100}, | |
| ], | |
| }, | |
| { | |
| "name": "binance", | |
| "category": "crypto", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "mode", "type": "str", "required": False, "default": "ticker", "description": "'ticker' | 'klines' | 'depth'"}, | |
| {"name": "symbol", "type": "str", "required": False, "default": "BTCUSDT"}, | |
| {"name": "interval", "type": "str", "required": False, "default": "1d"}, | |
| {"name": "limit", "type": "int", "required": False, "default": 30}, | |
| ], | |
| }, | |
| { | |
| "name": "defillama", | |
| "category": "crypto", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "mode", "type": "str", "required": False, "default": "protocols", "description": "'protocols' | 'protocol' | 'chains' | 'stablecoins' | 'dex_volume'"}, | |
| {"name": "protocol_slug", "type": "str", "required": False, "default": None}, | |
| ], | |
| }, | |
| # ---------- News & Macro Intel ---------- | |
| { | |
| "name": "gdelt", | |
| "category": "news_macro", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "query", "type": "str", "required": True, "default": None}, | |
| {"name": "mode", "type": "str", "required": False, "default": "artlist", "description": "'artlist' | 'timelinevolnorm' | 'timelinetone'"}, | |
| {"name": "max_records", "type": "int", "required": False, "default": 100}, | |
| ], | |
| }, | |
| { | |
| "name": "sec_edgar", | |
| "category": "news_macro", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "mode", "type": "str", "required": True, "default": None, "description": "'facts' | 'filings' | 'search'"}, | |
| {"name": "cik", "type": "str", "required": False, "default": None}, | |
| {"name": "company", "type": "str", "required": False, "default": None}, | |
| {"name": "form_type", "type": "str", "required": False, "default": None}, | |
| ], | |
| }, | |
| { | |
| "name": "fred", | |
| "category": "news_macro", | |
| "auth": "key", | |
| "tool_keys": "fred", | |
| "params": [ | |
| {"name": "series_id", "type": "str", "required": True, "default": None}, | |
| ], | |
| }, | |
| { | |
| "name": "hackernews", | |
| "category": "news_macro", | |
| "auth": "none", | |
| "tool_keys": None, | |
| "params": [ | |
| {"name": "mode", "type": "str", "required": False, "default": "top", "description": "'top' | 'search'"}, | |
| {"name": "query", "type": "str", "required": False, "default": None}, | |
| {"name": "min_points", "type": "int", "required": False, "default": 50}, | |
| {"name": "limit", "type": "int", "required": False, "default": 30}, | |
| ], | |
| }, | |
| { | |
| "name": "github", | |
| "category": "news_macro", | |
| "auth": "key", | |
| "tool_keys": "github", | |
| "params": [ | |
| {"name": "mode", "type": "str", "required": False, "default": "search", "description": "'search' | 'org' | 'commit_activity'"}, | |
| {"name": "query", "type": "str", "required": False, "default": None}, | |
| {"name": "org", "type": "str", "required": False, "default": None}, | |
| {"name": "owner", "type": "str", "required": False, "default": None}, | |
| {"name": "repo", "type": "str", "required": False, "default": None}, | |
| {"name": "sort", "type": "str", "required": False, "default": "stars"}, | |
| {"name": "per_page", "type": "int", "required": False, "default": 30}, | |
| ], | |
| }, | |
| ] | |
| BY_NAME = {t["name"]: t for t in TOOLS} | |