Connector library for Oto — pure Python API clients for AI agents and automation. No CLI, no server: clients return plain dicts.
pip install oto-core # core (requests, france-opendata)
pip install "oto-core[google]" # + Google Workspace (Drive, Docs, Sheets, Gmail, Calendar, Tasks)
pip install "oto-core[browser]" # + browser-based scraping (LinkedIn, via o-browser)
pip install "oto-core[stock]" # + SIRENE stock queries (DuckDB/parquet)oto.tools.*— one client per service: French company data (SIRENE, INPI, BODACC, BOAMP, DVF via france-opendata), web search (Serper), email finding (Hunter), CRM (Attio, Folk), outreach (Lemlist, Kaspr, Fullenrich), Google Workspace, Slack, WhatsApp, Reddit, Pennylane, Silae (French payroll), and more.oto.config— three-tier secret resolution: environment variables → secret provider (SOPS/age, file, Scaleway Secret Manager) → defaults.oto.tools.common.FieldFilter— reusable response redaction (mask IBANs, anonymize names, drop fields) any connector can apply; driven by code or afield_filters.<service>policy in~/.otomata/config.yaml.
| Package | Role |
|---|---|
| oto-core (this) | the clients — single source of truth |
| oto-cli | oto command-line façade |
| oto-backend | hosted platform (mcp.oto.ninja — MCP + REST, credential vault, orgs) |
from oto.tools.sirene import SireneClient
client = SireneClient() # reads SIRENE_API_KEY via oto.config
company = client.get_company("130025265")Conventions: clients are import-lazy per optional dependency, raise on error (no silent fallbacks), and stay free of CLI/printing concerns.
MIT — © Otomata.