Skip to content

Typed enrichment

Provide known facts and a question; get a typed answer, explanation and sources.

Use enrichment_start in MCP or POST /api/v1/operations/enrichment.start through HTTP for answers without a sheet. A batch accepts 1–100 independent items, including many email and phone requests. For a saved list use sheets_research; for cells in an existing sheet use sheets_enrich.

An enrichment item contains four required fields: a stable id, known facts in input, a question, and the requested output. The input values may be strings, numbers, booleans or null. Keep source material in input and instructions in question.

json
{  "idempotencyKey": "careers-pilot-001",  "items": [    {      "id": "company-1",      "input": {        "companyName": "Workbase",        "website": "https://www.workbase.com"      },      "question": "Find this company's official careers page. Return no answer if it cannot be verified.",      "output": { "type": "url" }    }  ]}

Submit this body to POST /api/v1/operations/enrichment.start. Store the returned batchId, then use the result endpoint. This example performs real, potentially billable research; it is not a guaranteed fixture.

Select the output

TypeIntended answer
urlOne website or profile URL
emailA list of email addresses
phoneA list of phone numbers
textA short factual answer or a value from an allowed list
numberA numeric value
checkboxA boolean answer
dateA date

Text supports enum and maxLength. Number supports integer, minimum and maximum. For example: {"type":"text","enum":["Germany","Austria","Switzerland"]} or {"type":"number","integer":true,"minimum":0}. Use the live schema for complete constraints. Do not request arbitrary JSON through this entry point: it is not an accepted enrichment output type.

An unknown answer remains empty rather than becoming a guessed value. A well-formed answer can still refer to the wrong entity or outdated evidence. Inspect its sources and meaning, not just its type. See results and evidence.

Typed lists

Use list when the answer contains several records, such as jobs, posts or companies. Define 1–20 fields using the scalar types above. Field names must be unique, start with a letter and contain only letters, numbers or underscores. Each row has exactly those fields. maxItems limits the answer to 1–100 rows (default 20); it is not a target to fill with guesses.

json
{  "type": "list",  "fields": [    { "name": "company", "output": { "type": "text" } },    { "name": "careersUrl", "output": { "type": "url" } }  ],  "maxItems": 10}

Put this object in an item's output. An empty list means no verified matches. Unknown field values remain empty. The existing runtime contract validates every field; Activity displays rows as a table with sources separate from the answer.

Catalog templates and fallback

Catalog examples prefill this same enrichment form with a question and output type. You can edit both before submitting. For HTTP integrations, an optional item-level toolId suggests an available tool returned by tools.list; the agent resolves its typed inputs internally. An empty or irrelevant tool result can lead to web research and official source checks within the same job. It does not immediately become a confirmed “no result.” Neither fallback nor a valid schema guarantees factual correctness.

Tool use and model research can both incur usage charges. They share the existing job, retry identity and Activity record. Direct catalog operations remain available through HTTP when you know the exact parameters. They are not public MCP tools; MCP clients can omit toolId and let Leadbase choose sources for the question. See the bulk email and phone example.