Entity Enricher
REMOTE · ENTITYENRICHER.AI · SCANNED SEP 25
Multi-LLM entity enrichment: schemas, single/batch enrichment, fusion, model benchmarks.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_attachment). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability79
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 13498 tokens (~201/item across 67 items; 58 tools + 9 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 92% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 9 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 60 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.
How do I install the Entity Enricher MCP server?
Entity Enricher is a hosted endpoint at https://entityenricher.ai/api/mcp/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · entityenricher.ai
claude mcp add --transport http ai-entityenricher-enricher 'https://entityenricher.ai/api/mcp/'
{
"mcpServers": {
"ai-entityenricher-enricher": {
"url": "https://entityenricher.ai/api/mcp/"
}
}
} {
"servers": {
"ai-entityenricher-enricher": {
"type": "http",
"url": "https://entityenricher.ai/api/mcp/"
}
}
} [mcp_servers.ai-entityenricher-enricher] url = "https://entityenricher.ai/api/mcp/"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ai-entityenricher-enricher": {
"type": "remote",
"url": "https://entityenricher.ai/api/mcp/",
"enabled": true
}
}
} openclaw mcp add ai-entityenricher-enricher --url 'https://entityenricher.ai/api/mcp/' --transport streamable-http
mcp_servers:
ai-entityenricher-enricher:
url: "https://entityenricher.ai/api/mcp/" {
"McpServers": {
"ai-entityenricher-enricher": {
"Transport": "http",
"Url": "https://entityenricher.ai/api/mcp/"
}
}
} assistant mcp add ai-entityenricher-enricher -t streamable-http -u 'https://entityenricher.ai/api/mcp/'
{
"mcpServers": {
"ai-entityenricher-enricher": {
"type": "http",
"url": "https://entityenricher.ai/api/mcp/"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 25 Sept 26 +29
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 31 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Jul 26 0
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 25 Sept 2026 · Probed https://entityenricher.ai/api/mcp/
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=entityenricher.ai | CN=YE2,O=Let's Encrypt,C=US | 16 Aug 2026 | 14 Nov 2026 | ECDSA 256 | ECDSA-SHA384 | 6641a054f043018dc0bc594e24494ccf6e6 |
| SANs: *.entityenricher.ai, entityenricher.ai | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of entityenricher.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 3799 | 8 | Verified |
| entityenricher.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://entityenricher.ai/api/mcp/ | Verified | 200 | |
| http (plaintext) | http://entityenricher.ai/api/mcp/ | HTTPS enforced | 301 | https://entityenricher.ai/api/mcp/ |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ack_database_deltas Acknowledge database deltas ~106
Acknowledge every delta through up_to_id after successful application, releasing its lease. Acknowledgement can permanently purge delivered deltas and entity state according to registration options; never acknowledge unapplied or failed work. Returns acknowledged and purged counts. No LLM call. Apply/ack workflow: enricher://docs/database-sync.
| Name | Type | Req | Description |
|---|---|---|---|
| database_id | string | yes | Database sync UUID. |
| up_to_id | integer | yes | Acknowledge every delta with id <= this value. |
Structured output declared, but exposes no named fields.
No examples provided.
add_schema_property Add schema property ~194
Add a property under the root (parent_path=''), an object path or '$defs.X'. Accepts a scalar, nested object or reference to an existing $defs entity or $enums vocabulary. Requires editor; no LLM call. Omitted nullable means required at enrichment. Adding inside $defs affects every usage site. The same validation and working-copy/publication rules as update_schema_property apply. Read the container with get_schema_part first. Property format: enricher://docs/schema-reference.
| Name | Type | Req | Description |
|---|---|---|---|
| definition | object | yes | {type|ref, description?, examples?, nullable?, flags?, properties?} — 'properties' nests the same shape per child for an inline object. |
| name | string | yes | New property name (letters, digits, underscores). |
| parent_path | string | – | '' = root, or an object path / '$defs.X'. |
| schema_id | string | yes | UUID of the saved schema. |
Structured output declared, but exposes no named fields.
No examples provided.
add_semantic_concept Add semantic concept ~208
Add an identity concept at zero usage, or add text as an alias using alias_of. Requires editor; resolution may incur embedding/judge cost. Probe first; if the text already resolves to an incumbent, offer that concept instead of blindly retrying. Aliases resolving to another concept are refused. embedding_model selects a new type's space only. Returns concept details and link; manage existing aliases with update_concept_alias. See enricher://docs/semantic-ids.
| Name | Type | Req | Description |
|---|---|---|---|
| alias_of | – | – | semantic_id of the concept this text is a surface form of; omit to add a standalone concept. |
| concept_type | string | yes | Concept type the text belongs to. |
| embedding_model | – | – | Composite key (provider::model) to embed a NEW concept type under. |
| judge_floor | – | – | Similarity at or above which a candidate is put to the identity judge. Omit to use the organization default (Settings → Organization). |
| text | string | yes | The identity text to add. |
Structured output declared, but exposes no named fields.
No examples provided.
analyze_sample Analyze sample ~177
Analyze sample property ambiguity and relationship identity scoping before schema generation. Requires editor; billed analysis persists a record but does not modify the sample. Returns findings with competing interpretations and suggested_names, plus identity_scoping for sites mixing an entity's own facts with facts about its parent relationship. Names are judged in their parent context, including missing units, periods or ranges. Apply only approved corrections before create_schema_from_sample. Optional: generate_sample already checks its initial sample. How to interpret findings: enricher://docs/schema-from-sample.
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | – | Model composite key. 'auto' (default) lets the server pick the org's default schema-generation model. |
| protected_fields | – | – | Leaf names you own (still flagged, but no rename is proposed for them). |
| sample_json | object | yes | The sample entity object to analyze. |
Structured output declared, but exposes no named fields.
No examples provided.
analyze_schema Analyze schema ~172
Analyze a saved schema's property ambiguity and relationship identity scoping, writing annotations to the schema. Requires editor; billed. Incremental by default; force=true rechecks all sites. Returns findings, suggested descriptions, identity-scoping annotations and pending unification proposals; it does not apply suggested structural changes. Fails with ambiguity_check_disabled if the feature is off. Use update_schema_property for approved descriptions or renames; review structural changes and publish them when linked. Interpretation and modeling guidance: enricher://docs/schema-reference.
| Name | Type | Req | Description |
|---|---|---|---|
| force | boolean | – | Re-analyze every property, not just unannotated ones. |
| model | string | – | Model composite key. 'auto' (default) lets the server pick the org's default schema-generation model. |
| schema_id | string | yes | UUID of the saved schema. |
Structured output declared, but exposes no named fields.
No examples provided.
answer_job_question Answer job question ~180
Resume a paused job with answers to the questions returned under pause. answers maps question IDs to {option_ids: [...], text: ...}; omitted questions use defaults. Relay consequential unanswered choices to the user unless those defaults were already authorized. Resuming may continue billed model work. Returns the next pause, terminal result or running status after wait_seconds; poll get_job_status if still running. Works with generate_sample clarification in both knowledge and source modes. See enricher://docs/documents.
| Name | Type | Req | Description |
|---|---|---|---|
| answers | – | – | Map of question id -> {option_ids: list[str], text: str | null}. Omit to resume with the planner's defaults. |
| job_id | string | yes | Paused job ID. |
| wait_seconds | integer | – | How long to wait for the job's next pause or completion before returning (0 = return immediately after resuming). |
Structured output declared, but exposes no named fields.
No examples provided.
assign_sync_host Assign sync host ~133
Assign or clear the host provisioning a database sync. Requires owner and a sync-enabled plan. host accepts a connected host ID/name; null unassigns it. Assignment may create the physical database and start synchronization automatically. Moving hosts revokes the old host's minted credential; an existing manual pairing is not evicted. Candidates come from create_database_sync or list_database_syncs. No LLM call. Managed and manual setup: enricher://docs/database-sync.
| Name | Type | Req | Description |
|---|---|---|---|
| database_id | string | yes | Database sync UUID (from list_database_syncs). |
| host | – | – | Sync host id or name; null clears the assignment. |
Structured output declared, but exposes no named fields.
No examples provided.
cancel_job Cancel job ~86
Request cancellation of a pending, running or paused LLM job. In-flight model calls may finish and persist records; remaining work is skipped. Cancellation does not roll back records or database writes. Read get_job_status and list_records(job_id=...) afterward to inspect the outcome. No new LLM call is started by this tool.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Job ID to cancel. |
Structured output declared, but exposes no named fields.
No examples provided.
classify_database_model Classify database model ~164
Start a billed analysis proposing database keys, SQL types, indexes and relationship ownership on a linked schema. Requires editor. Registration already starts the initial pass; use this after relevant edits. Incremental scope covers new properties or changed JSON types/multilingual flags; an empty scope does not rerun unchanged fields. Returns job_id: poll get_job_status and inspect get_schema's working copy. Correct proposals with property tools, then publish_schema to ship changes. Entity-level indexes and ownership choices: enricher://docs/database-sync.
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | – | Model composite key. 'auto' (default) lets the server pick the org's default schema-generation model, falling back to the model that generated the schema. |
| schema_id | string | yes | Saved schema UUID to classify. |
Structured output declared, but exposes no named fields.
No examples provided.
create_benchmark_scenario Create benchmark scenario ~570
Create a reusable benchmark with a mandatory scoring judge. scenario_type='enrichment' needs schema_id and entity_data (the entity to enrich, as enrich_entity takes it — refused when it carries no value; never put it in description); 'sample_generation' needs sample_request; 'schema_generation' needs entity_samples (1..20 samples of one entity type). Enrichment and schema generation need a verified gold reference via set_benchmark_reference before running. Sample generation is rubric-scored and takes no reference. Requires owner and a plan with benchmarks; creating the scenario does not run the models. Returns the scenario and link. Next call run_benchmark when its reference requirements are satisfied. See enricher://docs/model-benchmark.
| Name | Type | Req | Description |
|---|---|---|---|
| attachment_ids | – | – | Attachment UUIDs included in every run. |
| description | – | – | Free-text note shown in the Benchmarks tab; no model ever reads it. The entity to enrich goes in entity_data, never here. |
| enable_web_search | boolean | – | sample_generation: ground values with the model's web search. |
| entity_data | – | – | Enrichment (required there): the fixed entity input every model enriches — the same JSON enrich_entity takes. Read get_schema.input_contract first: identifying fields, preserve paths and keys for sup… |
| entity_samples | – | – | schema_generation: the 1..20 fixed input samples (JSON objects of one entity type) every model converts to a schema. Several samples let the scoring read evidence the reference cannot state alone (nu… |
| generate_semantic_ids | boolean | – | schema_generation: add semantic_id properties to keyed objects. |
| language | string | – | sample_generation: output language for names + values. |
| languages | – | – | Enrichment: defaults to ['en']. |
| name | string | yes | – |
| naming_convention | string | – | sample_generation: auto | snake_case | camelCase. |
| repetitions | integer | – | Run each model N times per run; keeps mean + consistency spread. |
| sample_request | – | – | sample_generation: the free-text sample request every model answers — the kind of entity, what the sample must contain, any budget or structural preference (same contract as generate_sample's request… |
| scenario_type | string | – | enrichment | sample_generation | schema_generation (immutable). |
| schema_id | – | – | UUID of the saved schema to enrich against (enrichment only, required there). |
| scoring_judge_model_key | string | yes | LLM judge composite key used to score results (required). |
| strategy | string | – | Enrichment: pinned strategy (no 'auto'): single_pass | expert_domains | multi_expertise |
| typical_object | – | – | sample_generation: a specific instance to model (e.g. 'Serena Williams'). |
Structured output declared, but exposes no named fields.
No examples provided.
create_database_sync Create database sync ~957
Register a saved schema for relational synchronization to PostgreSQL, MySQL or SQLite. Requires owner and a sync-enabled plan. Starts a billed classification job when available; returns database ID, classification_job_id or classification_skipped, stamped_keys and registration_notices. The webhook signing secret stays outside the MCP response and can be managed in the web app. The schema is initially unpublished: wait for classification, review keys/options/notices, then publish_schema before any data can sync. pk_strategy locks once the physical model ships. Owned child arrays replace previous membership, so omitted children are deleted on re-enrichment. purge_entity_state transfers custody to replicas; relay custody_warning. A connected host may provision automatically; otherwise get_database_setup_instructions starts browser-confirmed client pairing. Modeling, publication and delivery: enricher://docs/database-sync.
| Name | Type | Req | Description |
|---|---|---|---|
| dialect | string | – | SQL dialect the deltas are rendered in: postgres | mysql | sqlite. |
| index_scalars | string | – | none: identity/feed indexes; keys: add natural keys and relation access paths; filterable (default): add dates, search intent, spatial/range roles and entity query indexes; all: every scalar. Later c… |
| key_language | – | – | Language of multilingual identity tokens (ISO 639-1), shared by all schemas of this database. Usually defaults to schema language when needed; publication may request it after classification. Locked… |
| name | string | yes | Name of the physical database (existing on the user's server, or created by `ee-database run --create-missing`); shared by every schema linked to this database sync. Also used (snake-cased) as the co… |
| notify_debounce_s | integer | – | Quiet period (seconds) before a delta-available notification fires: each new delta resets the timer, so a burst is announced once. Default 5 for MCP callers (agent workflows expect near-immediate rea… |
| on_gaps | string | – | Admission gate — what is written when an enrichment has gaps (non-nullable fields unfilled). 'reject_entity': nothing — one gap anywhere refuses the whole enrichment. 'skip_children' (default): the e… |
| pattern_index_localized_keys | boolean | – | Add per-language pattern-match indexes on indexed localized keys/labels (default false). Useful for prefix autocomplete; increases write/index cost. Concrete SQL depends on the selected dialect. |
| pk_strategy | string | – | surrogate (default): physical surrogate IDs with unique schema keys; natural: use schema keys as physical primary keys and restrict later re-keying. Locks once the physical model ships; decide before… |
| propagate_not_null | – | – | Mirror required schema fields as SQL NOT NULL. Omitted: on for strict gap policies, off for accept_partial. True with accept_partial is refused. Later tightening requires validating existing replica… |
| purge_entity_state | boolean | – | Delete fully delivered entity state after every linked database acknowledges it. Transfers custody to replicas, makes server snapshots incomplete and limits duplicate checks. Relay custody_warning an… |
| purge_entity_state_delay_days | – | – | Grace period for purge_entity_state: a fully-delivered entity row is kept until it has gone this many days without an update, then the hourly purge deletes it. Omit to delete it as soon as every data… |
| purge_on_ack | boolean | – | Delete delivered delta copies once acknowledged. |
| purge_on_ack_delay_days | – | – | Grace period for purge_on_ack: keep acknowledged delta copies this many days (from acknowledgement) before the hourly purge deletes them. Omit to delete them at acknowledgement. Bounded by the plan's… |
| schema_id | string | yes | Saved schema UUID to connect the database to. |
| target_host | – | – | Sync host (id or name) that should provision and sync this registration automatically (managed ee-database mode). Omitted: auto-assigned when exactly one eligible host is connected; otherwise the res… |
Structured output declared, but exposes no named fields.
No examples provided.
create_schema_from_sample Create schema from sample ~434
Generate and auto-save a schema from reviewed samples, returning schema_id, schema content and record links. Supply entity_samples, sample_record_id, or both; explicit samples override stored JSON while attachment inheritance is preserved. Samples must describe one entity type in one language. Generation combines their fields and annotates relationships; it does not redesign the approved structure. Resolve consequential modeling choices and whether to generate semantic IDs before calling; semantic IDs need an organization embedding model and add cost. Requires editor; synchronous and billed. Review returned suggestions before applying edits with property tools. Sample review and canonicalizations: enricher://docs/schema-from-sample; schema format: enricher://docs/schema-reference.
| Name | Type | Req | Description |
|---|---|---|---|
| attachment_ids | – | – | UUIDs used as source context and persisted for regeneration. With sample_record_id, omit to inherit its linked attachments; pass [] to deliberately use none, or a non-empty list to override. |
| entity_samples | – | – | 1..20 reviewed instances of one entity type. Required without sample_record_id. Explicit samples override stored JSON while keeping attachment inheritance. Fields are unioned; missing/null observatio… |
| generate_semantic_ids | boolean | – | Add semantic IDs to eligible keyed objects. Requires an organization embedding model and adds resolution cost. Recommend for reusable identities without stable machine keys; obtain agreement before e… |
| language | – | – | Language of schema type names/descriptions and annotations; defaults to the sample-key language. Sample property names are not translated. Separate from enrichment output languages. |
| model | string | – | Model composite key, or auto (default) for the organization task selection. Explicit keys are discovered through list_models. |
| sample_record_id | – | – | UUID of a successful sample_generation record. Its stored sample(s) are used when entity_samples is omitted, and its linked attachments are inherited when attachment_ids is omitted. |
| timeout_seconds | integer | – | Wall-clock cap; returns a timeout error past this. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_attachment Delete attachment ~84
Permanently delete an attachment in your organization, including its stored file. No LLM call. Existing records remain, but future calls or schema regeneration cannot reuse the deleted source. Delete only when that source is no longer needed; this is not a required post-enrichment step. Returns the deleted ID and filename.
| Name | Type | Req | Description |
|---|---|---|---|
| attachment_id | string | yes | UUID of the attachment to delete. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_benchmark_scenario Delete benchmark scenario ~54
Delete a benchmark scenario and its stored results. Requires owner and a plan with benchmarks. No LLM call; inspect the scenario before deleting it.
| Name | Type | Req | Description |
|---|---|---|---|
| scenario_id | string | yes | UUID of the scenario to delete. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_database_sync Delete database sync ~217
Delete a database registration and its queued deltas, stopping its feed. Requires owner and a sync-enabled plan; no LLM call. External replica tables remain untouched. Entity state and schema database flags remain by default; delete_entity_state and clear_database_model additionally remove data/model settings from schemas left with no registration. Obtain approval for those irreversible teardown options. See enricher://docs/database-sync.
| Name | Type | Req | Description |
|---|---|---|---|
| clear_database_model | boolean | – | Also clear the database model those schemas carry (database_key, db_type, index, unique_group, shared, ordered, db_name/db_name_absolute, the classification ledger and the key-language lock), returni… |
| database_id | string | yes | Database sync UUID (from list_database_syncs). |
| delete_entity_state | boolean | – | Also hard-delete the stored entity state of the schemas left with no database (nothing writes to it anymore). Enrichment records are untouched. Irreversible. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_schema Delete schema ~59
Soft-delete a saved schema by UUID. Requires editor; no LLM call. Restoration and permanent deletion are available in the web app, not through this tool. Returns the deletion outcome.
| Name | Type | Req | Description |
|---|---|---|---|
| schema_id | string | yes | UUID of the schema to delete. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_semantic_concepts Delete semantic concepts ~171
Delete concepts selected by ids, concept_types or unused_only. Defaults to impact_only=true: review affected records, schemas and replicas before obtaining approval. Execution requires editor; clearing whole types requires owner. Deletion breaks convergence with IDs already stored in replicas; future resolution may mint new IDs. An unused-only deletion still removes that vocabulary. No LLM call. Returns impact counts or deletion results. See enricher://docs/semantic-ids.
| Name | Type | Req | Description |
|---|---|---|---|
| concept_types | – | – | Scope to these concept types; without ids and unused_only this clears the whole types (owner role). |
| ids | – | – | Explicit concept semantic_ids to delete. |
| impact_only | boolean | – | True = report the blast radius only; False = delete. |
| unused_only | boolean | – | Only concepts no record references (usage 0). |
Structured output declared, but exposes no named fields.
No examples provided.
enrich_entity Enrich entity ~667
Enrich one entity against exactly one of schema_id or target_schema, returning structured output, record_id, costs and any database outcome. Read get_schema's input_contract first (published version when linked); never invent preserve values. Models may be omitted for auto selection. Generation is billed. Two or more models fuse only when all succeed: check failed_models before reporting success. A failed leg prevents automatic fusion and database admission. classification_warning returns success=false, error_code and classification; bypass only after user confirmation. Database sync defaults on: report database.status and database_warning, including partial writes or overwrites; admission is not proof of replica delivery. Recovery and fusion: enricher://docs/enrichment-and-fusion. This tool does not expose web-search activation.
| Name | Type | Req | Description |
|---|---|---|---|
| arbitration_model | – | – | Optional LLM model key used to resolve fusion conflicts when 2+ models are selected. Without this, conflicts are resolved by deterministic voting. |
| attachment_ids | – | – | UUIDs of attachments (from upload_attachment) to provide as source material for this enrichment. |
| classification_model | – | – | Optional pre-flight classifier model key. When set, the entity is type-checked before enrichment to catch mismatches. |
| database_sync | boolean | – | Whether this run feeds the schema's entity layer and linked databases. Leave true for normal enrichments. Set false for the one-model recovery leg of a failed fusion run (see the recovery ladder abov… |
| entity_data | object | yes | Entity identifiers and supplied values. Read get_schema.input_contract first: preserve paths and keys for supplied array items are required. Identifying field names are guidance; arbitrary names are… |
| force_after_classification_warning | boolean | – | Set to true to bypass a previous classification warning. Use only after explicit user confirmation. |
| languages | – | – | ISO 639-1 codes; defaults to ['en'] server-side. The first language is the primary one used for all non-multilingual string fields; multilingual fields get one value per language. |
| models | – | – | Model composite keys. Omit or pass ['auto'] for one automatically selected model; auto alone never fuses. Use list_models for explicit choices and model-count limits. |
| schema_id | – | – | UUID of a saved schema. Mutually exclusive with target_schema. |
| strategy | string | – | auto (default — server picks from the schema) | single_pass (simple schemas, 1 LLM call) | expert_domains (medium schemas with clear domains) | multi_expertise (large multi-domain schemas, parallel p… |
| target_schema | – | – | Inline JSON Schema document in the supported Entity Enricher dialect; prefer schema_id. Format: enricher://docs/schema-reference. |
| timeout_seconds | integer | – | Wall-clock cap. Past it the call returns `enrichment_timeout` with the job_id and the job is cancelled — a leg still in flight may finish and persist a partial record, reachable via list_records(job_… |
Structured output declared, but exposes no named fields.
No examples provided.
fetch_database_deltas Fetch database deltas ~160
Read the next ordered window of SQL deltas and canonical payloads for a database sync. claim=false is replayable; claim=true leases the window for 120 seconds. Apply a claimed window transactionally, including schema deltas, before ack_database_deltas. limit is also bounded by the registration's page_limit. snapshot_required pauses delivery until the replica reapplies its snapshot. No LLM call. Leasing, cursors, quarantine and snapshot handling: enricher://docs/database-sync.
| Name | Type | Req | Description |
|---|---|---|---|
| claim | boolean | – | Lease the window (requires ack). |
| database_id | string | yes | Database sync UUID (from list_database_syncs). |
| limit | integer | – | – |
| since | integer | – | Cursor: return deltas with id > since. |
Structured output declared, but exposes no named fields.
No examples provided.
generate_sample Generate sample ~567
Generate editable sample JSON from a free-text request for schema authoring. Without attachments, use model knowledge and optional web search; with attachments, extract from the sources only (search does not relax that rule). Each sample is one instance in one language; set sample_count separately from request. Attachments force one sample. Requires editor; generation is billed. Returns a job_id and may already be paused or complete: relay pause questions through answer_job_question, otherwise poll get_job_status. Review returned samples and warnings before create_schema_from_sample; do not silently change facts or structure. For relationship modeling, multiple documents or hybrid extraction plus research, read enricher://docs/schema-from-sample and enricher://docs/documents.
| Name | Type | Req | Description |
|---|---|---|---|
| attachment_ids | – | – | UUIDs from upload_attachment. Providing any attachment switches the call into source mode: transcribe the document or describe visible photo attributes only, with an interactive planner. |
| auto_answer | – | – | Omit or false to pause for clarification; true authorizes standard interpretations and planner defaults without asking, in either mode. |
| enable_web_search | boolean | – | Use builtin search in knowledge mode (default false). Source mode remains source-only. With an explicit unsupported model this option is ignored. Hybrid tasks: enricher://docs/documents. |
| language | – | – | Output language code for the generated field names AND values (e.g. 'en', 'fr'); an explicit code applies even when attachments are in another language. Omitted (default) → the generator follows the… |
| model | string | – | Auto (default) chooses the organization task model with attachment/search capabilities. Explicit provider::model bypasses this capability matching; provider combinations or quota may still fail. |
| naming_convention | string | – | auto | snake_case | camelCase |
| request | string | – | Entity type, desired fields, scope and size/depth budget. Required without attachments; optional source-mode instructions otherwise. Put the number of instances in sample_count, not in this text. |
| sample_count | integer | – | Number of same-type instances (1..20), default 1. Consider 3 varied instances when designing a schema. Attachments force 1. Inspect samples_note for under-delivery or the cap. |
| typical_objects | – | – | Up to sample_count concrete instances to anchor knowledge mode (e.g. ['Sanofi', 'Pfizer']), one per generated sample in order — slots beyond len(typical_objects) are named by the model's own instance… |
| wait_seconds | integer | – | How long to wait for the first pause or completion before returning (0 = return the job_id immediately). |
Structured output declared, but exposes no named fields.
No examples provided.
get_benchmark_scenario Get benchmark scenario ~105
Read one benchmark scenario with per-model quality, cost and speed results. include_reference=true adds the reference, the fixed entity_data and the schema-generation entity_samples. Config changes can make existing results stale. No LLM call. For a ranked subset use get_benchmark_scenario_results. Read after run_benchmark completes.
| Name | Type | Req | Description |
|---|---|---|---|
| include_reference | boolean | – | Include reference_output + entity_data (can be large). |
| scenario_id | string | yes | UUID of the scenario. |
Structured output declared, but exposes no named fields.
No examples provided.
get_benchmark_scenario_results Get ranked benchmark scenario results ~234
Filter, rank and limit a scenario's per-model benchmark results. No LLM call. overall blends quality, speed and cost using organization task weights and is null if a component is missing. Status tags are independent: success does not exclude stale or stale_score results. Missing sort metrics come last in either direction. See enricher://docs/model-benchmark for interpretation.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | – | – | Keep only the top N after sorting (None = all). |
| model_keys | – | – | Keep only these model composite keys (empty/None = every model). |
| providers | – | – | Keep only these provider names (empty/None = every provider). |
| scenario_id | string | yes | UUID of the scenario. |
| sort_by | string | – | Metric to sort by. |
| sort_order | string | – | Sort direction. |
| status | – | – | Keep results carrying ANY of these tags: success | failed | stale (config_hash changed since this run, re-run it) | stale_score (reference/scoring config changed since scored, rescore it) | unscored… |
Structured output declared, but exposes no named fields.
No examples provided.
get_database_setup_instructions Get database setup instructions ~137
Return non-secret install, browser-confirmed pairing and run instructions for an ee-database sync client. Requires owner and a sync-enabled plan; no LLM call and no credential is issued or exposed to the MCP client. Run pair_command on the intended replica host: the CLI opens verification_url, the user chooses the database and confirms, and the credential travels directly to the polling CLI. Its DSN stays on that host. Use manual pairing only when managed host provisioning is not already handling the registration. Setup: enricher://docs/database-sync.
| Name | Type | Req | Description |
|---|---|---|---|
| database_id | string | yes | Database sync UUID (from list_database_syncs). |
Structured output declared, but exposes no named fields.
No examples provided.
get_enum_candidates Get enum candidates ~114
List observed values outside each open enum's current vocabulary, with counts from recent enrichment records. No LLM call. Use the report to propose admitted members or rejected_values, or close a vocabulary only when it is exhaustive. This read does not edit the enum. An open enum allows other values; a closed one constrains output to its members. Named enums can be read with get_schema_part and changed through update_schema. See enricher://docs/schema-reference.
| Name | Type | Req | Description |
|---|---|---|---|
| schema_id | string | yes | UUID of the saved schema. |
Structured output declared, but exposes no named fields.
No examples provided.
get_job_status Get job status ~267
Read a job's status, progress and compact terminal summary with persisted record IDs. Status is pending, running, paused, completed, failed or cancelled. Relay pause questions with answer_job_question. include_result=true returns full terminal details; batch summaries count entities and database outcomes. A failed job is not usable output; inspect individual records for partial recovery. Unknown IDs may be invalid, expired or lost after restart: look for persisted outputs with list_records(job_id=...), without assuming success. events_after=<seq> adds the job's event log past that cursor (per-model completions, scoring progress, pauses) — the poll equivalent of the SSE stream; pass the returned last_seq next time. No LLM call. Polling, failure and recovery guidance: enricher://docs/enrichment-and-fusion.
| Name | Type | Req | Description |
|---|---|---|---|
| events_after | – | – | Event-log cursor: 0 returns the job's events from the start, a previous call's last_seq returns only the newer ones (at most 100 per call; events_has_more says when to call again). Omit to skip the l… |
| include_result | boolean | – | Include the full terminal result payload (can be large). Default returns a compact scalar summary per model. |
| job_id | string | yes | Job ID returned by a start tool. |
Structured output declared, but exposes no named fields.
No examples provided.
get_record Get record ~122
Read one persisted record's structured_output, entity_input_data, validation errors, expertise verdicts and metrics. failed_expertises and partial identify incomplete work even when output exists; use retry_expertises only on a record with failed domains. Fusion metadata identifies its source models and arbitration method. database_sync, when present, reports admission and per-replica delivery state. Returns record_url and the related schema link. No LLM call. Interpretation and recovery: enricher://docs/enrichment-and-fusion.
| Name | Type | Req | Description |
|---|---|---|---|
| record_id | string | yes | UUID of the record. |
Structured output declared, but exposes no named fields.
No examples provided.
get_schema Get schema ~181
Read a saved schema with its properties, annotations and input_contract. Before enrichment, use version='published' for a database-linked schema; default 'working' is for editing. identifying_keys guide entity naming; preserve values belong to the caller and are required; each supplied array item must carry its array_item_keys. Never invent caller-owned values. The response includes version, publish_state and schema_url. A requested published contract that does not exist returns not_found. For a small edit prefer get_schema_part. No LLM call. Contract details: enricher://docs/schema-reference.
| Name | Type | Req | Description |
|---|---|---|---|
| schema_id | string | yes | UUID of the saved schema. |
| version | string | – | 'working' (default) — the editable copy updates/edits apply to; 'published' — the contract enrichment and database sync use (only meaningful for schemas linked to a database sync). |
Structured output declared, but exposes no named fields.
No examples provided.
get_schema_part Get schema part ~162
Read only the schema fragment needed for an edit. Omit path for the root/type index; use '$defs.X' or '$enums.X' for a definition, an object path for its subtree, or a leaf path for its property card and relations. Dot-separated paths use '[]' for array items. The response identifies shared definition usage, identity participation, database flags and whether entity state or linked databases exist. Editing a $defs property affects every usage site. Reads the working copy; no LLM call. Path examples: enricher://docs/schema-reference.
| Name | Type | Req | Description |
|---|---|---|---|
| path | – | – | Omit for the index; else a property/object path or '$defs.X'/'$enums.X'. |
| schema_id | string | yes | UUID of the saved schema. |
Structured output declared, but exposes no named fields.
No examples provided.
get_semantic_concept Get semantic concept ~117
Read one concept's aliases, identity source keys, linked records and nearest neighbors within its own type/model slice. Record links are capped; records_truncated signals omitted links. neighbors_limit=0 skips neighbors. Use returned alias IDs with update_concept_alias and similarities to assess a proposed merge. No LLM call. Never compare similarities across embedding spaces or concept types. See enricher://docs/semantic-ids.
| Name | Type | Req | Description |
|---|---|---|---|
| concept_id | string | yes | The concept's semantic_id (UUID). |
| neighbors_limit | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_stats Get statistics ~57
Read organization-wide record totals, success rate, tokens and cost summary. No LLM call. This tool has no job filter; use list_records(job_id=...) for a particular run and benchmark tools for comparative quality/cost/speed scores.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
import_semantic_concepts Import semantic concepts ~236
Resolve 1..1000 texts against one concept type. mint=false returns exact/matched/would_mint outcomes without minting; mint=true creates misses and requires owner (reporting requires editor). Resolution can call embeddings and the identity judge even in report mode. Review would_mint rows before authorizing creation. A new type may be initialized with embedding_model; existing types cannot switch spaces through import. Returns per-text outcomes. See enricher://docs/semantic-ids.
| Name | Type | Req | Description |
|---|---|---|---|
| concept_type | string | yes | Concept type (slice) to resolve against. |
| embedding_model | – | – | Composite key (provider::model) seeding a NEW concept type's slice — an import may open the type it resolves into. Refused when that type's vocabulary already lives in another model. |
| judge_floor | – | – | Similarity at or above which a candidate is put to the identity judge. Omit to use the organization default (Settings → Organization). |
| mint | boolean | – | False = report only; True = create the unmatched rows (owner role). |
| texts | array | yes | Identity texts to resolve (1..1000). |
Structured output declared, but exposes no named fields.
No examples provided.
list_benchmark_scenarios List benchmark scenarios ~67
List compact benchmark scenario summaries and total. Scenarios test enrichment, sample generation or schema generation. No LLM call. Read one with get_benchmark_scenario or create one with create_benchmark_scenario. Lifecycle and reference requirements: enricher://docs/model-benchmark.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
list_database_syncs List database syncs ~113
List a saved schema's database registrations, linked schemas, options and sync hosts. Returns pending and quarantined delta counts, projection_upgrade_pending and database links. No LLM call. Pending zero alone does not prove healthy delivery: check quarantine and migration blockers. Use list_entity_states for server-side rows and get_record for per-record delivery state. PostgreSQL, MySQL and SQLite delivery is performed by the user's sync client. See enricher://docs/database-sync.
| Name | Type | Req | Description |
|---|---|---|---|
| schema_id | string | yes | Saved schema UUID. |
Structured output declared, but exposes no named fields.
No examples provided.
list_entity_states List entity states ~177
Browse a schema's current merged entity rows, not per-run records. Requires editor; no LLM call. Returns identities, revision, last_record_id and optionally payload, with limit/offset pagination. Rejected entities have no row; purge_entity_state may also remove delivered rows. Server-side state does not prove the external replica has applied its deltas. Use get_record and list_database_syncs for delivery and rejection diagnostics. See enricher://docs/database-sync.
| Name | Type | Req | Description |
|---|---|---|---|
| entity_type | – | – | Filter to one entity type (the response lists the types present). |
| include_payload | boolean | – | Include each entity's current merged payload. Set false for a compact identity-only listing (keys, revision, last_record_id). |
| limit | integer | – | – |
| offset | integer | – | – |
| schema_id | string | yes | Saved schema UUID. |
Structured output declared, but exposes no named fields.
No examples provided.
list_models List models ~126
List available model keys, nominal capabilities, languages, strategies, auto-selected defaults and organization profile_limits. Use when choosing explicit models or checking plan limits; ordinary calls may omit models or use auto without fetching this large catalogue. Auto also accounts for attachment capabilities. is_available means a usable provider key exists, not that provider quota or every combination of tools and media will work. Missing capability flags mean unsupported on this discovery surface. default_models_web_search is a search-only preview, not attachment-specific. No LLM call. Model selection and costs: enricher://docs/enrichment-and-fusion.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
list_records List records ~237
List compact, paginated records in your organization, most recent first. Filter by job_id to retrieve persisted outputs of an asynchronous workflow; type, success, model and search further narrow the result. Both per-model enrichment and arbitration records may exist for one entity. Use get_record for full output and failures; use list_entity_states for current merged entity state instead of run history. No LLM call. Fetch every page when a job produces more than one page of records.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | – | – | Filter to a single job (every model + expertise in one batch shares one job_id). |
| model | – | – | Filter by model composite key (e.g. 'anthropic::claude-sonnet-4-6'). |
| page | integer | – | – |
| page_size | integer | – | – |
| record_type | – | – | Filter by type: enrichment | sample_generation | schema_generation | schema_edit | playground | classification | arbitration | ambiguity_analysis | db_classification | benchmark_scoring |
| search | – | – | Substring match against the entity's `name` field in the output. |
| success | – | – | True = only successful records; False = only failed. |
Structured output declared, but exposes no named fields.
No examples provided.
list_schemas List schemas ~76
List saved schemas in your organization, pinned first. Returns compact summaries with IDs, names and links; no LLM call. Use get_schema to inspect a chosen schema and its input contract, or get_schema_part for a targeted edit. For a database-linked schema, enrich against its published version; the working copy may contain unpublished changes.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
list_semantic_concepts List semantic concepts ~230
Browse organization concepts with aliases, usage counts and type/model facets. view='review' returns pairs escalated by the identity judge, not merely similar pairs. Returns a filtered page; use get_semantic_concept for details and neighbors. Similarities are comparable only within one concept_type/embedding_model slice. No LLM call. Vocabulary review and curation: enricher://docs/semantic-ids.
| Name | Type | Req | Description |
|---|---|---|---|
| concept_types | – | – | Restrict to these concept types (empty/None = every type). |
| limit | integer | – | – |
| min_ref_count | – | – | Only concepts used by at least this many records. |
| offset | integer | – | – |
| search | – | – | Substring match against concept texts. |
| sort_by | string | – | ref_count | text | concept_type | created_at |
| sort_order | string | – | – |
| view | string | – | 'concepts' = filtered concept page; 'review' = pairs the identity judge left for a person: escalated (unsure), found duplicated while answering another question, or separated at a similarity high eno… |
Structured output declared, but exposes no named fields.
No examples provided.
merge_records Merge records ~174
Fuse two or more records of the same entity into a new arbitration record. Without arbitration_model use voting, median and union rules; with an arbiter, conflicts may incur LLM cost. Returns output, conflicts, fusion metadata and a new record ID. The merged result can feed linked databases and overwrite current entity values. Inspect database warnings and the actual fusion method; an arbiter failure can fall back to rules. Use this after separately recovered model runs, not to merge different entities. See enricher://docs/enrichment-and-fusion.
| Name | Type | Req | Description |
|---|---|---|---|
| arbitration_model | – | – | Model composite key for LLM arbitration (None = rule-based). |
| attachment_ids | – | – | Attachments passed to the arbitration LLM (ignored for rule-based merges). |
| result_ids | array | yes | UUIDs of the enrichment records to merge (minimum 2). |
Structured output declared, but exposes no named fields.
No examples provided.
merge_semantic_concepts Merge semantic concepts ~158
Merge a loser concept into a winner. Defaults to impact_only=true: inspect counts and affected replicas before obtaining approval to execute. impact_only=false requires owner and rewrites aliases, entity identities and referencing payloads, queuing convergence to linked replicas. No LLM call. Similarity alone does not establish identity; inspect get_semantic_concept and the judge review evidence first. Returns impact or merge results. See enricher://docs/semantic-ids.
| Name | Type | Req | Description |
|---|---|---|---|
| impact_only | boolean | – | True = report the merge's blast radius only; False = merge (owner role). |
| loser_id | string | yes | semantic_id of the concept folded into the winner. |
| winner_id | string | yes | semantic_id of the concept that survives. |
Structured output declared, but exposes no named fields.
No examples provided.
migrate_semantic_embeddings Migrate semantic embedding model ~196
Inspect or migrate the organization's concept embedding space. action='status' is read-only; preview, start and cancel require owner. preview estimates cost and reports potential collisions; review them before authorizing start. target_model is required for preview/start; source_model and concept_types scope the move. Starting launches billed background re-embedding while enrichment continues, then switches the selected slices after coverage is complete. Cancel marks the transition cancelled; it does not guarantee interruption or rollback of in-flight work. Returns migration status or preview. See enricher://docs/semantic-ids.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | status | preview | start | cancel |
| concept_types | – | – | Restrict the move to these concept types; empty = the whole space. |
| source_model | – | – | Embedding space to move; omitted = the org's current default. |
| target_model | – | – | Composite key (provider::model) to move to. Required for preview/start. |
Structured output declared, but exposes no named fields.
No examples provided.
move_schema_property Move schema property ~195
Move one property into the root, an object path or '$defs.X', preserving its flags and expertise. Requires editor; no LLM call. Moving into a definition changes every usage site. An identity composition naming the property is re-spelled automatically when the destination stays within the same 1-1 closure (identity_rebound reports it); the move is refused when it would take the key out of that closure or leave a semantic ID with no identity material, and on collisions or recursive containment. Read source and destination with get_schema_part first. Structural changes on database-linked schemas require publish_schema. Paths and migration guidance: enricher://docs/schema-reference.
| Name | Type | Req | Description |
|---|---|---|---|
| new_parent_path | string | – | '' = root, or an object path / '$defs.X'. |
| path | string | yes | Property path, e.g. 'ceremonies[].ceremony_type'. |
| schema_id | string | yes | UUID of the saved schema. |
Structured output declared, but exposes no named fields.
No examples provided.
nest_schema_region Materialize entity region ~313
Materialize an entity region from get_schema's x-entityMap. Ordinary flat members (e.g. product_id, product_name on an order line) move into a new object named after the region, regions hanging from it move along (nest them in turn inside the new object), pairing facts stay on the host, and the moved names shed the region's tokens (product_name → name) unless strip_prefix=false. Compact scalar occurrences (e.g. manufacturer_name or each therapeutic_classes[] item) are all converted to references to one shared $defs entity; host_path and strip_prefix do not apply to that form. host_path is '' for the root, an object path, 'path[]' for an array's items, or '$defs.X'. Defaults to dry_run=true: inspect the returned schema_content and notes, then persist with dry_run=false only after approval of the change. Requires editor; no LLM call. Database-linked structural edits still require publish_schema. Modeling consequences: enricher://docs/schema-reference.
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | Report the rewrite without persisting it (the default). |
| host_path | string | – | Container holding the flat members ('' = root, object path, 'path[]', '$defs.X'). |
| region_id | string | yes | Entity region id from x-entityMap.regions (get_schema). |
| schema_id | string | yes | UUID of the saved schema. |
| strip_prefix | boolean | – | Drop the region's name tokens from the moved field names. |
Structured output declared, but exposes no named fields.
No examples provided.
probe_semantic_concept Probe semantic concept ~191
Preview identity resolution without adding a concept or increasing its usage. Requires editor; uncached resolution may call embeddings and the identity judge. Returns exact_hit, match or no_match, the matched concept and neighbors. Probe before adding; a matched incumbent may already represent the intended entity. embedding_model can select the space for a new concept type, not change an existing type's space. Inspect judge evidence as well as similarity. See enricher://docs/semantic-ids.
| Name | Type | Req | Description |
|---|---|---|---|
| concept_type | string | yes | Concept type (slice) to resolve against. |
| embedding_model | – | – | Composite key (provider::model) to embed a NEW concept type under. |
| judge_floor | – | – | Similarity at or above which a candidate is put to the identity judge. Omit to use the organization default (Settings → Organization). |
| neighbors | integer | – | – |
| text | string | yes | The identity text to resolve. |
Structured output declared, but exposes no named fields.
No examples provided.
publish_schema Publish schema ~261
Publish a database-linked schema's working copy as the contract used by enrichment and replicas. A newly linked schema sends nothing until first publication; unlinked drafts cannot be published. Requires editor; no LLM call. Call validate_only=true to inspect the diff, blockers, warnings and per-database migration_sql. Transform migrations require user-approved confirm_transforms=true; cross-schema conflicts remain blockers. key_language may be required if classification revealed a multilingual key. Returns publication state; queued migrations apply asynchronously on replicas. See enricher://docs/database-sync for the review and delivery workflow.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_transforms | boolean | – | Acknowledge a transform migration (re-key, type change, or a column/table rename) run against the replicas' own data. Required when the preview says requires_confirm — ALWAYS show the transforms to t… |
| key_language | – | – | ISO 639-1 language for multilingual identity tokens. Normally adopted from the database lock. Supply when key_language_required requests a choice; review the suggested language with the user. Shared… |
| schema_id | string | yes | UUID of the schema to publish. |
| validate_only | boolean | – | Dry-run: return the diff + blockers without publishing. |
Structured output declared, but exposes no named fields.
No examples provided.
resolve_unify_proposal Resolve unify proposal ~205
Resolve one pending entity-type unification proposal from get_schema. action='accept' maps the proposed site onto the winning $def; field_map overrides proposed correspondences. Unmapped fields are retained as nullable; other usages of the winning definition are affected. action='dismiss' keeps the sites separate. Defaults to dry_run=true: inspect the returned schema_content and notes, then persist with dry_run=false only after approval of the change. Requires editor; no LLM call. Database-linked structural edits still require publish_schema. Modeling consequences: enricher://docs/schema-reference.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | 'accept' or 'dismiss'. |
| dry_run | boolean | – | Report the rewrite without persisting it (the default). |
| field_map | – | – | accept only: override of the loser→winner field correspondence. |
| proposal_id | string | yes | Proposal id from x-entityMap.proposals (get_schema). |
| schema_id | string | yes | UUID of the saved schema. |
Structured output declared, but exposes no named fields.
No examples provided.
retry_expertises Retry failed expertises ~295
Retry only an existing record's failed expertise domains, then update its output and attempt the run's fusion/synchronization. Billed for retried work. Requires failed_expertises on that record (get_record); a surviving successful sibling is not retryable and returns no_failed_expertises. Supply its entity_input_data and saved_schema_id; model optionally substitutes the failed model. Returns job_id: poll get_job_status, then re-read get_record. When the failed leg left no record, use a one-model enrich_entity with database_sync=false followed by merge_records instead. Recovery decisions: enricher://docs/enrichment-and-fusion.
| Name | Type | Req | Description |
|---|---|---|---|
| entity_data | object | yes | The record's original entity input (get_record -> entity_input_data). |
| languages | – | – | ISO 639-1 codes; defaults to ['en']. |
| model | – | – | Model to retry with (provider::model from list_models). Defaults to the record's own model — pass a stronger one when a domain fails repeatedly on it (retrying the same model that just failed usually… |
| record_id | string | yes | Enrichment record with failed expertises. |
| schema_id | – | – | Saved schema UUID (get_record -> saved_schema_id). Or pass target_schema. |
| target_schema | – | – | Raw schema dict when no saved schema exists. |
Structured output declared, but exposes no named fields.
No examples provided.
revert_benchmark_reference_updates Revert benchmark reference updates ~219
Undo automatic edits a scoring pass made to a scenario's reference. Every scoring pass folds what the scored models showed the reference should be (a candidate the judge found better, a rule the samples prove, a value the reference lacked) and writes it into the reference — an edit a pass already made is only replaced by stronger evidence (samples, a wrong verdict, more agreeing models), never by one more model's better verdict; the log is reference_meta.auto_applied on get_benchmark_scenario, each entry with its inverse patch. Pass the revision ids to undo: the inverse is applied, the entry is marked reverted and its (path, attribute) is pinned so no later pass re-applies it (a manual set_benchmark_reference lifts every pin). Scores never go stale from this. Requires owner and a plan with benchmarks. No LLM call.
| Name | Type | Req | Description |
|---|---|---|---|
| revision_ids | array | yes | Ids of the reference_meta.auto_applied entries to undo (1..200). |
| scenario_id | string | yes | UUID of the scenario. |
Structured output declared, but exposes no named fields.
No examples provided.
run_benchmark Run benchmark ~231
Start billed asynchronous execution and scoring of a benchmark. Requires owner, a benchmark-enabled plan and a judge; a verified reference is also required except for sample generation. Supply model_keys or providers; omitting both runs all active models with usable provider keys. Repetitions and judging increase cost. Returns job_id and total_models: poll get_job_status, then read get_benchmark_scenario_results. Re-running replaces each selected model's previous result. An organization's benchmark runs and scoring passes execute one at a time: a launch while another is in flight is queued (queue_position, status 'pending'), and a launch on a scenario whose run is still queued folds its models into that run (merged=true, job_id names the queued run). Reference setup and score interpretation: enricher://docs/model-benchmark.
| Name | Type | Req | Description |
|---|---|---|---|
| model_keys | – | – | Explicit model composite keys. Overrides `providers`. |
| providers | – | – | Provider names (e.g. ['anthropic', 'mistral']) — runs every active model of those providers that has a valid key. |
| scenario_id | string | yes | UUID of the scenario to run. |
Structured output declared, but exposes no named fields.
No examples provided.
save_schema Save schema ~250
Save a directly authored schema and return its ID and link. Requires editor; no LLM call or generation charge. schema_content is a JSON Schema 2020-12 document in Entity Enricher's supported dialect: title, type='object', properties, optional $defs and x-* extension sections. The server validates it and makes colliding names unique. Entity definitions, enum vocabularies and localized fields have different projection rules. Unknown keywords are dropped, not rejected: read ignored_keywords (path, keyword, hint) and applied_repairs in the result — a property flag such as semantic_id placed on a $defs entity object lands there, with the level it is read at. Use create_schema_from_sample to derive a schema from data, or update_schema for an existing schema. A minimal valid example and supported annotations are in enricher://docs/schema-reference.
| Name | Type | Req | Description |
|---|---|---|---|
| is_pinned | boolean | – | Pin it to the top of listings. |
| name | string | yes | – |
| schema_content | object | yes | Full schema document: title, type=object, properties and optional $defs/x-* sections. See enricher://docs/schema-reference for a minimal example. |
| tags | – | – | Optional tags. |
Structured output declared, but exposes no named fields.
No examples provided.
What is the Entity Enricher MCP server?
Entity Enricher is an MCP server listed in the public MCP registry as ai.entityenricher/enricher. Multi-LLM entity enrichment: schemas, single/batch enrichment, fusion, model benchmarks. This page covers its hosted endpoint (https://entityenricher.ai/api/mcp/).
Is the Entity Enricher MCP server safe to use?
Entity Enricher scores 67 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Entity Enricher MCP server expose?
Entity Enricher exposes 58 tools: upload_attachment, delete_attachment, start_batch_enrichment, list_benchmark_scenarios, get_benchmark_scenario, and 53 more. Their descriptions and schemas cost roughly 12,760 tokens of context every time the server is loaded.
Does the Entity Enricher MCP server require authentication?
No. We connected to Entity Enricher without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Entity Enricher MCP server still maintained?
Entity Enricher is still listed as active in the MCP registry. We last reached this channel on 25 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.