Use Entity Enricher from an MCP-compatible client to turn model knowledge and documents into structured data. Design schemas, enrich entities in multiple languages, fuse models, curate semantic identities, benchmark quality and synchronize relational tables to your own database.
Schema validation and agreement between models do not guarantee factual accuracy or freshness. Inspect sources, failures and partial database outcomes. The MCP provides conversational access; n8n and Make provide workflow automation over the same service.
For claude.ai, Claude Code, Cursor, and any MCP client that supports the standard OAuth flow. No API key to create or paste — the client discovers the authorization server automatically.
https://entityenricher.ai/api/mcp/.For clients configured via a JSON file rather than an interactive sign-in (Claude Desktop, Continue, Zed).
ent_… value — it's only shown once.For Claude Desktop, edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"entityenricher": {
"url": "https://entityenricher.ai/api/mcp/",
"headers": { "X-API-Key": "ent_your_key_here" }
}
}
}Use the endpoint and header above with your client's remote MCP configuration. Configuration syntax and HTTP transport support depend on the client.
In a new chat: "List my Entity Enricher schemas, then enrich Sanofi against the pharmaceutical company schema using Claude Sonnet."The client can discover the tools and use them to select a schema and run enrichment. Confirmation prompts, progress display and resource access depend on the client.
58 tools cover schema authoring, enrichment, benchmarks, database sync and semantic identities. They reuse backend services for validation, billing and processing. Each tool exposes its own supported parameters. Long-running work (batch enrichment, sample generation, benchmark runs) is asynchronous: the start tool returns a job_id, the client polls get_job_statusand reads the resulting records or benchmark results. Inspect failures and partial outcomes before reporting success.
| Category | Tool | Description |
|---|---|---|
| Discovery | list_models | List available model keys, nominal capabilities, languages, strategies, auto-selected defaults and organization profile_limits. |
| Schemas | generate_sample | Generate editable sample JSON from a free-text request for schema authoring. |
| Schemas | list_schemas | List saved schemas in your organization, pinned first. |
| Schemas | get_schema | Read a saved schema with its properties, annotations and input_contract. |
| Schemas | create_schema_from_sample | Generate and auto-save a schema from reviewed samples, returning schema_id, schema content and record links. |
| Schemas | save_schema | Save a directly authored schema and return its ID and link. |
| Schemas | update_schema | Edit a saved schema's metadata or replace its full schema_content without an LLM call. |
| Schemas | get_schema_part | Read only the schema fragment needed for an edit. |
| Schemas | get_enum_candidates | List observed values outside each open enum's current vocabulary, with counts from recent enrichment records. |
| Schemas | update_schema_property | Edit or remove one property by path without replacing the full schema. |
| Schemas | add_schema_property | Add a property under the root (parent_path='), an object path or '$defs.X'. |
| Schemas | move_schema_property | Move one property into the root, an object path or '$defs.X', preserving its flags and expertise. |
| Schemas | resolve_unify_proposal | Resolve one pending entity-type unification proposal from get_schema. |
| Schemas | nest_schema_region | Nest a flat entity region from get_schema's x-entityMap into a subobject of the object holding its fields: the region's flat members (e.g. product_id, product_name on an order… |
| Schemas | publish_schema | Publish a database-linked schema's working copy as the contract used by enrichment and replicas. |
| Schemas | delete_schema | Soft-delete a saved schema by UUID. |
| Schemas | analyze_sample | Analyze sample property ambiguity and relationship identity scoping before schema generation. |
| Schemas | analyze_schema | Analyze a saved schema's property ambiguity and relationship identity scoping, writing annotations to the schema. |
| Enrichment & fusion | start_batch_enrichment | Start billed asynchronous enrichment of an entity list against exactly one of schema_id or target_schema. |
| Enrichment & fusion | fetch_entities | Fetch entities from an external REST API using a server-side GET. |
| Enrichment & fusion | enrich_entity | Enrich one entity against exactly one of schema_id or target_schema, returning structured output, record_id, costs and any database outcome. |
| Enrichment & fusion | retry_expertises | Retry only an existing record's failed expertise domains, then update its output and attempt the run's fusion/synchronization. |
| Enrichment & fusion | merge_records | Fuse two or more records of the same entity into a new arbitration record. |
| Job control | get_job_status | Read a job's status, progress and compact terminal summary with persisted record IDs. |
| Job control | cancel_job | Request cancellation of a pending, running or paused LLM job. |
| Job control | answer_job_question | Resume a paused job with answers to the questions returned under pause. |
| Records & stats | list_records | List compact, paginated records in your organization, most recent first. |
| Records & stats | get_record | Read one persisted record's structured_output, entity_input_data, validation errors, expertise verdicts and metrics. |
| Records & stats | get_stats | Read organization-wide record totals, success rate, tokens and cost summary. |
| Benchmarks | list_benchmark_scenarios | List compact benchmark scenario summaries and total. |
| Benchmarks | get_benchmark_scenario | Read one benchmark scenario with per-model quality, cost and speed results. |
| Benchmarks | get_benchmark_scenario_results | Filter, rank and limit a scenario's per-model benchmark results. |
| Benchmarks | create_benchmark_scenario | Create a reusable benchmark with a mandatory scoring judge. |
| Benchmarks | update_benchmark_scenario | Edit a benchmark's test definition or scoring configuration. |
| Benchmarks | set_benchmark_reference | Save the gold reference for an enrichment or schema-generation benchmark. |
| Benchmarks | delete_benchmark_scenario | Delete a benchmark scenario and its stored results. |
| Benchmarks | run_benchmark | Start billed asynchronous execution and scoring of a benchmark. |
| Attachments | upload_attachment | Upload base64 file bytes as reusable source material; returns id and requires_capability. |
| Attachments | delete_attachment | Permanently delete an attachment in your organization, including its stored file. |
| Database Sync | list_database_syncs | List a saved schema's database registrations, linked schemas, options and sync hosts. |
| Database Sync | list_entity_states | Browse a schema's current merged entity rows, not per-run records. |
| Database Sync | create_database_sync | Register a saved schema for relational synchronization to PostgreSQL, MySQL or SQLite. |
| Database Sync | assign_sync_host | Assign or clear the host provisioning a database sync. |
| Database Sync | classify_database_model | Start a billed analysis proposing database keys, SQL types, indexes and relationship ownership on a linked schema. |
| Database Sync | delete_database_sync | Delete a database registration and its queued deltas, stopping its feed. |
| Database Sync | create_database_credential | Issue a one-time sync-client credential and install/pair/run command suggestions. |
| Database Sync | fetch_database_deltas | Read the next ordered window of SQL deltas and canonical payloads for a database sync. |
| Database Sync | ack_database_deltas | Acknowledge every delta through up_to_id after successful application, releasing its lease. |
| Database Sync | sync_records_to_database | Validate and inject stored or supplied enrichment output into the entity layer and linked syncs. |
| Semantic IDs | list_semantic_concepts | Browse organization concepts with aliases, usage counts and type/model facets. |
| Semantic IDs | get_semantic_concept | Read one concept's aliases, identity source keys, linked records and nearest neighbors within its own type/model slice. |
| Semantic IDs | probe_semantic_concept | Preview identity resolution without adding a concept or increasing its usage. |
| Semantic IDs | add_semantic_concept | Add an identity concept at zero usage, or add text as an alias using alias_of. |
| Semantic IDs | update_concept_alias | Remove or promote a concept alias using alias IDs from get_semantic_concept. |
| Semantic IDs | import_semantic_concepts | Resolve 1..1000 texts against one concept type. |
| Semantic IDs | merge_semantic_concepts | Merge a loser concept into a winner. |
| Semantic IDs | delete_semantic_concepts | Delete concepts selected by ids, concept_types or unused_only. |
| Semantic IDs | migrate_semantic_embeddings | Inspect or migrate the organization's concept embedding space. |
Server instructions explain the available workflows; tool descriptions explain individual calls. For modeling decisions or recovery, your client can read the guide index at enricher://docs and select a guide through MCP resources. Reading a guide does not run a model. The links below open the same English guides in the public repository.
Design a reusable schema from reviewed examples, including identity, relationships and multilingual fields.
Read, author and edit Entity Enricher schema documents without confusing serialized JSON Schema, sample data and property-tool paths.
Choose extraction, knowledge enrichment or a two-pass combination, and preserve attachment provenance across calls.
Enrich an entity, interpret its actual outcome and recover partial model failures without repeating successful work.
Enrich an entity list asynchronously and distinguish skipped, failed, fused and database-admitted results.
Compare models on enrichment, sample generation or schema generation, using the correct reference and score interpretation.
Turn enrichment schemas into relational tables in your own database and verify admission, migration and replica delivery separately.
Recognize recurring entities across surface forms, review uncertain matches and understand how vocabulary changes affect replicas.
Resources expose schema and record data, plus workflow guides, as Markdown. Clients choose how to discover and load them; resource content can still consume model context.
| URI template | Description |
|---|---|
| enricher://docs | Index of the workflow guides, each available at its listed resource URI. |
| enricher://schemas/{schema_id} | A saved schema working copy as Markdown; use get_schema with version="published" for the active linked contract. |
| enricher://records/{record_id} | A past enrichment record rendered as Markdown — metadata + structured output + validation errors. |
When you ask enrich_entity to use a classification model and the entity doesn't match the schema type, the tool returns anon-error response with structured details. Claude reads it, surfaces the reasoning to you, and (on your confirmation) retries with force_after_classification_warning=true — which drops the classifier on the retry.
{
"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": "..."
}The MCP response preserves the classification details so your client can explain the decision before starting a new call.
The same interactivity powers a second flow: when generate_sample runs with source documents, its planner may pause with structural clarification questions. Claude relays them to you and resumes the job with answer_job_question — round after round, until the sample is generated.
Most tool errors return a structured object with an error_code field so the client can distinguish quota, classification, timeout and provider failures. Some older responses carry only an error or message field; inspect the actual result as well as the transport status.
| error_code | When |
|---|---|
| invalid_request | Malformed UUID, mutually exclusive args (schema_id + target_schema), or request body validation failed. |
| prompt_limit_reached | Daily / weekly / monthly prompt quota exhausted (HTTP 402). Body includes period, limit, used, needed. |
| insufficient_credits | Org has billing enabled but credit balance is too low to start the job (HTTP 402). Body includes balance and a purchase URL. |
| model_limit_exceeded | Asked for more models than the plan allows (HTTP 402). Echoes limit + requested. |
| language_limit_exceeded | Asked for more languages than the plan allows (HTTP 402). |
| concurrent_job_limit_reached | Too many active enrichment jobs for this org. Wait or upgrade plan. |
| classification_warning | ⚡ Non-error: pre-flight classifier rejected the entity. Response carries the classification context so Claude can ask the user to confirm and retry with force_after_classification_warning=true. |
| benchmarks_not_in_plan | The organization plan does not include Model Benchmarks (HTTP 403). Mutating benchmark tools also check the owner role. |
| ambiguity_check_disabled | analyze_schema was called on a schema whose ambiguity check is toggled off (HTTP 400). Re-enable it via update_schema with ambiguity_check_enabled=true first. |
| enrichment_timeout | Job exceeded timeout_seconds. Suggest fewer models or splitting the entity. |
| schema_generation_timeout | Schema generation exceeded timeout_seconds. |
| schema_generation_failed | Upstream LLM error during schema generation (HTTP 502). |
| model_output_invalid | The model returned output that does not match the schema (HTTP 502). Body names the model, the offending property path, and retryable: true — call the tool again, or pick a stronger model. |
| cancelled | Job was cancelled mid-run (HTTP 499). |
| not_found | Schema or record ID does not exist in your org. |
| http_error | Catch-all for HTTP errors without a structured detail body. |
get_stats covers chat-side summaries; the full dashboards stay in the app.