Entity Enricher include un server Model Context Protocol integrato su /api/mcp — elencate i vostri schemi, arricchite un'entità, ispezionate il risultato e risolvete un avviso di classificazione tutto all'interno di un'unica chat di Claude. Nessun editor di flussi di lavoro richiesto.
Forma diversa, caso d'uso diverso. I connettori n8n e Make incapsulano l'API per l'automazione dei flussi di lavoro: trigger, esecuzioni pianificate, pipeline multi-step, stato persistente. MCP la incapsula per la chat interattiva: domande ad hoc, arricchimenti esplorativi, chiarimenti di follow-up. I flussi di lavoro hanno una forma a batch, le chat una forma conversazionale — la superficie cambia e con essa la UX.
La funzionalità straordinaria che solo MCP sblocca: ripresa interattiva della classificazione. Quando il classificatore preliminare rifiuta la sua entità (ad esempio ha chiesto di arricchire "Titano" rispetto a uno schema Pianeta, ma Titano è una luna), n8n/Make devono annullare automaticamente perché non sono interattivi. MCP mostra l'avviso a Claude, Claude le chiede di confermare e, in caso di "sì", lo strumento viene rieseguito senza il classificatore. Nessun fallimento a metà della pipeline, nessuna riesecuzione da zero.
Per claude.ai, Claude Code, Cursor e qualsiasi client MCP che supporti il flusso OAuth standard. Nessuna API key da creare o incollare: il client individua automaticamente il server di autorizzazione.
https://entityenricher.ai/api/mcp/.Per i client configurati tramite un file JSON anziché con un accesso interattivo (Claude Desktop, Continue, Zed).
ent_…: viene mostrato una sola volta.Per Claude Desktop, modificate ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) oppure %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"entityenricher": {
"url": "https://entityenricher.ai/api/mcp/",
"headers": { "X-API-Key": "ent_your_key_here" }
}
}
}Riavviare Claude Desktop. Lo stesso snippet funziona con Claude Code, Cursor, Continue e Zed, ossia qualsiasi client compatibile con MCP.
In una nuova chat: "Elenca i miei schemi Entity Enricher, quindi arricchisci Sanofi rispetto allo schema dell'azienda farmaceutica usando Claude Sonnet." Claude individua automaticamente gli strumenti, sceglie quello giusto, le chiede di confermare la scelta del modello e dello schema e trasmette il risultato in linea.
29 strumenti coprono l'intera superficie di arricchimento e creazione degli schemi. Il comportamento è identico agli endpoint REST che incapsulano (stessa validazione, fatturazione, limiti di piano): quando l'interfaccia web riceve una correzione, la ottiene anche MCP. I lavori di lunga durata (arricchimento batch, generazione di campioni, esecuzioni di benchmark) sono asincroni: lo strumento di avvio restituisce un job_id, Claude interroga get_job_status e recupera gli output persistiti dai propri record una volta completato il job.
| Categoria | Strumento | Descrizione |
|---|---|---|
| Scoperta | list_models | Elenca i modelli LLM disponibili + i profile_limits del tuo piano affinché Claude si autoregoli prima di raggiungere l'errore HTTP 402. |
| Schemi | list_schemas | Elenca gli schema JSON salvati nella tua organizzazione, con quelli fissati per primi. |
| Schemi | get_schema | Recupera il contenuto completo di uno schema tramite UUID. |
| Schemi | generate_sample | Generare un'entità campione realistica a partire da una descrizione del tipo di entità — il primo passo naturale prima della generazione dello schema. Con gli allegati, un pianificatore interattivo potrebbe mettersi in pausa con domande di chiarimento. |
| Schemi | create_schema_from_sample | Generare uno schema JSON da un dizionario di entità campione tramite LLM, facoltativamente basato su documenti sorgente caricati (attachment_ids). Il risultato viene salvato automaticamente. |
| Schemi | edit_schema | Modifica in linguaggio naturale di uno schema esistente. Restituisce il nuovo contenuto + 5 suggerimenti successivi. |
| Schemi | save_schema | Salvare uno schema creato direttamente da Claude — nessuna chiamata LLM, nessun costo, validato lato server. |
| Schemi | update_schema | Rinominare, sostituire il contenuto, ri-etichettare o fissare uno schema salvato senza una chiamata LLM. |
| Schemi | delete_schema | Eliminare in modo soft uno schema salvato tramite UUID. |
| Arricchimento | enrich_entity | Arricchimento multi-modello con fusione automatica opzionale. Accetta un elenco opzionale attachment_ids. Le discrepanze di classificazione restituiscono una risposta senza errori, così che Claude possa chiedere all'utente di confermare e riprovare. |
| Arricchimento | start_batch_enrichment | Arricchire fino a 100 entità in modo asincrono — pipeline completa per ogni entità con fusione automatica. Restituisce un job_id; i risultati finiscono nei propri record. |
| Arricchimento | fetch_entities | Recuperare un array JSON di entità da un'API REST esterna lato server (bearer / api_key / basic auth) — si abbina all'arricchimento batch. |
| Arricchimento | retry_expertises | Rieseguire solo i domini di competenza falliti di un record, unendo i valori recuperati — nessun nuovo pagamento per ciò che è già andato a buon fine. |
| Arricchimento | merge_records | Unire 2 o più record esistenti in un unico risultato fuso — basato su regole o con un modello di arbitraggio LLM. |
| Job | get_job_status | Interrogare qualsiasi job asincrono (batch, generazione di campioni, esecuzione di benchmark): contatori di avanzamento, riepiloghi finali e domande di chiarimento in sospeso. |
| Job | cancel_job | Annullare un job in attesa, in esecuzione o in pausa. |
| Job | answer_job_question | Rispondere alle domande di chiarimento di un job in pausa e riprenderlo — la metà interattiva di generate_sample. |
| Benchmark | list_benchmark_scenarios | Elencare gli scenari di benchmark salvati (test di arricchimento riutilizzabili). |
| Benchmark | get_benchmark_scenario | Uno scenario con i suoi risultati con punteggio per modello (qualità / costo / velocità). |
| Benchmark | create_benchmark_scenario | Creare uno scenario: schema + entità fissa + strategia + giudice di punteggio. Richiesti il ruolo di proprietario + un piano con benchmark. |
| Benchmark | update_benchmark_scenario | Aggiornare la definizione di test o la configurazione di punteggio di uno scenario; i risultati esistenti vengono contrassegnati come obsoleti. |
| Benchmark | set_benchmark_reference | Salvare l'output di riferimento gold e contrassegnarlo come verificato — richiesto prima di un'esecuzione. |
| Benchmark | delete_benchmark_scenario | Eliminare uno scenario e i suoi risultati. |
| Benchmark | run_benchmark | Eseguire uno scenario su un elenco esplicito di modelli, su ogni modello attivo dei provider selezionati o su tutti i modelli attivi — ogni risultato riceve automaticamente un punteggio rispetto al riferimento. |
| Record | list_records | Sfoglia i record passati con filtri per tipo, esito, modello, processo e ricerca libera. |
| Record | get_record | Output strutturato completo + errori di validazione per un record. |
| Record | get_stats | Statistiche aggregate dell'organizzazione: totali, tasso di successo, token, costo. |
| Allegati | upload_attachment | Carica un file base64 (filename, content_base64, media_type?) e restituisce il relativo ID allegato da utilizzare in enrich_entity. |
| Allegati | delete_attachment | Elimina un allegato tramite ID — un comodo passaggio di pulizia post-arricchimento. |
Le risorse consentono a Claude di esplorare i dati senza consumare una chiamata a strumento: il client LLM le tratta come file. Entrambi i tipi di risorsa vengono visualizzati in Markdown per una resa inline economica.
| Template URI | Descrizione |
|---|---|
| enricher://schemas/{schema_id} | Uno schema salvato rappresentato come Markdown — intestazione dei metadati + il GeneratedJsonSchema come blocco JSON delimitato. |
| enricher://records/{record_id} | Un record di arricchimento passato rappresentato come Markdown — metadati + output strutturato + errori di validazione. |
Quando si chiede a enrich_entity di usare un modello di classificazione e l'entità non corrisponde al tipo dello schema, lo strumento restituisce una risposta non di errore con dettagli strutturati. Claude la legge, ti espone il ragionamento e (previa tua conferma) riprova con force_after_classification_warning=true — che esclude il classificatore al nuovo tentativo.
{
"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 e Make si annullano automaticamente in questo stato perché non possono interpellare l'utente durante la pipeline. MCP può farlo, e questa singola differenza è il motivo per cui esiste il connettore.
La stessa interattività alimenta un secondo flusso: quando generate_sample viene eseguito con documenti sorgente, il suo pianificatore potrebbe mettersi in pausa con domande di chiarimento strutturali. Claude le inoltra all'utente e riprende il job con answer_job_question — round dopo round, finché il campione non viene generato.
Gli errori degli strumenti vengono proiettati in dict strutturati con un campo error_code, così Claude può eseguire il pattern-matching anziché analizzare testo libero. Il livello HTTP effettua una mappatura pulita: 402 → errore di quota o di credito, 422 → avviso di classificazione, 504 → timeout, 502 → errore dell'LLM upstream.
| error_code | Quando |
|---|---|
| invalid_request | UUID malformato, argomenti mutuamente esclusivi (schema_id + target_schema) o convalida del corpo della richiesta non riuscita. |
| prompt_limit_reached | Quota di prompt giornaliera / settimanale / mensile esaurita (HTTP 402). Il corpo include periodo, limite, utilizzati e necessari. |
| insufficient_credits | L'org ha la fatturazione attiva ma il saldo dei crediti è troppo basso per avviare il lavoro (HTTP 402). Il corpo include il saldo e un URL di acquisto. |
| model_limit_exceeded | Richiesti più modelli di quanti ne consenta il piano (HTTP 402). Riporta il limite e la quantità richiesta. |
| language_limit_exceeded | Richieste più lingue di quante ne consenta il piano (HTTP 402). |
| concurrent_job_limit_reached | Troppi processi di arricchimento attivi per questa organizzazione. Attenda o aggiorni il piano. |
| classification_warning | ⚡ Non è un errore: il classificatore preliminare ha rifiutato l'entità. La risposta include il contesto di classificazione affinché Claude possa chiedere all'utente di confermare e riprovare con force_after_classification_warning=true. |
| benchmarks_not_in_plan | Gli strumenti di benchmark richiedono il ruolo di proprietario e un piano che includa i Model Benchmarks (HTTP 403). |
| enrichment_timeout | Il job ha superato timeout_seconds. Suggeriamo di ridurre i modelli o di suddividere l'entity. |
| schema_generation_timeout | La generazione dello schema ha superato timeout_seconds. |
| schema_generation_failed | Errore LLM upstream durante la generazione dello schema (HTTP 502). |
| cancelled | Il job è stato annullato durante l'esecuzione (HTTP 499). |
| not_found | Lo schema o l'ID del record non esiste nella vostra organizzazione. |
| http_error | Gestione generica per gli errori HTTP privi di un corpo di dettaglio strutturato. |
get_stats copre i riepiloghi lato chat; le dashboard complete restano nell'app.