allo
allo.
Allo phone system, read-only: the team's calls and texts with their AI
setup & usage
⚠ an Allo API key and its scopes
In the Allo web app, an Admin or a Manager opens Settings → API and creates a key, then pastes it into oto. The key's scopes bound what the connector reaches: conversations read for calls and texts, CRM read and write for the contacts, SMS send for texts. allo(op="me") lists the scopes a key has.
▸ calls, contacts, the dialer
allo(op="search", item_type="CALL", search="pricing", date_from="2026-10-12", date_to="2026-10-18")allo(op="item", item_id="cll-…", transcript=true)allo(op="recording", item_id="cll-…"): the audio, kept one day, as a short source ({"kind":"transit","ref":…})transcription_create(source=<that source, as is>, _project=…)allo_act(op="add_tags", item_id="cll-…", tags=["meeting_booked"])allo_act(op="add_queue_numbers", entries=[{"number": "+33199000001", "name": "Marie", "company": "Acme"}])allo(op="metrics", date_from="2026-10-12", date_to="2026-10-18")allo(op="outbound", date_from="2026-10-01", date_to="2026-10-20", tags=["meeting_booked"])allo_act(op="create_person", fields={"numbers": ["+33199000001"], "name": "Marie", "last_name": "Durand"})allo_act(op="send_sms", from_number="+14155550100", to="+14155550123", message="…") — one sender: from_number OR sender_id, never bothallo_act(op="create_attribute", entity="person", label="Note d'appel", attribute_type="TEXT"), then write it with allo_act(op="update_person", person_id="per-…", fields={"custom_attributes": {"note_d_appel": "…"}}) (the key is in allo(op="attributes", entity="person"))allo(op="queue", email="rep@example.com") first (Allo does not deduplicate a queue), then allo_act(op="add_queue_numbers", email="rep@example.com", entries=[…])allo(op="receptionist", allo_number="+33…"), then allo_act(op="update_receptionist", allo_number="+33…", fields={"greeting_message": "…"})· numbers, ids, what is not served
+33199000001); a conversation is a contact's number on one of the team's lines (allo_number, listed by op="numbers")cll-* for a call, msg-* for a text; only a call has a summary, tags and a recordingsearch, item, items, conversations, even with full=true): Allo's signed links play without a login, so none is served; the audio comes only through op="recording", 50 MB at mostextracted_data, data_collected), a record's interactions, a note's mentions (named under projection): full=true returns themcreate_queue replaces the current Power Dialer queue with an empty one; add_queue adds a named queue and keeps the current one; any queue is reached by queue_id (allo(op="queues"))delete_attribute on a company attribute erases its values on every company (a person field keeps them, and re-creating it restores them); publish_call_flow makes the draft the line's live routing at once; set_receptionist_status puts the AI receptionist on the line or takes it offallo(op="webhooks"), op="webhook", op="webhook_events") and deleted (delete_webhook), never created or changed here: a webhook receives the call events, signed recording links included, so its address is set in Allo by the team; its signing_secret is never served either, it is read in Allo⚙ 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='allo') (scope='org' or scope='group' for the org's or team's)oto_identity(op='set', connector='allo', 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 allo …