CRM

Export as CSV

crm_export · Reads only · Markdown

Contacts, companies or deals as CSV text, with the same filters, tag and segment as the find tools.

Free*

*Free up to 1,000,000 reads a month for the whole account, then $0.50 per 10,000 reads.

An example

Export our trade customers as a spreadsheet for the accountant.

Your agent callscrm_exportFree*

The example business is Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff. The reply is the one the tool really gives.

With these arguments
{
  "object": "contact",
  "segment": "Trade customers"
}
What comes back
{
  "object": "contact",
  "columns": [
    "id",
    "email"
  ],
  "rows": 1,
  "total": 1,
  "next_offset": null,
  "csv": "id,email,name,title,company,company_id,phone,location,lifecycle_stage,updated_at,tags\r\n7,clara@neumann-gastroplanung.example,Clara Neumann,Kitchen planner,Neumann Gastroplanung,5,',',customer,2026-10-14T08:00:00+00:00,trade\r\n"
}

Use it when

The owner or an accountant wants a spreadsheet of records.

What it does

Contacts, companies or deals as CSV text (one row each; tags and custom fields as columns), with the same filters, tag and segment as the find tools: for a spreadsheet or for the owner. Archived contacts and companies are left out. Up to 500 rows a call; continue with next_offset.

What comes back

The object, the columns, how many rows, the total, next_offset (up to 500 rows a call) and the CSV text. Archived contacts and companies are left out. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
objectRequiredstringOne of: contact,company,deal.
filtersarray of objectsConditions that must all match, e.g. [{"field": "lifecycle_stage", "op": "eq", "value": "customer"}, {"field": "renewal_date", "op": "lte", "value": "today+30"}]. field: a standard field, "tag", or a custom field key (crm_list_fields lists them all). op: eq, ne, contains, starts_with, in (value is a list), gt, gte, lt, lte, is_empty, is_set. Dates take YYYY-MM-DD or today, today+N, today-N. Up to 20 items.
filters[].fieldRequiredstring1 to 60 characters.
filters[].opRequiredstringOne of: contains,eq,gt,gte,in,is_empty,is_set,lt,lte,ne,starts_with.
filters[].valueanyText, a number, true/false, a date, or a list for "in".
tagstringOnly records with this tag. Up to 60 characters.
segmentstringA saved segment (crm_save_segment), by name or id. Up to 80 characters.
sortstringField to sort by, "-" first for descending, e.g. "-amount" or "renewal_date". Up to 61 characters.
limitinteger1 to 500. Default: 500.
offsetintegerAt least 0. Default: 0.

The call

Over MCP, call crm_export on https://api.conecto.chat/mcp/crm. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/crm_export \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"object":"contact","segment":"Trade customers"}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
invalid_input400A filter or the sort names a field the object does not have, uses an op that does not fit the field, or compares it with the wrong kind of value.Check the fields with crm_list_fields and use one of the ops the message lists.
not_found404No saved segment of that object has that name or id.Call crm_list_segments; the message also names the saved segments.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md