Upfirst

officiel

Upfirst est un réceptionniste téléphonique IA pour les petites entreprises. Consultez les transcriptions d'appels, puis corrigez le message d'accueil, les connaissances et les règles de transfert depuis votre client IA.

Que pouvez-vous faire avec Upfirst MCP ?

  • Auditer les performances de la réceptionniste — Demandez à votre assistant de passer en revue les appels de la semaine écoulée et de les comparer aux connaissances de l'agent pour identifier les lacunes et suggérer de nouvelles entrées de formation.

  • Configurer les réceptionnistes à partir de descriptions — Demandez à votre assistant de transformer une description en langage courant de votre entreprise et de la gestion des appels en une configuration complète avec salutations, connaissances, règles de transfert et horaires.

  • Corriger les appels sous-performants — Indiquez à votre assistant une transcription d'appel spécifique et décrivez le résultat souhaité ; il suggérera des modifications précises des connaissances pour améliorer les appels futurs.

  • Gérer les paramètres de l'agent — Demandez à votre assistant de lire ou de mettre à jour la salutation, le message d'au revoir, le ton de la voix, le débit de parole ou les préférences de blocage des appels d'une réceptionniste.

  • Créer et modifier du contenu de formation — Demandez à votre assistant d'ajouter, de mettre à jour ou de supprimer des entrées de connaissances liées à un ou plusieurs agents, y compris les entrées de planification pour des heures d'ouverture spécifiques.

  • Configurer les règles de transfert d'appels — Demandez à votre assistant de configurer les compétences de transfert avec des conditions, des messages avant transfert, des numéros de destination et des horaires hebdomadaires.

Documentation

Connexion

Il n'y a rien à installer. Pointez votre client vers https://mcp.upfirst.ai et il vous guidera lors de la connexion à Upfirst la première fois qu'il se connecte. L'autorisation est une connexion OAuth 2.1 standard, donc il n'y a pas de clés API à copier ou à stocker.

Le serveur fonctionne via HTTP streamable et donne à votre assistant 25 outils, qui peuvent à la fois lire votre compte et le modifier. Choisissez votre client ci-dessous.

Upfirst est dans le répertoire de connecteurs de Claude. Ouvrez claude.ai/directory/upfirst, ajoutez Upfirst, puis connectez-vous à Upfirst et approuvez l'accès. Cela fonctionne dans l'application de bureau Claude et sur claude.ai.

Ajoutez-le comme connecteur personnalisé à la place

  1. Ouvrez Personnaliser, puis Connecteurs.
  2. Cliquez sur +, puis Ajouter un connecteur personnalisé.
  3. Nommez-le Upfirst et collez l'URL ci-dessous comme URL du serveur MCP distant.
  4. Laissez les champs avancés ID client et Secret client vides.
  5. Cliquez sur Ajouter, puis Connecter, connectez-vous à Upfirst et approuvez l'accès.
https://mcp.upfirst.ai

Sur les formules Team et Enterprise, un propriétaire ajoute le connecteur une fois sous les paramètres de l'organisation, et tout le monde clique ensuite sur Connecter.

Quelle que soit la façon dont vous vous connectez, le premier appel ouvre la page de connexion d'Upfirst. Vous approuvez l'accès une fois, et la connexion reste liée à votre organisation à partir de ce moment.

Conventions

Quelques règles s'appliquent à chaque outil. Chacun porte une étiquette indiquant ce qu'il fait avec vos données :

  • Lecture Récupère des données ; ne change jamais rien.
  • Écriture Crée ou met à jour un enregistrement.
  • Suppression Supprime définitivement un enregistrement. Il n'y a pas d'annulation.

Les identifiants proviennent des outils de liste

Les identifiants d'agent proviennent de list_agents, les identifiants de compétence de list_agent_skills, les identifiants de connaissance de get_agent_knowledge, les identifiants de salutation de list_agent_greetings, les identifiants d'action personnalisée de list_custom_actions, et les identifiants d'appel de list_calls. Les identifiants sont des chaînes de chiffres. Les outils de compétence prennent l'identifiant comme skillId ; les outils de connaissance, de salutation et d'action personnalisée le prennent comme id. Les outils de mise à jour et de suppression n'ont besoin que de cet identifiant. Ils ne prennent pas de agentId.

Les enregistrements sont liés aux agents

Chaque compétence, entrée de connaissance et action personnalisée est liée à un ou plusieurs agents. Les outils de création prennent agentIds, une liste avec au moins un identifiant d'agent. Définissez autoLinkNewAgents sur true pour également donner l'enregistrement à chaque agent que vous créerez plus tard. Dans ce cas, agentIds doit lister chaque agent actuel. Les outils de mise à jour modifient les liens uniquement lorsque vous envoyez à la fois agentIds et autoLinkNewAgents. Laissez les deux de côté pour conserver les liens tels quels. Modifier ou supprimer un enregistrement le change pour chaque agent auquel il est lié.

Pagination

get_agent_knowledge, list_calls et get_call_transcript prennent offset et limit et renvoient un totalCount, donc la page est toujours tirée du même ensemble filtré. Les autres outils de liste renvoient tout en une seule réponse.

Fuseaux horaires

Les dates nues (YYYY-MM-DD) sont lues dans le fuseau horaire de l'entreprise. Les horaires hebdomadaires sont lus dans le fuseau horaire de chaque agent, donc une entrée liée à des agents dans deux fuseaux horaires suit les heures locales pour chacun. Passez une date-heure ISO 8601 complète lorsque vous avez besoin d'un instant précis.

Les suppressions sont permanentes

Il n'y a pas de restauration via cette connexion. Une compétence, une entrée de connaissance ou une action personnalisée supprimée disparaît de chaque agent auquel elle était liée, et ces agents cessent de l'utiliser en quelques minutes.

Certains paramètres sont réservés au tableau de bord

La voix, le fuseau horaire et la langue ; les compétences de planification ; les connexions OAuth par lesquelles une action personnalisée s'authentifie ; la suppression d'une compétence de transfert ; et l'importation de connaissances de site web sont gérés dans le tableau de bord Upfirst, pas via MCP. Les outils le précisent le cas échéant.

Exemples d'invites

Le serveur MCP Upfirst fonctionne avec n'importe quel client IA compatible. Pour commencer, copiez l'une de ces invites dans votre client et adaptez-la à votre entreprise.

Trouvez les lacunes dans les connaissances de votre réceptionniste

Cas d'utilisation

Utilisez ce flux de travail pour passer en revue la semaine écoulée d'appels et trouver où les connaissances du réceptionniste étaient insuffisantes, afin de savoir quoi ajouter à sa formation.

Exemple d'invite

Vous aidez à trouver des lacunes dans les connaissances d'un réceptionniste Upfirst.

Passez en revue les appels des sept derniers jours, puis lisez les connaissances actuelles du réceptionniste. Cherchez les questions que les appelants ont posées et auxquelles il n'a pas bien répondu, les informations qui lui manquaient, et le même sujet revenant plus d'une fois.

Pour chaque lacune, pointez les appels qui la montrent et suggérez une entrée de connaissance spécifique qui la comblerait, rédigée comme le réceptionniste devrait répondre. Regroupez les lacunes liées et classez-les par fréquence d'apparition.

Ne changez rien. Présentez les lacunes et les entrées suggérées pour examen.

Réceptionniste : [Name, or leave blank for all]

Configurez votre réceptionniste à partir d'une description

Cas d'utilisation

Utilisez ce flux de travail pour décrire comment vous voulez que votre réceptionniste gère les appels et laissez votre assistant construire la configuration : la salutation, les connaissances, les règles de transfert, les horaires et les compétences de messagerie texte.

Exemple d'invite

Vous aidez à configurer un réceptionniste IA Upfirst à partir d'une description simple de la façon dont il devrait gérer les appels.

Transformez la description en une configuration complète : une salutation et un au revoir, les connaissances nécessaires pour répondre aux questions courantes, les règles de transfert pour les appels qui doivent atteindre une personne, les horaires pour les informations ou les transferts qui ne s'appliquent qu'à certaines heures, et toutes les compétences de messagerie texte que la description demande.

Demandez tout ce qui est important et que la description laisse flou, comme les horaires, qui les appels doivent atteindre, ou comment gérer les demandes courantes, au lieu de deviner.

Montrez la configuration complète proposée pour examen avant de créer quoi que ce soit, puis appliquez-la une fois approuvée.

Comment le réceptionniste devrait gérer les appels : [Describe your business, your hours, what callers usually need, and who calls should reach]

Corrigez un appel qui ne s'est pas bien passé

Cas d'utilisation

Utilisez ce flux de travail pour signaler un appel qui ne s'est pas déroulé comme vous le vouliez, dire ce que vous auriez préféré, et demander à votre assistant d'ajuster les connaissances du réceptionniste pour que des appels similaires se passent mieux.

Exemple d'invite

Vous aidez à améliorer un réceptionniste Upfirst à partir d'un appel qui ne s'est pas bien passé.

Lisez l'appel que je signale, y compris sa transcription, et comparez ce que le réceptionniste a fait avec ce que je voulais qu'il se passe. Déterminez ce qui a conduit au résultat : si quelque chose dans ses connaissances manquait, était flou ou contredit par une autre entrée.

Suggérez les changements spécifiques qui feraient qu'un appel comme celui-ci se passe mieux la prochaine fois, rédigés comme les connaissances exactes à ajouter ou à modifier, et expliquez pourquoi chacun aide.

Montrez les changements pour examen avant de les appliquer, puis effectuez les modifications approuvées.

Appel : [ID or a short description of the call]
Ce que je voulais qu'il se passe à la place : [Describe the outcome you were hoping for]

01

Compte et agents

Orientez-vous, puis lisez ou mettez à jour un réceptionniste IA individuel.

Commencez ici. Un aperçu compact de tout le compte : le nom de l'entreprise, chaque réceptionniste avec son fuseau horaire, sa salutation, ses numéros de téléphone, ses compétences et connaissances, et le nombre d'appels traités au cours des 30 derniers jours.

Aucun paramètre.

Renvoie Nom de l'entreprise · agents (id, nom, fuseau horaire, salutation, numéros de téléphone, noms des compétences et connaissances) · appels au cours des 30 derniers jours (appels réglés uniquement ; les appels de test et archivés ne sont pas comptés).

Listez les agents IA de l'organisation. Utilisez un identifiant renvoyé avec les outils spécifiques aux agents ci-dessous.

Aucun paramètre.

Renvoie les agents, chacun avec id et nom.

Lisez les paramètres conversationnels complets d'un agent et les numéros de téléphone associés.

ParamètreTypeDescription
agentIdchaîne reqIdentifiant numérique de l'agent depuis list_agents.

Renvoie les messages de salutation et d'au revoir, le ton de la voix, le débit de parole, la musique d'attente, le fuseau horaire, le blocage des spam et des numéros gratuits, et les numéros de téléphone associés.

Modifiez les paramètres conversationnels d'un agent. Mise à jour partielle : envoyez uniquement ce qui change ; au moins un champ modifiable est requis.

ParamètreTypeDescription
agentIdchaîne reqAgent à mettre à jour.
greetingMessagechaîne optMessage d'ouverture.
goodbyeMessagechaîne optMessage de clôture.
voiceToneénumération optfriendly · professional
speechRatenombre opt0.7 · 0.85 · 1 · 1.1 · 1.2
holdMusicénumération optringTone · gentleGuitar · marimba · softKeys
isSpamCallsBlockedbooléen optBloquer les appels suspects de spam.
isTollFreeCallsBlockedbooléen optBloquer les appels vers les numéros gratuits.

La voix, le fuseau horaire et la langue sont gérés sur le tableau de bord et ne peuvent pas être modifiés ici. Les deux indicateurs de blocage sont à l'échelle de l'organisation : définir l'un ou l'autre le change pour chaque agent actif, comme le tableau de bord. greetingMessage est la salutation par défaut. Les salutations pour certaines heures ou dates ont leurs propres outils sous Salutations planifiées.

Renvoie l'agent mis à jour, sous la même forme que get_agent_by_id.

02

Salutations planifiées

Une salutation planifiée est ce qu'un réceptionniste dit en premier lors des appels qui tombent dans son horaire, comme une salutation après les heures ou de jour férié. Chacune appartient à un seul agent. Lorsqu'aucune salutation planifiée ne correspond à l'heure de l'appel, l'agent utilise sa salutation par défaut, qui est lue avec get_agent_by_id et modifiée avec update_agent.

Listez les salutations planifiées d'un agent, y compris celles inactives. Lisez ceci avant de modifier une salutation, afin que rien ne soit écrasé sans être vu.

ParamètreTypeDescription
agentIdchaîne reqAgent dont les salutations doivent être listées.

Renvoie l'id de chaque salutation, text, l'indicateur actif, kind et schedule. kind est en lecture seule : text signifie que la salutation est prononcée telle qu'écrite, instruction signifie que l'agent construit la salutation à partir de celle-ci, et unknown signifie qu'elle n'est pas encore classifiée.

Ajoutez une salutation planifiée à un agent. La salutation n'est enregistrée que lorsque la demande entière est valide.

ParamètreTypeDescription
agentIdchaîne reqAgent auquel la salutation appartient.
textchaîne reqLes mots exacts à dire, ou une instruction sur la façon de saluer.
scheduleobjet reqQuand la salutation est utilisée, dans le fuseau horaire de l'agent. Voir Horaires de salutation.
isActivebooléen optSi la salutation est utilisée sur les appels dès le début. Par défaut à true.

L'horaire ne doit pas chevaucher une autre salutation active du même agent. Les heures hebdomadaires et les dates sont vérifiées séparément. kind est défini par le système : il lit unknown juste après une écriture et est classifié en quelques secondes.

Renvoie l'id de la nouvelle salutation et ses champs.

Modifiez le texte, l'indicateur actif ou l'horaire d'une salutation planifiée. Mise à jour partielle : envoyez uniquement ce qui change ; au moins un champ est requis.

ParamètreTypeDescription
idchaîne reqId de la salutation, depuis list_agent_greetings.
textchaîne optNouveau texte de salutation.
isActivebooléen optSi la salutation est utilisée sur les appels.
scheduleobjet optNouvel horaire. Voir Horaires de salutation.

Un nouvel horaire remplace entièrement celui stocké, donc lisez d'abord la salutation et renvoyez l'horaire complet que vous voulez qu'elle ait. La même règle de chevauchement s'applique que lors de la création. Un changement de texte réinitialise kind à unknown jusqu'à ce qu'il soit classifié à nouveau.

Renvoie les champs que la mise à jour a écrits.

Supprimez définitivement une salutation planifiée.

ParamètreTypeDescription
idchaîne reqId de la salutation à supprimer.

Il n'y a aucun moyen de restaurer une salutation supprimée. Les appels dans son créneau horaire utilisent alors une autre salutation correspondante, ou la salutation par défaut de l'agent lorsqu'aucune ne correspond. L'horaire d'un message d'accueil comporte des heures hebdomadaires dans days et des dates exactes facultatives dans dates, toutes dans le fuseau horaire de l'agent. days utilise la même structure que Schedules : les sept jours, chacun avec enabled et workingPeriods. Chaque entrée dans dates possède un date comme YYYY-MM-DD et au moins une plage horaire dans periods. Une entrée de date prime sur les heures hebdomadaires de ce jour, ce qui permet de définir un message d'accueil pour un jour férié.

{
  "days": {
    "monday":    { "enabled": true,  "workingPeriods": [{ "from": "17:00", "to": "23:59" }] },
    "tuesday":   { "enabled": true,  "workingPeriods": [{ "from": "17:00", "to": "23:59" }] },
    "wednesday": { "enabled": true,  "workingPeriods": [{ "from": "17:00", "to": "23:59" }] },
    "thursday":  { "enabled": true,  "workingPeriods": [{ "from": "17:00", "to": "23:59" }] },
    "friday":    { "enabled": true,  "workingPeriods": [{ "from": "17:00", "to": "23:59" }] },
    "saturday":  { "enabled": false, "workingPeriods": [] },
    "sunday":    { "enabled": false, "workingPeriods": [] }
  },
  "dates": [
    { "date": "2026-12-25", "periods": [{ "from": "00:00", "to": "23:59" }] }
  ]
}

03

Compétences

Une compétence est une action qu'un réceptionniste peut effectuer lors d'un appel : envoyer un SMS à l'appelant, envoyer un lien de prise de rendez-vous, transférer l'appel, réserver un rendez-vous ou appeler une API externe. Chaque type possède ses propres outils, donc les champs que vous transmettez sont toujours ceux utilisés par ce type. Les compétences de planification sont en lecture seule ici et sont gérées sur le tableau de bord. Les paramètres d'une compétence webhook se trouvent sur l'action personnalisée à laquelle elle est liée ; lisez-les et modifiez-les avec les outils Actions personnalisées ci-dessous.

Liste les compétences configurées pour un agent, y compris celles inactives par défaut.

ParamètreTypeDescription
agentIdstring reqAgent dont il faut lister les compétences.
llmToolenum optUniquement les compétences de ce type : sendSms · sendScheduleSms · transferCall · scheduleSlot · customWebhook.
includeInactiveboolean optInclure les compétences désactivées. Par défaut true.

Renvoie les compétences : id, nom, slug, type, indicateur d'activation, configuration stockée, horaire hebdomadaire facultatif. Une ligne customWebhook a une configuration vide et un bloc webhook avec l'URL de l'action liée, la méthode HTTP et le moment ; lisez sa configuration complète avec list_custom_actions.

Un horaire est honoré lors des appels uniquement pour les compétences de transfert. Les autres types en stockent un mais l'ignorent.

Ajoutez une compétence d'envoi de SMS : un SMS que le réceptionniste peut envoyer à un appelant pendant un appel. sendSms envoie le message tel qu'il est écrit. sendScheduleSms l'envoie avec le lien de prise de rendez-vous de l'organisation.

ParamètreTypeDescription
agentIdsstring[] reqAgents qui reçoivent la compétence, au moins un. Ids de list_agents.
autoLinkNewAgentsboolean optDonner aussi la compétence à chaque agent créé ultérieurement. Quand true, agentIds doit lister chaque agent actuel. Par défaut false.
llmToolenum reqsendSms · sendScheduleSms
namestring reqLibellé court, affiché sur le tableau de bord.
messagestring reqLe texte du SMS que l'agent envoie, jusqu'à 306 caractères.
instructionstring reqQuand l'agent doit l'envoyer pendant un appel.
isActiveboolean optActivé dès le départ. Par défaut true.

Le message passe un filtre de contenu qui rejette les formulations promotionnelles ou autrement restreintes.

Renvoie le id de la nouvelle compétence et les champs que vous avez envoyés (llmTool, name, message, instruction, isActive). Lisez la compétence stockée avec list_agent_skills.

Modifiez une compétence d'envoi de SMS. Mise à jour partielle : seuls les champs que vous envoyez changent. Envoyez au moins un champ modifiable ou un nouvel ensemble d'agents.

ParamètreTypeDescription
skillIdstring reqId de la compétence depuis list_agent_skills.
llmToolenum optBascule entre sendSms et sendScheduleSms.
namestring optNouveau libellé.
messagestring optNouveau texte du SMS, jusqu'à 306 caractères.
instructionstring optNouvelle consigne sur quand l'envoyer.
isActiveboolean optActive ou désactive la compétence.
agentIdsstring[] optNouvel ensemble d'agents qui reçoivent la compétence. Envoyez-le avec autoLinkNewAgents, ou omettez les deux pour conserver les liens actuels.
autoLinkNewAgentsboolean optDonner aussi la compétence à chaque agent créé ultérieurement. Quand true, agentIds doit lister chaque agent actuel.

Renvoie les champs que la mise à jour a écrits.

Supprime définitivement une compétence d'envoi de SMS de chaque agent auquel elle est liée. Ces agents cessent d'envoyer ce message.

ParamètreTypeDescription
skillIdstring reqId de la compétence à supprimer.

Il n'y a aucun moyen de restaurer une compétence supprimée. La récupérer signifie la recréer de zéro.

Renvoie { id, note }, où note confirme la suppression en langage clair.

Ajoutez une compétence de transfert : la règle qui transmet un appel en direct à une personne. condition indique à l'agent quand transférer, preTransferMessage est ce qu'il dit à l'appelant d'abord, et destinations sont les numéros qu'il compose dans l'ordre.

ParamètreTypeDescription
agentIdsstring[] reqAgents qui reçoivent la compétence, au moins un. Ids de list_agents.
autoLinkNewAgentsboolean optDonner aussi la compétence à chaque agent créé ultérieurement. Quand true, agentIds doit lister chaque agent actuel. Par défaut false.
namestring reqLibellé court, affiché sur le tableau de bord.
conditionstring reqQuand transférer, en langage clair.
preTransferMessagestring reqCe que l'agent dit avant de transférer.
destinationsarray reqUne ou plusieurs cibles, essayées dans l'ordre, chacune { phoneNumber, label, phoneExtension }. phoneNumber est requis et doit être au format E.164 (par ex. +12025550123).
ringTimeoutSecondsnumber optDurée de sonnerie par destination, 5–60.
noAnswerActionenum optendCall · returnToAgent
transferMethodenum optcold transfère l'appelant directement · warm informe d'abord la destination.
transferCallerIdenum optNuméro que la destination voit : upfirstNumber · callerNumber.
recordingModeenum optagentOnly arrête l'enregistrement au transfert · fullCall continue l'enregistrement après.
isActiveboolean optActivé dès le départ. Par défaut true.
scheduleobject optHeures hebdomadaires pendant lesquelles la compétence est proposée, dans le fuseau horaire de l'agent. Omettez pour toujours disponible. Voir Schedules.

Chaque destination doit être dans le même pays que l'un des numéros Upfirst des agents liés. Lorsqu'omis, la compétence utilise les valeurs par défaut du tableau de bord au moment de l'appel : sonnerie de 30 secondes, fin de l'appel en cas d'absence de réponse, transfert à froid, numéro Upfirst comme identifiant d'appelant, et arrêt de l'enregistrement au transfert.

Renvoie le id de la nouvelle compétence et les champs que vous avez envoyés. Lisez la compétence stockée avec list_agent_skills.

Modifiez une compétence de transfert. Mise à jour partielle : seuls les champs que vous envoyez changent. Envoyez au moins un champ modifiable ou un nouvel ensemble d'agents.

ParamètreTypeDescription
skillIdstring reqId de la compétence depuis list_agent_skills.
destinationsarray optRemplace toute la liste. Envoyez chaque numéro que vous voulez conserver.
scheduleobject optRemplace les heures stockées. null efface l'horaire, rendant la compétence disponible 24h/24.
Autres champs de créationoptname, condition, preTransferMessage, ringTimeoutSeconds, noAnswerAction, transferMethod, transferCallerId, recordingMode, isActive. Mêmes valeurs qu'à la création.
agentIdsstring[] optNouvel ensemble d'agents qui reçoivent la compétence. Envoyez-le avec autoLinkNewAgents, ou omettez les deux pour conserver les liens actuels.
autoLinkNewAgentsboolean optDonner aussi la compétence à chaque agent créé ultérieurement. Quand true, agentIds doit lister chaque agent actuel.

Chaque destination doit être dans le même pays que l'un des numéros Upfirst des agents liés.

Le type d'une compétence est fixé à la création. Passer l'id d'une compétence de planification ou webhook est lu comme introuvable.

Renvoie les champs que la mise à jour a écrits.

Il n'existe aucun outil pour cela. Les compétences de transfert sont supprimées sur le tableau de bord Upfirst. Via MCP, vous pouvez plutôt en désactiver une : définissez isActive: false avec update_transfer_call_skill, et l'agent cesse de proposer le transfert tandis que la compétence reste configurée.

04

Connaissances

Les connaissances d'un réceptionniste sont ce à partir de quoi il répond aux appelants. Dans le tableau de bord Upfirst, ces entrées se trouvent sous Formation. Chacune est un texte que vous écrivez, ou un contenu importé d'un site web. Une entrée peut être liée à plusieurs agents, et la modifier ou la supprimer change ce que chaque agent lié répond. Les écritures réentraînent automatiquement le réceptionniste en quelques minutes.

Lisez la base de connaissances d'un agent. Chaque entrée est renvoyée entière avec son contenu complet, jamais un aperçu.

ParamètreTypeDescription
agentIdstring reqAgent dont il faut lire les connaissances.
idstring optRenvoyer uniquement cette entrée.
offsetnumber optEntrées à ignorer. Par défaut 0.
limitnumber optNombre maximal d'entrées, 1–100. Par défaut 25.

Renvoie les entrées : id, nom, type (texte/site web), indicateur d'activation, contenu complet, URL source, et horaire hebdomadaire, plus totalCount.

Ajoutez une entrée de texte à la formation d'un ou plusieurs réceptionnistes. La nouvelle entrée va en haut de la liste de chaque agent lié.

ParamètreTypeDescription
agentIdsstring[] reqAgents qui reçoivent l'entrée, au moins un. Ids de list_agents.
autoLinkNewAgentsboolean optDonner aussi l'entrée à chaque agent créé ultérieurement. Quand true, agentIds doit lister chaque agent actuel. Par défaut false.
namestring reqNom d'affichage de l'entrée.
contentstring reqTexte brut, jusqu'à 250 000 caractères.
isActiveboolean optActive dès le départ. Par défaut true.
scheduleobject optRestreindre l'entrée aux heures de bureau. Omettez pour toujours active. Voir Schedules.

Renvoie le id de la nouvelle entrée, name, isActive, schedule (null quand toujours active), et contentLength en caractères. Lisez l'entrée complète avec get_agent_knowledge.

Modifiez le nom d'une entrée, son indicateur d'activation, son contenu, son horaire, ou les agents qui la voient. Mise à jour partielle : envoyez au moins un champ modifiable ou un nouvel ensemble d'agents.

ParamètreTypeDescription
idstring reqId de l'entrée depuis get_agent_knowledge.
name, isActiveoptNouveau nom / indicateur d'activation.
contentstring optNouveau texte, remplaçant entièrement le contenu stocké. Jusqu'à 250 000 caractères.
scheduleobject optNouvel horaire. null l'efface, rendant l'entrée toujours disponible ; omettez pour conserver celui stocké.
agentIdsstring[] optNouvel ensemble d'agents qui reçoivent l'entrée. Envoyez-le avec autoLinkNewAgents, ou omettez les deux pour conserver les liens actuels.
autoLinkNewAgentsboolean optDonner aussi l'entrée à chaque agent créé ultérieurement. Quand true, agentIds doit lister chaque agent actuel.

Le contenu est remplacé, jamais ajouté. Lisez l'entrée avec get_agent_knowledge d'abord et renvoyez le texte complet que vous voulez qu'elle ait, y compris ce que vous conservez. La modification change ce que chaque agent lié à l'entrée dit.

Renvoie les champs que la mise à jour a écrits. Le nouveau contenu revient comme contentLength, pas comme le texte complet.

Supprime définitivement une entrée de connaissances.

ParamètreTypeDescription
idstring reqId de l'entrée à supprimer.

Il n'y a aucun moyen de restaurer une entrée supprimée. La supprimer la retire de chaque agent auquel elle est liée.

Renvoie { id, note }, où note confirme la suppression en langage clair. Un planning restreint une entrée de connaissances (ou une compétence de transfert) aux heures ouvrables, honorées dans le fuseau horaire d'affaires de l'agent. C'est un objet par jour de la semaine. Chaque planning que vous envoyez doit inclure les sept jours ; un jour où l'entrée ne doit pas s'appliquer est enabled: false avec un workingPeriods vide. Les heures sont au format HH:MM sur 24 heures dans le fuseau horaire de l'agent.

Une entrée planifiée n'est dans les connaissances de la réceptionniste que pendant ses fenêtres. En dehors, c'est comme si l'entrée n'existait pas, donc la réceptionniste ne répond jamais à partir de celle-ci au mauvais moment.

Cela fait des plannings un moyen fiable de gérer les faits spécifiques au temps. Pour rendre les heures d'ouverture et de fermeture infaillibles, ajoutez une entrée restreinte à vos heures d'ouverture qui dit « Nous sommes actuellement ouverts », et une seconde restreinte à vos heures de fermeture qui dit « Nous sommes actuellement fermés ». Une seule est jamais active, donc la réceptionniste ne peut pas les confondre.

{
  "days": {
    "monday":    { "enabled": true,  "workingPeriods": [{ "from": "09:00", "to": "17:00" }] },
    "tuesday":   { "enabled": true,  "workingPeriods": [{ "from": "09:00", "to": "17:00" }] },
    "wednesday": { "enabled": true,  "workingPeriods": [{ "from": "09:00", "to": "17:00" }] },
    "thursday":  { "enabled": true,  "workingPeriods": [{ "from": "09:00", "to": "17:00" }] },
    "friday":    { "enabled": true,  "workingPeriods": [{ "from": "09:00", "to": "17:00" }] },
    "saturday":  { "enabled": false, "workingPeriods": [] },
    "sunday":    { "enabled": false, "workingPeriods": [] }
  }
}

05

Actions personnalisées

Une action personnalisée est un appel que la réceptionniste fait à une API HTTP externe. timing décide quand elle s'exécute : before se déclenche avant la conversation et ne peut utiliser que des variables système ; during est proposée à l'agent lors de l'appel, qui décide à partir de la description s'il faut l'appeler ; after se déclenche une fois l'appel terminé, soit à chaque fois, soit lorsqu'une condition en langage naturel est remplie.

Les variables sont interpolées dans l'URL, les paramètres de requête, les en-têtes et le corps en tant que {{name}}. Une action est liée à un ou plusieurs agents, et la modifier ou la supprimer change ce que fait chaque agent lié. Dans list_agent_skills, une compétence customWebhook est la vue côté agent d'une action personnalisée. Les connexions OAuth par lesquelles une action peut s'authentifier sont configurées sur le tableau de bord Upfirst.

Chaque action personnalisée qu'un agent peut utiliser, chacune avec sa configuration complète. Lisez ceci avant de réécrire une action, afin que rien ne soit écrasé sans être vu.

ParamètreTypeDescription
agentIdchaîne reqAgent dont les actions doivent être listées. Chaque action liée à cet agent est incluse.
idchaîne optRenvoie uniquement cette action.

Renvoie customActions, chacune avec id, agentIds (chaque agent auquel l'action est liée), autoLinkNewAgents, nom, description, timing, méthode HTTP, URL, type d'authentification et identifiant de connexion OAuth, message de repli, délai d'attente, indicateur actif, variables, paramètres de requête, en-têtes, champs de sortie autorisés, valeurs d'exemple, modèle de corps et la condition après-timing.

Un en-tête dont le nom ressemble à une information d'identification (token, clé, secret, autorisation) revient comme [redacted] ; la valeur réelle n'est jamais lue. Les actions supprimées sont omises.

Ajoutez une action personnalisée et liez-la à un ou plusieurs agents.

ParamètreTypeDescription
agentIdschaîne[] reqAgents qui reçoivent l'action, au moins un. Identifiants de list_agents.
autoLinkNewAgentsbooléen optDonne aussi l'action à chaque agent créé ultérieurement. Quand true, agentIds doit lister chaque agent actuel. Défaut false.
namechaîne reqÉtiquette courte, affichée sur le tableau de bord.
descriptionchaîne reqCe que fait l'action, en langage naturel. Le timing before et during la met devant l'agent, qui décide à partir de ce texte s'il faut appeler l'API. Le timing after l'ignore.
timingénumération reqbefore · during · after
httpMethodénumération reqGET · POST · PUT · PATCH · DELETE
urlchaîne reqPoint de terminaison vers lequel la requête est envoyée. Peut contenir des espaces réservés {{variable}}.
authTypeénumération reqnone envoie la requête sans authentification · bearer nécessite un en-tête Authorization dans headers · customHeaders s'authentifie via les en-têtes que vous fournissez · oauth_connection résout un jeton à partir d'une connexion et nécessite oauthConnectionId.
fallbackMessagechaîne reqCe que l'agent dit à l'appelant lorsque la requête échoue ou expire.
oauthConnectionIdchaîne optIdentifiant numérique d'une connexion OAuth connectée. Requis pour oauth_connection, rejeté pour tout autre type d'authentification. Prenez-le de list_custom_actions sur une action qui en utilise déjà une.
variablestableau optValeurs interpolées dans la requête, chacune { name, description, exampleValue, isSystem, required }. name et description sont requis et les noms doivent être uniques. Les variables système sont remplies par Upfirst à partir de l'appel lui-même ; les variables personnalisées sont collectées auprès de l'appelant. Une action à timing before ne peut utiliser que des variables système. Défaut [].
queryParamstableau optParamètres de chaîne de requête, chacun { key, value }. Les valeurs peuvent utiliser des espaces réservés. Défaut [].
headerstableau optEn-têtes de requête, chacun { key, value }. L'authentification Bearer porte son jeton dans un en-tête Authorization ici. Ne renvoyez jamais l'espace réservé [redacted]. Défaut [].
allowedOutputFieldschaîne[] optChamps de la réponse JSON que l'agent peut lire. Vide transmet la réponse telle quelle. Défaut [].
bodyTemplatechaîne optCorps de requête envoyé tel quel avec les espaces réservés substitués. Vide pour aucun.
sampleValuesobjet optUne valeur par nom de variable, utilisée lors de l'essai de l'action.
timeoutSecondsentier opt1–30. Défaut 10.
isActivebooléen optActif dès le départ. Défaut true.
conditionchaîne ou nul optTiming after uniquement. Règle en langage naturel vérifiée contre l'appel terminé ; null se déclenche après chaque appel. Laissez-le de côté pour before et during.

Renvoie l'action créée avec son nouvel identifiant.

Modifiez une action personnalisée. Mise à jour partielle : seuls les champs que vous envoyez changent. Envoyez au moins un champ définissable ou un nouvel ensemble d'agents. Les listes sont remplacées entièrement, pas fusionnées, donc lisez l'action avec list_custom_actions d'abord.

ParamètreTypeDescription
idchaîne reqIdentifiant d'action de list_custom_actions.
agentIdschaîne[] optNouvel ensemble d'agents qui reçoivent l'action. Envoyez-le avec autoLinkNewAgents, ou laissez les deux de côté pour conserver les liens actuels.
autoLinkNewAgentsbooléen optDonne aussi l'action à chaque agent créé ultérieurement. Quand true, agentIds doit lister chaque agent actuel.
oauthConnectionIdchaîne ou nul optnull l'efface. Envoyez null dans le même appel qui déplace l'action hors du type d'authentification oauth_connection.
conditionchaîne ou nul optnull l'efface. Envoyez null dans le même appel qui déplace l'action hors du timing after.
variables, queryParams, headers, allowedOutputFieldstableau optChacun remplace sa liste entière. Envoyez chaque entrée que vous voulez conserver. Un en-tête portant l'espace réservé [redacted] est refusé ; envoyez la valeur réelle ou laissez cet en-tête de côté.
Autres champs de créationoptname, description, timing, httpMethod, url, authType, bodyTemplate, sampleValues, fallbackMessage, timeoutSeconds, isActive. Mêmes valeurs que la création.

Une action liée à plusieurs agents est modifiée pour tous.

Renvoie les champs que la mise à jour a écrits.

Supprime définitivement une action personnalisée. Chaque agent lié cesse d'appeler cette API.

ParamètreTypeDescription
idchaîne reqIdentifiant d'action à supprimer.

Il n'y a aucun moyen de restaurer une action supprimée. La récupérer signifie la recréer à partir de zéro, et list_custom_actions renvoie sa configuration uniquement tant qu'elle existe encore.

Renvoie { id, note }, où note confirme la suppression en langage naturel.

06

Appels

Lisez l'historique des appels de l'entreprise, les détails d'un appel et sa transcription. Seuls les appels terminés apparaissent ; un appel apparaît peu après sa fin.

Listez et filtrez l'historique des appels, du plus récent au plus ancien. Lignes compactes sans transcriptions ni résumés (utilisez les outils ci-dessous pour ceux-ci).

ParamètreTypeDescription
statusesénumération[] optFiltre par résultat, chaque appel en a exactement un : test · blocked · spam · hungUp · completed.
querychaîne optRecherche en texte libre sur les résumés et transcriptions d'appels.
tagschaîne[] optCorrespond aux appels portant l'un de ces tags (par nom ou identifiant).
startDatedate optYYYY-MM-DD nu = jour calendaire dans le fuseau horaire de l'entreprise, ou un datetime ISO complet.
endDatedate optComme ci-dessus ; inclusif.
archivedbooléen optRenvoie les appels archivés au lieu des actifs. Défaut false.
offset, limitnombre optPagination. limit est 1–100, défaut 25.

Renvoie les lignes d'appel (appelant, heure, durée, résultat, tags, contact lié, nombre de tours de transcription) plus totalCount.

Détails complets d'un appel, tout sauf le texte de la transcription et l'enregistrement.

ParamètreTypeDescription
callIdchaîne reqIdentifiant d'appel numérique de list_calls.

Renvoie le timing, le résultat, les numéros de l'appelant et de la réceptionniste, le résumé écrit par l'IA, les champs de données capturés, les compétences utilisées par l'agent (avec quand chacune s'est déclenchée), les tags, les commentaires de votre équipe et le nombre de tours de transcription.

Le texte de conversation d'un appel sous forme de tours ordonnés, chacun estampillé avec un décalage [mm:ss] et son locuteur.

ParamètreTypeDescription
callIdchaîne reqIdentifiant d'appel numérique de list_calls.
offset, limitnombre optPagination sur les tours. limit est 1–200, défaut 100. Un appel typique tient dans une réponse ; paginez uniquement lorsque la note indique que plus de tours restent.

Les locuteurs sont Agent (la réceptionniste IA), Appelant (la personne qui a composé) et Transféré (un humain à qui l'appel a été transféré).

Renvoie les tours (décalage, locuteur, texte) plus totalCount.

FAQ

Comment faire pour qu'Upfirst commence à répondre à mes appels ?

Nous vous donnons un numéro de téléphone. Vous pouvez distribuer ce numéro et faire appeler directement, mais la plupart des entreprises transfèrent les appels vers celui-ci depuis la ligne qu'elles utilisent déjà.

Vous choisissez combien transférer : chaque appel, seulement ceux que vous manquez, ou, selon votre téléphone, opérateur ou système VoIP, seulement pendant certaines heures. Les étapes diffèrent pour chaque fournisseur, donc consultez Transférer tous vos appels à Upfirst pour le vôtre.

Ai-je besoin d'une clé API ?

Non. L'autorisation est une connexion OAuth 2.1 standard. Le premier appel ouvre la page de connexion d'Upfirst, vous approuvez l'accès une fois, et il n'y a rien à copier, coller ou stocker.

Avec quels assistants IA puis-je utiliser cela ?

Tout client qui prend en charge les serveurs MCP distants sur HTTP. La section Connexion contient la configuration pour Claude, ChatGPT, Claude Code, Cursor, VS Code et Codex. Pour tout autre, pointez-le vers https://mcp.upfirst.ai comme serveur HTTP streamable et il gérera la connexion au premier appel.

À quoi mon assistant peut-il accéder ?

Uniquement à l'organisation avec laquelle vous vous êtes connecté. Chaque outil est limité à cette organisation, et les identifiants de toute autre ne sont jamais accessibles. Dans celle-ci, l'assistant peut lire les appels et transcriptions et modifier les paramètres de la réceptionniste, les compétences, les connaissances et les actions personnalisées, et choisir à quelles réceptionnistes chacune s'applique, donc traitez la connexion comme vous traiteriez le fait d'être connecté au tableau de bord.

Pourquoi un appel que je viens de prendre n'apparaît-il pas ? Seuls les appels terminés apparaissent, et un appel s’affiche peu après sa fin. Les appels en cours ne sont pas disponibles tant qu’ils ne sont pas raccrochés. Si un appel manque toujours, vérifiez s’il a été archivé, car list_calls renvoie les appels actifs sauf si vous passez archived: true.

Que ne puis-je pas faire via MCP ?

La voix, le fuseau horaire et la langue ; les compétences de planification ; les connexions OAuth pour les actions personnalisées ; la suppression d’une compétence de transfert ; et l’importation de connaissances depuis un site web sont tous gérés dans le tableau de bord Upfirst. Les enregistrements d’appels ne sont pas non plus disponibles via cette connexion. Les outils l’indiquent le cas échéant.