API Reference/MCP Server

MCP Server

Conecte o CrazyLeads diretamente a assistentes de IA como Claude, Cursor ou qualquer cliente compativel com o Model Context Protocol (MCP). Consulte leads, crie dashboards, gere SQL, gerencie datasets e adicione gráficos usando linguagem natural.


Como Conectar

O CrazyLeads MCP é um servidor HTTPS com autenticação via OAuth 2.1. Você não precisa instalar pacotes nem gerenciar API keys — basta adicionar a URL do servidor no seu cliente e fazer login na sua conta CrazyLeads quando o cliente pedir.

CampoValor
URL do servidorhttps://mcp.crazyleads.com.br/mcp
TransporteStreamable HTTP
AutenticaçãoOAuth 2.1 (PKCE + Dynamic Client Registration)
Escoposmcp:read mcp:write

O fluxo de login abre uma aba do navegador, você escolhe o projeto que a IA poderá acessar e autoriza. O token fica salvo no cliente — não há API key pra rotacionar.


Claude Desktop

Abra Settings → Connectors, clique em Add custom connector e cole a URL:

https://mcp.crazyleads.com.br/mcp

O Claude abre o login do CrazyLeads no navegador. Após autorizar, selecione o projeto na tela de consentimento. O conector aparece com status Connected e as 75 tools ficam disponíveis na conversa.


Claude.ai (Web)

Em claude.ai/settings/connectors, escolha Add custom connector e use a mesma URL acima. O fluxo de autorizacao e identico ao do Desktop.

Disponível em planos Pro, Team e Enterprise.


Claude Code (CLI)

Adicione o servidor pelo CLI — o Claude Code cuida do fluxo OAuth no primeiro uso:

claude mcp add --transport http crazyleads https://mcp.crazyleads.com.br/mcp

Use --scope user pra disponibilizar em todos seus projetos, ou --scope project pra compartilhar com a equipe (gera um .mcp.json no repo).

Pra checar o status ou reautenticar: /mcp dentro do Claude Code.


ChatGPT

No ChatGPT (plano Plus, Pro, Business ou Enterprise), abra Settings → Connectors → Add e selecione Custom MCP server. Use:

https://mcp.crazyleads.com.br/mcp

Autorize com sua conta CrazyLeads na janela que abrir e escolha o projeto. As tools ficam disponíveis dentro de conversas e em Deep Research.


Cursor

Adicione ao ~/.cursor/mcp.json (global) ou .cursor/mcp.json (no projeto):

.cursor/mcp.json
{
  "mcpServers": {
    "crazyleads": {
      "url": "https://mcp.crazyleads.com.br/mcp"
    }
  }
}

O Cursor detecta o servidor e abre o fluxo OAuth automaticamente na primeira chamada.


Outros Clientes MCP

Qualquer cliente compativel com a especificacao Model Context Protocol (transporte Streamable HTTP + OAuth 2.1) funciona — basta apontar pra https://mcp.crazyleads.com.br/mcp. O servidor expõe as metadatas exigidas pelo padrão:

  • /.well-known/oauth-protected-resource — descobre o servidor de autorizacao
  • https://crazyleads.com.br/.well-known/oauth-authorization-server — endpoints OAuth (authorize, token, register, revoke)

O cliente registra-se sozinho via Dynamic Client Registration (RFC 7591) — não há cadastro manual de aplicação.


Projeto Ativo

O token OAuth fica vinculado a um projeto ativo — o que você selecionou na tela de consentimento. Todas as tools operam sobre esse projeto.

  • Use get_active_project pra ver qual projeto a IA está usando agora.
  • Use list_projects pra ver todos os projetos a que você tem acesso.
  • Use set_active_project pra trocar de projeto dentro da mesma conversa — sem precisar reautenticar.

Treinamento da IA via MCP

O MCP Server envia automaticamente um conjunto completo de instruções para a IA, ensinando-a a trabalhar com seus dados de forma inteligente. A IA recebe treinamento sobre:

Data Discovery Automático

A IA e treinada para investigar antes de construir. Antes de criar qualquer dashboard, ela executa queries exploratórias automaticamente para descobrir:

  • Produtos distintos e suas frequencias (Hotmart)
  • Campanhas, adsets e distribuição de gastos (Facebook/Google Ads)
  • UTM sources, campaigns e mediums (Pixel/Page Events)
  • Padrões de nomenclatura entre fontes de dados
  • Campos disponíveis e seus tipos por fonte

Fontes de Dados

A IA conhece todas as fontes de dados do CrazyLeads e sabe como usar cada uma:

  • Pixel / Page Events — trafego, pageviews, sessoes, UTMs, funis
  • Hotmart / Payment — vendas, receita, reembolsos, comissões, multi-moeda
  • Facebook Ads — gastos, impressões, cliques, CTR, CPC, conversões
  • Google Ads — campanhas de search, display, video
  • Conversions — eventos de conversão customizados
  • Custom SQL — queries cruzadas entre fontes
  • Datasets — tabelas customizadas para dados externos

Regras de Negócio

A IA e treinada com regras criticas do dominio:

  • Vendas Hotmart: status IN ('APPROVED', 'COMPLETE') apenas
  • Receita: usa commission_producer_value (não price_value)
  • Multi-moeda: nunca mistura BRL + USD em um SUM
  • Metric-level filters: measures não são afetadas por filtros de métricas
  • execute_query obrigatório: sempre após create_query, antes de add_chart
  • get_query_columns obrigatório: nunca adivinhar nomes de campos

Analise Cross-Source

A IA sabe combinar dados de fontes diferentes para criar métricas cruzadas:

  • CPA: SUM(facebook.spend) / COUNT(hotmart.sales)
  • ROAS: SUM(hotmart.revenue) / SUM(facebook.spend)
  • Taxa de Conversão: COUNT(conversions) / COUNT(DISTINCT page.visitors)
  • Virtual fields unificados: coluna 'produto' consistente entre Hotmart, Facebook e Pages

Layout e Organização

A IA segue padrões de layout e organização de dashboards:

  • Grid de 12 colunas com posicionamento automático
  • KPIs no topo (3x2), gráficos de linha/barra no meio (6x4 ou 12x4), tabelas embaixo (12x6)
  • Tab 'Geral' (__general__) como padrão — nunca cria tab duplicada
  • Filtros por metric-level para abas por produto (não dashboard filters)
  • Formatação automática por nome de campo (R$, %, inteiros)

Fluxo de Criação de Dashboard

Para criar um dashboard completo com gráficos, siga esta ordem:

1

Descobrir dados disponíveis

Use list_tables para ver tabelas e colunas do projeto. Para conversões, use list_conversion_groups para descobrir segmentos.

2

Entender o contexto

A IA faz perguntas sobre o negócio: quais produtos, como agrupar campanhas, quais métricas importam.

3

Explorar dados

Use test_sql para executar queries exploratórias e descobrir valores distintos, padrões de nomenclatura e distribuição de dados.

4

Criar dashboard e queries

Use create_dashboard para criar o dashboard, depois create_query para adicionar fontes de dados com filter_config ou SQL.

5

Executar queries

Use execute_query para materializar os datalakes (S3 Parquet). Sem isso, os gráficos não terão dados.

6

Descobrir campos disponíveis

Use get_query_columns para ver campos reais, tipos e agregações sugeridas. Obrigatório antes de criar gráficos.

7

Adicionar gráficos

Use add_chart com campos validados do passo anterior. Configure métricas, agrupamentos, tipo de visualização e layout.

8

Enriquecer

Use add_measure (KPIs calculados), add_virtual_field (colunas computadas), add_dashboard_filter (filtros compartilhados), add_group_by_config (alinhar queries).

9

Organizar layout

Use create_tab para abas, move_chart_to_tab para mover gráficos, e reorganize_charts auto: true para layout automático.


Tools de Leads

Consulte, busque e analise seus leads com filtros avançados.

list_leads

Lista leads com filtros avançados e paginacao. Retorna dados resumidos de cada lead (nome, email, telefone, status, datas).

limitnumber1-200, padrão 20
offsetnumberOffset para paginacao
order_bystring[]Ordenação (ex: ["-created_at"]). Padrão: mais recentes
statusstringactive, merged_into, archived
emailstringFiltro por email (contains)
phonestringFiltro por telefone (contains)
namestringFiltro por nome (contains)
countrystringCódigo do país (BR, US...)
has_emailbooleanFiltra leads com email
has_phonebooleanFiltra leads com telefone
created_afterstringData ISO 8601
created_beforestringData ISO 8601
segment_idstringUUID do segmento
feature_idstringUUID da feature
get_lead

Retorna detalhe completo de um lead: emails, telefones, devices, endereços, atributos por namespace, merge info e estatísticas.

lead_idstringUUID do lead
get_lead_timeline

Retorna timeline de atividades do lead: pageviews, purchases, conversions e outros eventos com dados de UTM e transação.

lead_idstringUUID do lead
limitnumber1-200, padrão 50
offsetnumberOffset para paginacao
activity_typesstringTipos separados por virgula (pageview,purchase...)
start_datestringData ISO 8601
end_datestringData ISO 8601
search_leads

Busca leads por nome, email ou telefone (OR-based matching). Retorna leads com dados resumidos.

querystringTexto para buscar em nome, email e telefone
limitnumber1-100, padrão 10
count_leads

Conta total de leads com filtros. Útil para estatísticas rápidas sem buscar dados completos.

statusstringactive, merged_into, archived
has_emailbooleanFiltra por tem email
has_phonebooleanFiltra por tem telefone
countrystringCódigo do país
created_afterstringData ISO 8601
created_beforestringData ISO 8601
segment_idstringUUID do segmento
feature_idstringUUID da feature

Tools de Projetos, Membros e Integrações

Gerencie projetos, membros do time e integrações (fontes de dados) direto da IA. Todas operam no contexto do projeto ativo, exceto as de projeto que listam/criam workspaces.

Projetos

list_projects

Lista todos os projetos a que você tem acesso, com nome, slug e role.

get_active_project

Retorna qual projeto a IA está usando agora (vinculado ao token OAuth da sessão).

set_active_project

Troca o projeto ativo da sessão para outro projeto onde você é membro. Útil pra alternar entre projetos sem reautenticar.

project_idstringUUID do projeto destino
create_project

Cria um novo projeto e te coloca como owner.

namestringNome do projeto
slugstringSlug (opcional, gerado a partir do nome)
update_project

Atualiza nome e/ou slug do projeto ativo. Requer role admin ou owner.

namestringNovo nome
slugstringNovo slug

Membros

list_members

Lista membros ativos do projeto com email, nome e role.

invite_member

Envia convite por email para outra pessoa entrar no projeto.

emailstringEmail do convidado
roleenumowner, admin, editor, viewer
list_invites

Lista convites pendentes do projeto.

cancel_invite

Cancela um convite pendente.

invite_idstringUUID do convite
update_member_role

Altera a role de um membro existente. Requer role admin ou owner.

member_idstringUUID do membro
roleenumowner, admin, editor, viewer
remove_member

Remove um membro do projeto. Requer role admin ou owner.

member_idstringUUID do membro

Integrações

list_integrations

Lista todas as integrações do projeto ativo (Hotmart, Facebook Ads, Google Ads, Pixel, etc.) com status de sync.

get_integration

Retorna detalhes de uma integração, incluindo config, última sincronização e estatísticas.

integration_idstringUUID da integração
create_integration

Cria uma nova integração no projeto ativo. O fluxo de autorizacao (OAuth do provider, webhook secret) deve ser completado pela UI depois.

providerenumhotmart, facebook_ads, google_ads, pixel, conversion, activecampaign, generic_webhook, tally...
namestringNome amigavel
configobjectConfig específica do provider (account_id, tracking ID, etc.)
update_integration

Atualiza nome ou config de uma integração.

integration_idstringUUID da integração
namestringNovo nome
configobjectNovo config (partial)
delete_integration

Remove uma integração. Dados ja importados permanecem; sync futuro para.

integration_idstringUUID da integração
trigger_integration_sync

Dispara uma sincronização manual de uma integração. Útil pra puxar dados recentes sem esperar o cron.

integration_idstringUUID da integração

Tools de SQL e Queries

Explore tabelas, gere SQL, teste queries e materialize datalakes para gráficos.

list_conversion_groups

Lista grupos de conversão com seus segmentos. OBRIGATÓRIO antes de create_query com query_type conversion. Retorna grupos com conversionSegments. Use segment.id como database_id e filter_config.conversion_id.

Sempre chame antes de criar queries de conversão para garantir que a tela de fonte de dados exiba grupo e conversão corretos.

list_tables

Lista todas as tabelas e colunas disponíveis no projeto. Nomes das tabelas seguem o padrão {type}_{slug} (ex: hotmart_htm_rtg, page_events, facebook_ads_meta_ads). Para conversions, cada tabela inclui conversion_id, conversion_name e slug.

SEMPRE chame esta tool primeiro antes de escrever SQL ou criar gráficos.

generate_sql

Gera SQL para queries de datalake. Produz SELECT * FROM table WHERE (filters): dados brutos. Agregações (count, sum) são aplicadas pelos gráficos/métricas, NÃO na query.

query_typeenumpage, facebook_ads, google_ads, hotmart, conversion, custom_sql
columnsstring[]Colunas para selecionar
aggregationsobjectMapa de coluna para funcao (sum, count, avg, min, max, uniq)
group_bystring[]Colunas para agrupar
filtersobjectFiltros como {coluna: valor}
database_idstringID da integração/database
test_sql

Testa uma query SQL com LIMIT 10 e retorna resultados de amostra. Use nomes reais de tabelas de list_tables (ex: hotmart_htm_rtg, page_events). Para vendas, filtre por status IN ('APPROVED', 'COMPLETE').

sqlstringQuery SQL para testar
start_datestringData início (YYYY-MM-DD)
end_datestringData fim (YYYY-MM-DD)
create_query

Cria uma query em um dashboard. Use filter_config para page/hotmart/facebook_ads/google_ads/conversion. Para custom_sql, use o campo sql.

dashboard_idstringID do dashboard
titlestringTítulo da query
query_typeenumpage, facebook_ads, google_ads, hotmart, conversion, custom_sql
sqlstringQuery SQL (para custom_sql)
filter_configobjectConfiguração de filtros por tipo de query
database_idstringID da integração (obrigatório para hotmart, facebook_ads, google_ads, conversion)
execute_query

Executa queries para materializar datalakes (S3 Parquet). Deve ser chamado após create_query antes que gráficos possam mostrar dados.

dashboard_idstringID do dashboard
query_idsstring[]IDs das queries para executar
start_datestringData início override (YYYY-MM-DD)
end_datestringData fim override (YYYY-MM-DD)
update_query

Atualiza uma query existente (partial update). Quando SQL ou filter_config mudam, a resposta inclui needs_re_execute: true.

dashboard_idstringID do dashboard
query_idstringID da query
titlestringNovo título
sqlstringNova query SQL
filter_configobjectNova configuração de filtros
delete_query

Deleta uma query do dashboard com cleanup completo: remove métricas dos gráficos, limpa filtros/agrupamentos referenciados, e deleta o datalake S3.

dashboard_idstringID do dashboard
query_idstringID da query a remover
get_query_columns

Retorna colunas disponíveis de um datalake materializado com descrições, tipos de dados, agregações sugeridas e formatação. Deve ser chamado após execute_query ter completado.

OBRIGATÓRIO: Sempre chame esta tool antes de add_chart. O campo da métrica deve ser um nome real retornado aqui.

dashboard_idstringID do dashboard
query_idstringID da query
Exemplo de retorno do get_query_columns
{
  "query_id": "query_abc",
  "query_type": "page",
  "status": "completed",
  "columns": [
    {
      "name": "ussid",
      "type": "Nullable(String)",
      "description": "Unique Session ID - identificador anonimo do visitante",
      "data_type": "uuid",
      "aggregations": ["count"],
      "suggested_formatting": { "decimalPlaces": 0, "prefix": "", "suffix": "" }
    },
    {
      "name": "spend",
      "type": "Nullable(Float64)",
      "description": "Total gasto no anúncio",
      "data_type": "numeric",
      "aggregations": ["sum", "avg", "min", "max"],
      "suggested_formatting": { "decimalPlaces": 2, "prefix": "R$ ", "suffix": "" }
    }
  ]
}

Tools de Dashboard

Gerencie dashboards, gráficos, abas e layout. Requer escopo mcp:write (concedido por padrão no fluxo OAuth).

list_dashboards

Lista todos os dashboards do projeto com id, nome, período e contadores de queries/graficos.

get_dashboard

Retorna detalhes completos de um dashboard incluindo queries, gráficos, métricas, measures, filtros, virtual fields e abas.

dashboard_idstringID do dashboard
create_dashboard

Cria um novo dashboard vazio com nome e período.

namestringNome do dashboard
start_datestringInício do período (ISO datetime)
end_datestringFim do período (ISO datetime)
update_dashboard

Atualiza nome ou período de um dashboard. Apenas os campos passados são alterados.

dashboard_idstringID do dashboard
namestringNovo nome
start_datestringNova data de início
end_datestringNova data de fim

Tools de Gráficos

Crie, edite, clone, remova e reorganize gráficos dentro de dashboards. Dois tipos de métricas: (1) field-based de colunas de queries, (2) measure-based de métricas calculadas.

add_chart

Adiciona um gráfico ao dashboard. Aceita métricas field-based {queryId, field, aggregation} e measure-based {measureId}. Pode misturar ambas no mesmo gráfico.

Sempre chame get_query_columns antes para usar campos reais. Para measure metrics, a measure deve existir (use add_measure primeiro).

dashboard_idstringID do dashboard
chart_typeenumchart-kpi, chart-meta, chart-bar, chart-bar-h, chart-line, chart-area, chart-donut, chart-radial, chart-radar, chart-funnel, chart-table, chart-ranking
titlestringTítulo do gráfico
metricsobject[]Array de métricas (field-based ou measure-based)
groupingsstring[]Campos para agrupamento no eixo X (obrigatório para bar, line, donut, table). Use "event_date_at" para series temporais.
x_axisstringCampo do eixo X (calculado automaticamente dos groupings)
layoutobjectPosicao no grid: { x, y, w, h }
order_byobjectOrdenação: { direction: "asc"|"desc", metricId, metricName }
order_by_valuebooleanOrdenar pelo valor da métrica
top_nnumberLimitar a N itens (útil para rankings)
tab_idstringID da aba (padrão: "__general__")
goalnumberMeta estatica para KPI (mostra barra de progresso)
kpi_styleobjectEstilo visual do KPI (icon, backgroundColor, valueColor, labelColor, successColor, lowColor)
Formato de métrica field-based
{
  "queryId": "query_abc",       // ID da query (fonte de dados)
  "field": "spend",             // Nome real da coluna (de get_query_columns)
  "aggregation": "sum",         // count, distinct, sum, avg, min, max
  "label": "Total Gasto",       // Label exibido no gráfico
  "color": "#ef4444",           // Opcional — auto-cycle de paleta com 10 cores
  "filters": [                  // Opcional — filtros por métrica
    { "field": "status", "fieldType": "string", "operator": "in", "value": ["APPROVED", "COMPLETE"] }
  ],
  "formatting": {               // Opcional — inferido pelo nome do campo
    "prefix": "R$ ",
    "suffix": "",
    "decimalPlaces": 2,
    "decimalSeparator": ",",
    "thousandsSeparator": "."
  }
}
Formato de métrica measure-based
{
  "measureId": "measure_abc",   // ID da measure calculada
  "label": "CPA"                // Label exibido no gráfico
}
update_chart

Atualiza um gráfico existente. Apenas os campos passados serão alterados (partial update).

dashboard_idstringID do dashboard
chart_idstringID do gráfico
titlestringNovo título
chart_typeenumNovo tipo de gráfico
metricsobject[]Novas métricas (substitui todas)
groupingsstring[]Novos agrupamentos
x_axisstringNovo eixo X
layoutobjectNova posicao { x, y, w, h }
order_byobjectNova ordenação
order_by_valuebooleanOrdenar pelo valor
top_nnumberLimitar a N itens
tab_idstringMover para outra aba
goalnumberMeta estatica (KPI)
kpi_styleobjectEstilo visual (KPI)
clone_chart

Clona um gráfico existente com deep copy e IDs regenerados (sem conflitos de React key). Auto-posicionado pelo algoritmo de layout.

dashboard_idstringID do dashboard
chart_idstringID do gráfico a clonar
titlestringNovo título (opcional)
chart_typeenumNovo tipo (opcional)
overridesobjectOutros campos para sobrescrever
delete_chart

Remove um gráfico do dashboard.

dashboard_idstringID do dashboard
chart_idstringID do gráfico a remover
reorganize_charts

Reposiciona gráficos no grid. Modo AUTO (auto: true) organiza por tipo (KPIs primeiro, depois line/bar/area, depois donut/radar, tabelas no final). Modo MANUAL recebe posições explícitas.

dashboard_idstringID do dashboard
autobooleantrue para reorganização automática
layoutsobject[]Array de { chart_id, x, y, w, h } para posicionamento manual

Tipos de Gráfico

12 tipos disponíveis para o parâmetro chart_type, com tamanhos padrão no grid (desktop 12 colunas):

TipoTamanhoAgrupamentoDescrição
chart-kpi3x2NãoNúmero grande com meta, ícone e variação vs período anterior
chart-meta3x2NãoKPI com visual de progresso
chart-bar6x4SimBarras verticais: comparações categóricas
chart-bar-h6x4SimBarras horizontais: ideal para nomes longos (campanhas, URLs)
chart-line6x4SimLinhas temporais: tendências ao longo do tempo
chart-area6x4SimÁrea preenchida: composição cumulativa ao longo do tempo
chart-donut4x4SimPizza/donut: composição parte-do-todo
chart-radial4x4SimBarras radiais circulares
chart-radar4x4SimRadar/spider: comparação multidimensional
chart-funnel4x4NãoFunil de conversão: visualização de drop-off
chart-table12x5SimTabela com múltiplas métricas: drill-down detalhado
chart-ranking6x5SimLeaderboard gamificado: top-N com cores primeiro/segundo/terceiro

Recursos de KPI

Os tipos chart-kpi e chart-meta suportam metas, variação automática vs período anterior e personalização visual.

Meta (goal)

Defina uma meta estatica para exibir barra de progresso no KPI. O KPI mostra automaticamente a porcentagem atingida e usa successColor quando a meta e alcancada e lowColor quando abaixo.

Exemplo de KPI com meta
{
  "chart_type": "chart-kpi",
  "title": "Receita Mensal",
  "metrics": [{
    "queryId": "query_abc",
    "field": "price_value",
    "aggregation": "sum",
    "label": "Receita"
  }],
  "goal": 50000
}

Estilo Visual (kpi_style)

Opções de kpi_style
{
  "kpi_style": {
    "icon": "DollarSign",          // Ícone Lucide (ver lista abaixo)
    "backgroundColor": "#ecfdf5",   // Fundo do card
    "valueColor": "#059669",        // Cor do valor principal
    "labelColor": "#065f46",        // Cor do label
    "successColor": "#10b981",      // Cor quando meta atingida / variação positiva
    "lowColor": "#ef4444"           // Cor quando abaixo da meta / variação negativa
  }
}

Icones Disponíveis

Qualquer ícone do Lucide pode ser usado. Os mais comuns:

DollarSignUsersShoppingCartTrendingUpEyeMousePointerClickMailPhoneStarZapHeartClockPackageGlobeBarChart3Target

Agregações

Valores aceitos no campo aggregation das métricas:

ValorSQL GeradoUso
countCOUNT(*)Contagem total de registros
distinctCOUNT(DISTINCT field)Valores únicos (visitantes, compradores...)
sumSUM(field)Soma (receita, gastos, comissões...)
avgAVG(field)Media
minMIN(field)Menor valor
maxMAX(field)Maior valor

Tools de Abas

Organize gráficos em abas dentro do dashboard. Toda dashboard tem uma aba padrão 'Geral' (__general__) que não pode ser removida.

list_tabs

Lista todas as abas do dashboard com contagem de gráficos por aba.

dashboard_idstringID do dashboard
create_tab

Cria uma nova aba no dashboard para organizar gráficos em seções lógicas (ex: 'Ads Performance', 'Conversões').

dashboard_idstringID do dashboard
namestringNome da aba
rename_tab

Renomeia uma aba existente.

dashboard_idstringID do dashboard
tab_idstringID da aba
namestringNovo nome
delete_tab

Remove uma aba. Gráficos da aba são movidos automaticamente para a aba Geral. Não é possível deletar a aba __general__.

dashboard_idstringID do dashboard
tab_idstringID da aba a remover
reorder_tabs

Reordena as abas do dashboard fornecendo a lista ordenada de IDs.

dashboard_idstringID do dashboard
tab_idsstring[]Array de IDs das abas na ordem desejada
move_chart_to_tab

Move um gráfico para outra aba.

dashboard_idstringID do dashboard
chart_idstringID do gráfico
tab_idstringID da aba destino

Tools Avancadas

Métricas calculadas, campos virtuais, filtros compartilhados e agrupamentos cross-query.

Measures (Métricas Calculadas)

add_measure

Adiciona uma métrica calculada ao dashboard. Measures são fórmulas que combinam campos agregados de uma ou mais queries usando operadores matemáticos. Expression usa 4 tipos de tokens: filter (referencia campo de query), operator (+,-,*,/), input (constante numérica), measure (referencia outra measure).

dashboard_idstringID do dashboard
namestringNome da métrica (CPA, ROAS, etc.)
expressionobject[]Formula como array de tokens (filter, operator, input, measure)
formatobjectFormatação: { prefix, suffix, decimalPlaces }
Exemplo: CPA (Cost per Acquisition)
{
  "name": "CPA",
  "expression": [
    { "type": "filter", "id": "query_facebook", "aggregation": "sum(spend)", "position": 1 },
    { "type": "operator", "value": "/", "position": 2 },
    { "type": "filter", "id": "query_hotmart", "aggregation": "count(distinct transaction_id)", "position": 3 }
  ],
  "format": { "prefix": "R$ ", "decimalPlaces": 2 }
}
update_measure

Atualiza uma measure completamente: substitui nome, expression e format. Use get_dashboard para obter dados atuais antes de enviar a versão atualizada.

dashboard_idstringID do dashboard
measure_idstringID da measure
namestringNome da measure
expressionobject[]Nova formula
formatobjectNova formatação
delete_measure

Deleta uma measure do dashboard. Remove automaticamente métricas que referenciam esta measure de todos os gráficos (cascade delete).

Verifique dependências com get_dashboard antes de deletar: outras measures podem referenciar esta.

dashboard_idstringID do dashboard
measure_idstringID da measure

Virtual Fields (Campos Virtuais)

add_virtual_field

Adiciona uma coluna computada (campo virtual) via expressão SQL, injetada nas queries antes da execução. Use scope para definir onde o campo se aplica.

dashboard_idstringID do dashboard
namestringNome do campo (usado no SQL e nos gráficos)
display_namestringNome de exibição
typeenumstring, number, date
sql_expressionstringExpressão SQL (ex: CASE WHEN product_name ILIKE '%Venda%' THEN 'VTSD' ELSE 'Outros' END)
scopeobject{ type: "queryType", value: "hotmart" }: aplica a todas queries do tipo. Ou { type: "queryId", value: "query_abc" }: aplica a uma query específica.
update_virtual_field

Atualiza um campo virtual (partial update). Após alterar, execute novamente as queries afetadas.

dashboard_idstringID do dashboard
virtual_field_idstringID do campo virtual
namestringNovo nome
display_namestringNovo nome de exibição
typeenumNovo tipo
sql_expressionstringNova expressão SQL
scopeobjectNovo escopo
delete_virtual_field

Deleta um campo virtual do dashboard.

dashboard_idstringID do dashboard
virtual_field_idstringID do campo virtual

Dashboard Filters (Filtros Compartilhados)

add_dashboard_filter

Adiciona um filtro compartilhado ao dashboard. Filtros podem ser select (dropdown com opções), text (texto livre), date (seletor de data) ou number. Cada opção de select pode ter seu próprio operador (equals, contains, starts_with, ends_with).

dashboard_idstringID do dashboard
namestringNome do filtro
fieldstringColuna para filtrar
field_typeenumdate, string, number
input_typeenumselect, text, date, number
valueanyValor padrão do filtro
select_optionsobject[]Opções para select: [{ label, value, operator? }]
applies_to_queriesstring[]IDs das queries (null = todas)
text_operatorstringOperador para filtros de texto (contains, equals, starts_with, ends_with)
update_dashboard_filter

Atualiza um filtro do dashboard (partial update).

dashboard_idstringID do dashboard
filter_idstringID do filtro
namestringNovo nome
fieldstringNova coluna
valueanyNovo valor
select_optionsobject[]Novas opções
delete_dashboard_filter

Deleta um filtro do dashboard.

dashboard_idstringID do dashboard
filter_idstringID do filtro

Group By Config (Agrupamentos Cross-Query)

add_group_by_config

Adiciona um agrupamento compartilhado para alinhar múltiplas queries na mesma dimensao. Necessário quando gráficos combinam métricas de queries diferentes (ex: Facebook spend + Hotmart revenue no mesmo gráfico agrupado por dia).

dashboard_idstringID do dashboard
columnstringColuna para agrupar (deve existir em todas as queries especificadas)
query_idsstring[]IDs das queries que compartilham o agrupamento
titlestringNome de exibição (opcional, padrão: nome da coluna)
aliasstringAlias da coluna nos gráficos (opcional)
update_group_by_config

Atualiza um group by config (partial update). Alterar column ou query_ids reconstroi o mapeamento interno de dataSources.

dashboard_idstringID do dashboard
group_by_idstringID do group by config
columnstringNova coluna
query_idsstring[]Novos IDs de queries
delete_group_by_config

Deleta um group by config do dashboard.

dashboard_idstringID do dashboard
group_by_idstringID do group by config

Tools de Datasets

Gerencie datasets customizados: tabelas de dados estruturados para importar dados externos (CSVs, APIs) e usar junto com as outras fontes de dados.

Gerenciamento

list_datasets

Lista todos os datasets do projeto com id, slug, nome, descrição, storage_class, versão atual e resumo do schema.

get_dataset

Retorna detalhes completos de um dataset incluindo schema (colunas, índices) e informações de versão.

dataset_idstringUUID do dataset
create_dataset

Cria um novo dataset com definição de schema. Após criação, chame publish_dataset_version para ativar.

namestringNome do dataset
descriptionstringDescrição
columnsobject[]Definição de colunas: [{ name, kind, nullable?, unique?, default_value? }]. Kind: TEXT, INTEGER, DECIMAL, BOOLEAN, TIMESTAMP, JSON, UUID
update_dataset

Atualiza metadados do dataset (nome e/ou descrição).

dataset_idstringUUID do dataset
namestringNovo nome
descriptionstringNova descrição
delete_dataset

Soft-delete de um dataset. O dataset é desativado mas não removido fisicamente.

dataset_idstringUUID do dataset

Schema e Versionamento

get_dataset_schema

Retorna o schema atual (colunas e índices) de um dataset.

dataset_idstringUUID do dataset
add_dataset_column

Adiciona uma coluna ao dataset. Cria uma versão draft. Chame publish_dataset_version para aplicar.

dataset_idstringUUID do dataset
namestringNome da coluna
kindenumTEXT, INTEGER, DECIMAL, BOOLEAN, TIMESTAMP, JSON
nullablebooleanPermite nulos (padrão: true)
uniquebooleanValores únicos (padrão: false)
default_valuestringValor padrão
update_dataset_column

Atualiza uma coluna com mudanças seguras (ordem, default_value, relaxar constraints). NÃO cria nova versão.

dataset_idstringUUID do dataset
column_namestringNome da coluna
ordernumberNova ordem
default_valuestringNovo valor padrão
remove_dataset_column

Remove uma coluna do dataset. Cria versão draft. Chame publish_dataset_version para aplicar.

CUIDADO: Dados da coluna são permanentemente perdidos após o publish.

dataset_idstringUUID do dataset
column_namestringNome da coluna a remover
publish_dataset_version

Publica mudanças de schema pendentes (adicoes/remocoes de colunas). Aplica todas as mudanças de uma vez.

dataset_idstringUUID do dataset
rollback_dataset_version

Faz rollback do dataset para um número de versão anterior.

dataset_idstringUUID do dataset
versionnumberNúmero da versão para restaurar

Dados

query_dataset_rows

Consulta linhas de um dataset com filtros, ordenação e paginacao baseada em cursor. Retorna linhas, total e metadados do schema.

slugstringSlug do dataset (identificador legivel)
filtersobjectFiltros de consulta
order_bystringCampo para ordenação
order_directionenumasc ou desc
cursorstringCursor para paginacao
limitnumberLimite de linhas (padrão: 50)
upsert_dataset_rows

Insere ou atualiza linhas. Se 'id' existe: UPDATE. Se 'id' não encontrado: INSERT com aquele id. Se 'id' ausente: INSERT com UUID auto-gerado. Max 1000 linhas por chamada.

slugstringSlug do dataset
rowsobject[]Array de objetos com os dados (max 1000)
delete_dataset_rows

Deleta linhas de um dataset pelos seus UUIDs.

slugstringSlug do dataset
row_idsstring[]Array de UUIDs das linhas a deletar
get_dataset_count

Conta linhas de um dataset, opcionalmente com filtros.

slugstringSlug do dataset
filtersobjectFiltros opcionais

Importação CSV

import_csv_to_dataset

Importa um arquivo CSV local para um dataset existente. Le o arquivo do filesystem, faz parse e envia em batches. Use column_mapping para renomear headers do CSV para nomes de colunas do dataset.

dataset_slugstringSlug do dataset de destino
file_pathstringCaminho absoluto do arquivo CSV
column_mappingobjectMapa de renomeacao: { "header_csv": "coluna_dataset" }
delimiterstringDelimitador (padrão: ",")
skip_rowsnumberLinhas para pular no início (padrão: 0)
batch_sizenumberTamanho do batch (padrão: 100)
smart_import_csv

Le um CSV local, infere schema (nomes e tipos de colunas), cria um novo dataset e importa todos os dados automaticamente. Use column_mapping para renomear colunas e column_types para sobrescrever tipos inferidos.

file_pathstringCaminho absoluto do arquivo CSV
namestringNome do dataset a ser criado
descriptionstringDescrição do dataset
column_mappingobjectMapa de renomeacao de colunas
column_typesobjectOverride de tipos: { "coluna": "TEXT"|"INTEGER"|"DECIMAL"|"BOOLEAN"|"TIMESTAMP" }
delimiterstringDelimitador (padrão: ",")
skip_rowsnumberLinhas para pular (padrão: 0)
batch_sizenumberTamanho do batch (padrão: 100)

Formatação Automática

A formatação de métricas é inferida automaticamente pelo nome do campo quando não especificada:

Nome do campo contemFormatação aplicada
value, price, spend, commission, fee, revenueR$ + 2 decimais
rate, percentage, ctr% suffix + 2 decimais
count, id, total0 decimais

Campos não reconhecidos usam: 0 decimais, separador decimal , e separador de milhar .


Exemplos de Uso com IA

Com o MCP server conectado, você pode fazer perguntas em linguagem natural:

Quantos leads ativos eu tenho?
Me mostra os últimos 10 leads que fizeram uma compra
Busca o lead com email joao@email.com e me mostra o histórico dele
Quais leads do Brasil foram criados na última semana?
Cria um dashboard com os gastos do Facebook Ads dos últimos 30 dias
Me mostra quais tabelas e colunas estão disponíveis para gerar SQL
Cria um gráfico de KPI com o total de spend e um gráfico de barras por campanha
Adiciona uma métrica de CPA (spend / conversions) no dashboard
Cria uma aba "Financeiro" e move os gráficos de receita para la
Reorganiza o layout dos gráficos automaticamente
Importa esse CSV como um novo dataset
Cria um campo virtual "produto" baseado no nome da campanha
Adiciona um filtro de produto no dashboard

O assistente de IA vai automaticamente chamar as tools corretas, combinar resultados e apresentar os dados de forma legivel. O MCP treina a IA com regras de negócio, padrões de layout e boas práticas para construir dashboards profissionais.