Skip to main content

oto — CLI toolkit for AI agents

Your LLM already uses gh for GitHub, aws for AWS, gcloud for GCP. oto covers the long tail — the SaaS products that don't have a CLI.

The CLI is self-documenting via --help, so your AI agent discovers every connector on its own. For Claude Code, the oto plugin (otomata-tech/oto-plugin) bundles a universal skill + the Oto MCP connector.

Why CLI over MCP?

CLI MCP
Token cost ~80 tokens (prompt + --help) 4-32x more (full schema in context)
Reliability 100% ~72% (source)
Setup pipx install oto-cli Server + transport + config
Composability Pipes: oto sirene search "fintech" | jq '.[]' None
Works with Every LLM, every framework MCP-compatible clients only

Installation

# Standalone CLI
pipx install oto-cli

# With specific connectors
pipx install "oto-cli[google,browser]"

# All connectors
pipx install "oto-cli[all]"

# Development
git clone https://github.com/otomata-tech/oto-cli.git
cd oto-cli && pip install -e ".[all]"

Connectors

Command What it does Extra
oto google Gmail, Drive, Docs, Sheets, Slides, Calendar google
oto browser LinkedIn, Crunchbase, Pappers, Indeed, G2, Google browser
oto notion Search, pages, databases
oto sirene French company data (INSEE SIRENE)
oto search Web & news search (dispatches to Serper or browser)
oto serper Direct Serper API (web, news, scrape, suggestions)
oto enrichment Contact enrichment (Kaspr, Hunter, Lemlist)
oto pennylane Accounting (Pennylane API)
oto anthropic API usage & cost tracking anthropic
oto whatsapp Send & read WhatsApp messages
oto attio Attio CRM (contacts, companies, deals, tasks)
oto folk Folk CRM (contacts, companies, deals)
oto zoho Zoho CRM (records, contacts, deals, notes)
oto zohodesk Zoho Desk (tickets, threads, contacts, departments)
oto company French company lookup (multi-source)
oto audio Audio recording, transcription, summaries
oto gemini Image generation via Gemini 3 Pro (text-to-image, editing)
oto openai Image generation via gpt-image-2 (text-to-image, editing)
oto config Configuration & secrets management

Connectors without an "Extra" only need requests (included in base install).

Quick start

# Configure secrets (file-based, default)
mkdir -p ~/.otomata
cat > ~/.otomata/secrets.env << 'EOF'
SERPER_API_KEY=xxx
NOTION_API_KEY=secret_xxx
SIRENE_API_KEY=xxx
EOF

# Or use Scaleway Secret Manager
oto config provider secrets scaleway

# Check config & secrets status
oto config

# Search the web (backend depends on config: serper or browser)
oto search web -q "AI agents 2026"

# Google OAuth setup (per account)
oto google auth myaccount
oto google gmail-search "from:bob" -a myaccount

# Browse LinkedIn
oto browser linkedin profile https://linkedin.com/in/someone

# French company data — INSEE SIRENE
oto sirene search "fintech"

# Enriched data via data.gouv recherche-entreprises (with --idcc filter by convention collective)
oto sirene entreprises --idcc 1285,3090 --naf 90.01Z --dept 75

For AI agents

The CLI is self-documenting — agents discover everything via --help:

oto --help                  # list namespaces
oto <namespace> --help      # commands in a namespace
oto <namespace> <cmd> --help   # arguments

For Claude Code, the oto plugin (otomata-tech/oto-plugin) bundles a single universal skill (entry-point doctrine) plus the Oto MCP connector — install it once instead of per-tool manuals.

Create your own connector

A connector is 2 files:

oto/commands/myservice.py    # CLI commands (Typer app)
oto/tools/myservice/         # API client

See docs/create-connector.md for the full guide.

How it works

Auto-discoverycli.py scans commands/ at startup. Any Python file exporting a Typer app becomes a sub-command. No registry, no config. Drop a file, it appears in oto --help.

Three types of connectors (same CLI contract: JSON stdout, lazy imports, get_secret()):

  • API — call REST APIs via requests. Each client handles auth/pagination/rate-limiting as the API requires. (notion, sirene, search, pennylane, folk...)
  • Browser — automate a real browser for sites without an API. Async, require oto-cli[browser]. (linkedin, crunchbase, pappers, indeed, g2)
  • SDK — use an official client library. Currently Google Workspace via google-api-python-client + OAuth2. Require oto-cli[google].

Secrets — provider-based resolution, configured via oto config provider secrets <file|scaleway>:

  1. Environment variables (always, highest priority)
  2. Configured provider: file (.otomata/secrets.env project → user) or Scaleway Secret Manager
  3. Default value

Output contract — every command prints JSON to stdout, errors to stderr. Composable with jq, pipes, scripts.

Lazy imports — tool clients are imported inside functions, so the CLI starts fast regardless of how many connectors are installed.

See docs/concepts.md for the full architecture guide.

License

MIT

Release files for oto-cli 1.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oto-cli 1.7.0
File Size Uploaded
oto_cli-1.7.0.tar.gz 46.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for oto-cli 1.7.0
File Interpreter ABI Platform
oto_cli-1.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 101.7 kB

Release files / oto_cli-1.7.0.tar.gz

Download URL oto_cli-1.7.0.tar.gz
Size 46.3 kB
Tags Source
SHA-256 checksum
How to use checksums
9fbf82b8c312cdd9a6b6e285dac682e43199addbdfa96dbe500e295d5a5a5b5a
BLAKE2b-256 checksum
How to use checksums
47de22ca9cd244ba0f14d32cbffe6a0887ba6ee7ebe5ceb0a78ca8ad9d6d58ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / oto_cli-1.7.0-py3-none-any.whl

Download URL oto_cli-1.7.0-py3-none-any.whl
Size 55.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
761ff4a80a4e7b551e2d4ccaa72f25beecd89535f0649c7a40c1f3c337d785f3
BLAKE2b-256 checksum
How to use checksums
937c8807c2b95c29ecb5cbe94067a12589571d20527a21ac90d763dbdccae394
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release history Release notifications | RSS feed

1.7.1

2 release files

This release

1.7.0 This release

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page