Entity Enricher incluye un servidor Model Context Protocol integrado en /api/mcp: enumere sus esquemas, enriquezca una entidad, inspeccione el resultado y resuelva una advertencia de clasificación todo desde un único chat de Claude. No se requiere ningún editor de flujos de trabajo.
Otra forma, otro caso de uso. Los conectores n8n y Make envuelven la API para la automatización de flujos de trabajo: disparadores, ejecuciones programadas, pipelines de varios pasos, estado persistente. MCP la envuelve para el chat interactivo: preguntas puntuales, enriquecimientos exploratorios, aclaraciones de seguimiento. Los flujos de trabajo tienen forma de batch, los chats tienen forma de conversación: la superficie difiere y la experiencia de usuario también.
La función estrella que solo MCP desbloquea: reanudación interactiva de la clasificación. Cuando el clasificador previo rechaza su entidad (p. ej., pidió enriquecer «Titán» contra un esquema de Planeta, pero Titán es una luna), n8n/Make tienen que cancelar automáticamente porque no son interactivos. MCP muestra la advertencia a Claude, Claude le pide confirmación y, al responder «sí», la herramienta se vuelve a ejecutar sin el clasificador. Sin fallos a mitad del pipeline, sin volver a ejecutar desde cero.
Para claude.ai, Claude Code, Cursor y cualquier cliente MCP compatible con el flujo OAuth estándar. Sin API key que crear ni pegar: el cliente descubre el servidor de autorización automáticamente.
https://entityenricher.ai/api/mcp/.Para clientes configurados mediante un archivo JSON en lugar de un inicio de sesión interactivo (Claude Desktop, Continue, Zed).
ent_…: solo se muestra una vez.Para Claude Desktop, edite ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"entityenricher": {
"url": "https://entityenricher.ai/api/mcp/",
"headers": { "X-API-Key": "ent_your_key_here" }
}
}
}Reinicie Claude Desktop. El mismo fragmento funciona para Claude Code, Cursor, Continue y Zed, cualquier cliente compatible con MCP.
En un chat nuevo: «Enumera mis esquemas de Entity Enricher y, a continuación, enriquece a Sanofi con el esquema de empresa farmacéutica usando Claude Sonnet.» Claude descubre las herramientas automáticamente, elige la correcta, le solicita confirmar la elección de modelo y esquema, y transmite el resultado en línea.
Las 54 herramientas cubren toda la superficie de vocabulario de enriquecimiento, creación de esquemas, Database Sync e ID semánticos. Su comportamiento es idéntico al de los endpoints REST que encapsulan (misma validación, facturación y límites de plan) — cuando la interfaz web recibe una corrección, MCP también la recibe. Las tareas de larga duración (enriquecimiento por lotes, generación de muestras, ejecuciones de benchmark) son asíncronas: la herramienta de inicio devuelve un job_id, Claude consulta get_job_status y recupera los resultados persistidos de sus registros una vez que finaliza el trabajo.
| Categoría | Herramienta | Descripción |
|---|---|---|
| Descubrimiento | list_models | Enumere las claves de modelo, las capacidades nominales, los valores predeterminados seleccionados automáticamente y los profile_limits de su plan. Prefiera la selección automática: la disponibilidad no garantiza todas las cuotas del proveedor ni el modo combinado de medios/herramientas. |
| Esquemas | list_schemas | Lista los esquemas JSON guardados en su organización, los fijados primero. |
| Esquemas | get_schema | Obtenga el contenido completo de un esquema por UUID. |
| Esquemas | generate_sample | Genere de 1 a N contratos de muestra editables en un solo trabajo (el primero define el conjunto de campos; el resto son variantes de instancia rápidas con los mismos campos) en modo conocimiento (sin adjuntos, búsqueda web opcional) o en modo fuente (los adjuntos son la referencia autoritativa y el planificador puede formular preguntas). Revise las ediciones importantes con el usuario antes de crear un esquema. |
| Esquemas | create_schema_from_sample | Genere y guarde automáticamente un esquema a partir de entity_samples (de 1 a N muestras de un tipo de entidad — unión de campos, anulables cuando falten, ejemplos reales observados), un sample_record_id o datos editados junto con sus adjuntos vinculados al registro. Los ID semánticos son opcionales; las sugerencias se revisan, nunca se aplican automáticamente. |
| Esquemas | save_schema | Persista un esquema creado directamente por Claude: sin llamada al LLM, sin coste, validado del lado del servidor. |
| Esquemas | update_schema | Cambie el nombre, reemplace el contenido, vuelva a etiquetar, fije o active la verificación de ambigüedad de un esquema guardado sin realizar una llamada al LLM. |
| Esquemas | get_schema_part | Lea una parte de un esquema sin el documento completo: el índice de tipos con nombre, una definición de $defs/$enums, un subárbol de objeto o una única ficha de propiedad con sus relaciones e indicadores. |
| Esquemas | update_schema_property | Edite una propiedad por ruta —renombrar, tipo o $ref, descripción, ejemplos, indicadores— o elimínela, con validación en el servidor; sin ida y vuelta del contenido completo. |
| Esquemas | add_schema_property | Añada una propiedad escalar, un objeto anidado o una propiedad $ref a la raíz, a un objeto anidado o a un tipo de $defs. |
| Esquemas | move_schema_property | Mueva una propiedad a otro contenedor — la raíz, un objeto anidado o un tipo $defs — conservando sus indicadores y su dominio de especialización. |
| Esquemas | publish_schema | Publica la copia de trabajo de un esquema vinculado como el contrato con el que se ejecutan el enriquecimiento y sus sincronizaciones de base de datos. Las ediciones estructurales solo surten efecto aquí, y una sincronización recién vinculada no envía nada hasta la primera publicación de su esquema. validate_only=true muestra una vista previa del diff de migración. |
| Esquemas | analyze_sample | Analiza el JSON de muestra en busca de nombres de propiedad que admitan más de una lectura en el contexto de su elemento padre —o ninguna en absoluto— y de elementos relacionados que mezclan datos de la entidad con datos específicos de cada padre. Informe sin estado con las interpretaciones en conflicto y los cambios de nombre sugeridos; no se modifica nada. |
| Esquemas | analyze_schema | Ejecute las verificaciones de ambigüedad y de alcance de identidad en un esquema guardado y escriba anotaciones por propiedad: una descripción reescrita por cada nombre ambiguo, ya que un esquema activo no se puede renombrar. Incremental de forma predeterminada; force=true vuelve a analizarlo todo. |
| Esquemas | delete_schema | Elimine de forma lógica un esquema guardado por UUID. |
| Enriquecimiento | enrich_entity | Enriquecimiento multimodelo con autofusión opcional. Acepta una lista opcional attachment_ids. Las discrepancias de clasificación devuelven una respuesta que no es de error para que Claude pueda pedir al usuario que confirme y reintente. |
| Enriquecimiento | start_batch_enrichment | Enriquezca cualquier cantidad de entidades de forma asíncrona — sin límite fijo de tamaño de lote, restringido por la cuota de uso en tiempo real de su plan — pipeline completo por entidad con fusión automática. Devuelve un job_id; los resultados llegan a sus registros. |
| Enriquecimiento | fetch_entities | Obtenga un array JSON de entidades desde una API REST externa del lado del servidor (bearer / api_key / basic auth): se combina con el enriquecimiento por lotes. |
| Enriquecimiento | retry_expertises | Vuelva a ejecutar únicamente los dominios de especialización fallidos de un registro, combinando de nuevo los valores recuperados: sin volver a pagar por lo que ya tuvo éxito. |
| Enriquecimiento | merge_records | Combine 2 o más registros existentes en un resultado fusionado: basado en reglas o con un modelo de arbitraje LLM. |
| Trabajos | get_job_status | Sondee los trabajos asíncronos para conocer el progreso, los resultados, los fallos y las preguntas de aclaración. Tras un fallo de compatibilidad con un modelo explícito, reintente una vez con la selección automática en lugar de ir alternando modelos. |
| Trabajos | cancel_job | Cancele un trabajo pendiente, en ejecución o en pausa. |
| Trabajos | answer_job_question | Responda las preguntas de aclaración de un trabajo en pausa y reanúdelo: la mitad interactiva de generate_sample. |
| Benchmarks | list_benchmark_scenarios | Enumere sus escenarios de benchmark guardados (pruebas de enriquecimiento reutilizables). |
| Benchmarks | get_benchmark_scenario | Un escenario con sus resultados puntuados por modelo (calidad / coste / velocidad). |
| Benchmarks | create_benchmark_scenario | Cree un escenario: esquema + entidad fija + estrategia + juez de puntuación. Se requiere el rol de propietario y un plan con benchmarks. |
| Benchmarks | update_benchmark_scenario | Actualice la definición de prueba o la configuración de puntuación de un escenario; los resultados existentes se marcan como obsoletos. |
| Benchmarks | set_benchmark_reference | Guarde la salida de referencia dorada y márquela como verificada: es obligatorio antes de una ejecución. |
| Benchmarks | delete_benchmark_scenario | Elimine un escenario y sus resultados. |
| Benchmarks | run_benchmark | Ejecute un escenario sobre una lista explícita de modelos, todos los modelos activos de proveedores seleccionados o todos los modelos activos: cada resultado se puntúa automáticamente frente a la referencia. |
| Registros | list_records | Recorra los registros de enriquecimiento, generación de muestra/esquema, edición de esquema, playground, clasificación, arbitraje y análisis de ambigüedad, con filtros de éxito, modelo, trabajo y búsqueda. |
| Registros | get_record | Salida estructurada completa + errores de validación para un registro. |
| Registros | get_stats | Estadísticas agregadas de la organización: totales, tasa de éxito, tokens y coste. |
| Adjuntos | upload_attachment | Suba un archivo en base64 y devuelva su ID de adjunto junto con la capacidad de modelo requerida. Pasar el ID a generate_sample activa el modo fuente. |
| Adjuntos | delete_attachment | Elimine un adjunto por ID: un práctico paso de limpieza posterior al enriquecimiento. |
| Database Sync | list_database_syncs | Enumera las sincronizaciones de base de datos registradas en un esquema guardado, con el recuento de deltas pendientes y las opciones de cada sincronización. |
| Database Sync | create_database_sync | Conecte una base de datos a un schema guardado para convertir sus enrichments en deltas SQL relacionales para su propio PostgreSQL. El schema se vincula sin publicar y el modelo de la base de datos se clasifica en segundo plano: revíselo y luego publish_schema inicia la alimentación. |
| Database Sync | classify_database_model | Vuelva a ejecutar la classification del modelo de la base de datos tras editar un schema vinculado: un LLM propone la clave, el tipo SQL, el índice y la propiedad de cada property nueva o modificada. La primera pasada se ejecuta por sí sola cuando la base de datos está conectada. |
| Database Sync | delete_database_sync | Elimina una sincronización de base de datos y sus deltas en cola: las tablas de su réplica nunca se tocan. Los indicadores opcionales de desmontaje también eliminan el estado de entidad y el modelo de base de datos de los esquemas que quedan sin ninguna base de datos. |
| Database Sync | create_database_credential | (Re)emite la credencial de sync-client de una sincronización de base de datos: el paso de emparejamiento del flujo de trabajo ee-database, devuelta junto con los comandos de instalación y emparejamiento. |
| Database Sync | fetch_database_deltas | Obtiene la siguiente ventana FIFO de deltas SQL para una sincronización de base de datos: claim=true la arrienda para una entrega confirmada, claim=false es una lectura reproducible. |
| Database Sync | ack_database_deltas | Confirma los deltas aplicados hasta un id: libera el arrendamiento y aplica las opciones de purga de la sincronización. |
| Database Sync | assign_sync_host | Asigna (o borra) el host de sincronización que aprovisiona una sincronización de base de datos en modo gestionado: el host reclama la credencial, crea la base de datos física si no existe e inicia la sincronización, sin emparejamiento manual. |
| Database Sync | list_entity_states | Explore el estado actual de las entidades de un esquema: las filas deduplicadas y con criterio last-write-wins que mantiene la capa de entidades y que replica cada base de datos vinculada, no los registros por ejecución de list_records. |
| Database Sync | sync_records_to_database | Inyecta salidas de enriquecimiento almacenadas en el Database Sync de un esquema: se revalidan con el contrato publicado y luego pasan por la puerta de admisión. |
| IDs semánticos | list_semantic_concepts | Explore el vocabulario de conceptos de la organización con sus facetas de tipo o, con view="duplicates", los pares de conceptos justo por debajo del umbral de resolución. |
| IDs semánticos | get_semantic_concept | Un concepto al completo: formas superficiales, claves de origen de identidad, registros vinculados y sus vecinos más cercanos con sus similitudes (solo definidas dentro de su propio segmento de tipo de concepto y modelo de embedding). |
| IDs semánticos | probe_semantic_concept | Simule la escalera de resolución para un texto —lo que haría con él un enriquecimiento— sin crear nada. Sondee antes de añadir. |
| IDs semánticos | add_semantic_concept | Añada un concepto con uso 0 o, con alias_of, una nueva forma superficial de uno existente. Se rechaza indicando el concepto vigente cuando el texto ya está cubierto en el umbral. |
| IDs semánticos | update_concept_alias | Elimine una forma superficial de un concepto o promueva una a canónica. La última forma superficial se rechaza: eliminar el concepto es tarea del flujo de eliminación. |
| IDs semánticos | import_semantic_concepts | Resuelva hasta 1000 textos de identidad a través de la escalera de enriquecimiento: un informe por fila de forma predeterminada, creando los no encontrados con mint=true (propietario). |
| IDs semánticos | merge_semantic_concepts | Fusione un concepto dentro de otro. impact_only=true (predeterminado) informa del alcance del impacto; la fusión en sí (propietario) reapunta alias y entidades y converge todas las bases de datos vinculadas. |
| IDs semánticos | delete_semantic_concepts | Elimine conceptos por id, tipos completos o solo los no utilizados. impact_only=true (predeterminado) informa primero de los recuentos y de los esquemas/bases de datos afectados; la eliminación se autorrepara, pero rompe la convergencia con los id almacenados. |
| IDs semánticos | migrate_semantic_embeddings | Estado, vista previa de colisiones, inicio o cancelación de la migración de modelo de embedding de la organización: la única forma de mover conceptos existentes entre modelos de embedding. |
Omita attachment_ids. El modelo diseña una muestra reutilizable a partir de su conocimiento, y enable_web_search=true puede fundamentar hechos externos.
Pase attachment_ids. El planificador trata los archivos como fuente autorizada: transcribe los valores del documento o describe solo los atributos visibles en una foto. Los campos y las instrucciones adicionales no pueden añadir hechos externos no relacionados.
Lo que indique como instrucciones adicionales se cumple o se le informa de que no se ha cumplido. Cuando una regla determinista ha tenido que deshacer algo que pidió —por ejemplo, una estructura que el generador no puede emitir—, el trabajo finalizado incluye una lista de warnings que así lo indica. Transmítaselas al usuario: una instrucción ignorada en silencio es la forma en que una muestra acaba siendo incorrecta sin que nadie lo advierta.
Para una solicitud híbrida, como identificar un coche a partir de una foto e investigar sus apariciones públicas, llame a generate_sample dos veces: primero en modo fuente con la búsqueda web desactivada y, después, sin adjuntos, usando la identidad confirmada y con la búsqueda web activada. Combine los resultados en la conversación; Entity Enricher mantiene registros separados para que las observaciones de la fuente y los hechos investigados conserven una procedencia distinta.
Mantenga model=auto salvo que necesite explícitamente un modelo. La selección automática aplica los requisitos de la tarea, los adjuntos y la búsqueda web; una clave de modelo disponible aún puede encontrar limitaciones de cuota específicas del proveedor o restricciones de herramientas combinadas.
Antes de generar el esquema, el cliente revisa el alcance de la entidad, las claves, los tipos, la cardinalidad, los campos representativos que falten y las relaciones anidadas. Las ediciones importantes se agrupan para su aprobación; los valores fácticos y la estructura nunca se modifican de forma silenciosa.
Para tablas relacionales, datos maestros, grafos de conocimiento o entidades anidadas reutilizables, el cliente pregunta si desea generar ID semánticos. Requieren un modelo de embeddings de la organización y añaden coste de embeddings, por lo que permanecen desactivados de forma predeterminada.
Pase entity_data para una muestra nueva o editada, o sample_record_id para reutilizar el JSON almacenado y sus adjuntos vinculados. Pasar ambos usa el JSON editado y conserva los adjuntos. attachment_ids explícito, incluida una lista vacía, anula la herencia.
Tras la generación, el cliente comprueba la conformidad de la muestra, las claves, las anotaciones, la especialización, las relaciones y la cobertura de ID semánticos. Las sugerencias estructurales requieren editar la muestra y volver a generarla; las ediciones que solo afectan a anotaciones también requieren su aprobación. Nada se aplica automáticamente.
Los recursos permiten que Claude examine datos sin gastar una llamada a herramienta: el cliente LLM los trata como archivos. Ambos tipos de recurso se representan como Markdown para una visualización en línea económica.
| Plantilla de URI | Descripción |
|---|---|
| enricher://schemas/{schema_id} | Un esquema guardado representado como Markdown: encabezado de metadatos + el GeneratedJsonSchema como bloque JSON delimitado. |
| enricher://records/{record_id} | Un registro de enriquecimiento anterior representado como Markdown: metadatos + salida estructurada + errores de validación. |
Cuando le pide a enrich_entity que use un classification model y la entity no coincide con el tipo del schema, la herramienta devuelve una respuesta sin error con detalles estructurados. Claude la lee, le muestra el razonamiento y (tras su confirmación) reintenta con force_after_classification_warning=true, lo que descarta el clasificador en el reintento.
{
"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": "..."
}n8n y Make se cancelan automáticamente en este estado porque no pueden consultar al usuario a mitad de la canalización. MCP sí puede, y esa única diferencia es la razón de ser del conector.
La misma interactividad impulsa un segundo flujo: cuando generate_sample se ejecuta con documentos de origen, su planificador puede pausarse con preguntas de aclaración estructurales. Claude se las transmite y reanuda el trabajo con answer_job_question, ronda tras ronda, hasta que se genera la muestra.
Los errores de las herramientas se proyectan en diccionarios estructurados con un campo error_code para que Claude pueda hacer coincidencias de patrones en lugar de analizar texto libre. La capa HTTP se asigna de forma clara: 402 → error de cuota o crédito, 422 → advertencia de clasificación, 504 → tiempo de espera agotado, 502 → fallo del LLM ascendente.
| error_code | Cuándo |
|---|---|
| invalid_request | UUID con formato incorrecto, argumentos mutuamente excluyentes (schema_id + target_schema) o la validación del cuerpo de la solicitud falló. |
| prompt_limit_reached | Cuota de prompts diaria / semanal / mensual agotada (HTTP 402). El cuerpo incluye período, límite, usado y necesario. |
| insufficient_credits | La organización tiene la facturación habilitada, pero el saldo de créditos es demasiado bajo para iniciar el trabajo (HTTP 402). El cuerpo incluye el saldo y una URL de compra. |
| model_limit_exceeded | Se solicitaron más modelos de los que permite el plan (HTTP 402). Devuelve el límite y lo solicitado. |
| language_limit_exceeded | Se solicitaron más idiomas de los que permite el plan (HTTP 402). |
| concurrent_job_limit_reached | Demasiados trabajos de enriquecimiento activos para esta organización. Espere o mejore el plan. |
| classification_warning | ⚡ No es un error: el clasificador previo rechazó la entidad. La respuesta incluye el contexto de la clasificación para que Claude pueda pedir al usuario que confirme y reintente con force_after_classification_warning=true. |
| benchmarks_not_in_plan | Las herramientas de benchmark requieren el rol de propietario y un plan que incluya Model Benchmarks (HTTP 403). |
| ambiguity_check_disabled | Se llamó a analyze_schema en un esquema cuya comprobación de ambigüedad está desactivada (HTTP 400). Vuelva a activarla primero mediante update_schema con ambiguity_check_enabled=true. |
| enrichment_timeout | El trabajo superó timeout_seconds. Se sugiere usar menos modelos o dividir la entidad. |
| schema_generation_timeout | La generación de esquemas superó timeout_seconds. |
| schema_generation_failed | Error del LLM upstream durante la generación del schema (HTTP 502). |
| model_output_invalid | El modelo devolvió una salida que no coincide con el esquema (HTTP 502). El cuerpo indica el modelo, la ruta de la propiedad conflictiva y retryable: true — vuelva a llamar a la herramienta o elija un modelo más potente. |
| cancelled | El trabajo se canceló durante su ejecución (HTTP 499). |
| not_found | El ID de esquema o registro no existe en su organización. |
| http_error | Comodín para errores HTTP sin un cuerpo de detalle estructurado. |
get_stats cubre los resúmenes del lado del chat; los paneles completos permanecen en la aplicación.