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.
| Campo | Valor |
|---|---|
| URL do servidor | https://mcp.crazyleads.com.br/mcp |
| Transporte | Streamable HTTP |
| Autenticação | OAuth 2.1 (PKCE + Dynamic Client Registration) |
| Escopos | mcp: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/mcpO 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/mcpUse --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/mcpAutorize 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):
{
"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 autorizacaohttps://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_projectpra ver qual projeto a IA está usando agora. - Use
list_projectspra ver todos os projetos a que você tem acesso. - Use
set_active_projectpra 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:
Descobrir dados disponíveis
Use list_tables para ver tabelas e colunas do projeto. Para conversões, use list_conversion_groups para descobrir segmentos.
Entender o contexto
A IA faz perguntas sobre o negócio: quais produtos, como agrupar campanhas, quais métricas importam.
Explorar dados
Use test_sql para executar queries exploratórias e descobrir valores distintos, padrões de nomenclatura e distribuição de dados.
Criar dashboard e queries
Use create_dashboard para criar o dashboard, depois create_query para adicionar fontes de dados com filter_config ou SQL.
Executar queries
Use execute_query para materializar os datalakes (S3 Parquet). Sem isso, os gráficos não terão dados.
Descobrir campos disponíveis
Use get_query_columns para ver campos reais, tipos e agregações sugeridas. Obrigatório antes de criar gráficos.
Adicionar gráficos
Use add_chart com campos validados do passo anterior. Configure métricas, agrupamentos, tipo de visualização e layout.
Enriquecer
Use add_measure (KPIs calculados), add_virtual_field (colunas computadas), add_dashboard_filter (filtros compartilhados), add_group_by_config (alinhar queries).
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_leadsLista leads com filtros avançados e paginacao. Retorna dados resumidos de cada lead (nome, email, telefone, status, datas).
limitnumber1-200, padrão 20offsetnumberOffset para paginacaoorder_bystring[]Ordenação (ex: ["-created_at"]). Padrão: mais recentesstatusstringactive, merged_into, archivedemailstringFiltro por email (contains)phonestringFiltro por telefone (contains)namestringFiltro por nome (contains)countrystringCódigo do país (BR, US...)has_emailbooleanFiltra leads com emailhas_phonebooleanFiltra leads com telefonecreated_afterstringData ISO 8601created_beforestringData ISO 8601segment_idstringUUID do segmentofeature_idstringUUID da featureget_leadRetorna detalhe completo de um lead: emails, telefones, devices, endereços, atributos por namespace, merge info e estatísticas.
lead_idstringUUID do leadget_lead_timelineRetorna timeline de atividades do lead: pageviews, purchases, conversions e outros eventos com dados de UTM e transação.
lead_idstringUUID do leadlimitnumber1-200, padrão 50offsetnumberOffset para paginacaoactivity_typesstringTipos separados por virgula (pageview,purchase...)start_datestringData ISO 8601end_datestringData ISO 8601search_leadsBusca leads por nome, email ou telefone (OR-based matching). Retorna leads com dados resumidos.
querystringTexto para buscar em nome, email e telefonelimitnumber1-100, padrão 10count_leadsConta total de leads com filtros. Útil para estatísticas rápidas sem buscar dados completos.
statusstringactive, merged_into, archivedhas_emailbooleanFiltra por tem emailhas_phonebooleanFiltra por tem telefonecountrystringCódigo do paíscreated_afterstringData ISO 8601created_beforestringData ISO 8601segment_idstringUUID do segmentofeature_idstringUUID da featureTools 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_projectsLista todos os projetos a que você tem acesso, com nome, slug e role.
get_active_projectRetorna qual projeto a IA está usando agora (vinculado ao token OAuth da sessão).
set_active_projectTroca o projeto ativo da sessão para outro projeto onde você é membro. Útil pra alternar entre projetos sem reautenticar.
project_idstringUUID do projeto destinocreate_projectCria um novo projeto e te coloca como owner.
namestringNome do projetoslugstringSlug (opcional, gerado a partir do nome)update_projectAtualiza nome e/ou slug do projeto ativo. Requer role admin ou owner.
namestringNovo nomeslugstringNovo slugMembros
list_membersLista membros ativos do projeto com email, nome e role.
invite_memberEnvia convite por email para outra pessoa entrar no projeto.
emailstringEmail do convidadoroleenumowner, admin, editor, viewerlist_invitesLista convites pendentes do projeto.
cancel_inviteCancela um convite pendente.
invite_idstringUUID do conviteupdate_member_roleAltera a role de um membro existente. Requer role admin ou owner.
member_idstringUUID do membroroleenumowner, admin, editor, viewerremove_memberRemove um membro do projeto. Requer role admin ou owner.
member_idstringUUID do membroIntegrações
list_integrationsLista todas as integrações do projeto ativo (Hotmart, Facebook Ads, Google Ads, Pixel, etc.) com status de sync.
get_integrationRetorna detalhes de uma integração, incluindo config, última sincronização e estatísticas.
integration_idstringUUID da integraçãocreate_integrationCria 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 amigavelconfigobjectConfig específica do provider (account_id, tracking ID, etc.)update_integrationAtualiza nome ou config de uma integração.
integration_idstringUUID da integraçãonamestringNovo nomeconfigobjectNovo config (partial)delete_integrationRemove uma integração. Dados ja importados permanecem; sync futuro para.
integration_idstringUUID da integraçãotrigger_integration_syncDispara uma sincronização manual de uma integração. Útil pra puxar dados recentes sem esperar o cron.
integration_idstringUUID da integraçãoTools de SQL e Queries
Explore tabelas, gere SQL, teste queries e materialize datalakes para gráficos.
list_conversion_groupsLista 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_tablesLista 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_sqlGera 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_sqlcolumnsstring[]Colunas para selecionaraggregationsobjectMapa de coluna para funcao (sum, count, avg, min, max, uniq)group_bystring[]Colunas para agruparfiltersobjectFiltros como {coluna: valor}database_idstringID da integração/databasetest_sqlTesta 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 testarstart_datestringData início (YYYY-MM-DD)end_datestringData fim (YYYY-MM-DD)create_queryCria 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 dashboardtitlestringTítulo da queryquery_typeenumpage, facebook_ads, google_ads, hotmart, conversion, custom_sqlsqlstringQuery SQL (para custom_sql)filter_configobjectConfiguração de filtros por tipo de querydatabase_idstringID da integração (obrigatório para hotmart, facebook_ads, google_ads, conversion)execute_queryExecuta queries para materializar datalakes (S3 Parquet). Deve ser chamado após create_query antes que gráficos possam mostrar dados.
dashboard_idstringID do dashboardquery_idsstring[]IDs das queries para executarstart_datestringData início override (YYYY-MM-DD)end_datestringData fim override (YYYY-MM-DD)update_queryAtualiza uma query existente (partial update). Quando SQL ou filter_config mudam, a resposta inclui needs_re_execute: true.
dashboard_idstringID do dashboardquery_idstringID da querytitlestringNovo títulosqlstringNova query SQLfilter_configobjectNova configuração de filtrosdelete_queryDeleta 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 dashboardquery_idstringID da query a removerget_query_columnsRetorna 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 dashboardquery_idstringID da query{
"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_dashboardsLista todos os dashboards do projeto com id, nome, período e contadores de queries/graficos.
get_dashboardRetorna detalhes completos de um dashboard incluindo queries, gráficos, métricas, measures, filtros, virtual fields e abas.
dashboard_idstringID do dashboardcreate_dashboardCria um novo dashboard vazio com nome e período.
namestringNome do dashboardstart_datestringInício do período (ISO datetime)end_datestringFim do período (ISO datetime)update_dashboardAtualiza nome ou período de um dashboard. Apenas os campos passados são alterados.
dashboard_idstringID do dashboardnamestringNovo nomestart_datestringNova data de inícioend_datestringNova data de fimTools 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_chartAdiciona 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 dashboardchart_typeenumchart-kpi, chart-meta, chart-bar, chart-bar-h, chart-line, chart-area, chart-donut, chart-radial, chart-radar, chart-funnel, chart-table, chart-rankingtitlestringTítulo do gráficometricsobject[]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étricatop_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){
"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": "."
}
}{
"measureId": "measure_abc", // ID da measure calculada
"label": "CPA" // Label exibido no gráfico
}update_chartAtualiza um gráfico existente. Apenas os campos passados serão alterados (partial update).
dashboard_idstringID do dashboardchart_idstringID do gráficotitlestringNovo títulochart_typeenumNovo tipo de gráficometricsobject[]Novas métricas (substitui todas)groupingsstring[]Novos agrupamentosx_axisstringNovo eixo XlayoutobjectNova posicao { x, y, w, h }order_byobjectNova ordenaçãoorder_by_valuebooleanOrdenar pelo valortop_nnumberLimitar a N itenstab_idstringMover para outra abagoalnumberMeta estatica (KPI)kpi_styleobjectEstilo visual (KPI)clone_chartClona um gráfico existente com deep copy e IDs regenerados (sem conflitos de React key). Auto-posicionado pelo algoritmo de layout.
dashboard_idstringID do dashboardchart_idstringID do gráfico a clonartitlestringNovo título (opcional)chart_typeenumNovo tipo (opcional)overridesobjectOutros campos para sobrescreverdelete_chartRemove um gráfico do dashboard.
dashboard_idstringID do dashboardchart_idstringID do gráfico a removerreorganize_chartsReposiciona 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 dashboardautobooleantrue para reorganização automáticalayoutsobject[]Array de { chart_id, x, y, w, h } para posicionamento manualTipos de Gráfico
12 tipos disponíveis para o parâmetro chart_type, com tamanhos padrão no grid (desktop 12 colunas):
| Tipo | Tamanho | Agrupamento | Descrição |
|---|---|---|---|
chart-kpi | 3x2 | Não | Número grande com meta, ícone e variação vs período anterior |
chart-meta | 3x2 | Não | KPI com visual de progresso |
chart-bar | 6x4 | Sim | Barras verticais: comparações categóricas |
chart-bar-h | 6x4 | Sim | Barras horizontais: ideal para nomes longos (campanhas, URLs) |
chart-line | 6x4 | Sim | Linhas temporais: tendências ao longo do tempo |
chart-area | 6x4 | Sim | Área preenchida: composição cumulativa ao longo do tempo |
chart-donut | 4x4 | Sim | Pizza/donut: composição parte-do-todo |
chart-radial | 4x4 | Sim | Barras radiais circulares |
chart-radar | 4x4 | Sim | Radar/spider: comparação multidimensional |
chart-funnel | 4x4 | Não | Funil de conversão: visualização de drop-off |
chart-table | 12x5 | Sim | Tabela com múltiplas métricas: drill-down detalhado |
chart-ranking | 6x5 | Sim | Leaderboard 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.
{
"chart_type": "chart-kpi",
"title": "Receita Mensal",
"metrics": [{
"queryId": "query_abc",
"field": "price_value",
"aggregation": "sum",
"label": "Receita"
}],
"goal": 50000
}Estilo Visual (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:
DollarSignUsersShoppingCartTrendingUpEyeMousePointerClickMailPhoneStarZapHeartClockPackageGlobeBarChart3TargetAgregações
Valores aceitos no campo aggregation das métricas:
| Valor | SQL Gerado | Uso |
|---|---|---|
count | COUNT(*) | Contagem total de registros |
distinct | COUNT(DISTINCT field) | Valores únicos (visitantes, compradores...) |
sum | SUM(field) | Soma (receita, gastos, comissões...) |
avg | AVG(field) | Media |
min | MIN(field) | Menor valor |
max | MAX(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_tabsLista todas as abas do dashboard com contagem de gráficos por aba.
dashboard_idstringID do dashboardcreate_tabCria uma nova aba no dashboard para organizar gráficos em seções lógicas (ex: 'Ads Performance', 'Conversões').
dashboard_idstringID do dashboardnamestringNome da abarename_tabRenomeia uma aba existente.
dashboard_idstringID do dashboardtab_idstringID da abanamestringNovo nomedelete_tabRemove 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 dashboardtab_idstringID da aba a removerreorder_tabsReordena as abas do dashboard fornecendo a lista ordenada de IDs.
dashboard_idstringID do dashboardtab_idsstring[]Array de IDs das abas na ordem desejadamove_chart_to_tabMove um gráfico para outra aba.
dashboard_idstringID do dashboardchart_idstringID do gráficotab_idstringID da aba destinoTools Avancadas
Métricas calculadas, campos virtuais, filtros compartilhados e agrupamentos cross-query.
Measures (Métricas Calculadas)
add_measureAdiciona 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 dashboardnamestringNome da métrica (CPA, ROAS, etc.)expressionobject[]Formula como array de tokens (filter, operator, input, measure)formatobjectFormatação: { prefix, suffix, decimalPlaces }{
"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_measureAtualiza 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 dashboardmeasure_idstringID da measurenamestringNome da measureexpressionobject[]Nova formulaformatobjectNova formataçãodelete_measureDeleta 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 dashboardmeasure_idstringID da measureVirtual Fields (Campos Virtuais)
add_virtual_fieldAdiciona 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 dashboardnamestringNome do campo (usado no SQL e nos gráficos)display_namestringNome de exibiçãotypeenumstring, number, datesql_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_fieldAtualiza um campo virtual (partial update). Após alterar, execute novamente as queries afetadas.
dashboard_idstringID do dashboardvirtual_field_idstringID do campo virtualnamestringNovo nomedisplay_namestringNovo nome de exibiçãotypeenumNovo tiposql_expressionstringNova expressão SQLscopeobjectNovo escopodelete_virtual_fieldDeleta um campo virtual do dashboard.
dashboard_idstringID do dashboardvirtual_field_idstringID do campo virtualDashboard Filters (Filtros Compartilhados)
add_dashboard_filterAdiciona 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 dashboardnamestringNome do filtrofieldstringColuna para filtrarfield_typeenumdate, string, numberinput_typeenumselect, text, date, numbervalueanyValor padrão do filtroselect_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_filterAtualiza um filtro do dashboard (partial update).
dashboard_idstringID do dashboardfilter_idstringID do filtronamestringNovo nomefieldstringNova colunavalueanyNovo valorselect_optionsobject[]Novas opçõesdelete_dashboard_filterDeleta um filtro do dashboard.
dashboard_idstringID do dashboardfilter_idstringID do filtroGroup By Config (Agrupamentos Cross-Query)
add_group_by_configAdiciona 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 dashboardcolumnstringColuna para agrupar (deve existir em todas as queries especificadas)query_idsstring[]IDs das queries que compartilham o agrupamentotitlestringNome de exibição (opcional, padrão: nome da coluna)aliasstringAlias da coluna nos gráficos (opcional)update_group_by_configAtualiza um group by config (partial update). Alterar column ou query_ids reconstroi o mapeamento interno de dataSources.
dashboard_idstringID do dashboardgroup_by_idstringID do group by configcolumnstringNova colunaquery_idsstring[]Novos IDs de queriesdelete_group_by_configDeleta um group by config do dashboard.
dashboard_idstringID do dashboardgroup_by_idstringID do group by configTools 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_datasetsLista todos os datasets do projeto com id, slug, nome, descrição, storage_class, versão atual e resumo do schema.
get_datasetRetorna detalhes completos de um dataset incluindo schema (colunas, índices) e informações de versão.
dataset_idstringUUID do datasetcreate_datasetCria um novo dataset com definição de schema. Após criação, chame publish_dataset_version para ativar.
namestringNome do datasetdescriptionstringDescriçãocolumnsobject[]Definição de colunas: [{ name, kind, nullable?, unique?, default_value? }]. Kind: TEXT, INTEGER, DECIMAL, BOOLEAN, TIMESTAMP, JSON, UUIDupdate_datasetAtualiza metadados do dataset (nome e/ou descrição).
dataset_idstringUUID do datasetnamestringNovo nomedescriptionstringNova descriçãodelete_datasetSoft-delete de um dataset. O dataset é desativado mas não removido fisicamente.
dataset_idstringUUID do datasetSchema e Versionamento
get_dataset_schemaRetorna o schema atual (colunas e índices) de um dataset.
dataset_idstringUUID do datasetadd_dataset_columnAdiciona uma coluna ao dataset. Cria uma versão draft. Chame publish_dataset_version para aplicar.
dataset_idstringUUID do datasetnamestringNome da colunakindenumTEXT, INTEGER, DECIMAL, BOOLEAN, TIMESTAMP, JSONnullablebooleanPermite nulos (padrão: true)uniquebooleanValores únicos (padrão: false)default_valuestringValor padrãoupdate_dataset_columnAtualiza uma coluna com mudanças seguras (ordem, default_value, relaxar constraints). NÃO cria nova versão.
dataset_idstringUUID do datasetcolumn_namestringNome da colunaordernumberNova ordemdefault_valuestringNovo valor padrãoremove_dataset_columnRemove 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 datasetcolumn_namestringNome da coluna a removerpublish_dataset_versionPublica mudanças de schema pendentes (adicoes/remocoes de colunas). Aplica todas as mudanças de uma vez.
dataset_idstringUUID do datasetrollback_dataset_versionFaz rollback do dataset para um número de versão anterior.
dataset_idstringUUID do datasetversionnumberNúmero da versão para restaurarDados
query_dataset_rowsConsulta 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 consultaorder_bystringCampo para ordenaçãoorder_directionenumasc ou desccursorstringCursor para paginacaolimitnumberLimite de linhas (padrão: 50)upsert_dataset_rowsInsere 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 datasetrowsobject[]Array de objetos com os dados (max 1000)delete_dataset_rowsDeleta linhas de um dataset pelos seus UUIDs.
slugstringSlug do datasetrow_idsstring[]Array de UUIDs das linhas a deletarget_dataset_countConta linhas de um dataset, opcionalmente com filtros.
slugstringSlug do datasetfiltersobjectFiltros opcionaisImportação CSV
import_csv_to_datasetImporta 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 destinofile_pathstringCaminho absoluto do arquivo CSVcolumn_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_csvLe 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 CSVnamestringNome do dataset a ser criadodescriptionstringDescrição do datasetcolumn_mappingobjectMapa de renomeacao de colunascolumn_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 contem | Formatação aplicada |
|---|---|
| value, price, spend, commission, fee, revenue | R$ + 2 decimais |
| rate, percentage, ctr | % suffix + 2 decimais |
| count, id, total | 0 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:
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.