Import contacts or companies from a CSV
import_csvImport contacts or companies from a CSV file: send its text as csv, or an https link to it as url (a public Google Sheets CSV link works). Columns are matched by their header names in any case or spelling: email, name, first name, last name, phone or mobile, company or organization, domain, website, title or job title, notes, address, city or country (joined into location), lifecycle stage, timezone, language; for companies: name, domain, website, industry, employees, lifecycle stage, notes. The result lists the columns it mapped and the ones it ignored. Contacts match existing ones by email, companies by domain and then by name, so importing the same file again updates instead of duplicating. Up to 5,000 rows a call: a longer file returns next_cursor to continue. Unchanged records are free, and 1,000 imported records cost $1. max_records x $0.001 is reserved while it runs and only what was imported is charged; lower max_records if your balance is smaller. Costs $0.001 per record imported (created or updated); nothing if none are found.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "import_csv"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| csv | No | The CSV text, column names in the first row (up to about 2 MB; use url for more). | |
| url | No | An https link to the CSV file, instead of csv. At most 20 MB. | |
| kind | No | What each row is. | contacts |
| max_records | No | The most rows to read in this call (5,000 at most). | |
| next_cursor | No | The next_cursor a previous run of this import returned, to continue where it stopped. |