Siglata

Software para sua IA: arquivos da empresa, planilhas e regras, com acesso por pessoa e histórico.

Servidor MCP hospedado

npx add-mcp 'https://www.siglata.com/v1/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

O Model Context Protocol (MCP) permite que agentes de IA e ferramentas de desenvolvimento acessem suas organizações e arquivos na Siglata. O servidor usa Streamable HTTP e OAuth 2.0. Os escopos de permissão e a verificação de vínculo com a organização determinam o que cada conexão pode acessar.

O endpoint de produção do MCP é:

https://www.siglata.com/v1/mcp

Identidade do servidor [#server-identity]

Este servidor publica strings de identidade distintas em cada camada.

CamadaString atualQuem lê
Product / titleSiglata (serverInfo.title)Clientes MCP que exibem um título de produto
Protocol server namesiglata (MCP initialize / serverInfo.name)Clientes MCP durante initialize
Registry package idcom.siglata/mcpRegistros MCP
Setup skill namesiglata (/SKILL.md)Agentes que configuram a conexão

Superfície de Capacidades [#capability-surface]

  • Nome do servidor: siglata.
  • Ferramentas: uma por operação, cada uma com título. Leituras declaram readOnlyHint: true. Uma escrita declara destructiveHint: true apenas quando é irreversível ou difícil de reverter: purge, member_remove, team_delete, credential_delete, organization_deactivate, message_send, portal_act, portal_run_write. As demais escritas criam uma nova edição ou podem ser revertidas (destructiveHint: false). Clientes ainda podem pedir confirmação antes de mudanças. Leituras da web e de redes sociais também declaram openWorldHint: true. tools/list mostra só as ferramentas que esta concessão pode chamar.
  • Contexto de organização: Uma chamada a principal_get retorna o usuário, a organização vinculada a esta concessão (id, nome, slug e se está ativa), a função, os escopos concedidos, os limites, os arquivos da organização em bytes (storage) e, em storage.processed, o que as planilhas que o agente consulta ocupam e o limite delas. Cada concessão é de uma organização; outro espaço de trabalho exige uma nova conexão OAuth autorizada com essa organização ativa no consentimento.
  • Recursos: nenhum; file_read retorna o conteúdo e os links de um arquivo.
  • Prompts: nenhum.
  • DPoP: opcional. A prova é validada e o token vinculado à sua chave quando o cliente apresenta uma, e tokens bearer simples continuam funcionando.

Fluxo de Autorização e Conexão [#authorization-flow]

O cliente se identifica por um Client ID Metadata Document (uma URL https como client_id, anunciado por client_id_metadata_document_supported) ou pelo registro dinâmico OAuth, anunciado por registration_endpoint nos metadados do servidor.

A conexão de um cliente MCP utiliza um fluxo padrão de código de autorização OAuth 2.0 em conformidade com as RFCs:

  1. Adicionar Endpoint: Configure seu cliente com a URL do servidor https://www.siglata.com/v1/mcp.
  2. Iniciar OAuth: O cliente abre uma janela do navegador apontando para o endpoint de autorização da Siglata.
  3. Autenticar: Entre com o link mágico recebido por e-mail, caso ainda não esteja autenticado.
  4. Selecionar Organização: Escolha a organização específica que esta conexão poderá acessar. Cada concessão é estritamente vinculada a um único ID de organização.
  5. Aprovar Escopos: Revise os escopos de capacidade solicitados (por exemplo, files:read, files:write, organizations:read) e aprove o acesso.
  6. Entrega do Token: O cliente recebe um token de acesso delimitado exclusivamente à organização escolhida.

Cada aprovação cria uma conexão OAuth nativa independente, mesmo quando o usuário, o cliente e a organização são os mesmos. A conexão fica vinculada ao usuário que aprovou e à organização escolhida, e continua ativa enquanto o agente a usa. Ela vence após 30 dias sem nenhuma chamada MCP; cada chamada renova esse prazo. Sair do navegador não encerra a conexão; trocar a organização ativa não altera seu vínculo. A renovação de tokens sozinha não conta como uso: após o vencimento, uma nova aprovação é necessária. Tokens de acesso vencem antes e são renovados enquanto a conexão estiver ativa.

┌────────────────┐        1. Fluxo OAuth       ┌──────────────────┐
│   Cliente MCP  │ ──────────────────────────> │  Autenticação    │
│ (Codex/Claude) │ <────────────────────────── │  (Siglata Auth)  │
└────────────────┘      2. Token Delimitado    └──────────────────┘
        │
        │ 3. JSON-RPC (POST /v1/mcp)
        ▼
┌─────────────────────────────────────────────────────────────────┐
│                     Servidor MCP Siglata                        │
│  - Verificação de Origem e Validação de Sessão                  │
│  - Checagem Dinâmica de Associação e Políticas de Escopo        │
│  - Isolamento Estrito de Limite Organizacional                  │
└─────────────────────────────────────────────────────────────────┘
        │                                 │
        ▼                                 ▼
┌──────────────────┐              ┌──────────────────┐
│   Arquivos       │              │  Organização     │
│ (Blocos de 8MiB) │              │ (RBAC / Convites)│
└──────────────────┘              └──────────────────┘

Escopos OAuth [#oauth-scopes]

A Siglata aplica escopos de capacidade fundamentados no princípio do menor privilégio:

EscopoDescriçãoFunção Mínima
files:readInspecionar arquivos ativos, listar lixeira, consultar métricas de armazenamento e obter links de download de uso único.member
files:writeReservar uploads, cancelar uploads, renomear arquivos, mover para lixeira e restaurar arquivos.member
organizations:readLer perfil e metadados da organização concedida.member
organizations:writeRenomear a organização ou alterar seu slug.admin
members:readListar membros da organização e visualizar convites pendentes.member
members:writeConvidar novos membros, cancelar convites pendentes, atualizar funções ou remover membros.admin

Além dos escopos OAuth, a Siglata verifica a validade da conexão, e o vínculo e a função atuais do usuário no início de cada requisição MCP e de cada transferência autenticada de arquivos. Uma chamada de ferramenta usa o principal resolvido para aquela requisição, mantendo os escopos e claims originais do token. As operações verificam seus escopos e as permissões de arquivo, origem e destino aplicáveis.

Referência de Ferramentas e Operações [#tools-reference]

tools/list anuncia uma ferramenta por operação que esta concessão pode chamar, com o nome da operação. Cada descrição termina com os códigos de erro que a ferramenta pode retornar. O schema de entrada de cada ferramenta lista seus argumentos.

Uma chamada que dá certo retorna o resultado da operação como texto JSON. Um resultado de leitura acima de 24.000 caracteres vem em partes: o primeiro texto é {"part","parts","next"} e o segundo, o trecho daquela parte do JSON; chamar de novo com os mesmos argumentos e part traz a próxima, e os trechos juntos em ordem formam o resultado inteiro. move, rename, trash, file_read e document_read aceitam uma entrada, ou só items com 1 a 50 entradas: as escritas rodam uma depois da outra e as leituras em paralelo, e a chamada devolve results na ordem das entradas, cada um com o resultado daquela entrada (numa escrita, só id e kind) ou o seu error. Uma chamada que falha retorna um resultado de ferramenta com isError: true e o texto {"error":{"code","message"}}. Argumentos inválidos falham com INVALID_ARGUMENTS, indicando cada campo inválido. Uma escrita só retorna depois que a Siglata a registra na atividade da organização; quando esse registro não pode ser salvo, a chamada falha com activity_unavailable.

Uma ferramenta ausente de tools/list é uma que esta concessão não pode chamar: falta o escopo ou a função de membro exigidos. Chamá-la retorna um erro JSON-RPC com error.code -32602 e error.data.code UNKNOWN_TOOL (forbidden para uma operação que só a equipe da Siglata chama), cuja mensagem indica a função, o escopo com que reconectar ou as ferramentas mais próximas que esta concessão pode chamar.

Uma empresa nova começa inativa: entrar, consentir e conectar um agente funcionam, e principal_get informa organization.active: false. Toda outra ferramenta falha com organization_inactive, cuja mensagem traz o WhatsApp da Siglata, e não guarda nada até a Siglata ativar a empresa. A equipe da Siglata (suporte@siglata.com) é membro de toda empresa com a função staff: pode o que um proprietário pode, menos excluir a empresa ou remover ou mudar o proprietário, e proprietários e administradores não podem removê-la nem mudá-la.

Arquivos

FerramentaTipoDescrição
listleituraLista pastas e arquivos, pastas primeiro: sob folderId (null para a raiz) ou em toda a organização sem ele; os ativos ou, com state: "trash", os recuperáveis da lixeira, e então, sem folderId nem query, as tabelas na lixeira, depois dos arquivos; com query, só os nomes que a contêm. cursor traz a próxima página. fields devolve só essas chaves de cada arquivo e pasta, mais o id.
getleituraLê os metadados e o estado de ciclo de vida de um arquivo ou pasta; passe fileId ou folderId. Um arquivo traz seu status: em ready, sql lê as células de uma planilha; fora de ready e processing, statusMessage diz o que fazer, como dividir a planilha em arquivos menores. fields devolve só essas chaves, mais o id.
file_readleituraLê um arquivo: até 128 KiB o conteúdo volta na resposta (text para mídia textual, blob em base64 nas demais); linkOnly: true dispensa o conteúdo. Todo resultado traz link, um download que uma pessoa com sessão abre no navegador, e transfer, um link de uso único com um curl pronto que salva o arquivo na pasta de trabalho do agente.
sheet_writeescritaAplica um ou mais patches (patches[]) a um workbook existente, preserva células e abas fora deles e devolve o id de arquivo de uma nova edição, chamada name ou, sem ele, pelo nome da origem com os 8 primeiros caracteres do requestId (vendas-1a2b3c4d.xlsx). Um patch de células { sheet, range, cells } escreve um intervalo A1; um patch de consulta { sheet, anchor, query } (também exige files:read) roda um SELECT do sql e escreve todas as linhas a partir da célula anchor, mantendo a formatação do modelo, sem que os dados passem pelo agente. Patches não podem se sobrepor.
document_searchleituraBusca o texto indexado de arquivos ativos que esta concessão pode ler. Cada palavra é exigida e buscada literalmente; frases vão entre aspas duplas, e OR em maiúsculas entre duas palavras ou frases aceita qualquer uma. limit limita os candidatos (padrão 20, máximo 100); resultados inacessíveis são omitidos. Falhas de banco de dados ou autorização retornam erro, não uma lista vazia.
document_readleituraLê o texto de um PDF, Word, PowerPoint ou Excel página por página, no servidor, a partir de fromPage (padrão 1), até limit páginas (padrão 20, máximo 50) e 23.000 caracteres de texto; nextPage continua. Os números de página são os que document_search cita.
sqlleituraExecuta um SELECT (sintaxe do Postgres) sobre as células das planilhas que esta concessão pode ler. Devolve até 23.000 bytes de linhas em JSON (o SELECT escolhe as colunas), com truncated: true e next quando algo fica de fora, e roda por no máximo 10 s.
sql_writeescritaExige files:write. CREATE VIEW cria uma view que cada membro lê com o próprio acesso, CREATE TABLE AS cria um snapshot que só você lê, sobre sources (os ids dos arquivos que ele pode ler; todos os que você lê, se omitido), oculto enquanto uma fonte estiver na lixeira e removido quando ela é excluída definitivamente, e DROP VIEW ou DROP TABLE remove um objeto seu.
sql_schemaleituraLista as tabelas de fatos e suas colunas, as funções auxiliares, as views da organização e os seus snapshots.
file_writeescritaCria um arquivo pequeno inline.
upload_beginescritaReserva cota de armazenamento e devolve um link de envio de uso único; um PUT do arquivo pelo terminal conclui o envio.
upload_cancelescritaCancela um upload inacabado e libera o espaço que ele reservou.
folder_createescritaCria uma pasta, opcionalmente aninhada sob uma pasta pai.
renameescritaRenomeia um arquivo ou pasta; passe fileId ou folderId.
moveescritaMove um arquivo ou pasta para a pasta to, ou para a raiz com to: null.
trashescritaMove um arquivo, uma pasta, uma tabela ou registros de uma tabela para a lixeira, recuperáveis por 30 dias. Recebe fileId, folderId, tableId, ou tableId com recordIds (de 1 a 50; ou vão todos, ou nenhum).
restoreescritaRestaura da lixeira um arquivo, uma pasta, uma tabela ou registros antes do prazo de recuperação (recoverUntil). Recebe os mesmos alvos de trash.
purgeescritaExclui definitivamente da lixeira um arquivo, uma pasta, uma tabela ou registros e libera o espaço; exige confirm: true e o criador do item (numa tabela ou nos seus registros, o criador da tabela), um proprietário ou um administrador.

Empresa

O espaço da empresa guarda o perfil, os produtos, a marca e as skills da organização, fora do drive (veja Empresa). As operações de arquivo que listam ou criam (list, folder_create, file_write, upload_begin) recebem space: "company" para trabalhar nele; as demais agem sobre o id de qualquer item dele.

FerramentaTipoDescrição
company_getleituraLê o espaço da empresa: o id da pasta raiz, o perfil de empresa.md (campos principais e texto, ou os problemas a corrigir), os produtos (produtos/), a marca (marca/) e os demais arquivos, inclusive os das skills, cada um com id e caminho. As skills vêm de skill_find.
skill_findleituraEncontra as skills para uma tarefa: as da empresa que esta concessão pode ler, inclusive as pessoais, e o catálogo da Siglata, cada skill da Siglata com installed (se a pessoa a tem), se é paga (as operações dela gastam créditos) e as instalações que ela vê. Com query, busca o nome e a descrição e devolve as melhores; com name, devolve essa skill com o texto em content quando a pessoa pode usá-la; sem nenhum dos dois, lista todas. Uma skill da empresa traz em credentials os acessos que declara no frontmatter.
skill_installescritaInstala uma skill do catálogo, ligada à versão mais recente da Siglata: para a pessoa (visibility: "restricted", o padrão, compartilhável com grant_set e o installId) ou para a empresa toda ("org", que exige quem pode editar os dados da empresa). Com copy: true, grava o texto atual como uma skill da empresa editável.
skill_uninstallescritaCom name, esconde a skill só para a pessoa; com installId, remove essa instalação para todos, o que só quem a instalou, um proprietário ou um administrador faz.

Tabelas, registros e exportações

O escopo OAuth não substitui as permissões atuais da tabela, dos arquivos de origem ou da pasta de destino. Membros leem os próprios registros; concessões de leitura restrita da tabela permitem à equipe autorizada ler os de outros membros. Salvar registros e gerar uma exportação são operações independentes.

Para autorizar a equipe de escritório a ler todos os registros sem permitir alterações, use grant_set com tableId, o membro ou a equipe destinatária e level: "read". Consulte as concessões com grants_list e tableId; revogue com grant_set e level: null. Cada chamada recebe um único alvo, sem combinar tableId com identificadores de arquivos, pastas ou portais.

Nas alterações, requestId é qualquer chave que você escolher; repita a mesma chave para repetir a mesma solicitação. Uma repetição idêntica devolve a revisão ou o resultado originalmente aceito; reutilizar o identificador com outro conteúdo ou usuário causa conflito. Use as revisões esperadas para evitar sobrescrever alterações concorrentes.

OperaçãoEscopo OAuthDescrição
table_setfiles:writeCria ou ativa uma definição JSON Schema com $schema do draft 2020-12 e type: "object" na raiz. Para criar, escolha um novo UUID em tableId e use expectedVersion: 0; para alterar, use a versão atual. Uma definição incompatível com os registros atuais é recusada sem ativação. Exige permissão de escrita na tabela.
table_getfiles:readLê a definição ativa, sua versão, as permissões efetivas readsAll e writesAll e a revisão mais recente de cada formato de exportação (formatId, nome, versão, schemaVersion e tipo). Consulte antes de enviar registros ou exportar.
table_listfiles:readLista as tabelas legíveis da organização, com identificador, nome e versão ativa. Passe next como after para continuar, mesmo quando a página não trouxer tabelas legíveis.
record_writefiles:writeSalva ou corrige registros em um lote atômico, validado contra schemaVersion sem coerção nem descarte de propriedades. Um item inválido, sem permissão ou em conflito recusa todo o lote. Novos registros usam expectedVersion: 0; correções recebem recordId e a revisão esperada. Corrigir registros de outros membros exige escrita na tabela. sourceFileId exige um arquivo ativo e legível do espaço da empresa, assim como cada arquivo em citedFileIds (até 10), os outros arquivos que o registro cita; enquanto algum registro cita um arquivo, ele não pode ir para a lixeira nem ser apagado.
record_readfiles:readLê os valores atuais dos registros permitidos ao usuário. Passe next como after. Uma origem que o usuário já não pode ler tem seu sourceFileId ocultado. Com state: "trash", lê os registros na lixeira, cada um com trashedAt, recoverUntil e trashedBy.
record_historyfiles:readLê revisões imutáveis de um registro, com seus valores e definições de esquema originais. Aplica as mesmas permissões de record_read. Passe nextVersion como afterVersion para continuar.
format_setfiles:writeCria, revisa ou aposenta um formato de exportação JSON, CSV ou XLSX, vinculado a schemaVersion. Use expectedVersion: 0 para criar. CSV declara a ordem e a projeção dos campos, com ponteiros como /data/<campo> ou /metadata/createdAt; XLSX usa como modelo um arquivo legível do espaço da empresa e mapeamentos declarados. Aposentar impede novas exportações sem apagar definições ou resultados anteriores. Exige escrita na tabela.
format_getfiles:readLê a definição, a versão e o schemaVersion de um formato retido. Sem version, retorna a revisão mais recente; com ela, uma revisão anterior. Identificadores de modelos XLSX exigem permissão atual de leitura do arquivo.
table_exportfiles:writeGera um novo arquivo restrito na pasta de destino gravável, usando um formato retido e apenas registros legíveis. Uma seleção explícita com registros indisponíveis é recusada, não reduzida silenciosamente. Repetições reutilizam as revisões capturadas e o arquivo concluído, verificando novamente as permissões atuais. A resposta contém o arquivo, as referências das revisões exportadas e, com files:read, transfer: o link de uso único que salva o arquivo na pasta de trabalho do agente.

Lixeira de tabelas e registros

trash com tableId manda a tabela para a lixeira com seus registros e formatos; com tableId e recordIds, só esses registros. Um registro vai para a lixeira por quem o escreveu ou por quem tem escrita na tabela; uma tabela, por quem tem escrita nela. Na lixeira, a tabela e os registros somem de table_list, table_get, record_read, record_history, table_export e sql, e escrever neles falha com trashed. Outra tabela pode usar o nome de uma tabela na lixeira.

restore traz de volta a tabela, com registros e formatos, ou os registros, exatamente como estavam, sem criar revisão. Depois de recoverUntil (30 dias), ele falha com restore_expired, e a Siglata exclui o item de vez.

purge com confirm: true exclui de vez o que está na lixeira: todas as revisões do registro, ou a tabela inteira com esquemas, registros, formatos e exportações. O espaço que ocupavam é liberado, e os arquivos de origem e modelo deixam de ficar presos à tabela. Os arquivos exportados continuam onde estão: exportFileIds lista os que ainda guardam os dados excluídos, para gerar uma nova exportação e mandar os antigos para a lixeira.

Compartilhamento

Cada uma recebe fileId ou folderId; grants_list e grant_set também recebem credentialId, o installId de uma skill instalada, o connectionId de uma conexão com portal da empresa ou tableId.

FerramentaTipoDescrição
grants_listleituraLista quem tem acesso explícito a um arquivo, pasta ou acesso a portal.
grant_setescritaDá a um membro (granteeType: "user") ou a uma equipe (granteeType: "team") acesso read ou write, ou o revoga com level: null.
set_visibilityescritaTorna um arquivo ou pasta visível para toda a organização (org) ou só para quem o criou e os beneficiários (restricted).

A exclusão definitiva usa purge com confirm: true; uploads não finalizados expiram sozinhos.

Acessos a portais

O agente usa logins de portais sem ver os valores (Acessos a portais).

FerramentaTipoDescrição
credential_requestescritaCria ou substitui o acesso pessoal de quem pede (ou, com visibility: "org", o da empresa) e devolve um link de uso único para a pessoa digitar os valores. Nunca recebe os valores.
credential_listleituraLista os acessos que a pessoa vê: nomes, campos, visibilidade, dona, se têm valores e qual credential_use usa para ela.
credential_useescritaDevolve um endereço de uso único, válido por cerca de 60 segundos, que um script local lê para receber os valores do acesso próprio da pessoa ou, sem ele, do acesso da empresa. Cada uso fica registrado.
credential_deleteescritaExclui um acesso com seus valores cifrados, links abertos e concessões.

Organização e Equipe

FerramentaTipoDescrição
principal_getleituraLê, em uma chamada, o usuário, a organização (e se está ativa), a função, os escopos, os limites (células por planilha e bytes por planilha), o armazenamento e os créditos da organização (os do mês, os usados e os que restam) vinculados a esta concessão. A equipe da Siglata define os créditos e limites combinados com a empresa.
organization_updateescritaRenomeia a organização, altera seu slug ou ambos. Só para proprietários e administradores com organizations:write; um slug que outra organização já usa falha com ORGANIZATION_SLUG_ALREADY_TAKEN.
organization_activateescritaAtiva a empresa depois que o contrato é assinado. Só para a equipe da Siglata.
organization_deactivateescritaDesativa a empresa; os dados dela ficam. Só para a equipe da Siglata.
organization_limits_setescritaDefine os créditos por mês da empresa, os bytes de arquivos e de dados processados, que só sobem acima do padrão, e as ligações de treino por mês. Só para a equipe da Siglata.
FerramentaTipoDescrição
members_listleituraLista os membros da organização, com paginação, e seus convites pendentes.
member_update_roleescritaAltera a função de um membro na equipe.
member_removeescritaRemove um membro da organização.
invitation_createescritaConvida alguém por e-mail; resend: true reenvia um convite pendente.
invitation_cancelescritaCancela um convite ainda não aceito.
teams_listleituraLista as equipes da organização com os ids de usuário dos seus membros.
team_setescritaSem teamId, cria uma equipe chamada name; com teamId, renomeia a equipe quando recebe name. userIds define os membros como exatamente essa lista.
team_deleteescritaExclui uma equipe; seus membros perdem o acesso das concessões dela na próxima requisição.

Criar, excluir ou sair de uma organização, aceitar convites, desconectar agentes e pagar acontecem no app Siglata.

Escuta social

Estas operações leem dados públicos de redes sociais, notícias e avaliações do Google Maps. Cada uma recebe a rede em network e desconta dos créditos da organização (uma chamada custa uma fração de um crédito); a resposta traz em credits quanto cobrou e quanto resta. Cada chamada reserva 10 créditos antes de consultar a rede e cobra só o custo efetivo ao terminar, liberando o restante. Uma falha ao registrar a cobrança faz a operação falhar. Sem saldo suficiente para a reserva, a operação recusa com CREDITS_EXHAUSTED antes de chamar qualquer rede, dizendo quando os créditos recomeçam e, se a empresa tem créditos por mês, quantos. A equipe da Siglata define os créditos por mês combinados com a empresa. A Siglata não guarda o que as redes respondem.

FerramentaTipoDescrição
social_profileleituraLê um perfil público (Instagram, TikTok, YouTube, LinkedIn ou Facebook): nome, seguidores, publicações, verificação e bio.
social_postsleituraLista as publicações recentes de uma conta (as mesmas redes, mais um subreddit do Reddit), com texto, data, link e engajamento.
social_commentsleituraLista os comentários de uma publicação ou vídeo (Instagram, TikTok, YouTube) ou as avaliações de um lugar no Google Maps.
social_searchleituraBusca publicações que citam uma marca ou tema no Instagram (incluindo #hashtags), TikTok, YouTube, LinkedIn, X e Reddit, notícias no Google Notícias e lugares no Google Maps.

Pesquisa na web

Estas operações pesquisam e leem a web pública em qualquer conexão e não gastam créditos. A pesquisa segue o idioma e o país da organização, a menos que o agente peça outros. Quando a cota gratuita da Siglata se esgota, a operação recusa com WEB_QUOTA_REACHED e diz ao agente para usar as próprias ferramentas de web. A Siglata não guarda o que a web responde.

FerramentaTipoDescrição
web_searchleituraPesquisa a web e devolve resultados em ordem, com posição, título, link, trecho, site e, quando houver, data.
web_fetchleituraLê até 10 páginas em Markdown, com título, descrição e data de publicação; as que não pôde ler voltam em failed. Para guardar o que leu, o agente salva com file_write um Markdown com o link de cada fonte e quando foi lida.

Transcrição de áudio

audio_transcribe transforma uma gravação guardada na Siglata, como um áudio de WhatsApp (.ogg/opus), MP3, M4A, WAV, FLAC ou WebM, em texto com as falas de cada pessoa e os horários. A ElevenLabs, fornecedora de transcrição da Siglata, faz a transcrição. Envie antes um arquivo local com upload_begin. Cada minuto iniciado é cobrado dos créditos da organização (US$ 0,22 por hora a preço de custo do fornecedor, ou US$ 0,27 com termos). A Siglata reserva o custo antes de chamar a ElevenLabs. Sem créditos suficientes, a operação recusa com CREDITS_EXHAUSTED antes de enviar qualquer coisa. Se a fornecedora não conseguir transcrever, a reserva é liberada. Uma falha ao registrar a cobrança também retorna TRANSCRIPTION_UNAVAILABLE, sem entregar sucesso. O limite é de 30 minutos e 25 MiB por gravação (AUDIO_TOO_LONG, AUDIO_TOO_LARGE). Um arquivo cuja duração a Siglata não consegue ler falha com AUDIO_UNSUPPORTED.

FerramentaTipoDescrição
audio_transcribeescritaTranscreve fileId e guarda a transcrição como um arquivo Markdown na pasta do áudio, com a mesma visibilidade. speakers diz quantas pessoas falam. keyterms recebe até 100 nomes de produtos, marcas ou pessoas, cada um com menos de 50 caracteres e até 5 palavras, que voltam escritos exatamente assim. language (ISO 639) segue o idioma da organização. Devolve text, transcriptFileId, a duração e os créditos gastos; passe transcriptFileId como sourceFileId para record_write, o que exige o áudio, e portanto a transcrição, no espaço da empresa.

WhatsApp

O número de WhatsApp de uma empresa entrega as mensagens dos seus contatos numa caixa de entrada que o agente trata. A Siglata vincula o número; a tabela de contatos da empresa decide quem é contato, e as mensagens de outros telefones ficam retidas, sem confirmação nem transcrição, e são apagadas depois de 30 dias. Os áudios são transcritos ao chegar com os 100 primeiros termos da tabela de vocabulário e cobrados como em audio_transcribe.

FerramentaTipoDescrição
message_readleituraLê a caixa de entrada da mais antiga para a mais nova: as mensagens new por padrão, ou processed ou held, de todos os contatos ou de um contactRecordId, com o registro do contato, o texto, os arquivos e até 4.000 caracteres da transcrição de cada mensagem. Exige leitura de todos os registros da tabela de contatos.
message_markescritaMarca até 100 messageIds como processed, ou de volta como new; ou todas mudam, ou nenhuma. Exige leitura de todos os registros da tabela de contatos.
message_sendescritaEnvia um texto a um contato da tabela de contatos, por contactRecordId ou phone, citando replyTo se quiser. O WhatsApp só permite texto livre até 24 horas depois da última mensagem do contato (window_closed depois disso). Exige escrita em todos os registros da tabela de contatos.
channel_getleituraLê o número e as configurações do canal: as tabelas de contatos e de vocabulário, a confirmação, a resposta a telefones desconhecidos, a pasta de mídia e a transcrição ao chegar.
channel_setescritaMuda as configurações do canal, mantendo as que não forem informadas. Só proprietários e administradores.

Ligações de treino

Um vendedor treina uma ligação de venda por voz com um cliente simulado pela IA. O cenário é um registro de uma Tabela, fixado na versão do momento do convite: editar o registro depois não muda os convites já enviados. O link leva o código depois de #, então ele não aparece nos registros do servidor, e a Siglata guarda só o hash do código. Cada empresa tem um número de ligações de treino por mês, definido pela equipe da Siglata. Ao fim de cada ligação, a gravação e a transcrição em Markdown ficam como arquivos restritos na pasta Ligações de treino da empresa, e, minutos depois, a análise grava a linha do tempo, os fatos, as avaliações e o coaching como um registro na Tabela Resultados, em nome de quem criou o link, que cita os dois arquivos: enquanto o registro existir, eles não podem ser apagados.

FerramentaTipoDescrição
rehearsal_inviteescritaCria um link de treino para o registro de cenário em scenario (tableId e recordId), fixado na versão atual do registro. contact recebe um e-mail ou um registro que a pessoa pode ler. calls (1 a 10, padrão 1) diz quantas ligações o link permite e expiresInDays (1 a 30, padrão 7) quando ele vence. Devolve o link, o vencimento, as ligações, o cenário fixado e o contato. Um cenário incompleto ou incoerente volta com o problema descrito.
rehearsal_revokeescritaCancela um link pelo inviteId: ele não começa novas ligações, e uma ligação em andamento termina e recebe seu resultado. Quem criou o link ou um administrador pode cancelar.

Conexões com portais

Um agente trabalha nas páginas de um portal que a empresa usa, como um ERP. A pessoa entra no portal numa página da Siglata com a própria senha e os próprios códigos, que o agente nunca vê; a Kernel, fornecedora de navegadores da Siglata, guarda a sessão e entra de novo sozinha. Bancos, redes sociais e o login gov.br são recusados.

FerramentaTipoDescrição
portal_connectescritaCria ou reaproveita a conexão de quem chama com um portal (ou, com visibility: "org", a da empresa) e devolve o link onde a pessoa entra.
portal_listleituraLista as conexões que a pessoa vê, com o status atual (authenticated, connecting ou needs_auth) e o link para entrar de novo.
portal_disconnectescritaExclui a sessão que a Kernel guarda para uma conexão, o login guardado e as concessões da conexão.
portal_openescritaAbre um navegador no portal, já logado como a pessoa, e lê a página: a árvore de acessibilidade (papéis e nomes) e as tabelas visíveis. A sessão dura 15 minutos.
portal_readleituraLê de novo a página de uma sessão aberta, ou vai antes a outra página do mesmo portal.
portal_actescritaClica, preenche ou escolhe um elemento pelo papel e nome que a página mostra. Nunca digita em campo de senha nem sai do domínio do portal.
portal_closeescritaFecha a sessão e devolve os passos que funcionaram como um roteiro, para guardar numa skill da empresa.
portal_runleituraRoda um roteiro só de navegação numa chamada e lê a última página.
portal_run_writeescritaRoda numa chamada um roteiro com ações (cliques, preenchimentos, escolhas). Pede escrita na conexão.

O tempo de navegador é cobrado dos créditos da organização, inclusive quando a execução falha. Antes de abrir o navegador, a Siglata reserva o limite de tempo da chamada ou sessão; ao fechar, libera o saldo não usado. Chamadas na mesma sessão são atendidas em sequência, e a cobrança e o histórico são gravados juntos. Quando o portal sai da conta, a ferramenta entra de novo com o login guardado; só se isso falhar ou pedir algo à pessoa ela falha com PORTAL_NEEDS_LOGIN e o link para a pessoa entrar.

Instalação [#install]

Conecte-se via OAuth a https://www.siglata.com/v1/mcp. Os passos de instalação por cliente ficam em páginas dedicadas (comandos para copiar e colar para pessoas e agentes). Comece em Conectar.

Esta página documenta apenas a superfície MCP (ferramentas, escopos). Ela não duplica esses guias de instalação.

Segurança e Revogação [#security]

  • Isolamento Multi-Inquilino: Cada conexão MCP permite acesso a exatamente uma organização, escolhida na aprovação e imutável nessa conexão. Para acessar outro espaço de trabalho, autorize uma conexão adicional.
  • Validação de Estado Ativo: A conexão, o vínculo e a função atuais do usuário e a política de acesso da organização são verificados em cada requisição MCP e transferência autenticada. A remoção do membro, a revogação ou o vencimento da conexão bloqueiam a próxima requisição.
  • Prazo e Sessão do Navegador: Cada aprovação vence após 30 dias sem chamadas MCP, e cada chamada renova esse prazo. Renovar tokens sem fazer chamadas não o estende, e sair do navegador ou deixar a sessão do navegador vencer não revoga a conexão. A revogação e a perda do vínculo com a organização encerram a conexão a qualquer momento.
  • Revogação de uma Conexão: Use Desconectar no Início do console (/app). A revogação invalida somente aquela conexão e seus tokens de acesso e renovação, inclusive tokens de renovação rotacionados. Outras aprovações continuam independentes, mesmo para o mesmo cliente e organização; a sessão do navegador também permanece ativa.

Alterando escopos após a autorização [#changing-scopes]

Os escopos são escolhidos na aprovação e limitados pela política da organização na emissão do token. A aprovação salva só os escopos que o papel de quem aprova permite, que são os listados na página de consentimento; depois de uma promoção a administrador, a próxima autorização mostra a página de consentimento de novo antes de conceder qualquer escopo de administração, e um rebaixamento tira as operações de administração na chamada seguinte. Não existe API de mutação de escopos após a concessão (scopes_update ou similar), porque ampliar escopos sem novo consentimento contornaria esse limite de confiança. Para autorizar outro conjunto, execute o OAuth novamente e aprove os escopos desejados; isso cria uma conexão independente. Se quiser substituir a conexão anterior, revogue-a no Início do console (/app). Sair do navegador não a revoga.

MCP Registry [#mcp-registry]

O servidor está listado no MCP Registry oficial como com.siglata/mcp.

Informações legais e suporte [#legal-and-support]

Política de privacidade, termos de uso e contato e suporte.