ai.entityenricher/enricher

Entity Enricher

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

Endpointhttps://entityenricher.ai/api/mcp/ (streamable-http)
Registry version2.0.0
Now59 tools · grade D (62) · pin ts_4a25ea1efc8b01c82f77b4115595291e · protocol 2025-06-18
First / last listed2026-10-26 04:52 UTC / 2026-10-26 04:52 UTC
Grade over time2026-10-26: D (62), 59 tools

Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.

Timeline

First listing · 2026-10-26 04:52 UTC
59 tools, grade D (62)

Tools: upload_attachment delete_attachment start_batch_enrichment list_benchmark_scenarios get_benchmark_scenario get_benchmark_scenario_results create_benchmark_scenario update_benchmark_scenario set_benchmark_reference revert_benchmark_reference_updates delete_benchmark_scenario run_benchmark list_database_syncs list_entity_states create_database_sync assign_sync_host classify_database_model delete_database_sync get_database_setup_instructions fetch_database_deltas ack_database_deltas sync_records_to_database list_models enrich_entity retry_expertises merge_records get_job_status cancel_job answer_job_question answer_llm_request list_records get_record get_stats generate_sample list_schemas get_schema create_schema_from_sample save_schema update_schema get_schema_part get_enum_candidates update_schema_property add_schema_property move_schema_property resolve_unify_proposal nest_schema_region publish_schema delete_schema analyze_sample analyze_schema list_semantic_concepts get_semantic_concept probe_semantic_concept add_semantic_concept update_concept_alias import_semantic_concepts merge_semantic_concepts delete_semantic_concepts migrate_semantic_embeddings

Current tools (59)

upload_attachmentUpload base64 file bytes as reusable source material; returns id and requires_capability. Pass the ID in attachment_ids to sample/schema generation, enrichment or benchmarks. Supported format handling depends on server MIME policy: extracted text or model-readable binary. Prefer auto model selection for attachment capabilities. Uploading does not itself run an LLM. A generated sample with attachme
params: filename*, content_base64*, media_type
delete_attachmentPermanently 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.
params: attachment_id*
start_batch_enrichmentStart billed asynchronous enrichment of an entity list against exactly one of schema_id or target_schema. Returns job_id and total. No fixed entity-count cap; live prompt quotas and credits can stop remaining work. Each entity follows the enrichment/fusion pipeline; every model must succeed for its automatic fusion and database admission. A confident classification mismatch skips that entity witho
params: entities*, models, schema_id, target_schema, languages, strategy, classification_model, arbitration_model, attachment_ids, delegate_llm_calls
list_benchmark_scenariosList 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.
params: none
get_benchmark_scenarioRead 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.
params: scenario_id*, include_reference
get_benchmark_scenario_resultsFilter, 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.
params: scenario_id*, providers, model_keys, status, sort_by, sort_order, limit
create_benchmark_scenarioCreate 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 verifie
params: name*, scoring_judge_model_key*, scenario_type, schema_id, entity_data, entity_samples, sample_request, typical_object, naming_convention, language, enable_web_search, generate_semantic_ids, description, strategy, languages, repetitions, attachment_ids
update_benchmark_scenarioEdit a benchmark's test definition or scoring configuration. Requires owner and a plan with benchmarks; no model run. Only supplied fields change, but sample_params and schema_gen_params replace their parameter objects wholesale. The judge may be replaced, not cleared; scenario_type is immutable. Changed test definitions make previous results stale. Re-run affected models to refresh their scores.
params: scenario_id*, name, description, schema_id, entity_data, entity_samples, sample_params, schema_gen_params, strategy, languages, scoring_judge_model_key, repetitions, scoring_source
set_benchmark_referenceSave the gold reference for an enrichment or schema-generation benchmark. Only set reference_verified=true after checking its values against trusted evidence or obtaining human sign-off; a generated answer alone is not verification. Schema-generation references must be GeneratedJsonSchema objects. Sample-generation scenarios reject references because they are rubric-scored. Requires owner and a pl
params: scenario_id*, reference_output*, reference_verified, source, source_record_id
revert_benchmark_reference_updatesUndo 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
params: scenario_id*, revision_ids*
delete_benchmark_scenarioDelete a benchmark scenario and its stored results. Requires owner and a plan with benchmarks. No LLM call; inspect the scenario before deleting it.
params: scenario_id*
run_benchmarkStart 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_s
params: scenario_id*, model_keys, providers
list_database_syncsList 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 SQL
params: schema_id*
list_entity_statesBrowse 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 d
params: schema_id*, entity_type, limit, offset, include_payload
create_database_syncRegister 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 initia
params: schema_id*, name*, dialect, on_gaps, propagate_not_null, index_scalars, pattern_index_localized_keys, pk_strategy, notify_debounce_s, purge_on_ack, purge_on_ack_delay_days, purge_entity_state, purge_entity_state_delay_days, key_language, target_host, delegate_llm_calls
assign_sync_hostAssign 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
params: database_id*, host
classify_database_modelStart 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
params: schema_id*, model, delegate_llm_calls
delete_database_syncDelete 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 o
params: database_id*, delete_entity_state, clear_database_model
get_database_setup_instructionsReturn 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 D
params: database_id*
fetch_database_deltasRead 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. Le
params: database_id*, since, claim, limit
ack_database_deltasAcknowledge 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.
params: database_id*, up_to_id*
sync_records_to_databaseValidate and inject stored or supplied enrichment output into the entity layer and linked syncs. May incur semantic-resolution cost. record_id alone reuses its output; adding structured_output creates a new derived record. Without record_id, supply structured_output and saved_schema_id. Each item uses the current published contract and admission gate. Only enrichment/arbitration records qualify; b
params: items*
list_modelsList 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 c
params: none
enrich_entityEnrich 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.
params: entity_data*, models, schema_id, target_schema, languages, strategy, classification_model, arbitration_model, attachment_ids, force_after_classification_warning, database_sync, timeout_seconds, delegate_llm_calls
retry_expertisesRetry 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_i
params: record_id*, entity_data*, schema_id, target_schema, languages, model, delegate_llm_calls
merge_recordsFuse 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 fail
params: result_ids*, arbitration_model, attachment_ids, delegate_llm_calls, wait_seconds
get_job_statusRead 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; answer a delegated job's llm_requests with answer_llm_request. include_result=true returns full terminal details; batch summaries count entities and database outcomes. A failed job is not usable out
params: job_id*, llm_request_id, include_result, events_after
cancel_jobRequest 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.
params: job_id*
answer_job_questionResume 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_statu
params: job_id*, answers, wait_seconds
answer_llm_requestAnswer one LLM request of a job started with delegate_llm_calls=true: you are its model. Read the request under get_job_status(job_id).llm_requests (or in the start tool's return): run systemPrompt + messages with the listed tools and toolChoice on your own model, then pass the result here as response in MCP CreateMessageResult shape — {role: 'assistant', model: '<your model>', stopReason: 'toolUs
params: job_id*, request_id*, response*, wait_seconds
list_recordsList 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 h
params: page, page_size, record_type, model, success, search, job_id
get_recordRead 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 sta
params: record_id*
get_statsRead 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.
params: none
generate_sampleGenerate 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 a
params: request, model, typical_objects, sample_count, naming_convention, attachment_ids, auto_answer, enable_web_search, language, existing_samples, wait_seconds, delegate_llm_calls
list_schemasList 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.
params: none
get_schemaRead 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, publi
params: schema_id*, version
create_schema_from_sampleGenerate and auto-save a schema from reviewed samples, returning schema_id, schema content and record links. Supply entity_samples (or samples_csv), 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 a
params: entity_samples, samples_csv, sample_record_id, model, attachment_ids, generate_semantic_ids, language, timeout_seconds, delegate_llm_calls
save_schemaSave 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 d
params: name*, schema_content*, tags, is_pinned
update_schemaEdit a saved schema's metadata or replace its full schema_content without an LLM call. Requires editor. Only supplied values change. For one property, prefer update_schema_property, add_schema_property or move_schema_property. Replacements must use GeneratedJsonSchema; unknown keywords are dropped, not rejected, and reported in ignored_keywords / applied_repairs. On database-linked schemas this ed
params: schema_id*, name, schema_content, tags, is_pinned, ambiguity_check_enabled, key_language
get_schema_partRead 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.
params: schema_id*, path
get_enum_candidatesList 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
params: schema_id*
update_schema_propertyEdit or remove one property by path without replacing the full schema. Requires editor; no LLM call. Only supplied fields change; null clears an entry in flags. Server validation rejects or normalizes invalid combinations and reports applied_repairs. Editing inside $defs affects every usage site. Removing an identity-source member is refused until its identity is recomposed. Renames preserve ident
params: schema_id*, path*, new_name, type, ref, description, examples, flags, remove
add_schema_propertyAdd 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 containe
params: schema_id*, name*, definition*, parent_path
move_schema_propertyMove 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 clos
params: schema_id*, path*, new_parent_path
resolve_unify_proposalResolve 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 persis
params: schema_id*, proposal_id*, action*, field_map, dry_run
nest_schema_regionMaterialize 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. A pairing region n
params: schema_id*, region_id*, host_path, strip_prefix, dry_run
publish_schemaPublish 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-schem
params: schema_id*, validate_only, confirm_transforms, key_language
delete_schemaSoft-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.
params: schema_id*
analyze_sampleAnalyze 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
params: sample_json*, model, protected_fields
analyze_schemaAnalyze 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 i
params: schema_id*, model, force
list_semantic_conceptsBrowse 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.
params: view, search, concept_types, min_ref_count, sort_by, sort_order, limit, offset
get_semantic_conceptRead 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
params: concept_id*, neighbors_limit
probe_semantic_conceptPreview 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
params: text*, concept_type*, judge_floor, neighbors, embedding_model
add_semantic_conceptAdd 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 alias
params: text*, concept_type*, judge_floor, embedding_model, alias_of
update_concept_aliasRemove or promote a concept alias using alias IDs from get_semantic_concept. Requires editor; no LLM call. action='remove' stops that surface form resolving to this concept; removing the last alias is refused. action='set_canonical' changes its displayed form. To add an alias use add_semantic_concept(alias_of=...). Returns the outcome. See enricher://docs/semantic-ids.
params: concept_id*, alias_id*, action*
import_semantic_conceptsResolve 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 s
params: texts*, concept_type*, judge_floor, mint, embedding_model
merge_semantic_conceptsMerge 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 f
params: winner_id*, loser_id*, impact_only
delete_semantic_conceptsDelete 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. R
params: ids, concept_types, unused_only, impact_only
migrate_semantic_embeddingsInspect 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, the
params: action*, target_model, source_model, concept_types

Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.