O Entity Enricher disponibiliza um servidor Model Context Protocol incorporado em /api/mcp — liste os seus esquemas, enriqueça uma entidade, inspecione o resultado e resolva um aviso de classificação tudo a partir de um único chat do Claude. Sem necessidade de editor de fluxos de trabalho.
Formato diferente, caso de uso diferente. Os conectores n8n e Make encapsulam a API para automação de fluxos de trabalho: acionadores, execuções agendadas, pipelines com vários passos, estado persistente. O MCP encapsula-a para chat interativo: perguntas pontuais, enrichments exploratórios, esclarecimentos de seguimento. Os fluxos de trabalho têm formato de batch, os chats têm formato de conversa — a superfície difere e a experiência de utilização também.
A funcionalidade indispensável que só o MCP desbloqueia: retoma interativa da classificação. Quando o classificador de pré-verificação rejeita a sua entidade (por exemplo, pediu para enriquecer "Titan" contra um esquema de Planeta, mas Titan é uma lua), o n8n/Make têm de cancelar automaticamente porque não são interativos. O MCP apresenta o aviso ao Claude, o Claude pede-lhe para confirmar e, ao responder "sim", a ferramenta é executada novamente sem o classificador. Sem falhas a meio do pipeline, sem ter de recomeçar do zero.
Para claude.ai, Claude Code, Cursor e qualquer cliente MCP que suporte o fluxo OAuth padrão. Sem chave de API para criar ou colar — o cliente deteta o servidor de autorização automaticamente.
https://entityenricher.ai/api/mcp/.Para clientes configurados através de um ficheiro JSON em vez de um início de sessão interativo (Claude Desktop, Continue, Zed).
ent_… — só é mostrado uma vez.Para Claude Desktop, edite ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"entityenricher": {
"url": "https://entityenricher.ai/api/mcp/",
"headers": { "X-API-Key": "ent_your_key_here" }
}
}
}Reinicie o Claude Desktop. O mesmo excerto funciona para o Claude Code, Cursor, Continue e Zed — qualquer cliente compatível com MCP.
Numa nova conversa: "Lista os meus schemas do Entity Enricher e, depois, enriquece a Sanofi face ao schema de empresa farmacêutica usando o Claude Sonnet." O Claude descobre as ferramentas automaticamente, escolhe a certa, pede-lhe para confirmar a escolha de model e schema e transmite o resultado inline.
54 ferramentas cobrem toda a superfície de vocabulário de enriquecimento, criação de schemas, database sync e IDs semânticos. O comportamento é idêntico ao dos endpoints REST que encapsulam (mesma validação, faturação e limites de plano) — quando a interface web recebe uma correção, o MCP também a recebe. O trabalho de longa duração (enriquecimento em lote, geração de amostras, execuções de benchmark) é assíncrono: a ferramenta de arranque devolve um job_id, o Claude consulta get_job_status e obtém os resultados persistidos a partir dos seus registos assim que a tarefa termina.
| Categoria | Ferramenta | Descrição |
|---|---|---|
| Descoberta | list_models | Lista as chaves de modelos, as capacidades nominais, as predefinições selecionadas automaticamente e os profile_limits do seu plano. Prefira a seleção automática: a disponibilidade não garante todas as quotas do fornecedor nem todos os modos combinados de multimédia/ferramentas. |
| Esquemas | list_schemas | Listar os schemas JSON guardados na sua organização, os fixados primeiro. |
| Esquemas | get_schema | Obtenha o conteúdo completo de um esquema por UUID. |
| Esquemas | generate_sample | Gere 1..N contratos de exemplo editáveis numa única tarefa (o primeiro define o conjunto de campos; os restantes são variantes de instância rápidas com os mesmos campos) no modo de conhecimento (sem anexos, pesquisa na web opcional) ou no modo de origem (os anexos são autoritativos e o planeador pode colocar questões). Reveja as edições relevantes com o utilizador antes de criar um esquema. |
| Esquemas | create_schema_from_sample | Gere e guarde automaticamente um esquema a partir de entity_samples (1..N amostras de um tipo de entidade — união de campos, anuláveis quando ausentes, exemplos reais observados), de um sample_record_id ou de dados editados juntamente com os respetivos anexos associados ao registo. Os IDs semânticos são de adesão opcional; as sugestões são revistas, nunca aplicadas automaticamente. |
| Esquemas | save_schema | Guarde um esquema criado diretamente pelo Claude — sem chamada a LLM, sem custo, validado no lado do servidor. |
| Esquemas | update_schema | Renomear, substituir o conteúdo, reetiquetar, fixar ou alternar a verificação de ambiguidade num esquema guardado, sem qualquer chamada ao LLM. |
| Esquemas | get_schema_part | Leia uma parte de um schema sem o documento completo: o índice de tipos nomeados, uma definição $defs/$enums, uma subárvore de objeto ou um único cartão de propriedade com as suas relações e flags. |
| Esquemas | update_schema_property | Edite uma propriedade por caminho — mudar o nome, tipo ou $ref, descrição, exemplos, flags — ou remova-a, com validação do lado do servidor; sem round-trip do conteúdo completo. |
| Esquemas | add_schema_property | Adicione uma propriedade escalar, objeto aninhado ou $ref à raiz, a um objeto aninhado ou a um tipo $defs. |
| Esquemas | move_schema_property | Mova uma propriedade para outro contentor — a raiz, um objeto aninhado ou um tipo $defs — mantendo os respetivos sinalizadores e domínio de especialidade. |
| Esquemas | publish_schema | Publica a cópia de trabalho de um schema ligado como o contrato contra o qual o enrichment e as suas database syncs são executados. As edições estruturais só têm efeito aqui — e uma sync recém-ligada não envia nada até à primeira publicação do respetivo schema. validate_only=true pré-visualiza o diff da migração. |
| Esquemas | analyze_sample | Analise o JSON de amostra em busca de nomes de propriedades que admitem mais do que uma leitura no contexto do respetivo elemento pai — ou nenhuma — e de itens relacionados que misturam factos da entidade com factos por elemento pai. Relatório sem estado com as interpretações concorrentes e sugestões de renomeação; nada é modificado. |
| Esquemas | analyze_schema | Executar as verificações de ambiguidade e de âmbito de identidade num esquema guardado e escrever anotações por propriedade — uma descrição reescrita para cada nome ambíguo, uma vez que um esquema ativo não pode ser renomeado. Incremental por predefinição; force=true reanalisa tudo. |
| Esquemas | delete_schema | Elimine (soft delete) um esquema guardado por UUID. |
| Enriquecimento | enrich_entity | Enriquecimento multi-modelo com auto-fusão opcional. Aceita uma lista opcional attachment_ids. As incompatibilidades de classificação devolvem uma resposta sem erro para que o Claude possa pedir ao utilizador que confirme e tente novamente. |
| Enriquecimento | start_batch_enrichment | Enriqueça qualquer número de entidades de forma assíncrona — sem limite fixo de tamanho de lote, apenas limitado pela quota de utilização em tempo real do seu plano — pipeline completo por entidade com fusão automática. Devolve um job_id; os resultados são guardados nos seus registos. |
| Enriquecimento | fetch_entities | Obtenha um array JSON de entidades a partir de uma API REST externa no lado do servidor (autenticação bearer / api_key / basic) — combina com o enriquecimento em lote. |
| Enriquecimento | retry_expertises | Reexecute apenas os domínios de especialização falhados de um registo, incorporando os valores recuperados — sem voltar a pagar pelo que já foi bem-sucedido. |
| Enriquecimento | merge_records | Combine 2 ou mais registos existentes num único resultado fundido — baseado em regras ou com um modelo de arbitragem LLM. |
| Trabalhos | get_job_status | Consulte as tarefas assíncronas para obter o progresso, os resultados, as falhas e as perguntas de esclarecimento. Após uma falha de compatibilidade com um modelo explícito, tente novamente uma vez com a seleção automática em vez de percorrer vários modelos. |
| Trabalhos | cancel_job | Cancele um trabalho pendente, em execução ou em pausa. |
| Trabalhos | answer_job_question | Responda às perguntas de esclarecimento de um trabalho em pausa e retome-o — a metade interativa do generate_sample. |
| Benchmarks | list_benchmark_scenarios | Liste os seus cenários de benchmark guardados (testes de enriquecimento reutilizáveis). |
| Benchmarks | get_benchmark_scenario | Um cenário com os respetivos resultados pontuados por modelo (qualidade / custo / velocidade). |
| Benchmarks | create_benchmark_scenario | Crie um cenário: esquema + entidade fixa + estratégia + avaliador de pontuação. Exige a função de proprietário + um plano com benchmarks. |
| Benchmarks | update_benchmark_scenario | Atualize a definição de teste ou a configuração de pontuação de um cenário; os resultados existentes são marcados como desatualizados. |
| Benchmarks | set_benchmark_reference | Guarde o resultado de referência de ouro e marque-o como verificado — obrigatório antes de uma execução. |
| Benchmarks | delete_benchmark_scenario | Elimine um cenário e os seus resultados. |
| Benchmarks | run_benchmark | Execute um cenário numa lista explícita de modelos, em todos os modelos ativos de fornecedores selecionados, ou em todos os modelos ativos — cada resultado é pontuado automaticamente em relação à referência. |
| Registos | list_records | Percorra registos de enriquecimento, geração de amostra/esquema, edição de esquema, playground, classificação, arbitragem e análise de ambiguidade, com filtros de sucesso, modelo, tarefa e pesquisa. |
| Registos | get_record | Saída estruturada completa + erros de validação para um registo. |
| Registos | get_stats | Estatísticas agregadas da organização: totais, taxa de sucesso, tokens, custo. |
| Anexos | upload_attachment | Carregue um ficheiro em base64 e devolva o respetivo ID de anexo e a capacidade de modelo necessária. Passar o ID para generate_sample ativa o modo de origem. |
| Anexos | delete_attachment | Eliminar um anexo por ID — um passo prático de limpeza pós-enriquecimento. |
| Database Sync | list_database_syncs | Lista as database syncs registadas num schema guardado, com as contagens de deltas pendentes e as opções de cada sync. |
| Database Sync | create_database_sync | Ligue uma base de dados a um schema guardado, transformando os seus enriquecimentos em deltas SQL relacionais para o seu próprio PostgreSQL. O schema é associado sem ser publicado e o modelo da base de dados é classificado em segundo plano — reveja-o e depois publish_schema inicia o fluxo. |
| Database Sync | classify_database_model | Volte a executar a classificação do modelo da base de dados após editar um schema associado: um LLM propõe a chave, o tipo SQL, o índice e a titularidade de cada propriedade nova ou alterada. A primeira passagem executa-se sozinha quando a base de dados é ligada. |
| Database Sync | delete_database_sync | Elimina uma database sync e os respetivos deltas em fila — as tabelas da sua réplica nunca são tocadas. Os sinalizadores de desmontagem opcionais também eliminam o estado da entity e o modelo de database de schemas que fiquem sem qualquer database. |
| Database Sync | create_database_credential | (Re)emite a credencial sync-client de uma database sync — o passo de emparelhamento do fluxo de trabalho ee-database, devolvido com os comandos de instalação e emparelhamento. |
| Database Sync | fetch_database_deltas | Obtém a próxima janela FIFO de deltas SQL de uma database sync — claim=true reserva-a para entrega confirmada, claim=false é uma leitura reproduzível. |
| Database Sync | ack_database_deltas | Confirma os deltas aplicados até um id: liberta o lease e aplica as opções de purga do sync. |
| Database Sync | assign_sync_host | Atribuir (ou limpar) o host de sincronização que aprovisiona um Database Sync em modo gerido — o host reclama a credencial, cria a base de dados física se não existir e inicia a sincronização, sem qualquer emparelhamento manual. |
| Database Sync | list_entity_states | Explorar o estado atual das entidades de um schema — as linhas desduplicadas, com prevalência da última escrita, que a camada de entidades guarda e que todas as bases de dados ligadas replicam, e não os registos por execução de list_records. |
| Database Sync | sync_records_to_database | Injete resultados de enriquecimento armazenados no Database Sync de um esquema — revalidados face ao contrato publicado e depois submetidos ao controlo de admissão. |
| IDs semânticos | list_semantic_concepts | Percorra o vocabulário de conceitos da organização com as respetivas facetas de tipo — ou, com view="duplicates", os pares de conceitos imediatamente abaixo do limiar de resolução. |
| IDs semânticos | get_semantic_concept | Um conceito na íntegra: formas de superfície, chaves de origem de identidade, registos ligados e os vizinhos mais próximos com as respetivas semelhanças (definidas apenas dentro do seu segmento de tipo de conceito e modelo de embedding). |
| IDs semânticos | probe_semantic_concept | Simule a escada de resolução para um texto — o que um enriquecimento faria com ele — sem criar nada. Teste antes de adicionar. |
| IDs semânticos | add_semantic_concept | Adicione um conceito com utilização 0 ou, com alias_of, uma nova forma de superfície de um conceito existente. É recusado, devolvendo o conceito em vigor, quando o texto já está coberto no limiar. |
| IDs semânticos | update_concept_alias | Remova uma forma de superfície de um conceito ou promova uma delas a canónica. A última forma de superfície é recusada — eliminar o conceito compete ao fluxo de eliminação. |
| IDs semânticos | import_semantic_concepts | Resolva até 1000 textos de identidade através da escada de enriquecimento: por predefinição, um relatório por linha; com mint=true (proprietário), cria os conceitos em falta. |
| IDs semânticos | merge_semantic_concepts | Integre um conceito noutro. impact_only=true (predefinição) apresenta o raio de impacto; a fusão em si (proprietário) reaponta aliases e entidades e converge todas as bases de dados ligadas. |
| IDs semânticos | delete_semantic_concepts | Elimine conceitos por id, tipos inteiros ou apenas os não utilizados. impact_only=true (predefinição) apresenta primeiro as contagens e os esquemas/bases de dados afetados; a eliminação regenera-se automaticamente, mas quebra a convergência com os ids armazenados. |
| IDs semânticos | migrate_semantic_embeddings | Estado, pré-visualização de colisões, arranque ou cancelamento da migração de modelo de embedding da organização — a única forma de mover conceitos existentes entre modelos de embedding. |
Omita attachment_ids. O modelo concebe uma amostra reutilizável a partir do seu conhecimento, e enable_web_search=true pode fundamentar factos externos.
Passe attachment_ids. O planeador trata os ficheiros como autoritativos: transcreve os valores dos documentos ou descreve apenas os atributos visíveis numa fotografia. Os campos e as instruções adicionais não podem acrescentar factos externos não relacionados.
Tudo o que passar como instruções adicionais é respeitado ou, então, reportado como não respeitado. Sempre que uma regra determinista tiver de anular algo que pediu — uma estrutura que o gerador não consegue produzir, por exemplo — a tarefa concluída inclui uma lista de warnings a indicá-lo. Transmita-as ao utilizador: uma instrução ignorada em silêncio é a forma como uma amostra acaba discretamente errada.
Para um pedido híbrido, como identificar um carro a partir de uma fotografia e investigar as suas aparições públicas, chame generate_sample duas vezes: primeiro em modo de origem com a pesquisa web desativada, depois sem anexos, usando a identidade confirmada e com a pesquisa web ativada. Combine os resultados na conversa; o Entity Enricher mantém registos separados para que as observações da origem e os factos investigados conservem proveniências distintas.
Mantenha model=auto a menos que precise explicitamente de um modelo. A seleção automática aplica os requisitos da tarefa, dos anexos e da pesquisa web; uma chave de modelo disponível pode ainda deparar-se com quotas específicas do fornecedor ou restrições de ferramentas combinadas.
Antes de gerar o esquema, o cliente revê o âmbito da entidade, as chaves, os tipos, a cardinalidade, os campos representativos em falta e as relações aninhadas. As edições relevantes são agrupadas para a sua aprovação; os valores factuais e a estrutura nunca são alterados silenciosamente.
Para tabelas relacionais, dados mestre, grafos de conhecimento ou entidades aninhadas reutilizáveis, o cliente pergunta se deve gerar IDs semânticos. Estes exigem um modelo de embedding da organização e acrescentam custos de embedding, pelo que permanecem desativados por predefinição.
Passe entity_data para uma amostra nova ou editada, ou sample_record_id para reutilizar JSON armazenado e os respetivos anexos associados. Passar ambos usa o JSON editado, mantendo os anexos. Uns attachment_ids explícitos, incluindo uma lista vazia, substituem a herança.
Após a geração, o cliente verifica a conformidade da amostra, as chaves, as anotações, a especialização, as relações e a cobertura de IDs semânticos. As sugestões estruturais exigem editar a amostra e voltar a gerar; as edições que envolvem apenas anotações continuam a exigir a sua aprovação. Nada é aplicado automaticamente.
Os recursos permitem que o Claude navegue pelos dados sem gastar uma chamada de ferramenta — o cliente LLM trata-os como ficheiros. Ambos os tipos de recurso são apresentados como Markdown para uma exibição inline económica.
| Modelo de URI | Descrição |
|---|---|
| enricher://schemas/{schema_id} | Um esquema guardado apresentado como Markdown — cabeçalho de metadados + o GeneratedJsonSchema como um bloco JSON delimitado. |
| enricher://records/{record_id} | Um registo de enriquecimento anterior apresentado em Markdown — metadados + saída estruturada + erros de validação. |
Quando pede à enrich_entity para utilizar um classification model e a entity não corresponde ao tipo do schema, a ferramenta devolve uma resposta sem erro com detalhes estruturados. O Claude lê-a, apresenta-lhe o raciocínio e (após a sua confirmação) repete com force_after_classification_warning=true — o que remove o classificador na nova tentativa.
{
"success": false,
"error_code": "classification_warning",
"message": "Pre-flight classification rejected the entity. ...",
"classification": {
"status": "mismatch",
"reasoning": "Titan is a moon of Saturn, not a planet.",
"confidence": 0.97
},
"job_id": "..."
}O n8n e o Make cancelam automaticamente neste estado porque não conseguem perguntar ao utilizador a meio do pipeline. O MCP consegue, e é essa única diferença que justifica a existência do conector.
A mesma interatividade alimenta um segundo fluxo: quando o generate_sample é executado com documentos de origem, o seu planeador pode pausar com perguntas de esclarecimento estruturais. O Claude transmite-as e retoma o trabalho com answer_job_question — ronda após ronda, até a amostra ser gerada.
Os erros de ferramenta são projetados em dicionários estruturados com um campo error_code para que o Claude possa fazer correspondência de padrões em vez de analisar texto livre. A camada HTTP mapeia de forma clara: 402 → erro de quota ou de crédito, 422 → aviso de classificação, 504 → tempo limite, 502 → falha do LLM a montante.
| error_code | Quando |
|---|---|
| invalid_request | UUID malformado, argumentos mutuamente exclusivos (schema_id + target_schema) ou falha na validação do corpo do pedido. |
| prompt_limit_reached | Quota de prompts diária / semanal / mensal esgotada (HTTP 402). O corpo inclui período, limite, utilizado e necessário. |
| insufficient_credits | A org tem a faturação ativada, mas o saldo de credits é demasiado baixo para iniciar o trabalho (HTTP 402). O corpo inclui o saldo e um URL de compra. |
| model_limit_exceeded | Foram pedidos mais modelos do que o plano permite (HTTP 402). Devolve o limite + o solicitado. |
| language_limit_exceeded | Foram pedidos mais idiomas do que o plano permite (HTTP 402). |
| concurrent_job_limit_reached | Demasiadas tarefas de enriquecimento ativas para esta organização. Aguarde ou atualize o plano. |
| classification_warning | ⚡ Não é um erro: o classificador de pré-verificação rejeitou a entidade. A resposta inclui o contexto da classificação para que o Claude possa pedir ao utilizador que confirme e tente novamente com force_after_classification_warning=true. |
| benchmarks_not_in_plan | As ferramentas de benchmark exigem a função de proprietário e um plano que inclua Model Benchmarks (HTTP 403). |
| ambiguity_check_disabled | analyze_schema foi chamado num esquema cuja verificação de ambiguidade está desativada (HTTP 400). Reative-a primeiro através de update_schema com ambiguity_check_enabled=true. |
| enrichment_timeout | A tarefa excedeu timeout_seconds. Sugira menos models ou dividir a entity. |
| schema_generation_timeout | A geração de esquemas excedeu o timeout_seconds. |
| schema_generation_failed | Erro do LLM a montante durante a geração do schema (HTTP 502). |
| model_output_invalid | O modelo devolveu um resultado que não corresponde ao schema (HTTP 502). O corpo indica o modelo, o caminho da propriedade em causa e retryable: true — chame novamente a ferramenta ou escolha um modelo mais forte. |
| cancelled | A tarefa foi cancelada a meio da execução (HTTP 499). |
| not_found | O ID do esquema ou do registo não existe na sua organização. |
| http_error | Genérico para erros HTTP sem um corpo de detalhe estruturado. |
get_stats abrange os resumos do lado do chat; os painéis completos permanecem na aplicação.