MCP Server (Claude Desktop / Code / Cursor)

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.

Quickstart

Option 1 — OAuth (recommended)

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.

  1. Add Entity Enricher as a connector (in claude.ai: Settings → Connectors → Add custom connector, or pick it from the directory) with URL https://entityenricher.ai/api/mcp/.
  2. Your browser opens the Entity Enricher consent screen — sign in if needed and click Authorize. The connection acts on your behalf with your own role.
  3. Manage or revoke the connection anytime under API Keys → Connected Apps — revocation cuts access immediately.
  1. 1The organization the grant is scoped to
  2. 2The connection acts with your own role, never a wider one
  3. 3Revocable at any time from Connected Apps
The only Entity Enricher screen the OAuth path shows you: it names the organization the grant is scoped to and the role it will act with — your own.

Option 2 — API key (static JSON configuration)

For clients configured via a JSON file rather than an interactive sign-in (Claude Desktop, Continue, Zed).

  1. 1. Create an API key
    In the Entity Enricher web UI: Settings → API Keys → New organization access key. Pick a role (operator for read-mostly, editor for create/edit schemas, owner for full control). Copy the ent_… value — it's only shown once.
  2. 2. Register in your MCP client

    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.

Try it

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.

Tools

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.

CategoryToolDescription
Discoverylist_modelsList available model keys, nominal capabilities, languages, strategies, auto-selected defaults and organization profile_limits.
Schemasgenerate_sampleGenerate editable sample JSON from a free-text request for schema authoring.
Schemaslist_schemasList saved schemas in your organization, pinned first.
Schemasget_schemaRead a saved schema with its properties, annotations and input_contract.
Schemascreate_schema_from_sampleGenerate and auto-save a schema from reviewed samples, returning schema_id, schema content and record links.
Schemassave_schemaSave a directly authored schema and return its ID and link.
Schemasupdate_schemaEdit a saved schema's metadata or replace its full schema_content without an LLM call.
Schemasget_schema_partRead only the schema fragment needed for an edit.
Schemasget_enum_candidatesList observed values outside each open enum's current vocabulary, with counts from recent enrichment records.
Schemasupdate_schema_propertyEdit or remove one property by path without replacing the full schema.
Schemasadd_schema_propertyAdd a property under the root (parent_path='), an object path or '$defs.X'.
Schemasmove_schema_propertyMove one property into the root, an object path or '$defs.X', preserving its flags and expertise.
Schemasresolve_unify_proposalResolve one pending entity-type unification proposal from get_schema.
Schemasnest_schema_regionNest 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…
Schemaspublish_schemaPublish a database-linked schema's working copy as the contract used by enrichment and replicas.
Schemasdelete_schemaSoft-delete a saved schema by UUID.
Schemasanalyze_sampleAnalyze sample property ambiguity and relationship identity scoping before schema generation.
Schemasanalyze_schemaAnalyze a saved schema's property ambiguity and relationship identity scoping, writing annotations to the schema.
Enrichment & fusionstart_batch_enrichmentStart billed asynchronous enrichment of an entity list against exactly one of schema_id or target_schema.
Enrichment & fusionfetch_entitiesFetch entities from an external REST API using a server-side GET.
Enrichment & fusionenrich_entityEnrich one entity against exactly one of schema_id or target_schema, returning structured output, record_id, costs and any database outcome.
Enrichment & fusionretry_expertisesRetry only an existing record's failed expertise domains, then update its output and attempt the run's fusion/synchronization.
Enrichment & fusionmerge_recordsFuse two or more records of the same entity into a new arbitration record.
Job controlget_job_statusRead a job's status, progress and compact terminal summary with persisted record IDs.
Job controlcancel_jobRequest cancellation of a pending, running or paused LLM job.
Job controlanswer_job_questionResume a paused job with answers to the questions returned under pause.
Records & statslist_recordsList compact, paginated records in your organization, most recent first.
Records & statsget_recordRead one persisted record's structured_output, entity_input_data, validation errors, expertise verdicts and metrics.
Records & statsget_statsRead organization-wide record totals, success rate, tokens and cost summary.
Benchmarkslist_benchmark_scenariosList compact benchmark scenario summaries and total.
Benchmarksget_benchmark_scenarioRead one benchmark scenario with per-model quality, cost and speed results.
Benchmarksget_benchmark_scenario_resultsFilter, rank and limit a scenario's per-model benchmark results.
Benchmarkscreate_benchmark_scenarioCreate a reusable benchmark with a mandatory scoring judge.
Benchmarksupdate_benchmark_scenarioEdit a benchmark's test definition or scoring configuration.
Benchmarksset_benchmark_referenceSave the gold reference for an enrichment or schema-generation benchmark.
Benchmarksdelete_benchmark_scenarioDelete a benchmark scenario and its stored results.
Benchmarksrun_benchmarkStart billed asynchronous execution and scoring of a benchmark.
Attachmentsupload_attachmentUpload base64 file bytes as reusable source material; returns id and requires_capability.
Attachmentsdelete_attachmentPermanently delete an attachment in your organization, including its stored file.
Database Synclist_database_syncsList a saved schema's database registrations, linked schemas, options and sync hosts.
Database Synclist_entity_statesBrowse a schema's current merged entity rows, not per-run records.
Database Synccreate_database_syncRegister a saved schema for relational synchronization to PostgreSQL, MySQL or SQLite.
Database Syncassign_sync_hostAssign or clear the host provisioning a database sync.
Database Syncclassify_database_modelStart a billed analysis proposing database keys, SQL types, indexes and relationship ownership on a linked schema.
Database Syncdelete_database_syncDelete a database registration and its queued deltas, stopping its feed.
Database Synccreate_database_credentialIssue a one-time sync-client credential and install/pair/run command suggestions.
Database Syncfetch_database_deltasRead the next ordered window of SQL deltas and canonical payloads for a database sync.
Database Syncack_database_deltasAcknowledge every delta through up_to_id after successful application, releasing its lease.
Database Syncsync_records_to_databaseValidate and inject stored or supplied enrichment output into the entity layer and linked syncs.
Semantic IDslist_semantic_conceptsBrowse organization concepts with aliases, usage counts and type/model facets.
Semantic IDsget_semantic_conceptRead one concept's aliases, identity source keys, linked records and nearest neighbors within its own type/model slice.
Semantic IDsprobe_semantic_conceptPreview identity resolution without adding a concept or increasing its usage.
Semantic IDsadd_semantic_conceptAdd an identity concept at zero usage, or add text as an alias using alias_of.
Semantic IDsupdate_concept_aliasRemove or promote a concept alias using alias IDs from get_semantic_concept.
Semantic IDsimport_semantic_conceptsResolve 1..1000 texts against one concept type.
Semantic IDsmerge_semantic_conceptsMerge a loser concept into a winner.
Semantic IDsdelete_semantic_conceptsDelete concepts selected by ids, concept_types or unused_only.
Semantic IDsmigrate_semantic_embeddingsInspect or migrate the organization's concept embedding space.

Workflow guides, loaded when needed

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.

Resources

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 templateDescription
enricher://docsIndex 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.

Interactive classification handling

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.

Error codes

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_codeWhen
invalid_requestMalformed UUID, mutually exclusive args (schema_id + target_schema), or request body validation failed.
prompt_limit_reachedDaily / weekly / monthly prompt quota exhausted (HTTP 402). Body includes period, limit, used, needed.
insufficient_creditsOrg has billing enabled but credit balance is too low to start the job (HTTP 402). Body includes balance and a purchase URL.
model_limit_exceededAsked for more models than the plan allows (HTTP 402). Echoes limit + requested.
language_limit_exceededAsked for more languages than the plan allows (HTTP 402).
concurrent_job_limit_reachedToo 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_planThe organization plan does not include Model Benchmarks (HTTP 403). Mutating benchmark tools also check the owner role.
ambiguity_check_disabledanalyze_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_timeoutJob exceeded timeout_seconds. Suggest fewer models or splitting the entity.
schema_generation_timeoutSchema generation exceeded timeout_seconds.
schema_generation_failedUpstream LLM error during schema generation (HTTP 502).
model_output_invalidThe 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.
cancelledJob was cancelled mid-run (HTTP 499).
not_foundSchema or record ID does not exist in your org.
http_errorCatch-all for HTTP errors without a structured detail body.

Deliberate omissions

See also