← Discover MCPs and Agents
E
MCPAI & MLMCP Registry

Entity Enricher

Multi-LLM entity enrichment: schemas, single/batch enrichment, fusion, model benchmarks.

Links

README

From the repo.

Entity Enricher MCP Server

A hosted Model Context Protocol server for Entity Enricher, available at https://entityenricher.ai/api/mcp/ (Streamable HTTP).

From an MCP-compatible client you can:

  • Design reusable schemas from sample data or documents and edit properties directly.
  • Enrich single entities or lists, with multilingual fields and multiple models.
  • Fuse results and recover failed expertise domains without repeating successful work.
  • Resolve recurring objects to semantic identities and curate their aliases or uncertain matches.
  • Derive relational tables and migrations for your PostgreSQL, MySQL or SQLite database.
  • Benchmark enrichment, sample generation and schema generation on your own tasks.

Schema validation and model agreement do not establish factual truth or freshness. Inspect the actual sources, failures and partial outcomes. A successful generation, entity-layer admission and application on your external replica are distinct outcomes.

The MCP server needs no local installation. Optional database delivery uses ee-database on your replica host; its DSN stays there. Managed hosts can provision automatically; manual pairing is also supported.

Quickstart

Option 1 — OAuth (recommended)

For claude.ai, Claude Code, Cursor, and any MCP client that implements the standard OAuth flow. No API key to create or paste — the client discovers the authorization server automatically, your browser opens the Entity Enricher consent screen, and the connection acts on your behalf with your own role. Revoke it anytime under Settings → API Keys → Connected Apps.

Claude Code
claude mcp add --transport http entity-enricher https://entityenricher.ai/api/mcp/

Then run /mcp in a session and pick Authenticate — your browser opens the consent page. More options (project .mcp.json, API-key fallback): examples/claude-code/

claude.ai

Settings → Connectors → Add custom connector with URL https://entityenricher.ai/api/mcp/, then click Authorize on the consent screen. Walkthrough: examples/claude-ai-remote.md

Cursor / other OAuth-capable clients

Register the URL with no headers and the client prompts you to sign in: examples/cursor/mcp.json

Option 2 — API key (static JSON configuration)

For clients configured via a JSON file rather than an interactive sign-in (Claude Desktop, Continue, Zed) — and for headless/CI use.

  1. In the Entity Enricher web UI: Settings → API Keys → New organization access key. Pick a role — operator (read-mostly), editor (create/edit schemas), or owner (full control, required for benchmarks). Copy the ent_… value; it's only shown once.

  2. For Claude Desktop, edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

    {
      "mcpServers": {
        "entity-enricher": {
          "url": "https://entityenricher.ai/api/mcp/",
          "headers": { "X-API-Key": "ent_your_key_here" }
        }
      }
    }
    

    Restart Claude Desktop. Full file: examples/claude-desktop/

Try it

List my Entity Enricher schemas, then enrich "Sanofi" against the pharmaceutical company schema in English and French.

The client discovers the tools, reads the selected schema and returns the result with a link. Automatic model selection is available; consequential choices are reviewed when needed.

Guides and tool descriptions

Server instructions explain the workflows. Tool descriptions explain individual calls, including preconditions, costs and consequential effects. Detailed modeling, recovery and migration guidance is loaded only when needed.

Use MCP resources/list to discover the guide index (enricher://docs) and each guide, then resources/read on the desired URI. Guides do not run a model. Clients decide how resources enter model context; reading them is not guaranteed to be token-free.

The following public recipes are generated from the same packaged Markdown the server serves. Edit the source guides in the main repository, not these generated copies.

GuideMCP resource
Schema from samplesenricher://docs/schema-from-sample
Schema format and editingenricher://docs/schema-reference
Documentsenricher://docs/documents
Enrichment, fusion and recoveryenricher://docs/enrichment-and-fusion
Batch enrichmentenricher://docs/batch-enrichment
Benchmarksenricher://docs/model-benchmark
Database syncenricher://docs/database-sync
Semantic identitiesenricher://docs/semantic-ids

If a client cannot read MCP resources, use these public links. The guides complement individual tool contracts; ordinary calls do not require reading them all.

Tools

59 tools, spanning the full schema-authoring and enrichment surface:

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_regionMaterialize an entity region from get_schema's x-entityMap.
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.
Benchmarksrevert_benchmark_reference_updatesUndo automatic edits a scoring pass made to a scenario's reference.
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.

Tool signatures are the callable contract. The wrappers share backend services, but do not expose every REST/UI option. Schema mutations require editor; benchmark mutations/runs require owner plus a benchmark-enabled plan. Database registration/credentials require owner plus a sync-enabled plan. See each tool for its requirements.

Data resources

Resource templateMeaning
enricher://schemas/{schema_id}Schema working copy as Markdown. For a linked published contract use get_schema(version="published").
enricher://records/{record_id}Output and metrics as Markdown; get_record adds expertise and database-delivery diagnostics.

Jobs and errors

Long-running work uses this server's start → poll → fetch interface. Start tools return a job_id; generate_sample can already be paused or completed when it returns. Poll get_job_status, answer paused questions through answer_job_question, and retrieve records by list_records(job_id=...). A missing in-memory job is not proof of completion; check for persisted records. Cancellation does not undo earlier records or database writes.

Most failures return success: false, error_code and message; some older tools return only error or message. A successful MCP transport response does not imply successful work. Inspect classification warnings, failed model legs, and partial/rejected database outcomes even when an output is present. Detailed recovery is in the enrichment guide.

Scope and limitations

  • The MCP single/batch enrichment tools do not expose web-search activation; sample generation does.
  • Batch enrichment has no fixed 100-entity cap, but live quotas/credits can stop remaining work.
  • The batch tool has no database_sync=false option; the single-entity tool does.
  • Record deletion/restoration, detailed cost analytics, benchmark result import/export and some database administration remain in the web app or REST API.
  • Schema documents use the supported JSON Schema dialect with Entity Enricher annotations; see the schema reference before authoring one directly.

Links

About this repository

This public repository contains documentation and client examples. The server is embedded in the Entity Enricher backend and maintained in the private monorepo; this directory is synced as a git subtree. Licensed under the MIT License.

Config for your environment

Use the endpoint URL below in your config. No API key — you connect directly.

Tool

OS

Config file: ~/.cursor/mcp.json

{
  "mcpServers": {
    "mcp-server": {
      "url": "https://entityenricher.ai/api/mcp/"
    }
  }
}

Paste into mcpServers in the config file. Restart Cursor after saving.

If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.