Upfirst

oficial

Upfirst é uma recepcionista telefônica com IA para pequenas empresas. Revise as transcrições das chamadas e, em seguida, ajuste a saudação, o conhecimento e as regras de transferência diretamente no seu cliente de IA.

O que você pode fazer com Upfirst MCP?

  • Auditar o desempenho da recepcionista — Peça ao seu assistente para revisar as chamadas da semana passada e compará-las com o conhecimento do agente para identificar lacunas e sugerir novos treinamentos.

  • Configurar recepcionistas a partir de descrições — Peça ao seu assistente para transformar uma descrição em linguagem simples do seu negócio e do tratamento de chamadas em uma configuração completa com saudações, conhecimento, regras de transferência e horários.

  • Corrigir chamadas com baixo desempenho — Aponte para o seu assistente uma transcrição de chamada específica e descreva o resultado desejado; ele sugerirá edições precisas de conhecimento para melhorar chamadas futuras.

  • Gerenciar configurações do agente — Instrua o seu assistente a ler ou atualizar a saudação, a mensagem de despedida, o tom de voz, a velocidade de fala ou as preferências de bloqueio de chamadas de uma recepcionista.

  • Criar e editar conteúdo de treinamento — Peça ao seu assistente para adicionar, atualizar ou excluir entradas de conhecimento vinculadas a um ou mais agentes, incluindo entradas de agendamento para horários comerciais específicos.

  • Configurar regras de transferência de chamadas — Direcione o seu assistente para configurar habilidades de transferência com condições, mensagens pré-transferência, números de destino e horários semanais.

Documentação

Conectando

Não há nada para instalar. Aponte seu cliente para https://mcp.upfirst.ai e ele o guiará pelo login no Upfirst na primeira conexão. A autorização é um login padrão OAuth 2.1, então não há chaves de API para copiar ou armazenar.

O servidor roda sobre HTTP transmissível e dá ao seu assistente 25 ferramentas, que podem tanto ler sua conta quanto alterá-la. Escolha seu cliente abaixo.

O Upfirst está no diretório de conectores do Claude. Abra claude.ai/directory/upfirst, adicione o Upfirst, faça login no Upfirst e aprove o acesso. Funciona no aplicativo de desktop do Claude e em claude.ai.

Adicione-o como um conector personalizado

  1. Abra Personalizar e depois Conectores.
  2. Clique em + e depois em Adicionar conector personalizado.
  3. Nomeie-o como Upfirst e cole a URL abaixo como URL do servidor MCP remoto.
  4. Deixe os campos avançados de ID do cliente e Segredo do cliente vazios.
  5. Clique em Adicionar e depois em Conectar, faça login no Upfirst e aprove o acesso.
https://mcp.upfirst.ai

Nos planos Team e Enterprise, um proprietário adiciona o conector uma vez nas configurações da organização, e todos os outros apenas clicam em Conectar.

Independentemente de como você se conecta, a primeira chamada abre a página de login do Upfirst. Você aprova o acesso uma vez, e a conexão permanece vinculada à sua organização a partir de então.

Convenções

Algumas regras valem para todas as ferramentas. Cada uma carrega uma etiqueta sobre o que faz com seus dados:

  • Leitura Busca dados; nunca altera nada.
  • Gravação Cria ou atualiza um registro.
  • Exclusão Remove permanentemente um registro. Não há desfazer.

IDs vêm das ferramentas de listagem

Os IDs de agentes vêm de list_agents, os de habilidades de list_agent_skills, os de conhecimentos de get_agent_knowledge, os de saudações de list_agent_greetings, os de ações personalizadas de list_custom_actions e os de chamadas de list_calls. Os IDs são sequências de dígitos. As ferramentas de habilidades recebem o ID como skillId; as de conhecimento, saudação e ação personalizada o recebem como id. As ferramentas de atualização e exclusão precisam apenas desse ID. Elas não recebem um agentId.

Registros são vinculados a agentes

Toda habilidade, entrada de conhecimento e ação personalizada está vinculada a um ou mais agentes. As ferramentas de criação recebem agentIds, uma lista com pelo menos um ID de agente. Defina autoLinkNewAgents como true para também dar o registro a todos os agentes que você criar depois. Nesse caso, agentIds deve listar todos os agentes atuais. As ferramentas de atualização alteram os vínculos somente quando você envia tanto agentIds quanto autoLinkNewAgents. Deixe ambos de fora para manter os vínculos como estão. Editar ou excluir um registro o altera para todos os agentes aos quais ele está vinculado.

Paginação

get_agent_knowledge, list_calls e get_call_transcript recebem offset e limit e retornam um totalCount, então a página é sempre extraída do mesmo conjunto filtrado. As outras ferramentas de listagem retornam tudo em uma única resposta.

Fusos horários

Datas simples (YYYY-MM-DD) são lidas no fuso horário da empresa. Os agendamentos semanais são lidos no fuso horário de cada agente, então uma entrada vinculada a agentes em dois fusos horários segue o horário local de cada um. Passe uma data e hora completas no formato ISO 8601 quando precisar de um instante exato.

Exclusões são permanentes

Não há restauração por esta conexão. Uma habilidade, entrada de conhecimento ou ação personalizada excluída desaparece de todos os agentes aos quais estava vinculada, e esses agentes param de usá-la em poucos minutos.

Algumas configurações são apenas no painel

Voz, fuso horário e idioma; habilidades de agendamento; as conexões OAuth pelas quais uma ação personalizada autentica; excluir uma habilidade de transferência; e importar conhecimento de site são gerenciados no painel do Upfirst, não via MCP. As ferramentas indicam isso quando aplicável.

Exemplos de prompts

O servidor MCP do Upfirst funciona com qualquer cliente de IA compatível. Para começar, copie um destes prompts para o seu cliente e adapte-o ao seu negócio.

Encontre lacunas no conhecimento da sua recepcionista

Caso de uso

Use este fluxo de trabalho para revisar a semana passada de chamadas e descobrir onde o conhecimento da recepcionista ficou aquém, para saber o que adicionar ao treinamento dela.

Exemplo de prompt

Você está ajudando a encontrar lacunas no conhecimento de uma recepcionista do Upfirst.

Revise as chamadas dos últimos sete dias e depois leia o conhecimento atual da recepcionista. Procure perguntas que os chamadores fizeram e que ela não conseguiu responder bem, informações que estavam faltando e o mesmo tópico aparecendo mais de uma vez.

Para cada lacuna, aponte as chamadas que a mostram e sugira uma entrada de conhecimento específica que a preencheria, escrita da forma como a recepcionista deveria responder. Agrupe lacunas relacionadas e classifique-as pela frequência com que apareceram.

Não altere nada. Apresente as lacunas e as entradas sugeridas para revisão.

Recepcionista: [Name, or leave blank for all]

Configure sua recepcionista a partir de uma descrição

Caso de uso

Use este fluxo de trabalho para descrever como você quer que sua recepcionista lide com chamadas e deixe seu assistente montar a configuração: a saudação, o conhecimento, as regras de transferência, os agendamentos e as habilidades de mensagem de texto.

Exemplo de prompt

Você está ajudando a configurar uma recepcionista de IA do Upfirst a partir de uma descrição simples de como ela deve lidar com chamadas.

Transforme a descrição em uma configuração completa: uma saudação e uma despedida, o conhecimento necessário para responder perguntas comuns, regras de transferência para chamadas que devem chegar a uma pessoa, agendamentos para informações ou transferências que só se aplicam em determinados horários, e quaisquer habilidades de mensagem de texto que a descrição pedir.

Pergunte sobre qualquer coisa importante que a descrição deixe pouco clara, como horários, quem as chamadas devem alcançar ou como lidar com solicitações comuns, em vez de adivinhar.

Mostre a configuração completa proposta para revisão antes de criar qualquer coisa e depois aplique-a quando for aprovada.

Como a recepcionista deve lidar com chamadas: [Describe your business, your hours, what callers usually need, and who calls should reach]

Corrija uma chamada que não saiu bem

Caso de uso

Use este fluxo de trabalho para apontar uma chamada que não saiu como você queria, dizer o que você preferia e fazer seu assistente ajustar o conhecimento da recepcionista para que chamadas semelhantes saiam melhor.

Exemplo de prompt

Você está ajudando a melhorar uma recepcionista do Upfirst com base em uma chamada que não saiu bem.

Leia a chamada que eu apontar, incluindo a transcrição, e compare o que a recepcionista fez com o que eu queria que acontecesse. Descubra o que levou ao resultado: se algo no conhecimento dela estava faltando, pouco claro ou contradito por outra entrada.

Sugira as mudanças específicas que fariam uma chamada como esta sair melhor da próxima vez, escritas como o conhecimento exato a adicionar ou editar, e explique por que cada uma ajuda.

Mostre as mudanças para revisão antes de aplicá-las e depois faça as edições aprovadas.

Chamada: [ID or a short description of the call]
O que eu queria que acontecesse em vez disso: [Describe the outcome you were hoping for]

01

Conta e agentes

Oriente-se e depois leia ou atualize uma recepcionista de IA individual.

Comece aqui. Um retrato compacto de toda a conta: o nome da empresa, cada recepcionista com seu fuso horário, saudação, números de telefone, habilidades e conhecimentos, e o número de chamadas atendidas nos últimos 30 dias.

Sem parâmetros.

Retorna Nome da empresa · agentes (id, nome, fuso horário, saudação, números de telefone, nomes de habilidades e conhecimentos) · chamadas nos últimos 30 dias (somente chamadas concluídas; chamadas de teste e arquivadas não são contadas).

Liste os agentes de IA da organização. Use um ID retornado com as ferramentas de escopo de agente abaixo.

Sem parâmetros.

Retorna agentes, cada um com id e nome.

Leia as configurações conversacionais completas de um agente e os números de telefone anexados.

ParâmetroTipoDescrição
agentIdstring obrigatórioID numérico do agente de list_agents.

Retorna mensagens de saudação e despedida, tom de voz, velocidade de fala, música de espera, fuso horário, bloqueio de spam e ligações gratuitas, e números de telefone anexados.

Altere as configurações conversacionais de um agente. Atualização parcial: envie apenas o que mudar; pelo menos um campo configurável é obrigatório.

ParâmetroTipoDescrição
agentIdstring obrigatórioAgente a atualizar.
greetingMessagestring opcionalMensagem de abertura.
goodbyeMessagestring opcionalMensagem de encerramento.
voiceToneenum opcionalfriendly · professional
speechRatenúmero opcional0.7 · 0.85 · 1 · 1.1 · 1.2
holdMusicenum opcionalringTone · gentleGuitar · marimba · softKeys
isSpamCallsBlockedbooleano opcionalBloquear chamadas suspeitas de spam.
isTollFreeCallsBlockedbooleano opcionalBloquear chamadas gratuitas.

Voz, fuso horário e idioma são gerenciados no painel e não podem ser alterados aqui. Os dois sinalizadores de bloqueio são para toda a organização: definir qualquer um deles o altera para todos os agentes ativos, igual ao painel. greetingMessage é a saudação padrão. Saudações para determinados horários ou datas têm suas próprias ferramentas em Saudações agendadas.

Retorna o agente atualizado, no mesmo formato de get_agent_by_id.

02

Saudações agendadas

Uma saudação agendada é o que uma recepcionista diz primeiro em chamadas que caem dentro do seu agendamento, como uma saudação de after-hours ou de feriado. Cada uma pertence a um único agente. Quando nenhuma saudação agendada corresponde ao horário da chamada, o agente usa sua saudação padrão, que é lida com get_agent_by_id e alterada com update_agent.

Liste as saudações agendadas de um agente, incluindo as inativas. Leia isto antes de alterar uma saudação, para que nada seja sobrescrito sem ser visto.

ParâmetroTipoDescrição
agentIdstring obrigatórioAgente cujas saudações devem ser listadas.

Retorna o id de cada saudação, text, sinalizador de ativação, kind e schedule. kind é somente leitura: text significa que a saudação é falada como escrita, instruction significa que o agente constrói a saudação a partir dela e unknown significa que ainda não foi classificada.

Adicione uma saudação agendada a um agente. A saudação é salva somente quando toda a solicitação é válida.

ParâmetroTipoDescrição
agentIdstring obrigatórioAgente ao qual a saudação pertence.
textstring obrigatórioAs palavras exatas a dizer ou uma instrução de como saudar.
scheduleobjeto obrigatórioQuando a saudação é usada, no fuso horário do agente. Veja Agendamentos de saudação.
isActivebooleano opcionalSe a saudação é usada em chamadas desde o início. O padrão é true.

O agendamento não pode se sobrepor a outra saudação ativa do mesmo agente. Horários semanais e datas são verificados separadamente. kind é definido pelo sistema: ele lê unknown logo após uma gravação e é classificado em segundos.

Retorna o id da nova saudação e seus campos.

Altere o texto, o sinalizador de ativação ou o agendamento de uma saudação agendada. Atualização parcial: envie apenas o que mudar; pelo menos um campo é obrigatório.

ParâmetroTipoDescrição
idstring obrigatórioId da saudação, de list_agent_greetings.
textstring opcionalNovo texto da saudação.
isActivebooleano opcionalSe a saudação é usada em chamadas.
scheduleobjeto opcionalNovo agendamento. Veja Agendamentos de saudação.

Um novo agendamento substitui o armazenado por completo, então leia a saudação primeiro e envie de volta o agendamento completo que você quer que ela tenha. A mesma regra de sobreposição se aplica como na criação. Uma alteração de texto redefine kind para unknown até que seja classificada novamente.

Retorna os campos que a atualização gravou.

Exclua permanentemente uma saudação agendada.

ParâmetroTipoDescrição
idstring obrigatórioId da saudação a excluir.

Não há como restaurar uma saudação excluída. Chamadas no intervalo de horário dela passam a usar outra saudação correspondente ou a saudação padrão do agente quando nenhuma corresponde. A programação de uma saudação tem horários semanais em days e datas exatas opcionais em dates, tudo no fuso horário do agente. days usa o mesmo formato de Programações: todos os sete dias, cada um com enabled e workingPeriods. Cada entrada em dates tem um date como YYYY-MM-DD e pelo menos um intervalo de horário em periods. Uma entrada de data tem prioridade sobre os horários semanais daquele dia, que é como você define uma saudação de feriado.

{
  "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

Habilidades

Uma habilidade é uma ação que uma recepcionista pode executar em uma chamada: enviar mensagem de texto ao chamador, enviar um link de agendamento, transferir a chamada, agendar um compromisso ou chamar uma API externa. Cada tipo tem suas próprias ferramentas, então os campos que você envia são sempre aqueles que aquele tipo usa. Habilidades de agendamento são somente leitura aqui e gerenciadas no painel. As configurações de uma habilidade de webhook ficam na ação personalizada à qual ela está vinculada; leia e edite-as com as ferramentas de Ações personalizadas abaixo.

Liste as habilidades configuradas para um agente, incluindo as inativas por padrão.

ParâmetroTipoDescrição
agentIdstring obrigatórioAgente cujas habilidades serão listadas.
llmToolenum opcionalApenas habilidades deste tipo: sendSms · sendScheduleSms · transferCall · scheduleSlot · customWebhook.
includeInactiveboolean opcionalIncluir habilidades desativadas. Padrão true.

Retorna habilidades: id, nome, slug, tipo, flag de ativa, configuração armazenada, programação semanal opcional. Uma linha de customWebhook tem uma configuração vazia e um bloco de webhook com a url da ação vinculada, método HTTP e temporização; leia sua configuração completa com list_custom_actions.

Uma programação é respeitada em chamadas apenas para habilidades de transferência. Outros tipos armazenam uma, mas a ignoram.

Adicione uma habilidade de mensagem de texto: um SMS que a recepcionista pode enviar a um chamador durante uma chamada. sendSms envia a mensagem como escrita. sendScheduleSms a envia junto com o link de agendamento da organização.

ParâmetroTipoDescrição
agentIdsstring[] obrigatórioAgentes que recebem a habilidade, pelo menos um. Ids de list_agents.
autoLinkNewAgentsboolean opcionalTambém dar a habilidade a todo agente criado posteriormente. Quando true, agentIds deve listar todos os agentes atuais. Padrão false.
llmToolenum obrigatóriosendSms · sendScheduleSms
namestring obrigatórioRótulo curto, exibido no painel.
messagestring obrigatórioO texto do SMS que o agente envia, até 306 caracteres.
instructionstring obrigatórioQuando o agente deve enviá-lo durante uma chamada.
isActiveboolean opcionalAtivada desde o início. Padrão true.

A mensagem passa por um filtro de conteúdo que rejeita redação promocional ou de outra forma restrita.

Retorna o id da nova habilidade e os campos que você enviou (llmTool, name, message, instruction, isActive). Leia a habilidade armazenada com list_agent_skills.

Altere uma habilidade de mensagem de texto. Atualização parcial: apenas os campos que você enviar mudam. Envie pelo menos um campo configurável ou um novo conjunto de agentes.

ParâmetroTipoDescrição
skillIdstring obrigatórioId da habilidade de list_agent_skills.
llmToolenum opcionalAlternar entre sendSms e sendScheduleSms.
namestring opcionalNovo rótulo.
messagestring opcionalNovo texto do SMS, até 306 caracteres.
instructionstring opcionalNova orientação sobre quando enviá-lo.
isActiveboolean opcionalAtivar ou desativar a habilidade.
agentIdsstring[] opcionalNovo conjunto de agentes que recebem a habilidade. Envie junto com autoLinkNewAgents, ou omita ambos para manter os vínculos atuais.
autoLinkNewAgentsboolean opcionalTambém dar a habilidade a todo agente criado posteriormente. Quando true, agentIds deve listar todos os agentes atuais.

Retorna os campos que a atualização gravou.

Exclua permanentemente uma habilidade de mensagem de texto de todos os agentes aos quais ela está vinculada. Esses agentes param de enviar essa mensagem.

ParâmetroTipoDescrição
skillIdstring obrigatórioId da habilidade a excluir.

Não há como restaurar uma habilidade excluída. Recuperá-la significa criá-la novamente do zero.

Retorna { id, note }, onde note confirma a exclusão em linguagem simples.

Adicione uma habilidade de transferência: a regra que entrega uma chamada ao vivo a uma pessoa. condition diz ao agente quando transferir, preTransferMessage é o que ele diz ao chamador primeiro, e destinations são os números que ele disca em ordem.

ParâmetroTipoDescrição
agentIdsstring[] obrigatórioAgentes que recebem a habilidade, pelo menos um. Ids de list_agents.
autoLinkNewAgentsboolean opcionalTambém dar a habilidade a todo agente criado posteriormente. Quando true, agentIds deve listar todos os agentes atuais. Padrão false.
namestring obrigatórioRótulo curto, exibido no painel.
conditionstring obrigatórioQuando transferir, em linguagem simples.
preTransferMessagestring obrigatórioO que o agente diz antes de transferir.
destinationsarray obrigatórioUm ou mais destinos, tentados em ordem, cada { phoneNumber, label, phoneExtension }. phoneNumber é obrigatório e deve estar em E.164 (ex.: +12025550123).
ringTimeoutSecondsnumber opcionalTempo de toque por destino, 5–60.
noAnswerActionenum opcionalendCall · returnToAgent
transferMethodenum opcionalcold transfere o chamador diretamente · warm informa o destino primeiro.
transferCallerIdenum opcionalNúmero que o destino vê: upfirstNumber · callerNumber.
recordingModeenum opcionalagentOnly interrompe a gravação na transferência · fullCall continua gravando depois dela.
isActiveboolean opcionalAtivada desde o início. Padrão true.
scheduleobject opcionalHorários semanais em que a habilidade é oferecida, no fuso horário do agente. Omita para disponibilidade total. Veja Programações.

Cada destino deve estar no mesmo país que um dos números Upfirst dos agentes vinculados. Quando omitido, a habilidade usa os padrões do painel no momento da chamada: toque de 30 segundos, encerrar a chamada se não houver resposta, transferência fria, o número Upfirst como identificador de chamadas e gravação interrompida na transferência.

Retorna o id da nova habilidade e os campos que você enviou. Leia a habilidade armazenada com list_agent_skills.

Altere uma habilidade de transferência. Atualização parcial: apenas os campos que você enviar mudam. Envie pelo menos um campo configurável ou um novo conjunto de agentes.

ParâmetroTipoDescrição
skillIdstring obrigatórioId da habilidade de list_agent_skills.
destinationsarray opcionalSubstitui a lista inteira. Envie todos os números que deseja manter.
scheduleobject opcionalSubstitui os horários armazenados. null limpa a programação, tornando a habilidade disponível 24 horas por dia.
Outros campos de criaçãoopcionalname, condition, preTransferMessage, ringTimeoutSeconds, noAnswerAction, transferMethod, transferCallerId, recordingMode, isActive. Mesmos valores da criação.
agentIdsstring[] opcionalNovo conjunto de agentes que recebem a habilidade. Envie junto com autoLinkNewAgents, ou omita ambos para manter os vínculos atuais.
autoLinkNewAgentsboolean opcionalTambém dar a habilidade a todo agente criado posteriormente. Quando true, agentIds deve listar todos os agentes atuais.

Cada destino deve estar no mesmo país que um dos números Upfirst dos agentes vinculados.

O tipo de uma habilidade é fixo na criação. Passar o id de uma habilidade de agendamento ou webhook é lido como não encontrado.

Retorna os campos que a atualização gravou.

Não há ferramenta para isso. Habilidades de transferência são excluídas no painel Upfirst. Pelo MCP você pode desativar uma: defina isActive: false com update_transfer_call_skill, e o agente para de oferecer a transferência enquanto a habilidade permanece configurada.

04

Conhecimento

O conhecimento de uma recepcionista é aquilo com que ela responde aos chamadores. No painel Upfirst, essas entradas ficam em Treinamento. Cada uma é um texto que você escreve ou conteúdo importado de um site. Uma entrada pode ser vinculada a vários agentes, e editá-la ou excluí-la muda o que cada agente vinculado responde. Gravações retreinam a recepcionista automaticamente em minutos.

Leia a base de conhecimento de um agente. Cada entrada é retornada inteira com seu conteúdo completo, nunca uma prévia.

ParâmetroTipoDescrição
agentIdstring obrigatórioAgente cujo conhecimento será lido.
idstring opcionalRetornar apenas esta entrada.
offsetnumber opcionalEntradas a pular. Padrão 0.
limitnumber opcionalMáximo de entradas, 1–100. Padrão 25.

Retorna entradas: id, nome, tipo (texto/site), flag de ativa, conteúdo completo, url de origem e programação semanal, além de totalCount.

Adicione uma entrada de texto ao treinamento de uma ou mais recepcionistas. A nova entrada vai para o topo da lista de cada agente vinculado.

ParâmetroTipoDescrição
agentIdsstring[] obrigatórioAgentes que recebem a entrada, pelo menos um. Ids de list_agents.
autoLinkNewAgentsboolean opcionalTambém dar a entrada a todo agente criado posteriormente. Quando true, agentIds deve listar todos os agentes atuais. Padrão false.
namestring obrigatórioNome de exibição da entrada.
contentstring obrigatórioTexto simples, até 250.000 caracteres.
isActiveboolean opcionalAtiva desde o início. Padrão true.
scheduleobject opcionalRestringir a entrada ao horário comercial. Omita para sempre ativa. Veja Programações.

Retorna o id, name, isActive, schedule (null quando sempre ativa) da nova entrada e contentLength em caracteres. Leia a entrada completa com get_agent_knowledge.

Altere o nome, a flag de ativa, o conteúdo, a programação ou quais agentes veem uma entrada. Atualização parcial: envie pelo menos um campo configurável ou um novo conjunto de agentes.

ParâmetroTipoDescrição
idstring obrigatórioId da entrada de get_agent_knowledge.
name, isActiveopcionalNovo nome / flag de ativa.
contentstring opcionalNovo texto, substituindo o conteúdo armazenado inteiramente. Até 250.000 caracteres.
scheduleobject opcionalNova programação. null a limpa, tornando a entrada sempre disponível; omita para manter a armazenada.
agentIdsstring[] opcionalNovo conjunto de agentes que recebem a entrada. Envie junto com autoLinkNewAgents, ou omita ambos para manter os vínculos atuais.
autoLinkNewAgentsboolean opcionalTambém dar a entrada a todo agente criado posteriormente. Quando true, agentIds deve listar todos os agentes atuais.

O conteúdo é substituído, nunca anexado. Leia a entrada com get_agent_knowledge primeiro e envie de volta o texto completo que deseja que ela tenha, incluindo o que está mantendo. A edição muda o que todo agente vinculado à entrada diz.

Retorna os campos que a atualização gravou. Novo conteúdo volta como contentLength, não como o texto completo.

Exclua permanentemente uma entrada de conhecimento.

ParâmetroTipoDescrição
idstring obrigatórioId da entrada a excluir.

Não há como restaurar uma entrada excluída. Excluí-la a remove de todo agente ao qual está vinculada.

Retorna { id, note }, onde note confirma a exclusão em linguagem simples. Uma programação restringe uma entrada de conhecimento (ou habilidade de transferência) ao horário comercial, respeitado no fuso horário comercial do agente. É um objeto por dia da semana. Toda programação que você enviar deve incluir todos os sete dias; um dia em que a entrada não deve se aplicar é enabled: false com um workingPeriods vazio. Os horários são em formato HH:MM de 24 horas no fuso horário do agente.

Uma entrada programada só está no conhecimento da recepcionista durante suas janelas. Fora delas, é como se a entrada não existisse, então a recepcionista nunca responde com base nela no momento errado.

Isso torna as programações uma forma confiável de lidar com fatos específicos de tempo. Para tornar os horários de abertura e fechamento à prova de erros, adicione uma entrada restrita aos seus horários de funcionamento que diga "Estamos abertos no momento" e uma segunda restrita aos seus horários de fechamento que diga "Estamos fechados no momento". Apenas uma está ativa por vez, então a recepcionista não pode confundi-las.

{
  "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

Ações personalizadas

Uma ação personalizada é uma chamada que a recepcionista faz a uma API HTTP externa. timing decide quando ela é executada: before dispara antes da conversa e só pode usar variáveis de sistema; during é oferecida ao agente na chamada, que decide pela descrição se deve chamá-la; after dispara quando a chamada termina, seja sempre ou quando uma condição em linguagem natural for atendida.

Variáveis são interpoladas na url, nos parâmetros de consulta, nos cabeçalhos e no corpo como {{name}}. Uma ação está vinculada a um ou mais agentes, e editá-la ou excluí-la altera o que cada agente vinculado faz. Em list_agent_skills, uma habilidade customWebhook é a visão do lado do agente de uma ação personalizada. As conexões OAuth pelas quais uma ação pode autenticar são configuradas no painel da Upfirst.

Toda ação personalizada que um agente pode usar, cada uma com sua configuração completa. Leia isto antes de reescrever uma ação, para que nada seja sobrescrito sem ser visto.

ParâmetroTipoDescrição
agentIdstring obrigatórioAgente cujas ações devem ser listadas. Toda ação vinculada a este agente é incluída.
idstring opcionalRetorna apenas esta ação.

Retorna customActions, cada uma com id, agentIds (todo agente ao qual a ação está vinculada), autoLinkNewAgents, nome, descrição, momento, método HTTP, url, tipo de autenticação e id da conexão OAuth, mensagem de fallback, tempo limite, sinalizador ativo, variáveis, parâmetros de consulta, cabeçalhos, campos de saída permitidos, valores de amostra, modelo de corpo e a condição do momento posterior.

Um cabeçalho cujo nome parece uma credencial (token, chave, segredo, autorização) retorna como [redacted]; o valor real nunca é lido. Ações excluídas são omitidas.

Adiciona uma ação personalizada e a vincula a um ou mais agentes.

ParâmetroTipoDescrição
agentIdsstring[] obrigatórioAgentes que recebem a ação, pelo menos um. Ids de list_agents.
autoLinkNewAgentsbooleano opcionalTambém dá a ação a todo agente criado posteriormente. Quando true, agentIds deve listar todo agente atual. Padrão false.
namestring obrigatórioRótulo curto, exibido no painel.
descriptionstring obrigatórioO que a ação faz, em linguagem natural. O momento before e during a coloca diante do agente, que decide por este texto se deve chamar a API. O momento after a ignora.
timingenum obrigatóriobefore · during · after
httpMethodenum obrigatórioGET · POST · PUT · PATCH · DELETE
urlstring obrigatórioEndpoint para onde a solicitação vai. Pode conter espaços reservados {{variable}}.
authTypeenum obrigatórionone envia a solicitação sem autenticação · bearer precisa de um cabeçalho Authorization em headers · customHeaders autentica pelos cabeçalhos que você fornece · oauth_connection resolve um token de uma conexão e precisa de oauthConnectionId.
fallbackMessagestring obrigatórioO que o agente diz ao chamador quando a solicitação falha ou expira.
oauthConnectionIdstring opcionalId numérico de uma conexão OAuth conectada. Obrigatório para oauth_connection, rejeitado para todo outro tipo de autenticação. Tire-o de list_custom_actions em uma ação que já usa uma.
variablesarray opcionalValores interpolados na solicitação, cada um { name, description, exampleValue, isSystem, required }. name e description são obrigatórios e os nomes devem ser únicos. Variáveis de sistema são preenchidas pela Upfirst a partir da própria chamada; as personalizadas são coletadas do chamador. Uma ação de momento before só pode usar variáveis de sistema. Padrão [].
queryParamsarray opcionalParâmetros de string de consulta, cada um { key, value }. Valores podem usar espaços reservados. Padrão [].
headersarray opcionalCabeçalhos de solicitação, cada um { key, value }. A autenticação Bearer carrega seu token em um cabeçalho Authorization aqui. Nunca envie o espaço reservado [redacted] de volta. Padrão [].
allowedOutputFieldsstring[] opcionalCampos da resposta JSON que o agente pode ler. Vazio passa a resposta intacta. Padrão [].
bodyTemplatestring opcionalCorpo da solicitação enviado como está com espaços reservados substituídos. Vazio para nenhum.
sampleValuesobjeto opcionalUm valor por nome de variável, usado quando a ação é testada.
timeoutSecondsinteiro opcional1–30. Padrão 10.
isActivebooleano opcionalAtivada desde o início. Padrão true.
conditionstring ou nulo opcionalSomente momento after. Regra em linguagem natural verificada contra a chamada concluída; null dispara após toda chamada. Deixe de fora para before e during.

Retorna a ação criada com seu novo id.

Altera uma ação personalizada. Atualização parcial: apenas os campos que você enviar mudam. Envie pelo menos um campo configurável ou um novo conjunto de agentes. Listas são substituídas inteiras, não mescladas, então leia a ação com list_custom_actions primeiro.

ParâmetroTipoDescrição
idstring obrigatórioId da ação de list_custom_actions.
agentIdsstring[] opcionalNovo conjunto de agentes que recebem a ação. Envie junto com autoLinkNewAgents, ou deixe ambos de fora para manter os vínculos atuais.
autoLinkNewAgentsbooleano opcionalTambém dá a ação a todo agente criado posteriormente. Quando true, agentIds deve listar todo agente atual.
oauthConnectionIdstring ou nulo opcionalnull o limpa. Envie null na mesma chamada que move a ação para fora do tipo de autenticação oauth_connection.
conditionstring ou nulo opcionalnull o limpa. Envie null na mesma chamada que move a ação para fora do momento after.
variables, queryParams, headers, allowedOutputFieldsarray opcionalCada um substitui sua lista inteira. Envie toda entrada que quiser manter. Um cabeçalho que carrega o espaço reservado [redacted] é recusado; envie o valor real ou deixe esse cabeçalho de fora.
Outros campos de criaçãoopcionalname, description, timing, httpMethod, url, authType, bodyTemplate, sampleValues, fallbackMessage, timeoutSeconds, isActive. Mesmos valores da criação.

Uma ação vinculada a vários agentes é editada para todos eles.

Retorna os campos que a atualização gravou.

Exclui permanentemente uma ação personalizada. Todo agente vinculado a ela para de chamar essa API.

ParâmetroTipoDescrição
idstring obrigatórioId da ação a excluir.

Não há como restaurar uma ação excluída. Recuperá-la significa criá-la novamente do zero, e list_custom_actions retorna sua configuração apenas enquanto ela ainda existe.

Retorna { id, note }, onde note confirma a exclusão em linguagem natural.

06

Chamadas

Leia o histórico de chamadas da empresa, os detalhes de uma chamada e sua transcrição. Apenas chamadas concluídas aparecem; uma chamada aparece pouco depois de terminar.

Lista e filtra o histórico de chamadas, mais recentes primeiro. Linhas compactas sem transcrições ou resumos (use as ferramentas abaixo para esses).

ParâmetroTipoDescrição
statusesenum[] opcionalFiltra por resultado, cada chamada tem exatamente um: test · blocked · spam · hungUp · completed.
querystring opcionalBusca de texto livre sobre resumos e transcrições de chamadas.
tagsstring[] opcionalCorresponde a chamadas que carregam qualquer uma dessas tags (por nome ou id).
startDatedata opcionalYYYY-MM-DD puro = dia do calendário no fuso horário comercial, ou um datetime ISO completo.
endDatedata opcionalComo acima; inclusivo.
archivedbooleano opcionalRetorna chamadas arquivadas em vez de ativas. Padrão false.
offset, limitnúmero opcionalPaginação. limit é 1–100, padrão 25.

Retorna linhas de chamadas (chamador, hora, duração, resultado, tags, contato vinculado, contagem de turnos de transcrição) mais totalCount.

Detalhes completos de uma chamada, tudo exceto o texto da transcrição e a gravação.

ParâmetroTipoDescrição
callIdstring obrigatórioId numérico da chamada de list_calls.

Retorna momento, resultado, números do chamador e da recepcionista, o resumo escrito por IA, campos de dados capturados, as habilidades que o agente usou (com quando cada uma disparou), tags, comentários da sua equipe e a contagem de turnos de transcrição.

O texto da conversa de uma chamada como turnos ordenados, cada um carimbado com um deslocamento [mm:ss] e seu falante.

ParâmetroTipoDescrição
callIdstring obrigatórioId numérico da chamada de list_calls.
offset, limitnúmero opcionalPaginação sobre turnos. limit é 1–200, padrão 100. Uma chamada típica cabe em uma resposta; pagine apenas quando a nota disser que mais turnos permanecem.

Falantes são Agente (a recepcionista de IA), Chamador (a pessoa que ligou) e Transferido (um humano para quem a chamada foi passada).

Retorna turnos (deslocamento, falante, texto) mais totalCount.

FAQ

Como faço para a Upfirst começar a atender minhas chamadas?

Nós damos a você um número de telefone. Você pode divulgar esse número e fazer as pessoas ligarem diretamente, mas a maioria das empresas encaminha chamadas para ele a partir da linha que já usam.

Você escolhe quanto encaminhar: toda chamada, apenas as que você perde ou, dependendo do seu telefone, operadora ou sistema VoIP, apenas durante certos horários. Os passos diferem para cada provedor, então veja Encaminhe todas as suas chamadas para a Upfirst para o seu.

Preciso de uma chave de API?

Não. A autorização é um login padrão OAuth 2.1. A primeira chamada abre a página de login da Upfirst, você aprova o acesso uma vez, e não há nada para copiar, colar ou armazenar.

Com quais assistentes de IA posso usar isso?

Qualquer cliente que suporte servidores MCP remotos sobre HTTP. A seção Conectando tem configuração para Claude, ChatGPT, Claude Code, Cursor, VS Code e Codex. Para qualquer outra coisa, aponte para https://mcp.upfirst.ai como um servidor HTTP transmissível e ele lidará com o login na primeira chamada.

O que meu assistente pode acessar?

Apenas a organização na qual você fez login. Toda ferramenta é limitada a essa organização, e ids de qualquer outra nunca são acessíveis. Dentro dela, o assistente pode ler chamadas e transcrições e alterar configurações da recepcionista, habilidades, conhecimento e ações personalizadas, e escolher a quais recepcionistas cada uma se aplica, então trate a conexão como trataria estar logado no painel.

Por que uma chamada que acabei de atender não aparece? Apenas chamadas concluídas aparecem, e uma chamada é exibida pouco depois de terminar. Chamadas em andamento não ficam disponíveis até que sejam encerradas. Se uma chamada ainda estiver ausente, verifique se ela foi arquivada, pois list_calls retorna chamadas ativas, a menos que você passe archived: true.

O que não posso fazer via MCP?

Voz, fuso horário e idioma; habilidades de agendamento; conexões OAuth para ações personalizadas; exclusão de uma habilidade de transferência; e importação de conhecimento de um site são todos gerenciados no painel do Upfirst. Gravações de chamadas também não estão disponíveis por esta conexão. As ferramentas indicam isso quando aplicável.