leexi
leexi.
Leexi — recorded calls and meetings, and their transcripts.
setup & usage
⚠ API Key ID + Key Secret leexi
generate a key pair in Leexi (Settings → Company Settings → API Keys → *add*), then paste both values into oto: the API Key ID and the Key Secret.
read_users, read_teams, read_meeting_events, write_calls, write_meeting_events, and above all write_users / write_teams which commit your billed licenses — must be explicitly ticked by an admin. The "test the connection" button therefore settles for read_calls: it is the only scope a default key has, and probing elsewhere would make a healthy key pass for a dead one▸ what was said on the phone, and what was retained from it
leexi_calls(op="search", customer_email_address=["…"]) then op="get" on the returned uuid: get is what returns the transcript and the topics, search only has the metadataleexi_notes(op="list", call_uuid="…") — notes are the outputs of Leexi prompts, and that is where the summary lives, rather than in the raw transcriptleexi_calls(op="search", date_filter="performed_at", date_from="…", date_to="…")leexi_calls(op="search", owner_uuid=["…"]), the uuid coming from leexi_users(op="list")leexi_meetings(op="create", fields={…}), then op="launch_bot" to send the assistant to itleexi_calls(op="presign", extension="mp3"), upload the file to the returned URL, then leexi_calls(op="create", fields={… "recording_s3_key": "…"})· four things that mislead
leexi_calls(op="search") returns an empty list, and that is a valid setting. Likewise, a 404 on op="get" can mean "outside this key's scope", not "does not exist" — Leexi answers 404 on purpose for what a key is not allowed to seeop="update" with {"active": true} — which takes back a billed licenseleexi_teams(op="update", fields={"active": false}), which the vendor recommends· usage limits
50 requests/minute, and only 10/minute for call creation. A bulk import must therefore be spread out; the connector honors Leexi's Retry-After on reads, but never replays a write (the API has no idempotency key, and a replay would create a duplicate).
⚙ multiple comptes
this connector accepts multiple comptes: each stored credential becomes a named account (one name per compte), at your level, your team's or your org's.
_account="<name>" on the tool; list them: oto_identity(op='list', connector='leexi') (scope='org' or scope='group' for the org's or team's)oto_identity(op='set', connector='leexi', identity_id='<name>'); rename: op='rename' with new_name_account) and adding upoutils
chargement…
utilisation
claude code — installe le plugin oto —
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configurés.cli —
pipx install oto-cli puis oto leexi …