Skip to main content
Glama

Enrich entity

enrich_entity

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. By default the job runs on YOUR model (use_platform_models=false, no explicit model): the call returns the job status as soon as the first model call waits for you (llm_requests), or at the terminal state; a classification warning then pauses the job for answer_job_question instead of returning classification_warning, and enable_web_search must be decided (omitted returns web_search_undecided). On platform models the call blocks until completion.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "entity_data": "<entity_data>"
    },
    "name": "enrich_entity"
  }
}

Input Schema

NameRequiredDescriptionDefault
modelsNoModel composite keys; omit (or pass ['auto']) for one automatically selected model: YOUR model, or with use_platform_models=true the organization's best model for enrichment from its benchmark scores (quality/speed/cost weights), within the run's constraints (attachments, web search, thinking) — the result reports the pick as model_selection. auto alone never fuses. Name provider::model keys only when the user named them; that runs the job on the platform (billed), and two or more fuse. Keys and model-count limits: list_models.
strategyNoauto (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 per-expertise calls — best quality, higher cost)auto
languagesNoISO 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.
schema_idNoUUID of a saved schema. Mutually exclusive with target_schema.
entity_dataYesEntity 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 accepted.
database_syncNoWhether 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 above): the merge_records call that follows is what should write, so the intermediate single-model write is skipped. The record itself is still saved either way.
target_schemaNoInline JSON Schema document in the supported Entity Enricher dialect; prefer schema_id. Format: enricher://docs/schema-reference.
attachment_idsNoUUIDs of attachments (from upload_attachment) to provide as source material for this enrichment.
timeout_secondsNoWall-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_id=...) and recoverable with retry_expertises. Multi-model fusion runs and reasoning models routinely need more than the default; raise it or use start_batch_enrichment (async).
reasoning_effortNoThinking (reasoning) opt-in: low, medium or high; omitted = off. On the platform, auto then picks only a model whose reasoning the platform can pilot, and the effort is translated per provider. On YOUR model, apply the effort yourself when you run the requests.
arbitration_modelNoOptional LLM model key used to resolve fusion conflicts when 2+ models are selected. Without this, conflicts are resolved by deterministic voting.
enable_web_searchNoOn your model (the default), true asks you to ground the answers with your own web search tool and false not to; omitted returns web_search_undecided so you ask the user first. On platform models, true enables the provider's builtin search where the model supports it (omitted = false).
use_platform_modelsNofalse (default): every LLM call of this job runs on YOUR model — the job parks each call as a pending request you answer with answer_llm_request; no credits are consumed. true: the job runs on the platform (billed) and, with the model left on auto, on the organization's best model for the task — its highest blended benchmark score under the organization's quality/speed/cost weights, among the models that satisfy the run (attachments, web search, thinking). Naming a platform model also runs the job there, bypassing that pick: do it only when the user named one. Protocol: enricher://docs/llm-delegation.
classification_modelNoOptional pre-flight classifier model key. When set, the entity is type-checked before enrichment to catch mismatches.
force_after_classification_warningNoSet to true to bypass a previous classification warning. Use only after explicit user confirmation.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • removedInput schema / properties / delegate_llm_calls
      Removed value: -{
      -  "default": false,
      -  "description": "Run every LLM call of this job on YOUR model instead of a platform model: the job parks each call as a pending request you answer with answer_llm_request; no credits are consumed. Model parameters must then be omitted or 'auto'. Plan feature. Protocol: enricher://docs/llm-delegation.",
      -  "title": "Delegate Llm Calls",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / enable_web_search
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "On your model (the default), true asks you to ground the answers with your own web search tool and false not to; omitted returns web_search_undecided so you ask the user first. On platform models, true enables the provider's builtin search where the model supports it (omitted = false).",
      +  "title": "Enable Web Search"
      +}
    • changedInput schema / properties / models / description
      Previous value: -"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."New value: +"Model composite keys; omit (or pass ['auto']) for one automatically selected model: YOUR model, or with use_platform_models=true the organization's best model for enrichment from its benchmark scores (quality/speed/cost weights), within the run's constraints (attachments, web search, thinking) — the result reports the pick as model_selection. auto alone never fuses. Name provider::model keys only when the user named them; that runs the job on the platform (billed), and two or more fuse. Keys and model-count limits: list_models."
    • addedInput schema / properties / reasoning_effort
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "low",
      +        "medium",
      +        "high"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Thinking (reasoning) opt-in: low, medium or high; omitted = off. On the platform, auto then picks only a model whose reasoning the platform can pilot, and the effort is translated per provider. On YOUR model, apply the effort yourself when you run the requests.",
      +  "title": "Reasoning Effort"
      +}
    • addedInput schema / properties / use_platform_models
      Added value: +{
      +  "default": false,
      +  "description": "false (default): every LLM call of this job runs on YOUR model — the job parks each call as a pending request you answer with answer_llm_request; no credits are consumed. true: the job runs on the platform (billed) and, with the model left on auto, on the organization's best model for the task — its highest blended benchmark score under the organization's quality/speed/cost weights, among the models that satisfy the run (attachments, web search, thinking). Naming a platform model also runs the job there, bypassing that pick: do it only when the user named one. Protocol: enricher://docs/llm-delegation.",
      +  "title": "Use Platform Models",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / delegate_llm_calls
      Added value: +{
      +  "default": false,
      +  "description": "Run every LLM call of this job on YOUR model instead of a platform model: the job parks each call as a pending request you answer with answer_llm_request; no credits are consumed. Model parameters must then be omitted or 'auto'. Plan feature. Protocol: enricher://docs/llm-delegation.",
      +  "title": "Delegate Llm Calls",
      +  "type": "boolean"
      +}
  3. First observed

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnly=false, destructive=false, openWorld=true; the description adds the critical behavioral layers – generation is billed, fusion requires all legs to succeed, database admission is not replica delivery, partial writes/overwrites can occur, and the default YOUR-model path parks calls as pending requests. It also discloses the classification-warning pause semantics that differ between the local and platform execution modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the body is a dense run-on paragraph that mixes billing, fusion failure, classification, database sync, delegation mode, and recovery into one block. Each clause carries information, yet the lack of structure (no separation of the YOUR-model vs platform-model paths) makes it harder to parse than its length warrants.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter tool with an output schema, the description covers execution modes (local vs platform billing), timeout/recovery, fusion failure detection, database-sync warnings, and points to enricher://docs/enrichment-and-fusion for the recovery ladder. Since an output schema exists, it correctly avoids re-explaining raw return values while still flagging the salient outcome fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all 15 parameters are already documented in the schema. The description reinforces a few (auto model omission, database_sync recovery case, force_after_classification_warning), but adds little beyond what the schema text already states, including the mutual exclusion and web-search behavior. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource (enrich one entity), names the exact mutually-exclusive input (schema_id vs target_schema), and lists what comes back (structured output, record_id, costs, database outcome). An agent can immediately distinguish this single-entity tool from start_batch_enrichment and merge_records mentioned later.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: read get_schema.input_contract first, never invent preserve values, omit models for auto, use start_batch_enrichment for long fusion/reasoning runs, set database_sync=false only for the recovery leg of a failed fusion, and bypass classification_warning only after user confirmation. It names the alternatives (retry_expertises, merge_records, answer_job_question, answer_llm_request) and the conditions that select them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.