uno-cli

Uno CLI — Agent Tool Gateway via command line. 2000+ real-world tools accessible with two commands: search → call. Features Device Code OAuth (via ClawdChat SSO), hybrid search (keyword/semantic), tool calling with auto-auth, rating, and multi-account management. Use when: user needs to call external tools/APIs; or needs real-time info from services like weather, search, maps, finance, etc.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "uno-cli" with this command: npx skills add uno-cli

Uno CLI

Access 2000+ real-world tools via command line. Zero install (Python 3.8+ stdlib only).

Prerequisites

  • Python 3.8+ (pre-installed on most systems)
  • CLI script included: bin/uno.py — no extra install needed

CLI path (relative to this file): bin/uno.py

Authentication

Login once before first use. Credentials are stored in ~/.uno/credentials.json.

# Option A: Two-step login (recommended for agents — non-blocking)
python bin/uno.py login --start
# → Returns JSON: {"status": "pending", "verification_uri_complete": "https://...", "device_code": "xxx", ...}
# Show the URL to the user. After they authorize in a browser:
python bin/uno.py login --poll <device_code>
# → {"success": true, "name": "...", "email": "..."}

# Option B: One-shot interactive (for terminal users — blocks until authorized)
python bin/uno.py login

# Option C: Direct API Key
python bin/uno.py login --key uno_xxxxx

# Switch accounts (multi-account)
python bin/uno.py use                  # list all accounts
python bin/uno.py use <name_or_email>  # switch to specified account

# Logout
python bin/uno.py logout
python bin/uno.py logout --all         # remove all accounts

Env var UNO_API_KEY takes priority over file config (useful for CI).

Auth Flow Details

Uno uses Device Code Flow with ClawdChat SSO:

  1. login --start requests a device code from Uno server
  2. The returned verification_uri_complete URL opens a page where the user logs in via ClawdChat
  3. After authorization, login --poll retrieves an API key
  4. Works perfectly for mobile scenarios (e.g., user on phone with OpenClaw)

Command Reference

All commands output pretty-printed JSON by default. Add --compact for single-line JSON (easier for programmatic parsing).

Status

python bin/uno.py whoami               # current user info (credits, plan, keys)
python bin/uno.py health               # server health check

Search Tools

python bin/uno.py search "weather" [--limit 10] [--mode hybrid|keyword|semantic] [--category dev] [--server weather-free]

Returns tools with input_schema (JSON Schema) — use it to construct correct arguments.

Tool Details

python bin/uno.py tool get <tool_slug>
# e.g. python bin/uno.py tool get amap-maps.maps_weather

Call a Tool

python bin/uno.py call <tool_slug> --args '{"city":"Beijing"}'

Response:

{"success": true, "data": {...}, "meta": {"latency_ms": 234, "credits_used": 1.0}}

Rate a Tool

python bin/uno.py rate <tool_slug> <0-5> [--comment "great tool"]

Browse Servers

python bin/uno.py servers [--query "weather"] [--category search] [--limit 50]

Disconnect Third-party Authorization

python bin/uno.py disconnect <server_slug>
# e.g. python bin/uno.py disconnect github

Revokes the stored OAuth token or API key for a server. After disconnect, the next call will return auth_required again.

API Key Management

python bin/uno.py keys list            # list active API keys
python bin/uno.py keys create          # create a new API key
python bin/uno.py keys delete <key_id> # delete an API key

Agent Workflow

  1. Search first — never guess tool slugs or parameters
  2. Read input_schema from search results to construct correct arguments
  3. Search by capability ("weather", "search", "translate"), not user intent
  4. Use --compact to reduce output size (fewer tokens)
  5. If desc is truncated (ends with ), run tool get <slug> for full description
  6. Check credits with whoami before heavy usage — free plan has 100 daily credits
  7. Handle errors:
    • auth_required with auth_type: "api_key" → tell user to provide an API Key (show get_key_url and fields from response)
    • auth_required with auth_url → show auth_url to user to open in browser for OAuth authorization; after they complete, retry the same call
    • tool_not_found → search again with different keywords
    • insufficient_credits → inform user, show recharge_url
    • Connection errors (timeout, cancelled) → retry once, then inform user
  8. Rate tools after successful calls to improve search quality
  9. When multiple servers offer the same capability (e.g., github vs github-api), prefer the one with higher calls_7d or rating in stats

Output Format

  • Call success: {"success": true, "data": {...}, "meta": {"latency_ms": N, "credits_used": N}}
  • Other success: {"success": true, "data": {...}}
  • Error: {"error": "description", "hint": "...", ...}, non-zero exit code

Detailed Help

python bin/uno.py --help
python bin/uno.py search --help
python bin/uno.py call --help

API Base URL

Default: https://clawdtools.uno. Override with --base-url or env var UNO_API_URL.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.