Skip to content

Sheets through API and MCP

Create research lists, enrich existing rows and work with saved sheets using shared operation contracts.

Leadbase sheets are available through the HTTP API and public MCP tools, subject to workspace and sheet permissions. Discover the current schemas through OpenAPI or your MCP client's tool list.

TaskMCP toolHTTP operation
List accessible sheetssheets_listsheets.list
Create a research list in a new sheetsheets_researchsheets.research
Read new-list research progresssheets_research_statussheets.research_status
Enrich existing rows in a columnsheets_enrichsheets.enrich
Read cell-research progresssheets_get_enrichment_statussheets.get_enrichment_status
Read saved rows and evidencesheets_querysheets.query

Execute HTTP operations with POST /api/v1/operations/{id}. Use GET /api/v1/operations/{id} to inspect the full input and output schemas before constructing a request. Names containing underscores after sheets. remain unchanged; for example, sheets.get_enrichment_status becomes sheets_get_enrichment_status in MCP.

Create a new research list

Send this JSON to sheets_research in MCP or to POST /api/v1/operations/sheets.research. It requests real, potentially billable research; adapt the scope and stable key before using it.

json
{  "idempotencyKey": "coffee-roasters-pilot-001",  "title": "Independent coffee roasters",  "question": "Find independent coffee roasters based in Berlin. Use their official websites to support their business and location.",  "count": 10,  "identityField": "website",  "fields": [    { "name": "company", "output": { "type": "text" } },    { "name": "website", "output": { "type": "url" } }  ]}

The target count accepts 1–10,000; it is a requested result count, not a credit budget or a guarantee of complete coverage. Define up to 19 typed fields and choose a text or URL field as identityField to prevent duplicate rows. Do not define sourceUrl: it is reserved and added automatically.

The response contains sheetId, batchId and jobs immediately after acceptance. Use view_sheet in an MCP Apps-compatible client to display the real editable sheet. Use sheets_research_status for its current target and progress, and enrichment_get with batchId for results and credit settlement. Only confirmed matches count; a smaller list is partial. Read saved rows with sheets_query.

Enrich rows already in a sheet

sheets_enrich accepts a sheetId, stable idempotencyKey and nested column. Use column: {"columnId":"COLUMN_UUID"} for configured research, or column: {"name":"Work email","question":"Find this person's work email.","type":"email"} for a new column. Include the selected rowIds, or omit them only when the requested scope is all existing rows, up to 10,000. See the complete contact example.

Populated cells and active work are skipped. A new column is saved before research begins. For explicitly requested replacement or targets across multiple columns, inspect sheets_start_enrichment instead. Read cell results through sheets_get_enrichment_status and sheets_query; these use sheet run and row identities rather than the standalone 100-item batch contract.

Edit, share and recover

The tool catalog also includes row and column editing, folders, views, sharing and version history. Follow each operation's required permission, revision and retry fields. Revision values are decimal strings, not numeric timestamps. Do not guess a current version or silently replace a conflicting edit.

Keep original arguments and stable retry keys. Recover interrupted writes with identical arguments and the same key; inspect current state before intentionally changing work. Account access and sheet roles still apply even when a tool is listed. See sheet editing, sharing and history.