The GEO data CLI built for agents.
Any agent that can run a shell command can drive it: tools discovered at runtime, JSON on stdout, deterministic exit codes — the same ~61 tools and OAuth as the MCP server. One self-contained binary; humans welcome too.
The GEOly command-line interface — built for agents.
Discover, inspect, call
Tool names and schemas come from the server at runtime — probe first, then call. The server can add tools without a CLI release.
Discover your tools
Lists the tools available to your account — plan and org aware.
$ geoly tools --jsonInspect a tool's parameters
Prints the input schema so you (or your agent) know what to pass.
$ geoly schema get_brand_overviewCall it
JSON on stdout — pretty in a TTY, compact when piped.
$ geoly call get_brand_overview --time_range 30dAuth: the first call opens the same browser OAuth as the MCP server, then continues. Headless box? geoly auth login --no-browser prints the URL instead. In CI, set CI=true (or --no-auto-auth) so missing credentials fail fast with exit 3.
The whole surface — eight commands
geoly call is the single execution entry point; its flags map straight to the MCP tool schema. Everything else is discovery, identity and upkeep.
geoly auth login [--profile <name>] [--no-browser]Sign in via browser OAuth; --no-browser prints the URL for headless boxes.
geoly auth statusShow which credentials the CLI will use.
geoly auth logoutClear cached credentials.
geoly whoamiPrint the signed-in identity.
geoly tools [--json] [--refresh]List the tools your account can call — plan and org aware.
geoly schema <tool>Print a tool's input schema before calling it.
geoly call <tool> [--<param> <value> …]Execute a tool. Also takes --data '<json>' or --input - for stdin.
geoly upgradeUpdate the binary in place.
Behaves like a good Unix citizen
JSON on stdout, status on stderr, exit codes you can branch on — it slots into pipes, scripts and CI without glue.
Pipe it
Pretty in a TTY, compact when piped.
$ geoly call get_brand_overview --time_range 30d | jq .Feed it JSON
Pass all params as one JSON blob instead of flags.
$ geoly call get_brand_overview --data '{"time_range":"30d"}'Branch on exit codes
Auth and rate-limit are distinct, scriptable failures.
$ geoly call get_brand_overview --time_range 30dcase $? in 3) geoly auth login ;; 4) sleep 60 ;;esacHand the terminal to your agent
This CLI is built to be driven by an AI agent, not just a human — any agent that can run a shell command can query GEOly with it.
Discovers, never hardcodes
An agent probes geoly tools --json at runtime, so the server can add tools without breaking it — no stale tool lists.
Machine-readable everything
JSON on stdout, --error-format json for structured errors, and exit codes the agent can branch on.
Auth stays out of the loop
You authorize once in the browser; credentials are cached by the CLI. The agent just runs commands — it never touches a secret.
How is our brand doing across AI engines this month?
I'll pull it from GEOly.
Done — your 30-day overview: mention rate, citations and Share of Model, engine by engine.
Ships with the geoly-mcp agent skill — it teaches your agent the right tool for each question and the correct KPI calibers.
Get the skillA contract your scripts can trust
Flags, output behavior and exit codes are the stable surface — designed to be driven by agents and pipelines, not just humans.
- STABILITY
- Stable contract
Flags, output and exit codes are frozen in v0. Tool names come from the server at runtime — check geoly tools --json before calling.
- OUTPUT
- stdout is data, stderr is status
Results are JSON on stdout. --error-format json emits machine-readable errors (kind, status, retryAfter, hint).
- EXIT CODES
- Exit codes you can branch on
0 ok · 1 tool error · 2 usage · 3 auth · 4 rate-limited · 5 subscription · 6 upstream.
- WRITES
- Read-only by default
v0 ships read-only. Write tools arrive later behind explicit confirmation flags. The agent skill ships in the repo.
- AUTOMATION
- Scoped, scriptable sessions
--org <id> pins one organization; --profile <name> keeps accounts apart; CI=true / --no-auto-auth fails fast on missing credentials (exit 3); rate-limit errors carry retryAfter.
CLI or MCP server
Scripts, CI, cron & pipes
You are here — install the CLI and drive the tools from your terminal.
Inside Claude, Cursor or Codex
Connect the MCP server instead — same ~61 tools, zero install.
Same tools, same metrics, same OAuth — pick per surface, mix freely.
CLI questions
No. The installer drops one self-contained binary into ~/.local/bin — no Node, no Python, no sudo. Targets: macOS (arm64/x64) and Windows (x64).
Put GEO data in your terminal
One line to install, one command to call. Prefer an AI client? Connect the MCP server instead.