Grupo SygecomDocumentação SAGI / SGR / SGR Plus

Seus dados do sistema, em uma conversa no ChatGPT ou no Claude

Conheça a apresentação comercial Sygecom

Entenda como o MCP e a skill do Grupo Sygecom ajudam você a consultar os sistemas SAGI, SGR e SGR Plus. Faça perguntas em português e escolha o período, as filiais e os filtros da sua análise.

Seguro para usar: conexão protegida por HTTPS, login individual da sua empresa e ferramentas somente de leitura, com bloqueio de comandos de alteração de dados no MCP.

Somente consultas · login individual da sua empresa

1. O que são o MCP e a skill?

MCP: a conexão com os dados

É a ponte entre o assistente de IA (ChatGPT ou Claude) e a API do seu sistema. Depois do login, ele oferece ferramentas para buscar informações da empresa conectada e devolver os resultados da consulta.

Você pode escolher datas, filiais, produtos, clientes, fornecedores e outros filtros disponíveis nos dados.

Skill: as instruções para consultar bem

É o conjunto de orientações que ajuda o assistente a escolher as ferramentas, montar consultas e interpretar os resultados conforme os critérios do sistema.

Ela orienta, por exemplo, como separar unidades e moedas, tratar devoluções e percorrer todas as páginas de um relatório.

Fluxo: você faz uma pergunta no ChatGPT ou no Claude; a skill orienta a análise; o MCP consulta a API SAGI, SGR ou SGR Plus; os dados retornam para a resposta.
O MCP faz a consulta. A skill orienta como usar as ferramentas e apresentar a resposta.

Conectar o MCP e instalar a skill são etapas diferentes. A conexão disponibiliza as ferramentas; a skill acrescenta as orientações de uso. O pacote completo reúne os dois componentes.

As informações disponíveis dependem do sistema, da versão e dos módulos da sua empresa. Nas consultas financeiras e de serviços, quando esses módulos estiverem disponíveis, são utilizadas exclusivamente as versões Financeiro 3.0 e Serviço 3.0.

2. Como conectar ao ChatGPT

Você precisa de um login externo existente da API do sistema e de uma conta ChatGPT que permita conexões de desenvolvedor. A disponibilidade depende da conta e das regras do seu ambiente de trabalho.

  1. Abra Plugins no ChatGPT, clique no botão + e escolha Add custom MCP server (adicionar servidor MCP personalizado). Consulte o guia oficial da OpenAI se a sua interface for diferente.
  2. Informe o nome SAGI Consultas e o endereço MCP abaixo. Escolha OAuth como autenticação, quando solicitado.
  3. Na página de autorização do sistema, confira a conexão e entre com seu login da API. Autorize o acesso de consulta.
  4. Conclua em Create as a plugin, instale o plugin e abra uma nova conversa. Digite @ e selecione SAGI Consultas.
https://mcp.sagierp.com.br/mcp

Use esse endereço completo para a conexão. Esta página de documentação e o API Explorer têm outra finalidade.

Por que escolho OAuth se a API usa e-mail e senha?

O OAuth é fornecido pelo MCP, como ponte de autenticação. No ChatGPT, mantenha OAuth e use a descoberta automática quando disponível. A página mcp.sagierp.com.br/authorize pede o e-mail e a senha existentes da API. O MCP valida o login em api.sagierp.com.br/api/v1/auth e mantém o token da API no servidor; o ChatGPT ou o Claude recebe uma autorização própria para consultas. Não informe e-mail/senha nos campos client ID/client secret.

Se precisar de configuração manual: autorização https://mcp.sagierp.com.br/authorize; token https://mcp.sagierp.com.br/oauth/token; escopo sagi:read. Há descoberta OAuth, registro dinâmico e PKCE S256. Se a interface exigir client ID/secret obrigatórios, solicite a configuração de um cliente OAuth; não use credenciais da API nesses campos.

A conexão utiliza a empresa do seu login. Você pode consultar os dados de negócio das áreas autorizadas para seu usuário no SAGI/SGR/SGR Plus, nas filiais dessa empresa. Um menu autorizado libera a área correspondente; consultas entre áreas exigem acesso a todas elas. Pedir outra empresa no texto da conversa não muda a conexão.

Digite a senha somente na página de login. A senha não é armazenada pelo MCP. Os resultados solicitados são enviados ao ChatGPT para responder à pergunta.

2b. Como conectar ao Claude

O mesmo MCP funciona no Claude (claude.ai, Claude Desktop, aplicativo móvel e Claude Code), com o mesmo login da API e as mesmas permissões. Os conectores personalizados ficam disponíveis conforme o plano e as regras da sua conta ou organização Claude.

No claude.ai e no Claude Desktop

  1. Abra Configurações → Conectores e clique em Adicionar conector personalizado. Em contas Team ou Enterprise, o proprietário da organização adiciona o conector e os membros apenas se conectam. Consulte o guia oficial da Anthropic se a interface for diferente.
  2. Informe o nome SAGI Consultas e o endereço MCP abaixo. Deixe os campos de OAuth Client ID e Client Secret em branco: o Claude se registra automaticamente.
  3. Clique em Conectar, entre com seu login da API na página de autorização do sistema e autorize o acesso de consulta.
  4. Em uma conversa, abra o menu de ferramentas (ícone de conectores) e confirme que SAGI Consultas está ativo.
https://mcp.sagierp.com.br/mcp

No Claude Code

No terminal, adicione o servidor e depois autentique pelo comando /mcp dentro do Claude Code, que abre a página de login no navegador:

claude mcp add --transport http sagi-consultas https://mcp.sagierp.com.br/mcp

Skill no Claude

Baixe o pacote só da skill. No claude.ai ou Desktop, envie o ZIP em Configurações → Capacidades → Skills (o recurso de skills precisa estar habilitado na conta). No Claude Code, extraia a pasta sagi-consultas em ~/.claude/skills/.

Baixar skill SAGI Consultas para o Claude

Digite a senha somente na página de login. A senha não é armazenada pelo MCP. Os resultados solicitados são enviados ao Claude para responder à pergunta. Para reconectar, use Conectar em Configurações → Conectores ou /mcp no Claude Code.

3. Como usar a skill junto com o MCP no ChatGPT

A skill se chama SAGI Consultas e faz parte desta integração do Grupo Sygecom. O pacote abaixo contém as instruções, as referências de consulta, os exemplos SQL e os arquivos de conexão.

Baixar pacote MCP + skill SAGI Consultas

  1. Baixe e extraia o pacote. O administrador deve adicioná-lo a um marketplace local e disponibilizá-lo para instalação pelo diretório de plugins, conforme o guia oficial da OpenAI. O download sozinho não instala a skill.
  2. Verifique se a instalação inclui a skill sagi-consultas e a conexão MCP. Instalar somente a URL disponibiliza ferramentas, mas não carrega automaticamente as instruções da skill.
  3. Se sua conta oferecer apenas conexão por URL, você já pode testar as ferramentas do MCP. Para instalar o pacote completo, use o fluxo de plugins suportado pela conta ou solicite orientação ao responsável pelo ambiente.

Para testar a conexão, comece com este pedido:

Use a conexão SAGI Consultas para identificar minha empresa e filiais e criar dashboards de Estoque, Compra, Venda, Fiscal, Financeiro 3.0, Serviço 3.0, Transporte e Almoxarifado, com indicadores e ações para o dia a dia.

Estado da publicação: o MCP está disponível neste endereço HTTPS. O pacote ainda não está publicado nos diretórios oficiais da OpenAI e da Anthropic; a conexão atual é feita manualmente, como descrito acima. Quando as publicações forem aprovadas, esta página receberá os links oficiais de instalação.

Comece pelos dashboards de negócio

O assistente é orientado a sugerir dashboards de Estoque, Compra, Venda, Fiscal, Financeiro 3.0, Serviço 3.0, Transporte e Almoxarifado. Escolha uma área, período e filiais; você também pode fazer uma pergunta específica.

Cada card combina indicador, comparação e ação sugerida: o que mudou, onde merece atenção e o que avaliar hoje. Exemplos: reposição de materiais, concentração de fornecedores/clientes, documentos fiscais pendentes, vencimentos com saldo, medições por faturar, entregas atrasadas e consumo por setor.

Os indicadores dependem das fontes e regras da instalação. O assistente informa período, filtros, unidade/moeda e critério; não inventa metas ou valores. Sem informação suficiente, o card fica indisponível. Nenhuma sugestão altera o sistema.

Crie meu dashboard de Compra para o mês atual até hoje, compare com o mesmo intervalo do mês anterior e destaque oportunidades de negociação por produto e fornecedor. Mostre os critérios dos indicadores.

Cards, gráficos ou tabelas são apresentados na conversa conforme os recursos da interface. Um arquivo exportado retrata a extração; atualizar exige novas consultas. Não há promessa de painel permanente ou atualização automática.

4. Faça perguntas e informe os filtros

Você não precisa conhecer SQL. Diga o que deseja analisar, o período, as filiais e o nível de detalhe. Os nomes de filiais, datas e códigos usados abaixo são exemplos e podem ser substituídos pelos da sua empresa.

Compras e vendas

Mostre as compras deste ano, separadas por mês e produto, para as filiais que eu selecionar. Separe as unidades e mantenha as devoluções com sinal.

Também pode filtrar produto/subcódigo, fornecedor, cliente, boleto e outros campos documentados.

Estoque físico

Mostre o estoque físico da MATRIZ em 01/11/2026 às 12:00, com saldo, custo médio e valor total por produto.

Usa a mesma fonte da API oficial de produtos do SAGI, filial por filial. Peça uma filial, várias ou todas. Por padrão, todas as unidades de negócio da filial são somadas; para ver só uma, diga qual (por exemplo, “só a unidade E-SUCATA”). A resposta lista as unidades cadastradas em cada filial. Requer acesso ao menu de Estoque.

Notas fiscais

Liste as notas de saída do último mês e separe os valores por situação, incluindo as canceladas em um grupo próprio.

Informe se o período considera emissão, entrada/saída ou digitação. Série, modelo, CFOP e destinatário também podem ser filtrados.

Financeiro 3.0

Mostre as contas a pagar com vencimento neste mês, por filial e moeda, usando o saldo de listagem.

Lançamento, vencimento e pagamento são datas diferentes. Saldo de listagem e saldo de dashboard têm critérios próprios.

Serviço 3.0

Liste as medições emitidas no período informado, por cliente, filial e situação.

Você pode consultar contratos, prestações e itens. Uma medição não comprova faturamento ou recebimento.

Cadastros

Localize os fornecedores com RECICLAGEM no nome e os produtos com SUCATA na descrição.

Se houver mais de um cadastro parecido, o assistente deve mostrar as opções antes de escolher um código.

Outros módulos

Descubra as fontes de dados de contratos e ordens da minha empresa e prepare uma listagem com os filtros solicitados.

O assistente pode descobrir tabelas e campos reais dos módulos instalados. Cálculos dependem das regras documentadas do relatório.

Exemplo ilustrativo: uma pergunta sobre compras por mês e produto vira filtros de período, filial e unidade e uma tabela de resultados.
Exemplo de organização da pergunta e da resposta. Os valores da ilustração são fictícios.

As consultas não ficam limitadas a uma filial ou a um ano. Você escolhe os filtros disponíveis na fonte de dados. O catálogo serve como exemplo; não é necessário cadastrar cada SQL de leitura antes de consultar.

5. Como conferir a resposta

Se uma informação estiver ambígua, como a data usada no financeiro, o assistente poderá pedir o esclarecimento necessário antes de calcular.

Dúvidas frequentes

Posso alterar informações pelo ChatGPT ou pelo Claude?

Esta integração é somente de leitura. O MCP bloqueia comandos de gravação, ações operacionais e funções sem garantia de leitura. As consultas não baixam títulos, aprovam pagamentos, faturam medições nem alteram cadastros.

Preciso cadastrar ou aprovar cada consulta?

Não. Você pode usar filtros livres e SQL de leitura sem cadastro prévio. A proteção do MCP verifica a estrutura da consulta, as fontes e as funções utilizadas.

Por que uma consulta pode ser recusada por permissão?

O MCP verifica os menus do seu usuário na tabela PERMISSA do sistema. Sem menu autorizado na área, os dados dessa área ficam bloqueados. Por exemplo, sem acesso a um menu financeiro você não pode consultar o Financeiro 3.0. Mudanças de permissão passam a valer nas próximas chamadas, sem reconectar. Solicite a liberação ao administrador do SAGI. Fontes ainda sem área identificada precisam de mapeamento pela Sygecom. Verificações internas e consultas recusadas não descontam créditos.

A regra libera a área por um menu, com uma exceção: Cadastros respeita cada submenu separadamente. Ter acesso a Clientes permite consultar Clientes, mas não Fornecedores. Pedidos que juntam os dois exigem ambas as permissões. Prazos, Condições de pagamento e Descrição de bancos compartilhados com Financeiro não liberam Cadastros. O controle não replica restrições por campo ou registro.

Como funcionam filiais e unidades de negócio no estoque?

O estoque é consultado filial por filial (MATRIZ, FILIAL1, FILIAL2...). Pedindo uma filial ou todas, o resultado soma todas as unidades de negócio cadastradas em cada filial. Para ver apenas uma unidade, informe qual na pergunta. Na tela Status de Estoque do SAGI, quando há inventário e várias unidades marcadas, aparece só a unidade principal; para comparar com essa tela, peça a unidade principal da filial.

A skill acessa os dados sozinha?

Não. Ela contém orientações. O acesso aos dados é feito pelas ferramentas do MCP, depois da conexão e do login.

Uma resposta vazia significa erro?

Não. Uma consulta pode não encontrar registros no período. Falha de login, indisponibilidade ou consulta recusada deve aparecer como erro, sem inventar valores zero.

O que fazer se o login expirar?

Desconecte e reconecte SAGI Consultas pelo fluxo de autorização. Informe sua senha na página de login, sem enviá-la na conversa.

Por que um SELECT pode ser recusado?

Algumas funções podem gravar mesmo dentro de um SELECT. O MCP verifica funções e views e recusa construções sem garantia de leitura. Também pode recusar sintaxe ainda não suportada pelo validador; nesse caso, o assistente deve reescrever a consulta de forma suportada, sem contornar a proteção.

Qual sistema e quais módulos posso consultar?

Esta é a documentação da família SAGI / SGR / SGR Plus do Grupo Sygecom. Os dados e módulos disponíveis dependem da instalação da sua empresa. O assistente deve verificar as fontes reais antes de consultar e usar Financeiro 3.0 e Serviço 3.0 quando esses domínios estiverem disponíveis.

Planos e créditos de uso da API SAGI

A Sygecom cobra o uso da sua própria API e infraestrutura. Cada cliente utiliza sua própria conta/plano ChatGPT ou Claude; os créditos abaixo não são tokens OpenAI nem Anthropic.

Plano por usuárioMensalidadeCréditos por mêsMáximo por dia
GratuitoR$ 0Sem pacote mensal10
EssencialR$ 1493.000100
ProfissionalR$ 2999.000300
GestãoR$ 59930.0001.000

1 crédito por chamada de consulta de negócio bem-sucedida. Uma pergunta, dashboard ou sequência de páginas pode exigir várias chamadas. Login, erros, catálogo, contexto, esquema e verificações de segurança não debitam créditos. Não há restrição de área por plano; todos permitem leitura das áreas disponíveis da empresa.

Ao atingir o limite, o MCP bloqueia novas consultas e devolve uma mensagem com seu plano, consumo, motivo e data/hora da liberação. A cota diária reinicia às 00h de Brasília. No gratuito, voltam a ficar disponíveis 10 créditos. Nos planos pagos, o pacote mensal renova no aniversário mensal da ativação, às 00h de Brasília, enquanto o acesso estiver liberado; saldo mensal esgotado não renova na virada diária.

Peça: “Mostre meu plano, meus créditos e quando posso consultar novamente.” A ferramenta sagi_creditos é gratuita e permanece disponível mesmo quando a cota acabar. Não é necessário reconectar para renovar a cota. Sessões e dispositivos do mesmo usuário/empresa compartilham o saldo; mudar o plano não zera o consumo.

Créditos não acumulam entre períodos. O primeiro plano pago inicia o pacote mensal; trocar entre planos pagos preserva o aniversário e o consumo. Em meses curtos, o aniversário usa o último dia do mês. Não há compra automática de excedentes. Para contratar ou mudar de plano, fale com a Sygecom. O painel controla o acesso e o consumo; pagamentos seguem o atendimento comercial.

Referência técnica para consultas avançadas

Esta seção é para quem deseja conhecer as ferramentas e os SQLs. Você pode usar a integração apenas fazendo perguntas em português.

Ferramentas principais do MCP
FerramentaFinalidade
sagi_creditosVer plano, saldo, consumo e horário de liberação, mesmo quando a cota acabar.
sagi_contextoIdentificar a empresa, filiais, data e fontes de módulos 3.0.
sagi_tabelasDescobrir tabelas e views por parte do nome.
sagi_esquemaConsultar campos, tipos e chaves reais.
sagi_catalogoObter exemplos SQL que podem ser adaptados.
sagi_consultarExecutar SQL livre de leitura com paginação.
sagi_pesagensConsultar compras/entradas e vendas/saídas com período e filtros livres.
sagi_estoqueConsultar o estoque físico por filial na data e hora informadas (saldo, custo médio e valor), somando todas as unidades de negócio, ou uma unidade específica quando pedida.
sagi_notas_fiscaisConsultar notas fiscais com os filtros documentados.
sagi_financeiro30Consultar parcelas do Financeiro 3.0 com saldo de listagem.
sagi_servico30Consultar medições do Serviço 3.0.
39 exemplos SQL adaptáveis

Datas, nomes de filiais e códigos são exemplos. Substitua-os pelos filtros da sua consulta e confira os campos da base. Não é preciso reproduzir um SQL exato do catálogo.

Use colunas explícitas e aliases únicos. Para listas completas, prefira a paginação da ferramenta; LIMIT dentro do SQL restringe o conjunto original. CTEs, JOINs, subconsultas, agrupamentos e janelas de leitura são verificados pelo MCP.

G01 — Clientes por UF e status

analises-01 · analises.md

SELECT c.uf, c.status, COUNT(*) AS cadastros
FROM cag_cli c
GROUP BY c.uf, c.status
ORDER BY c.uf, c.status
G02 — Fornecedores por cidade/UF

analises-02 · analises.md

SELECT f.uf, f.cidade, COUNT(*) AS fornecedores
FROM cag_for f
WHERE f.fornecedor ILIKE '%RECICLAGEM%'
GROUP BY f.uf, f.cidade
ORDER BY fornecedores DESC, f.uf, f.cidade
G03 — Produtos por unidade e status

analises-03 · analises.md

SELECT p.un AS unidade, p.status, COUNT(*) AS produtos
FROM cag_pro p
GROUP BY p.un, p.status
ORDER BY p.un, p.status
G04 — Códigos/subcódigos repetidos no cadastro

analises-04 · analises.md

SELECT p.codpro, p.subcod, COUNT(*) AS registros
FROM cag_pro p
GROUP BY p.codpro, p.subcod
HAVING COUNT(*) > 1
ORDER BY registros DESC, p.codpro, p.subcod
G05 — Saldo de listagem por mês de vencimento, filial e moeda

analises-05 · analises.md

SELECT DATE_TRUNC('month', a.ite_pagrec_vencimento)::date AS mes,
   b.cab_pagrec_filial AS filial_id, b.cab_pagrec_pr AS tipo,
   b.moe_codigo AS moeda_codigo, COUNT(*) AS parcelas,
   SUM(COALESCE(a.ite_pagrec_valparcela, 0)
      + COALESCE(a.ite_pagrec_valjuros, 0)
      - COALESCE(a.ite_pagrec_valdesc, 0)
      - COALESCE(a.ite_pagrec_valpago, 0)) AS saldo_listagem
FROM fin_ite_pagrec a
JOIN fin_cab_pagrec b ON b.cab_pagrec_id = a.cab_pagrec_id
WHERE a.ite_pagrec_vencimento >= DATE '2026-01-01'
   AND a.ite_pagrec_vencimento < DATE '2027-01-01'
GROUP BY DATE_TRUNC('month', a.ite_pagrec_vencimento)::date,
   b.cab_pagrec_filial, b.cab_pagrec_pr, b.moe_codigo
ORDER BY mes, filial_id, tipo, moeda_codigo
G06 — Parcelas por pessoa, sem JOIN que multiplique valores

analises-06 · analises.md

SELECT b.cab_pagrec_tabori AS tabela_pessoa,
   b.orides_codigo, b.cab_pagrec_pr AS tipo,
   b.moe_codigo AS moeda_codigo, COUNT(*) AS parcelas
FROM fin_cab_pagrec b
JOIN fin_ite_pagrec a ON a.cab_pagrec_id = b.cab_pagrec_id
WHERE a.ite_pagrec_vencimento >= DATE '2026-01-01'
   AND a.ite_pagrec_vencimento < DATE '2027-01-01'
GROUP BY b.cab_pagrec_tabori, b.orides_codigo,
   b.cab_pagrec_pr, b.moe_codigo
ORDER BY parcelas DESC, tabela_pessoa, b.orides_codigo, tipo, moeda_codigo
G07 — Títulos com parcelas no período usando EXISTS

analises-07 · analises.md

SELECT b.cab_pagrec_id AS titulo_id, b.cab_pagrec_numtit AS titulo,
   b.cab_pagrec_pr AS tipo, b.cab_pagrec_filial AS filial_id
FROM fin_cab_pagrec b
WHERE EXISTS (SELECT 1 FROM fin_ite_pagrec a
   WHERE a.cab_pagrec_id = b.cab_pagrec_id
      AND a.ite_pagrec_vencimento >= DATE '2026-01-01'
      AND a.ite_pagrec_vencimento < DATE '2027-01-01')
ORDER BY b.cab_pagrec_id
G08 — CTE e ranking de cadastros por UF

analises-08 · analises.md

WITH totais AS (
   SELECT c.uf, COUNT(*) AS clientes
   FROM cag_cli c
   GROUP BY c.uf
)
SELECT t.uf, t.clientes,
   DENSE_RANK() OVER (ORDER BY t.clientes DESC) AS posicao
FROM totais t
ORDER BY t.clientes DESC, t.uf
G09 — Serviço 3.0 por mês de emissão e cliente

analises-09 · analises.md

SELECT DATE_TRUNC('month', m.medicao_data)::date AS mes,
   m.medicao_codcli AS cliente_codigo, m.medicao_status AS status,
   COUNT(*) AS medicoes
FROM sagi_medicao_serv3 m
WHERE m.medicao_data >= DATE '2026-01-01'
   AND m.medicao_data < DATE '2027-01-01'
GROUP BY DATE_TRUNC('month', m.medicao_data)::date,
   m.medicao_codcli, m.medicao_status
ORDER BY mes, cliente_codigo, status
G10 — Medições por aprovação e filial

analises-10 · analises.md

SELECT m.medicao_filial AS filial, m.medicao_aprovada AS aprovada,
   COUNT(*) AS medicoes
FROM sagi_medicao_serv3 m
WHERE m.medicao_data >= DATE '2026-01-01'
   AND m.medicao_data < DATE '2027-01-01'
GROUP BY m.medicao_filial, m.medicao_aprovada
ORDER BY filial, aprovada
G11 — Nota fiscal diretamente pelo cabeçalho

analises-11 · analises.md

SELECT n.nf_id, n.nf_numero, n.nf_serie, n.nf_modelo,
   n.nf_data_emi AS emissao, n.nf_filial AS filial, n.nf_nome_dest,
   n.nf_vnf AS valor_nota
FROM sagi_nf n
WHERE n.nf_data_emi >= DATE '2026-01-01'
   AND n.nf_data_emi < DATE '2027-01-01'
   AND TRIM(n.nf_filial) = 'FILIAL2'
ORDER BY n.nf_data_emi, n.nf_id
G12 — Vendas de várias filiais por produto/unidade

analises-12 · analises.md

SELECT a.filial, a.codpro, a.subcod, a.produto, a.unidade,
   SUM(a.peso_liquido) AS peso_liquido,
   SUM(a.valor_total) AS valor_movimentos
FROM syg_movimento_pesos('SAIDA', DATE '2026-01-01',
   CURRENT_DATE, 'IN(''MATRIZ'',''FILIAL2'')',
   NULL, NULL, NULL, FALSE, FALSE, NULL, NULL, FALSE) a
GROUP BY a.filial, a.codpro, a.subcod, a.produto, a.unidade
ORDER BY a.filial, a.codpro, a.subcod, a.produto, a.unidade
G13 — Devoluções de entrada por mês/produto

analises-13 · analises.md

SELECT DATE_TRUNC('month', a.data)::date AS mes,
   a.codpro, a.subcod, a.produto, a.unidade,
   COUNT(*) AS itens_devolucao, SUM(a.peso_liquido) AS peso_devolucao
FROM syg_movimento_pesos('ENTRADA', DATE '2026-01-01',
   CURRENT_DATE, 'TODAS', NULL, NULL, NULL,
   FALSE, FALSE, NULL, NULL, FALSE) a
WHERE a.origem = 'DEV-ENTRADA'
GROUP BY DATE_TRUNC('month', a.data)::date,
   a.codpro, a.subcod, a.produto, a.unidade
ORDER BY mes, a.codpro, a.subcod, a.produto, a.unidade
G14 — Peso mensal e diferença em relação ao mês anterior com dados

analises-14 · analises.md

WITH mensal AS (
   SELECT DATE_TRUNC('month', a.data)::date AS mes,
      a.codpro, a.subcod, a.unidade, SUM(a.peso_liquido) AS peso
   FROM syg_movimento_pesos('ENTRADA', DATE '2026-01-01',
      CURRENT_DATE, 'FILIAL2', NULL, NULL, NULL,
      FALSE, FALSE, NULL, NULL, FALSE) a
   GROUP BY DATE_TRUNC('month', a.data)::date,
      a.codpro, a.subcod, a.unidade
)
SELECT m.mes, m.codpro, m.subcod, m.unidade, m.peso,
   LAG(m.peso) OVER (PARTITION BY m.codpro, m.subcod, m.unidade ORDER BY m.mes) AS peso_grupo_anterior
FROM mensal m
ORDER BY m.codpro, m.subcod, m.unidade, m.mes
C01 — Encontrar fornecedor por parte do nome

cadastros-01 · cadastros.md

SELECT f.codfor AS fornecedor_codigo,
   f.fornecedor AS nome, f.cidade, f.uf, f.status
FROM cag_for f
WHERE f.fornecedor ILIKE '%RECICLAGEM%'
ORDER BY f.fornecedor, f.codfor, f.sr_recno
LIMIT 100
C02 — Encontrar cliente por parte do nome

cadastros-02 · cadastros.md

SELECT c.codcli AS cliente_codigo,
   c.cliente AS nome, c.cidade, c.uf, c.status
FROM cag_cli c
WHERE c.cliente ILIKE '%RECICLAGEM%'
ORDER BY c.cliente, c.codcli, c.sr_recno
LIMIT 100
C03 — Localizar código e subcódigo de produto

cadastros-03 · cadastros.md

SELECT p.codpro, p.subcod, p.produto,
   p.un AS unidade, p.status
FROM cag_pro p
WHERE p.produto ILIKE '%SUCATA%'
ORDER BY p.produto, p.codpro, p.subcod, p.sr_recno
LIMIT 100
Exemplo reduzido de listagem

financeiro30-01 · financeiro30.md

SELECT a.ite_pagrec_id AS parcela_id,
   b.cab_pagrec_id AS titulo_id,
   b.cab_pagrec_pr AS tipo,
   b.cab_pagrec_numtit AS titulo,
   a.ite_pagrec_parcela AS parcela,
   b.cab_pagrec_data AS lancamento,
   a.ite_pagrec_vencimento AS vencimento,
   a.ite_pagrec_pagamento AS pagamento,
   b.cab_pagrec_filial AS filial_id,
   b.moe_codigo AS moeda_codigo,
   COALESCE(a.ite_pagrec_valparcela, 0) AS valor_parcela,
   COALESCE(a.ite_pagrec_valjuros, 0) AS juros,
   COALESCE(a.ite_pagrec_valdesc, 0) AS descontos,
   COALESCE(a.ite_pagrec_valpago, 0) AS valor_pago,
   (COALESCE(a.ite_pagrec_valparcela, 0)
      + COALESCE(a.ite_pagrec_valjuros, 0)
      - COALESCE(a.ite_pagrec_valdesc, 0))
      - COALESCE(a.ite_pagrec_valpago, 0) AS saldo_listagem
FROM fin_ite_pagrec a
INNER JOIN fin_cab_pagrec b ON b.cab_pagrec_id = a.cab_pagrec_id
WHERE b.cab_pagrec_data >= DATE '2025-01-01'
ORDER BY a.ite_pagrec_vencimento, a.ite_pagrec_id
LIMIT 100
Totais do mesmo recorte do exemplo

financeiro30-02 · financeiro30.md

SELECT b.cab_pagrec_pr AS tipo,
   b.moe_codigo AS moeda_codigo,
   COUNT(*) AS quantidade_parcelas,
   SUM((COALESCE(a.ite_pagrec_valparcela, 0)
      + COALESCE(a.ite_pagrec_valjuros, 0)
      - COALESCE(a.ite_pagrec_valdesc, 0))
      - COALESCE(a.ite_pagrec_valpago, 0)) AS saldo_listagem
FROM fin_ite_pagrec a
INNER JOIN fin_cab_pagrec b ON b.cab_pagrec_id = a.cab_pagrec_id
WHERE b.cab_pagrec_data >= DATE '2025-01-01'
GROUP BY b.cab_pagrec_pr, b.moe_codigo
ORDER BY b.cab_pagrec_pr, b.moe_codigo
F03 — Títulos com vencimento de hoje até daqui a 30 dias

financeiro30-03 · financeiro30.md

SELECT a.ite_pagrec_id AS parcela_id,
   b.cab_pagrec_id AS titulo_id,
   b.cab_pagrec_pr AS tipo, b.cab_pagrec_numtit AS titulo,
   a.ite_pagrec_parcela AS parcela,
   a.ite_pagrec_vencimento AS vencimento,
   b.cab_pagrec_filial AS filial_id,
   b.moe_codigo AS moeda_codigo,
   a.ite_pagrec_valparcela AS valor_parcela,
   a.ite_pagrec_valjuros AS juros,
   a.ite_pagrec_valdesc AS descontos,
   a.ite_pagrec_valpago AS valor_pago
FROM fin_ite_pagrec a
INNER JOIN fin_cab_pagrec b ON b.cab_pagrec_id = a.cab_pagrec_id
WHERE a.ite_pagrec_vencimento >= CURRENT_DATE
   AND a.ite_pagrec_vencimento <= CURRENT_DATE + 30
ORDER BY a.ite_pagrec_vencimento, a.ite_pagrec_id
LIMIT 100
F04 — Saldo em aberto no critério do dashboard do portal

financeiro30-04 · financeiro30.md

SELECT t.tipo, t.moeda_codigo,
   COUNT(*) AS parcelas_em_aberto,
   SUM(t.saldo) AS saldo_dashboard
FROM (
   SELECT a.ite_pagrec_id, b.cab_pagrec_pr AS tipo,
      b.moe_codigo AS moeda_codigo,
      (COALESCE(a.ite_pagrec_valparcela, 0)
         + COALESCE(a.ite_pagrec_valjuros, 0)
         - COALESCE(a.ite_pagrec_valdesc, 0))
         - COALESCE(a.ite_pagrec_valpago, 0)
         + COALESCE(a.ite_var_cambial, 0) AS saldo
   FROM fin_ite_pagrec a
   INNER JOIN fin_cab_pagrec b ON b.cab_pagrec_id = a.cab_pagrec_id
   WHERE a.ite_pagrec_vencimento BETWEEN DATE '2026-06-01'
      AND CURRENT_DATE
      AND b.cab_pagrec_numtit NOT LIKE 'ASADT%'
      AND NOT EXISTS (
         SELECT 1 FROM fin_estorno e
         WHERE e.estorno_ite_pagrec_id = a.ite_pagrec_id
      )
) t
WHERE t.saldo <> 0
GROUP BY t.tipo, t.moeda_codigo
ORDER BY t.tipo, t.moeda_codigo
N01 — Notas emitidas desde janeiro de 2026

fiscal-01 · fiscal.md

SELECT n.nf_id, n.emissao, n.entsai, n.numero,
   n.serie, n.modelo, n.operacao, n.origem,
   n.status, n.tipo_destina, n.cod_destina,
   n.nome_destina, n.cfop, n.valornf, n.finalidade
FROM syg_lista_nf('TODAS', 1, DATE '2026-01-01',
   CURRENT_DATE, 'TODAS', 'TODAS',
   NULL, NULL, NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL, NULL, NULL) n
ORDER BY n.emissao DESC, n.nf_id DESC
LIMIT 100
N02 — Notas de entrada pela data de entrada/saída

fiscal-02 · fiscal.md

SELECT n.nf_id, n.emissao, n.entsai, n.numero,
   n.serie, n.modelo, n.origem, n.status,
   n.nome_destina, n.cfop, n.valornf
FROM syg_lista_nf('TODAS', 2, DATE '2026-01-01',
   CURRENT_DATE, 'ENTRADA', 'TODAS',
   NULL, NULL, NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL, NULL, NULL) n
ORDER BY n.entsai DESC, n.nf_id DESC
LIMIT 100
N03 — Notas de saída por mês de emissão e status

fiscal-03 · fiscal.md

SELECT TO_CHAR(n.emissao, 'YYYY-MM') AS mes,
   n.status, COUNT(DISTINCT n.nf_id) AS notas,
   SUM(n.valornf) AS valor_notas
FROM syg_lista_nf('TODAS', 1, DATE '2026-01-01',
   CURRENT_DATE, 'SAIDA', 'TODAS',
   NULL, NULL, NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL, NULL, NULL) n
GROUP BY TO_CHAR(n.emissao, 'YYYY-MM'), n.status
ORDER BY mes, n.status
N04 — Quantidade e valor por operação e status

fiscal-04 · fiscal.md

SELECT n.operacao, n.status,
   COUNT(DISTINCT n.nf_id) AS notas,
   SUM(n.valornf) AS valor_notas
FROM syg_lista_nf('TODAS', 1, DATE '2026-01-01',
   CURRENT_DATE, 'TODAS', 'TODAS',
   NULL, NULL, NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL, NULL, NULL) n
GROUP BY n.operacao, n.status
ORDER BY n.operacao, n.status
N05 — Valores de tributos destacados por CFOP e status

fiscal-05 · fiscal.md

SELECT n.operacao, n.cfop, n.status,
   COUNT(DISTINCT n.nf_id) AS notas,
   SUM(n.valornf) AS valor_notas,
   SUM(n.vlr_icms) AS icms_destacado,
   SUM(n.vlr_ipi) AS ipi_destacado,
   SUM(n.vlr_pis) AS pis_destacado,
   SUM(n.vlr_cofins) AS cofins_destacado
FROM syg_lista_nf('TODAS', 1, DATE '2026-01-01',
   CURRENT_DATE, 'TODAS', 'TODAS',
   NULL, NULL, NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL, NULL, NULL) n
GROUP BY n.operacao, n.cfop, n.status
ORDER BY n.operacao, n.cfop, n.status
N06 — Localizar uma nota por número, série e modelo

fiscal-06 · fiscal.md

SELECT n.nf_id, n.emissao, n.numero, n.serie,
   n.modelo, n.operacao, n.origem, n.status,
   n.tipo_destina, n.cod_destina, n.nome_destina,
   n.valornf, n.documentos
FROM syg_lista_nf('TODAS', 1, DATE '2026-01-01',
   CURRENT_DATE, 'TODAS', 'TODAS',
   '1', '55', NULL, 12345, NULL, NULL,
   NULL, NULL, NULL, NULL, NULL, NULL) n
ORDER BY n.emissao DESC, n.nf_id DESC
LIMIT 100
P01 — Listar entradas desde 1º de junho de 2026

pesagens-01 · pesagens.md

SELECT a.data, a.boleto, a.codigo AS fornecedor_codigo,
   a.nome AS fornecedor, a.placa, a.codpro, a.subcod,
   a.produto, a.unidade, a.peso_bruto, a.peso_tara,
   a.peso_liquido, a.valor_total, a.filial, a.origem,
   a.id_recnobol
FROM syg_movimento_pesos('ENTRADA', DATE '2026-06-01',
   CURRENT_DATE, 'TODAS', NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL) a
ORDER BY a.data DESC, a.filial, a.boleto DESC,
   a.origem, a.id_recnobol
LIMIT 100
P02 — Listar saídas desde 1º de junho de 2026

pesagens-02 · pesagens.md

SELECT a.data, a.boleto, a.codigo AS cliente_codigo,
   a.nome AS cliente, a.placa, a.codpro, a.subcod,
   a.produto, a.unidade, a.peso_liquido, a.valor_total,
   a.filial, a.origem, a.id_recnobol
FROM syg_movimento_pesos('SAIDA', DATE '2026-06-01',
   CURRENT_DATE, 'TODAS', NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL) a
ORDER BY a.data DESC, a.filial, a.boleto DESC,
   a.origem, a.id_recnobol
LIMIT 100
P03 — Total de entradas por filial e unidade de medida

pesagens-03 · pesagens.md

SELECT a.filial, a.unidade,
   COUNT(*) AS itens_relatorio,
   SUM(a.peso_liquido) AS peso_liquido,
   SUM(a.valor_total) AS valor_movimentos
FROM syg_movimento_pesos('ENTRADA', DATE '2026-06-01',
   CURRENT_DATE, 'TODAS', NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL) a
GROUP BY a.filial, a.unidade
ORDER BY a.filial, a.unidade
P04 — Evolução diária de saídas

pesagens-04 · pesagens.md

SELECT a.data, a.unidade,
   SUM(a.peso_liquido) AS peso_liquido,
   SUM(a.valor_total) AS valor_movimentos,
   COUNT(*) AS itens_relatorio
FROM syg_movimento_pesos('SAIDA', DATE '2026-06-01',
   CURRENT_DATE, 'TODAS', NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL) a
GROUP BY a.data, a.unidade
ORDER BY a.data, a.unidade
P05 — Entradas por produto e subproduto

pesagens-05 · pesagens.md

SELECT a.codpro, a.subcod, a.produto, a.unidade,
   SUM(a.peso_liquido) AS peso_liquido,
   SUM(a.valor_total) AS valor_movimentos,
   COUNT(*) AS itens_relatorio
FROM syg_movimento_pesos('ENTRADA', DATE '2026-06-01',
   CURRENT_DATE, 'TODAS', NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL) a
GROUP BY a.codpro, a.subcod, a.produto, a.unidade
ORDER BY a.unidade, peso_liquido DESC, a.codpro, a.subcod,
   a.produto
P06 — Fornecedores com maior volume em uma unidade

pesagens-06 · pesagens.md

SELECT a.codigo AS fornecedor_codigo, a.nome AS fornecedor,
   a.unidade, SUM(a.peso_liquido) AS peso_liquido,
   SUM(a.valor_total) AS valor_movimentos
FROM syg_movimento_pesos('ENTRADA', DATE '2026-06-01',
   CURRENT_DATE, 'TODAS', NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL) a
WHERE TRIM(a.unidade) = 'KG'
GROUP BY a.codigo, a.nome, a.unidade
ORDER BY peso_liquido DESC, a.codigo, a.nome, a.unidade
LIMIT 10
P07 — Pesagens de um fornecedor

pesagens-07 · pesagens.md

SELECT a.data, a.boleto, a.codigo, a.nome,
   a.codpro, a.subcod, a.produto, a.unidade,
   a.peso_liquido, a.valor_total, a.filial, a.origem,
   a.id_recnobol
FROM syg_movimento_pesos('ENTRADA', DATE '2026-06-01',
   CURRENT_DATE, 'TODAS', 123, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL) a
ORDER BY a.data DESC, a.filial, a.boleto DESC,
   a.origem, a.id_recnobol
LIMIT 100
P08 — Detalhar um boleto de venda

pesagens-08 · pesagens.md

SELECT a.data, a.boleto, a.codigo, a.nome,
   a.codpro, a.subcod, a.produto, a.unidade,
   a.peso_liquido, a.preco, a.valor_total,
   a.filial, a.origem, a.id_recnobol
FROM syg_movimento_pesos('SAIDA', DATE '2026-06-01',
   CURRENT_DATE, 'TODAS', NULL, NULL, NULL, NULL,
   NULL, 456, NULL, NULL) a
ORDER BY a.data, a.filial, a.origem, a.id_recnobol
LIMIT 100
Compras mensais por produto e unidade

pesagens-09 · pesagens.md

SELECT DATE_TRUNC('month', a.data)::date AS mes,
   a.filial, a.codpro, a.subcod, a.produto, a.unidade,
   COUNT(*) AS itens_relatorio,
   COUNT(DISTINCT a.boleto) FILTER (WHERE a.boleto > 0) AS boletos_com_movimento,
   COUNT(*) FILTER (WHERE a.origem = 'DEV-ENTRADA') AS itens_devolucao,
   SUM(a.peso_liquido) AS peso_liquido,
   SUM(a.valor_total) AS valor_movimentos
FROM syg_movimento_pesos('ENTRADA', DATE '2026-01-01',
   DATE '2026-12-31', 'FILIAL2', NULL, NULL, NULL, NULL,
   NULL, NULL, NULL, NULL) a
WHERE TRIM(a.filial) = 'FILIAL2'
   AND a.data >= DATE '2026-01-01' AND a.data < DATE '2027-01-01'
GROUP BY DATE_TRUNC('month', a.data)::date,
   a.filial, a.codpro, a.subcod, a.produto, a.unidade
ORDER BY mes, a.codpro, a.subcod, a.produto, a.unidade
Exemplo: medições emitidas em um período

servico30-01 · servico30.md

SELECT sms.medicao_id AS numero,
   sms.medicao_data AS data_emissao,
   sms.medicao_codcli AS cliente_codigo,
   sms.medicao_status AS status,
   sms.medicao_filial AS filial,
   sms.medicao_aprovada AS aprovada
FROM sagi_medicao_serv3 sms
WHERE sms.medicao_data >= DATE '2025-01-01'
   AND sms.medicao_data < DATE '2025-02-01'
ORDER BY sms.medicao_data DESC, sms.medicao_id DESC
LIMIT 100
S02 — Medições por filial e status

servico30-02 · servico30.md

SELECT sms.medicao_filial AS filial,
   sms.medicao_status AS status,
   COUNT(*) AS quantidade_medicoes
FROM sagi_medicao_serv3 sms
WHERE sms.medicao_data >= DATE '2026-06-01'
   AND sms.medicao_data <= CURRENT_DATE
GROUP BY sms.medicao_filial, sms.medicao_status
ORDER BY sms.medicao_filial, sms.medicao_status
S03 — Itens e contrato de uma medição

servico30-03 · servico30.md

SELECT smis.medicao_item_id AS item_id,
   smis.medicao_id AS medicao_id,
   sms.medicao_filial AS filial,
   smis.medicao_contrato_id AS contrato_id,
   scs.contrato_descricao,
   smis.medicao_prestacao_id AS prestacao_id,
   sps.prestacao_data AS data_prestacao,
   sps.prestacao_ordem AS coleta,
   smis.medicao_tipo_servico AS tipo_servico,
   smis.medicao_qtd_prestada AS quantidade_prestada,
   smis.medicao_qtd_cobrada AS quantidade_cobrada,
   smis.medicao_valor_unit AS valor_unitario
FROM sagi_medicao_item_serv3 smis
INNER JOIN sagi_medicao_serv3 sms ON sms.medicao_id = smis.medicao_id
INNER JOIN sagi_contrato_serv3 scs ON scs.contrato_id = smis.medicao_contrato_id
LEFT JOIN sagi_prestacao_serv3 sps ON sps.prestacao_id = smis.medicao_prestacao_id
WHERE smis.medicao_id = 123
ORDER BY smis.medicao_contrato_id, sps.prestacao_data,
   smis.medicao_item_id
LIMIT 100
Instalação privada e publicação oficial

A hospedagem do MCP, a instalação privada do pacote e a publicação no diretório OpenAI são etapas separadas. A publicação pesquisável ainda depende de submissão e revisão da OpenAI. A equipe do Grupo Sygecom seguirá as etapas oficiais de publicação e informará o link nesta página quando disponível.

API Explorer · Dicionário de dados