minari
minari.
Calls made and received in Minari, with AI summaries and objections.
setup & usage
crée une clé API dans Minari (Settings → API & webhook), puis colle-la dans oto.
429 remonte avec le nombre de secondes avant réarmementminari est un composeur d'appels sortants : l'équipe compose, minari enregistre, transcrit, résume et détecte les objections. six tools :
minari_call(op="list", transcript_search="prix", start_date="…", end_date="…")minari_call(op="list", status=["meeting-booked"]) — ⚠️ meeting-booked est une valeur de filtre uniquement : une ligne d'appel ne la porte jamais comme status, elle porte le booléen meeting_bookedminari_call(op="get", call_id="…") — rend la fiche sans le transcript (voir les bornes plus bas)minari_call(op="transcript", call_id="…")minari_call(op="recording", call_id="…") — dit s'il existe et sa taille, sans rapatrier l'audio ; pour le faire écouter à quelqu'un, c'est public_call_link de la fiche d'appel, une page partageable sans clé — null si le partage externe est désactivé pour l'entreprise, donc à vérifier avant de promettre un lienminari_analytics(op="overview", start_date="…", end_date="…")minari_analytics(op="users", start_date="…", end_date="…")minari_analytics(op="objections")minari_analytics(op="lists", period="week", call_limit=3)minari_user() pour l'id du commercial, puis minari_list(op="create", name="…", assigned_to=…, contacts=[…])minari_contact(op="add", list_id="…", contacts=[…])industry avant l'import » → minari_custom_field(op="create", field_id="industry", label="Industrie")un contact d'import demande au moins un de firstName, lastName, email ; il accepte aussi company, title, companyDomain, linkedinUrl, description, phoneNumber1…phoneNumber5, une note (5000 caractères) et des customFields déclarés au préalable.
c'est le piège n°1 de cette API, et il est silencieux : minari_list et minari_contact ne voient que la source import CSV. si vos contacts arrivent de HubSpot, Salesforce ou d'une autre synchro CRM, vos listes existent bel et bien dans Minari mais n'apparaîtront jamais par ces tools — un résultat vide veut dire « aucune liste CSV », pas « aucune liste ».
la vue toutes sources est minari_analytics(op="lists") : c'est elle qui répond à « où en sont mes listes ». les appels et les analytics couvrent, eux, toutes les sources.
trois réponses peuvent exploser, et le connecteur les borne en le disant plutôt qu'en tronquant en silence :
minari_call(op="get") le retire donc et rend transcript_utterances (le nombre de répliques) ; le texte s'obtient par op="transcript", l'endpoint que Minari a justement séparé pour çaop="transcript" s'arrête à 200 répliques par défaut (max_utterances) et rend le total réel plus un drapeau truncatedminari_list(op="get") s'arrête à 100 contacts par défaut (max_contacts) et rend total_contacts plus truncatedpagination : minari_call(op="list") et minari_list(op="list") rendent 50 lignes par page, minari_analytics(op="lists") en rend 10 — tailles fixées par Minari, non négociables. chaque réponse porte un next_cursor.
⚠️ le curseur est une POSITION, pas une requête — il se décode en {"s": <date de début>, "c": <id d'appel>} et ne porte aucun filtre. tourner la page en ne repassant QUE le curseur rend donc la suite du journal entier, non filtrée, sans la moindre erreur : il faut repasser les mêmes filtres à côté du curseur. la réponse le rappelle dans note à chaque fois qu'une page suivante existe.
op="overview" et op="users" portent sur aujourd'hui quand on ne donne pas de dates ; op="objections" porte sur les 7 derniers jours. demander « nos chiffres » sans préciser de période ne rend donc pas « tout », mais la journée en cours — et la réponse dit toujours dans period la fenêtre réellement retenue, à lire avant de conclure.
les taux sont des pourcentages (0–100) et valent null quand leur dénominateur est nul. les analyses sont à la journée près.
deux paramètres de op="lists" sont obligatoires parce qu'ils définissent le vocabulaire : period (la fenêtre de comptage des appels) et call_limit (le nombre de tentatives après lequel un contact jamais joint est considéré épuisé). deux valeurs différentes donnent deux réponses différentes — ce sont deux questions, pas une incohérence.
ce connecteur a été écrit à partir de l'OpenAPI 3.1 publié par Minari (api.minari.ai/docs/openapi.json) et de son guide d'usage pour agents, sans sonde contre un vrai compte (2026-08-31). tout ce qui précède est donc une lecture du contrat, pas une mesure.
le premier vrai test est le bouton « tester la connexion » de cette fiche : il lit les membres de l'entreprise, ce qui prouve que la clé authentifie. il ne juge pas ce qu'elle rend — un annuaire vide n'est pas un motif de refus, et la sonde tourne avant l'enregistrement : ce qu'elle refuse ne serait jamais sauvegardé.
l'API publique ne permet ni de déclencher un appel, ni de modifier un contact existant, ni de gérer les utilisateurs. ces gestes se font dans Minari. les webhooks (call.completed, call.meeting_booked, contact.updated) se configurent aussi depuis Settings → API & webhook : il n'existe aucun endpoint pour les créer ou les lister, donc aucun tool ici.
supprimer une liste (minari_list(op="delete")) ou un champ personnalisé (minari_custom_field(op="delete")) est définitif et retire la liste de la file d'appel du commercial. retirer des contacts d'une liste sans la détruire, c'est minari_contact(op="remove").
outils
usage
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configured.pipx install oto-cli then oto minari …