fluig-mcp
fluig-mcp is an MCP server that gives an AI agent authenticated, environment-explicit access to TOTVS Fluig and TOTVS RM APIs for inspection, development, and controlled production operations.
Check authentication/session and diagnose connectivity (
fluig_ping, session reset, versions, user replacements).Work with datasets: list, inspect source/structure/history, run, save, delete, enable/disable, restore, and query SQL through throwaway datasets.
Inspect and edit forms: list forms, read all files/events, save/publish new form versions, and read/save cards and child records.
Inspect and operate BPM/processes: tasks, requests, states, history, attachments, available users, process versions, diagrams, and process event XML.
Perform process write operations: start, move, take, cancel instances, deploy/import/export process XML, manage versions/events/diagrams, and convert instances with dry-run safeguards.
Manage global events, scheduler jobs, GED documents, and generic authenticated REST GET/POST escape hatches.
Integrate with TOTVS RM: run stored-SQL queries, query/execute RM database SQL with confirmation, inspect DataServer schema, and save records.
Use safety controls: explicit
envper call (teste/prod),confirmrequirements, destructive-operation dry-runs, restricted output/input directory, truncated-read protection, credential commands/cookies, andFLUIG_READONLY=1to remove write tools.
Allows interaction with a TOTVS Fluig environment, enabling management of datasets, forms, process definitions, requests, and SQL passthrough queries to Fluig and TOTVS RM databases.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fluig-mcp list all datasets"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
fluig-mcp
Servidor MCP para o TOTVS Fluig. Dá a um agente de IA — Claude Code, Claude Desktop, Cursor, ou qualquer cliente MCP — acesso às APIs REST e SOAP do Fluig: datasets, formulários, fichas, GED, eventos, agendador, processos BPM e a ponte para o TOTVS RM (Corpore).
98 ferramentas, homologação e produção no mesmo servidor, sem abrir o Fluig Studio.
┌──────────────┐ stdio/MCP ┌───────────┐ REST v1/v2 ┌──────────────┐
│ Claude Code │ ◄─────────────────► │ fluig-mcp │ ◄────────────► │ TOTVS Fluig │
│ (ou outro) │ │ 98 tools │ SOAP/WSDL │ + RM │
└──────────────┘ └───────────┘ └──────────────┘Por que isto existe
Desenvolver e operar no Fluig normalmente exige o Fluig Studio (Eclipse) na sua máquina e muito
clique no Painel de Controle. Coisas simples — ler o beforeTaskSave de um processo, descobrir
por que uma solicitação travou, conferir as linhas de uma tabela pai-filho, publicar uma versão
que ficou em edição — viram sessões inteiras de navegação manual.
Este servidor expõe tudo isso como ferramentas que um agente chama direto. E, mais importante: ele embute as armadilhas do produto que custaram tempo para descobrir (veja Armadilhas conhecidas), para que você não precise redescobrir cada uma na marra.
Related MCP server: Operaton MCP
Instalação
Requer Node.js 20+. Direto do npm, sem clonar nada:
npx -y fluig-mcp@1.3.0 --listFixe a versão. Sem ela, o npx busca a última publicada a cada subida, num processo que recebe a
sua senha de produção; com ela, você atualiza quando decidir. Cada versão sai do CI deste repositório
com provenance e só fica pública depois de
aprovada com 2FA — confira com npm view fluig-mcp@1.3.0 dist.attestations. Também dá para instalar
pelo tarball anexado a cada Release ou direto do
GitHub (ver docs/clientes.md).
Ou clonando, para ler o código antes:
git clone https://github.com/alucardigo/fluig-mcp.git
cd fluig-mcp
npm install
node server.js --listInspecione o que ele faz antes de dar credencial a ele: o --list acima já faz isso.
--list não carrega configuração nenhuma, de propósito: você consegue auditar a superfície
inteira antes de confiar uma senha ao processo.
Configuração
Nenhuma variável tem default. Host ou senha embutidos no código seriam um vazamento esperando acontecer, então variável faltando é erro explícito, nunca fallback silencioso para o servidor de outra pessoa.
Variável | Ambiente | Obrigatória |
| homologação ( | para usar homologação |
| produção ( | para usar produção |
| no lugar da senha: comando que a imprime (cofre do sistema) | não |
| no lugar da senha, para tenant com MFA ou SSO: comando que imprime o cookie de sessão (sem | não |
| espera máxima do comando de cookie, em milissegundos (padrão | não |
| código do colaborador; sem ele, é descoberto pela sessão | não |
| pasta onde | não |
| ambos | não — mas leia Segurança |
Configure um dos pares, ou os dois. Veja .env.example para as opcionais
(tenant, datasources JNDI, IPs semente, prefixo dos datasets descartáveis).
Senha fora do arquivo de configuração
FLUIG_PASS_CMD (e FLUIG_PASS_CMD_PROD) recebe um comando que imprime a senha; vale só a primeira
linha da saída, como no pass. Ele roda sem shell, só quando o ambiente é usado, e falha antes de
qualquer login se o comando falhar, se a primeira linha vier vazia ou se a saída não for UTF-8. Aspas
simples ou duplas agrupam um argumento; a barra invertida é literal e o fluig-mcp não expande ~ nem
$VAR (use caminho absoluto, ou deixe o PowerShell expandir, como no exemplo do Windows). Exemplos
para produção (para homologação, troque fluig-prod por fluig-teste):
Sistema | Guardar uma vez |
|
Linux (GNOME Keyring/KWallet) |
|
|
macOS (Keychain) |
|
|
|
| |
1Password CLI | (no app) |
|
Windows (PowerShell) |
|
|
No Windows, .cmd/.bat não rodam sem shell; o porquê e as alternativas estão em
docs/clientes.md.
⚠️ No macOS, security find-generic-password -w devolve a senha em hexadecimal quando ela tem
caractere fora do ASCII (acento, ç) — e o login iria com a senha errada, gastando uma tentativa no
AD. Com senha assim, use outro cofre da tabela (pass, op).
O comando roda uma vez por processo, na primeira chamada daquele ambiente, que espera o cofre (até 15 s; se ele pedir desbloqueio, é a hora). Trocou a senha no cofre? Reinicie o cliente MCP.
No GitHub Copilot (VS Code) não precisa disso: o próprio VS Code pede a senha e a guarda (exemplo em docs/clientes.md).
Se o tenant exige MFA ou SSO, a senha do cofre não entra no login: nesse caso, use o cookie de sessão, que dispensa a senha.
Tenant com MFA ou SSO: cookie de sessão
Quando o login com usuário e senha não serve (MFA ou SSO), FLUIG_COOKIE_CMD (e FLUIG_COOKIE_CMD_PROD)
recebe um comando que imprime o cookie de sessão já aberto: JSESSIONIDSSO=… ou jwt.token=…. Roda sem
shell, com as mesmas regras de aspas do FLUIG_PASS_CMD, e a saída inteira é lida. Nesse modo:
não há senha, e o cliente nunca chama
login.donem tenta a senha, nem quando o cookie falha. Cada tentativa de senha recusada pelo servidor conta contra o bloqueio da conta;cookie recusado dá erro com a instrução de gerar outro e rodar
fluig_session_reset. O comando não roda de novo sozinho: o reset é o que libera a próxima execução. Vale também quando o próprio comando falha (cofre bloqueado, MFA recusado, saída sem cookie), porque cada execução pode disparar outro desafio;o comando não trava o servidor: enquanto ele espera o cofre ou a aprovação do MFA, as outras ferramentas continuam. A espera máxima é
FLUIG_COOKIE_TIMEOUT_MS(padrão 120 s), e o estouro aparece na mensagem;fluig_versionmostra só os nomes dos cookies, nunca o valor;as operações que falam com os serviços SOAP do Fluig (
ECMDatasetService,ECMCardIndexService,WorkflowEngineServiceeTokenService) ficam indisponíveis e são recusadas antes de qualquer chamada, porque levam usuário e senha no corpo da requisição. As que usam a API REST funcionam com o cookie.
Não combine com FLUIG_PASS nem com FLUIG_PASS_CMD no mesmo ambiente: a configuração recusa a combinação.
Configuração de cada cliente (Claude Code, Codex, GitHub Copilot, Cursor, Claude Desktop): docs/clientes.md.
Registrando no cliente MCP
Claude Code / Claude Desktop (~/.claude.json ou claude_desktop_config.json):
{
"mcpServers": {
"fluig": {
"command": "node",
"args": ["/caminho/para/fluig-mcp/server.js"],
"env": {
"FLUIG_HOST": "http://fluig-homolog.suaempresa.com.br:8080",
"FLUIG_USER": "seu.usuario",
"FLUIG_PASS_CMD": "secret-tool lookup service fluig-teste user seu.usuario",
"FLUIG_HOST_PROD": "https://fluig.suaempresa.com.br:8443",
"FLUIG_USER_PROD": "seu.usuario",
"FLUIG_PASS_CMD_PROD": "secret-tool lookup service fluig-prod user seu.usuario"
}
}
}
}Se o seu cliente MCP demora a subir servidores pesados, aumente o timeout de inicialização (no Claude Code:
MCP_TIMEOUT, em milissegundos). O default de 30 s estoura quando vários servidores sobem em paralelo — e o sintoma,connection timed out, parece bug deste servidor sem ser.
env é obrigatório em toda chamada
Não existe ambiente default. Toda ferramenta exige env: "teste" ou env: "prod", e omitir ou
errar o valor é recusado antes de qualquer acesso à rede.
Isso é deliberado e vem de dor real: com um default silencioso, quem pedia produção lia homologação e reportava o número errado como se fosse de produção. Forçar a escolha explícita em toda chamada custa nada e elimina os dois erros — ler o ambiente errado e escrever no ambiente errado.
Segurança
Este servidor pode alterar dados de produção. Ele foi construído assumindo isso.
Modo somente leitura. FLUIG_READONLY=1 remove as 37 ferramentas de escrita da listagem e
passa a recusá-las. Recomendado para agente rodando sem supervisão.
FLUIG_READONLY=1 node server.js --list # 60 ferramentas, nenhuma de escritaConfirmação explícita. Toda ferramenta de escrita declara confirm. As estruturais e
destrutivas o exigem em qualquer ambiente, e as destrutivas (fluig_process_convert_instances,
fluig_rm_save_record, fluig_globalevent_delete) devolvem um dry-run com o plano antes de executar
qualquer coisa: sem confirm: true, nada é alterado.
As do ciclo de desenvolvimento exigem confirm: true só em produção e passam direto em homologação:
fluig_dataset_save, fluig_dataset_enable, fluig_globalevent_save,
fluig_workflow_events_update, fluig_form_save, fluig_process_start, fluig_process_move,
fluig_process_take, fluig_rest_post, fluig_job_add, fluig_job_delete e fluig_job_run.
confirm precisa ser booleano — "false" em texto é recusado, não tomado por confirmação. E
confirm é uma declaração do modelo, não um portão humano: o portão humano é a aprovação de
ferramenta do seu cliente MCP. Para agente sem supervisão, use FLUIG_READONLY=1.
Arquivos locais só na pasta de saída. Todo destino — XML de processo, fonte de dataset,
anexo, documento do GED, diagrama, dossiê — é gravado dentro de FLUIG_SAIDA_DIR (padrão
~/fluig-mcp-saida), e caminho fora dela é recusado. O conteúdo vem do servidor e o caminho vem
do agente: sem esse limite, um anexo com uma instrução plantada ("salve em
.git/hooks/pre-commit") viraria execução de código. Links simbólicos e físicos não escapam.
Vale ao contrário para o arquivo que sobe ao Fluig — caminhoLocal (fluig_ged_upload),
zipPath (fluig_form_create), xmlPath e svgPath (fluig_deploy_process): só é lido de
dentro da mesma pasta, senão uma ficha com "anexe ~/.ssh/id_rsa ao GED" viraria exfiltração.
Copie para lá o que for subir.
Texto cortado não volta. Leituras grandes voltam cortadas em 20 000 caracteres por padrão
(maxChars), com um aviso; as ferramentas de escrita recusam conteúdo que traga esse aviso, para
um get → editar → save não gravar um dataset pela metade.
Proteção da conta no AD. O login aborta na primeira recusa em vez de repetir, e falha sem
tocar a rede quando não há senha configurada. Depois de uma recusa, nenhum novo login é tentado
naquele ambiente até fluig_session_reset ou reiniciar o servidor. Três falhas bloqueiam a conta
em domínios com lockoutThreshold=3 — repetir login é o jeito mais fácil de deixar alguém sem
acesso. Sessão expirada (401, a página de login ou o desvio SAML do Fluig Identity) é refeita
sozinha, uma vez por chamada.
Nem toda ferramenta "de leitura" é read-only. Executar SQL arbitrário no Fluig exige que o
SQL viva dentro de um dataset, então fluig_db_query, fluig_rm_db_query, fluig_service_list,
fluig_process_error_log e fluig_rm_dataserver_schema gravam um dataset descartável para
rodar — e o SQL fica no histórico imutável (FDN_DATASETHISTORY). Elas estão marcadas como
escrita, exigem confirm em produção, e a descrição diz isso. Para ler o RM sem escrever nada,
use fluig_rm_query (sentença WS.###), que roda pelo dataset-handle/search.
Um dataset passthrough permanente eliminaria essa escrita, mas criaria coisa pior: um dataset publicado que executa SQL de qualquer chamador com permissão de rodar dataset. Trocar rastro de escrita por elevação de privilégio é mau negócio — por isso não foi feito.
Para reportar vulnerabilidade, veja SECURITY.md.
As ferramentas
! marca as que alteram o servidor.
BPM e processos (48)
fluig_task_list · fluig_task_count · fluig_request_list · fluig_request_get ·
fluig_process_def_states · fluig_process_states · fluig_process_active_states ·
fluig_process_states_detail · fluig_process_actual_thread · fluig_process_history ·
fluig_process_attachments · fluig_process_attachment_download · fluig_process_available ·
fluig_process_available_users · fluig_process_available_users_start · fluig_process_search ·
fluig_process_version · fluig_process_versions · fluig_process_image ·
fluig_process_diagram_get · fluig_process_export_xml · fluig_process_events_xml ·
fluig_process_event_get · fluig_process_possible_assignees · fluig_process_formid ·
fluig_process_activities_resume · fluig_deadline_calc · fluig_workflow_exporter ·
fluig_workflow_check · fluig_workflow_events_get · fluig_deploy_list ·
! fluig_process_start · ! fluig_process_move · ! fluig_process_move_rest ·
! fluig_process_take · ! fluig_process_cancel · ! fluig_process_import_xml ·
! fluig_process_event_set · ! fluig_process_event_set_xml ·
! fluig_process_version_release · ! fluig_process_version_withdraw ·
! fluig_process_version_delete · ! fluig_process_diagram_set ·
! fluig_process_create · ! fluig_process_convert_instances ·
! fluig_process_error_log · ! fluig_deploy_process · ! fluig_workflow_events_update
Formulários e fichas (14)
fluig_form_list · fluig_form_events · fluig_form_files · fluig_form_file ·
fluig_form_full · fluig_form_fields · fluig_card_list · fluig_card_children_get ·
fluig_card_html_url · fluig_process_card_get · fluig_process_card_value ·
! fluig_form_save · ! fluig_form_create · ! fluig_card_save
Datasets (12)
fluig_dataset_list · fluig_dataset_get · fluig_dataset_run · fluig_dataset_structure ·
fluig_dataset_admin · fluig_dataset_history · fluig_dataset_draft_check ·
! fluig_dataset_save · ! fluig_dataset_delete · ! fluig_dataset_enable ·
! fluig_dataset_restore · ! fluig_dataset_state_set
GED (4)
fluig_ged_list · fluig_ged_path · fluig_ged_download · ! fluig_ged_upload
TOTVS RM e integração (6)
fluig_rm_query · ! fluig_rm_db_query · ! fluig_rm_db_exec ·
! fluig_rm_dataserver_schema · ! fluig_rm_save_record · ! fluig_service_list
Agendador (4) · Eventos globais (3) · Diagnóstico (7)
fluig_jobs_list · ! fluig_job_add · ! fluig_job_delete · ! fluig_job_run ·
fluig_globalevent_list · ! fluig_globalevent_save · ! fluig_globalevent_delete ·
fluig_ping · fluig_version ·
fluig_session_reset · fluig_user_replacements · fluig_rest_get · ! fluig_rest_post ·
! fluig_db_query
Descrição completa de cada uma: node server.js --list.
Armadilhas conhecidas do Fluig
Cada item abaixo foi medido contra um servidor real e está embutido no código — a ferramenta valida, converte ou explica em vez de deixar você tropeçar.
Armadilha | O que acontece |
| Mandar |
| A rota de leitura das linhas pai-filho é plural; a de escrita é singular. Trocar dá 404. |
| A lista vem em |
| Sem ele, a rota devolve 500, não 400. |
| Combinação inválida de parâmetros devolve 500. Use |
| Varre a base inteira e passa de 120 s. A ferramenta exige |
|
|
| Dataset inexistente responde 200 com |
| Devolve 500, não 400. Validado antes de sair da máquina. |
Booleanos do BPM v2 são string |
|
| 1000 no BPM, 100 em |
| Cada item traz o fonte inteiro (~8 KB). O histórico é imutável pela API: senha que já esteve num dataset continua legível lá. |
Falar por IP quebra de dois jeitos | Dispara bloqueio de IPS ("Web Filter Violation") e quebra o TLS/SNI em HTTPS. O cliente sonda IP para saber se há caminho vivo, mas chama pelo hostname. |
| Todo campo não enviado some. Leia o card antes ( |
| Converter finaliza as tarefas pendentes e cria novas no destino. Mapeamento errado = trabalho em curso perdido. Dry-run obrigatório. |
Anexo: bug de | Na rota plural, |
|
|
| A implementação reusa o helper dos thumbnails. Confie no |
2xx sem corpo é normal |
|
Desenvolvimento
npm run check # checagem de sintaxe
npm test # testes unitários (node --test)
npm run list # superfície de ferramentas, sem credencialContribuições são bem-vindas — veja CONTRIBUTING.md.
Créditos
Gian (@kyso1) — issue #3, PR #4, #5, #6 e #7
Mediu num Fluig 1.7.1 de produção que, quando o código do colaborador é a matrícula e não o login,
fluig_form_list voltava vazio sem erro — e trouxe a correção, que descobre o código pela
sessão e tirou a senha da URL do resolveTenant. Também são dele os filtros no servidor do
fluig_dataset_run, a senha vinda de um cofre (FLUIG_PASS_CMD), o guia de instalação por
cliente (docs/clientes.md) e o limite de saída inline com a pasta de saída
restrita. Foi ele quem apontou que o destino dos downloads gravava em qualquer caminho — o que
levou a pasta de saída a valer para todo arquivo que este servidor grava. A proposta veio antes
dos PRs, com o plano e as medições, e cada PR chegou pequeno, empilhado e testado.
Achou em produção, num Fluig atrás do Fluig Identity, que a sessão expirada não volta como 401, e sim como HTTP 200 com o formulário SAML — e o servidor passava horas devolvendo a página de SSO até ser reiniciado. A correção refaz o login uma única vez por chamada, agrupa logins simultâneos num só e amarra o cache SOAP ao cookie, sem abrir mão da proteção contra bloqueio no AD.
Diagnosticou que o fetch do Node deriva o SNI e a verificação do certificado da URL, não do
header Host — então chamar pelo IP fixado quebrava toda requisição HTTPS. O sintoma parecia
instabilidade de rede, e foi tratado como tal por bastante tempo antes de ele apontar a causa.
A correção foi estendida no merge para o cliente SOAP, onde o mesmo defeito existia.
Do fork dele vieram também três decisões de projeto que este repositório adotou:
configuração sem defaults (endpoint ou senha embutidos são vazamento esperando acontecer),
modo somente leitura e --list auditável sem credencial — a ideia de que a superfície de
ferramentas precisa ser inspecionável antes de o servidor receber uma senha, hoje verificada no CI.
Fluiggers (MIT, © Bruno Gasparetto e
colaboradores) — a extensão VS Code da comunidade. Daqui vem o comportamento que
src/datasetFiltros.js reproduz: a tradução de condições de consulta de
dataset para as constraints do Fluig. As rotas de eventos de processo em src/client.js
usam o FluiggersWidget, publicado pelo projeto deles (fluig-widget-helper).
Licença
MIT.
TOTVS, Fluig e RM/Corpore são marcas da TOTVS S.A. Este projeto é independente e não é afiliado, patrocinado nem endossado pela TOTVS.
Available Tools
98 toolsfluig_card_children_getA
Lê as LINHAS PAI-FILHO (tabelas do formulário) de um card, com rowId e tableId — o que fluig_process_card_get NÃO dá (ele devolve o card achatado, com campo___N misturado). É o caminho para conferir rateio, itens de nota, lista de e-mails. A ordem do servidor não é determinística; esta tool já devolve ordenado por rowId.
Inputs: env (required), cardId (required), documentId (required).
fluig_card_html_urlA
URL renderizada de uma ficha de formulário. ⚠️ A URL carrega TOKEN DE ACESSO ao documento — não repassar nem registrar em log. ⚠️ Esta rota NÃO aceita cardId. Os parâmetros são documentId/documentVersionId (ficha avulsa) ou processId+processInstanceId (ficha de uma solicitação). Combinação inválida devolve HTTP 500, não 400 — todos os parâmetros são "opcionais" na spec, mas o servidor exige um conjunto coerente.
Inputs: env (required), mobile, editable, processId, +5 more.
fluig_card_listA
Lê REGISTROS (cards) de um formulário sem passar por BPM e sem SQL. ⚠️ pageSize default desta rota é 100 (não 1000 como no BPM). documentId é o id do FORMULÁRIO.
Inputs: env (required), documentId (required), page, fields, +1 more.
fluig_card_saveA
⚠️ ESCRITA. Cria/altera/apaga registro de formulário e LINHAS FILHAS, headless. acao: criar | atualizar | apagar | criarLinha | editarLinha | apagarLinha. Use fluig_form_fields antes para acertar os nomes de campo. ⚠️ apagar/apagarLinha são destrutivos.
Inputs: env (required), acao (required), confirm (required), documentId (required), +3 more.
fluig_dataset_adminA
Metadados ADMIN de dataset (o que a tela Datasets mostra): serverOffline, updateInterval, jobLastExecution/jobNextExecution, syncStatus, active/draft. Com code=true traz também o código-fonte. É por AQUI que se descobre se um dataset está agendado — agendamento = serverOffline:true + trigger no Quartz.
Inputs: env (required), code, search, pageSize.
fluig_dataset_deleteA
⚠️ ESCRITA/DESTRUTIVO. Apaga um dataset CUSTOM do servidor (ECMDatasetService.deleteDataset). Serve para o MCP limpar os datasets descartáveis que ele mesmo cria (ds_claude_*). Exige confirm=true.
Inputs: env (required), datasetId (required), confirm.
fluig_dataset_draft_checkA
Existe RASCUNHO pendente neste dataset? Guarda-corpo para chamar ANTES de fluig_dataset_save: gravar por cima atropela em silêncio o trabalho não publicado de outro dev.
Inputs: env (required), datasetId (required).
fluig_dataset_enableA
⚠️ ESCRITA. Ativa (active=true) ou desativa um dataset. O id vai no PATH, sem corpo — a rota é por AÇÃO NOMEADA, não REST por id. ⚠️ NÃO confundir com agendamento: isto é o flag active, não serverOffline. Um dataset ativo e sem serverOffline continua sem sincronizar.
Inputs: env (required), ativo (required), datasetId (required), confirm.
fluig_dataset_getB
Retorna o código-fonte de um dataset CUSTOM (loadDataset).
Inputs: env (required), datasetId (required), destino, maxChars.
fluig_dataset_historyA
HISTÓRICO de versões de um dataset, com o código-fonte — o "git log" embutido do Fluig. ⚠️ Esta rota ignora fields/expand (não tem @ApiFilter), então cada item traz o fonte inteiro (~8 KB). Por isso pageSize=3 e fonte truncado por padrão. ⚠️ O histórico é IMUTÁVEL pela API: senha que já esteve num dataset continua legível aqui.
Inputs: env (required), datasetId (required), order, truncar, +1 more.
fluig_dataset_listA
Lista datasets do servidor (id + tipo). Aceita filtro (substring em id/descrição).
Inputs: env (required), filtro.
fluig_dataset_restoreA
⚠️ ESCRITA. ROLLBACK de um dataset para versão anterior. Não é destrutivo: a versão atual permanece no histórico. É o que torna editar dataset uma operação reversível — use junto de fluig_dataset_history (para achar a versão) e fluig_dataset_draft_check.
Inputs: env (required), confirm (required), version (required), datasetId (required).
fluig_dataset_runA
Executa um dataset (form ou custom) e retorna as linhas. Filtre no SERVIDOR com filters (campo + condição: eq, ne, contains, starts, ends, between) e serverLimit (sqlLimit) em vez de trazer tudo e cortar com limit. match any = OU só entre as condições positivas: ne continua excluindo (E) mesmo com any. Em dataset CUSTOM, filters/constraints/serverLimit/order só valem se o código do dataset tratar constraints e sortFields; confira o resultado. Se vier limitadoPeloServidor, total é o teto do serverLimit e pode haver mais linhas. constraints aceita constraints cruas do getDataset.
Inputs: env (required), name (required), limit, match, +5 more.
fluig_dataset_saveC
Cria ou atualiza (upsert) um dataset CUSTOM com o código informado.
Inputs: env (required), code (required), datasetId (required), confirm, +1 more.
fluig_dataset_state_setA
⚠️ ESCRITA. Ativa, inativa ou converte para CUSTOM um dataset. ⚠️ desativar é LÓGICO (IS_ACTIVE=false), não apaga — para apagar use fluig_dataset_delete. ⚠️ NÃO confundir com agendamento: isto é o flag active, não o serverOffline. Um dataset ativo e sem serverOffline continua sem sincronizar.
Inputs: env (required), acao (required), confirm (required), datasetId (required).
fluig_dataset_structureA
Retorna a ESTRUTURA de um dataset (colunas + tipos) SEM executá-lo — útil para descobrir o schema antes de montar um fluig_dataset_run. Rota descoberta por eng. reversa do app oficial e confirmada ao vivo.
Inputs: env (required), datasetId (required).
fluig_db_queryA
SELECT no banco do Fluig (TOTVSECM, /jdbc/AppDS). Lê qualquer tabela: event_proces (eventos de processo, SEM widget), DEF_PROCES, FDN_*, etc. ⚠️ A CONSULTA é read-only, mas a TOOL NÃO É: para executar SQL arbitrário o Fluig exige que ele viva num dataset, então cada chamada grava ds_claude_dbquery no servidor e registra o SQL em FDN_DATASETHISTORY (imutável pela API). Em env="prod" exige confirm=true por causa disso.
Inputs: env (required), sql (required), confirm.
fluig_deadline_calcA
Calcula prazo em HORÁRIO ÚTIL pelo calendário do servidor. modo: duracao | fim | inicio. ⚠️ A API trabalha em SEGUNDOS, mas o deadlineTime do modelo de processo é gravado em MINUTOS — passar um pelo outro erra o prazo por 60×. Use duracaoEmMinutos que a tool converte. Obrigatórios: duracao = startDate+endDate · fim = startDate+segundos · inicio = endDate+segundos.
Inputs: env (required), modo (required), endDate, localId, +4 more.
fluig_deploy_listB
Lista os processos disponíveis para export/deploy no servidor (via SOAP WorkflowEngineService + token). Útil p/ validar o deploy e para o round-trip de validação.
Inputs: env (required).
fluig_deploy_processB
⚠️ DEPLOY estrutural de PROCESSO (BPMN) headless via SOAP WorkflowEngineService (importProcess+releaseProcess, token do TokenService) — SEM Fluig Studio. Publica o .ecm30.xml (…). Exige confirm=true. 1º uso: validar com round-trip (baixar um processo real e re-deployar idêntico).
Inputs: env (required), confirm (required), xml, isNew, +4 more.
fluig_form_createA
⚠️ ESCRITA. Cria um FORMULÁRIO (fichário) novo a partir de um ZIP com o HTML. parentId é a pasta do GED onde ele nasce — descubra com fluig_ged_list.
Inputs: env (required), confirm (required), zipPath (required), formName (required), +1 more.
fluig_form_eventsB
Retorna os eventos de customização de um formulário (displayFields, validateForm, etc.).
Inputs: env (required), documentId (required).
fluig_form_fieldsA
Nomes de campo VÁLIDOS de um formulário (SOAP getFormFields). Pré-requisito de qualquer escrita em card: sem isto, gravar campo é adivinhar nome. ⚠️ O campo chama-se field no SOAP e fieldId no REST v2.
Inputs: env (required), documentId (required).
fluig_form_fileC
Retorna o conteúdo (texto) de um arquivo específico do formulário.
Inputs: env (required), version (required), fileName (required), documentId (required).
fluig_form_filesC
Lista os nomes de arquivos (HTML/JS/CSS) de um formulário.
Inputs: env (required), documentId (required).
fluig_form_fullA
Lê um formulário INTEIRO: metadados + todos os arquivos (texto) + eventos. Use antes de editar/publicar.
Inputs: env (required), version (required), documentId (required).
fluig_form_listC
Lista formulários (documentId, versão, descrição, dataset). Filtro opcional.
Inputs: env (required), filtro.
fluig_form_saveA
Publica/atualiza um formulário (nova versão revertível). Manda TODOS os arquivos+eventos. files:[{fileName,content}], events:[{eventId,eventDescription}]. Faça fluig_form_full antes e altere só o que precisa.
Inputs: env (required), files (required), documentId (required), datasetName (required), +5 more.
fluig_ged_downloadB
Baixa o conteúdo de um documento do GED para arquivo local, junto dos metadados. ⚠️ O Content-Type do /stream NÃO é confiável (a implementação reusa o helper dos thumbnails) — confie no Content-Disposition e na extensão.
Inputs: env (required), destino (required), documentId (required).
fluig_ged_listA
Navega o GED: documentos e subpastas de uma pasta. ⚠️ order é OBRIGATÓRIO no servidor — sem ele a rota devolve 500, não 400. Esta tool já manda um default seguro. pageSize default aqui é 100.
Inputs: env (required), parentId (required), page, order, +1 more.
fluig_ged_pathA
Breadcrumb do GED: resolve o caminho de um documento desde a raiz. Use para descobrir onde um documento realmente está antes de publicar algo ao lado dele.
Inputs: env (required), documentId (required), rootId.
fluig_ged_uploadA
⚠️ ESCRITA. Sobe um arquivo local para uma pasta do GED e publica. Usa a rota de UMA chamada de propósito: a de duas etapas renomeia o arquivo para [epoch]nome e descarta campos em silêncio.
Inputs: env (required), confirm (required), parentId (required), caminhoLocal (required), +1 more.
fluig_globalevent_deleteA
⚠️ ESCRITA/DESTRUTIVO e IRREVERSÍVEL. Apaga UM evento global pelo id (eventId); os demais eventos não são afetados. Sem confirm=true devolve o DRY-RUN: o evento que seria apagado, com o código, sem apagar nada. Com confirm=true apaga e devolve o código apagado (eventoApagado), para restaurar com fluig_globalevent_save.
Inputs: env (required), eventId (required), confirm.
fluig_globalevent_listC
Lista os eventos globais do servidor.
Inputs: env (required).
fluig_globalevent_saveC
Cria ou atualiza um evento global.
Inputs: env (required), code (required), eventId (required), confirm.
fluig_job_addA
⚠️ ESCRITA. Cria um job agendado. Para sincronizar dataset use jobType=23 e informe datasetId. expression é cron Quartz — o padrão da casa para integração diária é "0 00 02 1/1 * ? *" (02:00 todo dia). ⚠️ PRÉ-REQUISITO: o dataset precisa estar com serverOffline=true (tela /portal/p/1/datasetsync?datasetId=X, toggle "Sincronizar com o servidor"); sem isso o job é criado mas não sincroniza nada. Confira o resultado com fluig_jobs_list ou lendo QRTZ_TRIGGERS por fluig_db_query.
Inputs: env (required), jobType (required), expression (required), description (required), +2 more.
fluig_job_deleteA
⚠️ DESTRUTIVO. Apaga job(s) agendado(s). Pegue jobId e jobTypeInt com fluig_jobs_list. ⚠️ jobType é OBRIGATÓRIO — sem ele o servidor devolve NullPointerException (erro que já custou várias tentativas). Confira depois em QRTZ_TRIGGERS por fluig_db_query: a grid da tela mostra estado velho.
Inputs: env (required), jobId (required), jobType (required), confirm.
fluig_job_runA
Dispara um job agendado sob demanda, sem esperar o cron. Útil para validar um agendamento novo. Confirme o efeito em QRTZ_TRIGGERS.PREV_FIRE_TIME e SERV_DATASET.LAST_REMOTE_SYNC.
Inputs: env (required), jobId (required), jobType (required), confirm.
fluig_jobs_listA
Lista os jobs agendados pela aplicação (Agendador de Tarefas). Passe datasetId para ver só os DatasetSyncJob daquele dataset. É a leitura equivalente a consultar QRTZ_TRIGGERS, mas pela aplicação.
Inputs: env (required), rows, datasetId.
fluig_pingB
Testa autenticação e sessão no servidor Fluig configurado.
Inputs: env (required).
fluig_process_active_statesA
Lista os estados ATIVOS (nós onde a solicitação está agora) — getAllActiveStates.
Inputs: env (required), processInstanceId (required).
fluig_process_activities_resumeA
HEATMAP do processo: quantas instâncias estão paradas em cada atividade, com os contadores de SLA. Responde "onde o fluxo está entalado" numa chamada. ⚠️ Só esta rota /resume aceita expand/interactives — as irmãs não. ⚠️ BUG DO PRODUTO: falha com javax.ejb.EJBException em ALGUNS processos (medido em produção: processo-a e processo-b falham; processo-c e processo-d funcionam), independente dos parâmetros. Se cair nisso, use fluig_task_list/fluig_request_list filtrando por processo.
Inputs: env (required), processId (required), processVersion (required), interactives.
fluig_process_actual_threadC
Retorna a thread atual de um stateSequence de uma solicitação (getActualThread).
Inputs: env (required), stateSequence (required), processInstanceId (required).
fluig_process_attachment_downloadB
Baixa o BINÁRIO de um anexo de solicitação para um arquivo local. ⚠️ Usa a rota singular de propósito: na rota plural do produto os parâmetros user e replacedUser estão ambos anotados @QueryParam("user") — um bug que faz replacedUser não ter efeito.
Inputs: env (required), destino (required), processInstanceId (required), attachmentSequence (required).
fluig_process_attachmentsC
Lista os anexos de uma solicitação (getAttachments).
Inputs: env (required), processInstanceId (required).
fluig_process_availableB
Lista os processos que o usuário logado pode INICIAR (getAvailableProcess).
Inputs: env (required).
fluig_process_available_usersC
Usuários aptos a receber a tarefa num estado da solicitação (getAvailableUsers).
Inputs: env (required), state (required), processInstanceId (required), threadSequence.
fluig_process_available_users_startA
Usuários aptos a receber a 1ª tarefa ao INICIAR um processo (getAvailableUsersStart).
Inputs: env (required), state (required), processId (required), threadSequence.
fluig_process_cancelA
⚠️ CANCELA/encerra uma solicitação (cancelInstance SOAP). Escrita — exige confirm=true. Assinatura validada ao vivo (o servidor de homologação 1.8.2).
Inputs: env (required), confirm (required), cancelText (required), processInstanceId (required).
fluig_process_card_getA
Lê TODO o cardData de uma solicitação em andamento (getInstanceCardData) -> {campo:valor}. Use antes de fluig_process_move p/ reenviar o card completo (o move SUBSTITUI o card).
Inputs: env (required), processInstanceId (required).
fluig_process_card_valueB
Lê UM campo do card de uma solicitação (getCardValue).
Inputs: env (required), cardFieldName (required), processInstanceId (required).
fluig_process_convert_instancesA
🛑 A OPERAÇÃO MAIS DESTRUTIVA DO MCP. Migra solicitações ABERTAS para uma nova versão do processo. Converter FINALIZA as tarefas pendentes e cria novas no destino — mapeamento errado significa trabalho em curso PERDIDO, sem volta. Chame primeiro SEM confirm para ver o dryRun com o mapeamento, revise par a par, e só então confirme. Descubra as instâncias com fluig_request_list e as atividades com fluig_process_def_states. Nunca rode em lote sem revisar.
Inputs: env (required), newStates (required), newVersion (required), actualStates (required), +2 more.
fluig_process_createA
⚠️ ESCRITA. Cria o esqueleto de um processo novo. Use para processo DESCARTÁVEL de teste (prefixo ZZ_TESTE_*) em vez de experimentar em processo com solicitações abertas.
Inputs: env (required), confirm (required), processId (required), processDescription (required), +2 more.
fluig_process_def_statesA
DEFINIÇÃO do fluxo: atividades, tipo BPMN, prazo e mecanismo de atribuição de cada etapa. Diferente de fluig_process_states, que é runtime (estados de UMA solicitação). ⚠️ Sem expand a configuração vem vazia — esta tool já manda os expands certos. ⚠️ periodId, initialState, forecastedEffort e a expressão do gateway NÃO existem na REST v2: para esses, use fluig_process_export_xml. Não conclua que "a API não tem".
Inputs: env (required), processId (required), processVersion (required), interactives, +1 more.
fluig_process_diagram_getA
Baixa o SVG do diagrama publicado. Fecha a assimetria com fluig_process_diagram_set: até agora dava para sobrescrever o desenho sem nunca ter lido o original. Informe destino para salvar em arquivo; sem destino devolve o SVG inline.
Inputs: env (required), processId (required), processVersion (required), destino.
fluig_process_diagram_setA
⚠️ ESCRITA. Atualiza o SVG do diagrama de uma versão do processo (PUT .../diagram). Necessário depois de mudar a topologia no XML, senão o desenho publicado fica desatualizado. Exige confirm=true.
Inputs: env (required), svg (required), processId (required), processVersion (required), +1 more.
fluig_process_error_logA
FORENSE de solicitação travada: o que o motor tentou executar e com qual payload (PROCES_WORKFLOW_ERROR_LOG). É a primeira parada quando uma solicitação "sumiu" ou parou sem explicação. ⚠️ Passa por fluig_db_query, que grava dataset no servidor — em env="prod" exige confirm=true.
Inputs: env (required), processInstanceId (required), confirm.
fluig_process_event_getB
Lê o código de um evento de PROCESSO (serviceTask/beforeTaskSave) via event_proces — sem widget.
Inputs: env (required), version (required), eventName (required), processCode (required).
fluig_process_event_setA
⚠️ Grava um evento de PROCESSO na event_proces (in-place, com BACKUP automático). Exige confirm=true. Use só em homolog e com consciência.
Inputs: env (required), code (required), confirm (required), version (required), +2 more.
fluig_process_event_set_xmlA
⚠️ ESCRITA. Grava um evento de PROCESSO pelo caminho SUPORTADO: exporta o XML da definição, troca (ou cria) o eventDescription e reimporta — gerando NOVA VERSÃO revertível. Substitui com segurança o fluig_process_event_set (UPDATE direto em event_proces). Use dryRun=true primeiro. Exige confirm=true.
Inputs: env (required), code (required), eventId (required), processId (required), +4 more.
fluig_process_events_xmlA
Lê os eventos de PROCESSO (beforeStateEntry, afterTaskCreate, afterProcessFinish...) com o código-fonte, direto do XML da definição. NÃO precisa do FluiggersWidget nem de ler a tabela event_proces — é a fonte de verdade oficial.
Inputs: env (required), processId (required), destino, version, +1 more.
fluig_process_export_xmlA
Baixa o XML da definição de um processo (.ecm30.xml) pela REST v2. Contém TUDO: atividades (ProcessState), transições (ProcessLink), campos e o CÓDIGO dos eventos de processo (WorkflowProcessEvent/eventDescription). Base para editar processo por código.
Inputs: env (required), processId (required), destino, version, +1 more.
fluig_process_formidC
Retorna o documentId do formulário associado a um processo (getProcessFormId).
Inputs: env (required), processId (required).
fluig_process_historyB
Histórico completo de movimentações da solicitação (getHistories -> quem moveu, quando, de/para qual atividade, comentários).
Inputs: env (required), processInstanceId (required).
fluig_process_imageB
Retorna a imagem do fluxo do processo (getProcessImage) — string (URL/base64 conforme servidor).
Inputs: env (required), processId (required).
fluig_process_import_xmlA
⚠️ ESCRITA ESTRUTURAL. Faz DEPLOY da definição de processo (.ecm30.xml) pela REST v2. UMA chamada substitui a sequência SOAP createWorkFlowProcessVersion→importProcess→releaseProcess (o servidor faz os 3 internamente). release=true publica junto. Exige confirm=true. Valide antes com round-trip (export → import idêntico).
Inputs: env (required), xml (required), processId (required), formId, +2 more.
fluig_process_moveA
SALVA e MOVE uma solicitação existente (saveAndSendTask SOAP). ⚠️ cardData SUBSTITUI o card — envie TODOS os campos que devem persistir (INICIO + etapas), senão são apagados. Faça fluig_process_take antes se a tarefa for de POOL.
Inputs: env (required), choosedState (required), processInstanceId (required), confirm, +4 more.
fluig_process_move_restA
⚠️ ESCRITA. Movimenta a solicitação pela REST v2 (retorno tipado, trata 412). Alternativa a fluig_process_move (SOAP). ⚠️ targetState/movementSequence são int primitivos: OMITIR envia 0, nunca null — com gateway no fluxo, informe targetState sempre. ⚠️ A semântica de formFields NÃO está confirmada: trate como SUBSTITUIÇÃO e mande o card completo (leia antes com fluig_process_card_get). O 412 volta como dado, com as opções válidas.
Inputs: env (required), corpo (required), confirm (required), processInstanceId (required).
fluig_process_possible_assigneesA
Quem PODE receber a próxima atividade, com filtro por nome e paginação. Chame isto quando um move for recusado com HTTP 412 (destinatário inválido) — é aqui que se descobre quem serve.
Inputs: env (required), processInstanceId (required), pattern, pageSize, +1 more.
fluig_process_searchC
Busca processos por texto (searchProcess). favorite=true retorna só os favoritos do usuário.
Inputs: env (required), content (required), favorite.
fluig_process_startA
INICIA uma solicitação (startProcess SOAP). cardData={campo:valor} do formulário. choosedState=estado destino ao concluir o início (ex.: gateway seguinte). Autentica como o usuário (precisa do papel de início). Retorna {processInstanceId(iProcess), rows}.
Inputs: env (required), processId (required), choosedState (required), confirm, +4 more.
fluig_process_statesC
Lista os estados válidos de movimentação (choosedState) a partir do estado atual da solicitação (getAvailableStates -> IntArray).
Inputs: env (required), processId (required), processInstanceId (required).
fluig_process_states_detailB
Estados-destino COM detalhe (nome/tipo) a partir do estado atual (getAvailableStatesDetail). Mais rico que fluig_process_states.
Inputs: env (required), processId (required), processInstanceId (required), threadSequence.
fluig_process_takeB
Assume/toma a tarefa (takeProcessTask) — necessário p/ tarefas de POOL/papel antes de mover.
Inputs: env (required), processInstanceId (required), confirm.
fluig_process_versionC
Versão ATIVA de um processo via SOAP (getWorkFlowProcessVersion). Funciona SEM o FluiggersWidget.
Inputs: env (required), processId (required).
fluig_process_version_deleteA
⚠️ DESTRUTIVO. Apaga uma versão do processo (faça withdraw antes se estiver liberada). ATENÇÃO: apagar a ÚLTIMA versão remove a DEFINIÇÃO DO PROCESSO inteira. Exige confirm=true.
Inputs: env (required), processId (required), confirm, version.
fluig_process_version_releaseA
⚠️ ESCRITA. PUBLICA uma versão de processo que já existe em edição, sem reimportar XML. Fecha o ciclo que fluig_process_import_xml e fluig_process_event_set_xml abrem (os dois criam versão SEM publicar). Omita processVersion para publicar a última (rota /latest/release). Troca a versão ativa para todas as NOVAS solicitações; as em voo continuam na versão antiga.
Inputs: env (required), confirm (required), processId (required), processVersion.
fluig_process_versionsA
Lista as versões de um processo (número, formId, se está em edição). Use antes de retirar/apagar versão ou para saber qual versão exportar.
Inputs: env (required), processId (required).
fluig_process_version_withdrawA
⚠️ ESCRITA. RETIRA do ar (withdraw) uma versão do processo — inverso do release. É o jeito de REVERTER um deploy ruim, e é obrigatório antes de apagar uma versão liberada. Exige confirm=true.
Inputs: env (required), processId (required), confirm, version.
fluig_request_getA
Uma SOLICITAÇÃO pelo processInstanceId, com formRecordId (= cardId) e formId. É o caminho de processo → formulário: pegue o formRecordId aqui e leia os dados com fluig_card_children_get / fluig_card_list.
Inputs: env (required), processInstanceId (required).
fluig_request_listA
Lista SOLICITAÇÕES por processo/status/requisitante/faixa de data. Traz formRecordId (= cardId) e formId SEM precisar de expand — é a ponte de processo para formulário. ⚠️ Aqui processId é array repetido (diferente de fluig_task_list, que usa CSV).
Inputs: env (required), page, expand, fields, +2 more.
fluig_rest_getB
Escape hatch: GET autenticado num caminho arbitrário da API do Fluig.
Inputs: env (required), path (required).
fluig_rest_postB
Escape hatch: POST autenticado. body como string JSON; form=true para x-www-form-urlencoded.
Inputs: env (required), path (required), body, form, +1 more.
fluig_rm_dataserver_schemaA
Contrato (schema) de um DataServer do RM — leia ANTES de tentar gravar no ERP. Roda via ServiceManager → wsDataServer.getSchema, o padrão de datasets customizados. ⚠️ Grava um dataset para executar; em env="prod" exige confirm=true.
Inputs: env (required), dataServerName (required), confirm, contexto.
fluig_rm_db_execA
⚠️ Executa INSERT/UPDATE/DELETE no RM/Corpore (/jdbc/Corpore). Exige confirm=true. OBS: a conexão /jdbc/Corpore costuma ser READ-ONLY p/ tabelas do RM — escrita de laudo etc. vai pelo DataServer (RhuPessoaData), não por aqui.
Inputs: env (required), sql (required), confirm (required).
fluig_rm_db_queryA
SELECT DIRETO no banco do RM/Corpore (/jdbc/Corpore). Lê qualquer tabela do RM (VPCOMPL, PFUNCAOCOMPL, PPESSOA, PFUNC, TMOV...) sem precisar de sentença WS.###. ⚠️ Mesma ressalva do fluig_db_query: a consulta é read-only, mas a tool grava ds_claude_rmdbquery no servidor para executá-la. Em env="prod" exige confirm=true. Se existir sentença WS.### para o que você quer, prefira fluig_rm_query — essa não grava nada.
Inputs: env (required), sql (required), confirm.
fluig_rm_queryA
Consulta o RM (Corpore) via ds_generic_rm_sql + sentença homologada WS.###. READ-ONLY DE VERDADE: chama o dataset direto pelo dataset-handle/search, sem gravar nada no servidor. É o caminho preferido para ler o RM — use no lugar de fluig_rm_db_query sempre que houver sentença. Informe os campos esperados.
Inputs: env (required), fields (required), codSentenca (required), params, +2 more.
fluig_rm_save_recordA
🛑 ESCRITA NO ERP. Grava no RM pela BUSINESS LAYER (DataServer.saveRecord) — a forma CERTA, que respeita fórmula, consistência, numeração e rateio, tudo que um UPDATE direto atropela. Prefira esta a fluig_rm_db_exec. Chame primeiro SEM confirm para ver o dryRun; valide o XML contra fluig_rm_dataserver_schema e só então confirme.
Inputs: env (required), xml (required), dataServerName (required), confirm, +1 more.
fluig_service_listA
Serviços de integração cadastrados no Fluig (nome exato, URL, tipo, driver) — útil para descobrir como o ambiente fala com o RM e com terceiros. 🔒 A projeção é FIXA e não inclui colunas de credencial, de propósito. ⚠️ Passa por fluig_db_query (grava dataset); em env="prod" exige confirm=true.
Inputs: env (required), confirm.
fluig_session_resetA
Descarta a sessão em memória e faz login novo, sem reiniciar o MCP. Use quando uma chamada devolver a PÁGINA DE LOGIN no lugar do dado, ou FDNUnauthenticatedAccessDeniedException.
Inputs: env (required).
fluig_task_countA
Só a CONTAGEM de tarefas pendentes — responde "quantas estão paradas" sem baixar a lista.
Inputs: env (required), processId.
fluig_task_listA
CAIXA DE TAREFAS: o que está pendente, o que venceu e quem está segurando. ⚠️ pageSize default do BPM v2 é 1000 (máx 1000) — aqui é 100 para não estourar contexto; aumente conscientemente. Em /v2/tasks o processId vira CSV (é assim que o servidor lê).
Inputs: env (required), page, expand, fields, +2 more.
fluig_user_replacementsA
Lista as SUBSTITUIÇÕES de usuário configuradas (quem responde por quem, com período). Explica por que uma tarefa foi parar em outra pessoa.
Inputs: env (required), limit.
fluig_versionA
Diagnóstico do MCP: ambiente em uso, host, cookies da sessão e quem está autenticado. Primeira coisa a chamar quando o comportamento não bate com o esperado — responde "qual servidor eu estou realmente falando" sem adivinhação.
Inputs: env (required).
fluig_workflow_checkA
Verifica se o FluiggersWidget está instalado (necessário p/ eventos de processo via API).
Inputs: env (required).
fluig_workflow_events_getA
Lê os eventos de um processo (requer FluiggersWidget). Use fluig_workflow_check antes.
Inputs: env (required), version (required), processId (required).
fluig_workflow_events_updateC
Grava eventos de um processo (requer FluiggersWidget). events = [{name, contents}].
Inputs: env (required), events (required), version (required), processId (required), +1 more.
fluig_workflow_exporterA
DOSSIÊ completo de uma solicitação num artefato só (histórico, formulário, anexos). ⚠️ anonymizeForms é OBRIGATÓRIO aqui: o default do servidor é TRUE e anonimiza os formulários em silêncio — você procuraria o dado achando que sumiu. Informe destino para baixar o ZIP.
Inputs: env (required), anonymizeForms (required), processInstanceId (required), destino.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 98 tools
The set contains many overlapping alternatives: fluig_dataset_enable vs fluig_dataset_state_set, fluig_process_states vs fluig_process_states_detail, fluig_process_event_set vs fluig_process_event_set_xml, and fluig_process_move vs fluig_process_move_rest. Descriptions often explain the differences, but only after long warnings; an agent must read carefully to avoid misselection. Several domain boundaries also blur between process XML, deploy, and event-editing tools.
Almost every tool uses the same fluig_ prefix and snake_case naming, with predictable domain grouping such as process, dataset, card, and ged. There are deviations from a pure verb_noun pattern: some names are noun phrases (fluig_process_history, fluig_dataset_admin, fluig_card_html_url) and some use generic verbs, but the overall scheme is still readable and consistent.
Ninety-eight tools is far beyond a well-scoped MCP surface and creates an overwhelming selection problem. Many tools are near-duplicates or escape hatches, so the count does not reflect distinct, necessary capabilities.
The surface is very broad, covering process lifecycle, datasets, forms, cards, GED, jobs, RM integration, diagnostics, and destructive operations with dry-run warnings. Minor gaps may exist, such as GED delete or some administrative cleanup operations, but the domain is extensively covered.
Maintenance
Related MCP Connectors
Connect, monitor, and control AI agents — tasks, approvals, schedules, and governance.
Build, validate, deploy — HTTP APIs, cron jobs, webhooks and MCP tools — from your AI client.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables complete VTEX e-commerce platform integration through natural language, allowing management of catalog, inventory, pricing, promotions, orders, marketplace operations, checkout, customer data, and payment configurations via AI conversations.8419 npm2MIT
- AlicenseBqualityBmaintenanceExposes over 300 Operaton BPM REST operations as tools for AI agents to interact with the Operaton engine. It enables managing process deployments, instances, user tasks, and decision tables through natural language commands.10543 npmApache 2.0
- AlicenseAqualityBmaintenanceEnables AI assistants to compile AdvPL/TLPP sources, generate and apply patches, and inspect RPO of TOTVS Protheus servers via the TDS Language Server.133MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to compile AdvPL/TLPP sources, generate and apply patches, and inspect the RPO of TOTVS Protheus servers.14MIT