CRM

Define a custom field

crm_define_field · Changes data · Markdown

Adds a field of the business's own to contacts, companies or deals, or changes its label, description or options.

$0.001 a call

From your agent’s balance. A call that fails costs nothing.

An example

Add a trade tier to companies, Silver or Gold, so we know who gets 10% and who gets 15%.

Your agent callscrm_define_field$0.001 a call

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": "company",
  "key": "trade_tier",
  "type": "select",
  "label": "Trade tier",
  "options": [
    "Silver",
    "Gold"
  ],
  "description": "Discount of a trade account: Silver 10%, Gold 15%."
}
What comes back
{
  "field": {
    "object": "company",
    "key": "trade_tier",
    "label": "Trade tier",
    "type": "select",
    "options": [
      "Silver",
      "Gold"
    ],
    "description": "Discount of a trade account: Silver 10%, Gold 15%.",
    "created_at": "2026-10-14T08:00:00+00:00"
  },
  "created": true
}

Use it when

The business tracks something the standard fields lack: a trade tier, a renewal date, a preferred wood.

What it does

Add a field of your own to contacts, companies or deals, such as a "plan" picked from a list or a "renewal_date", or change its label, description or options. From then on values sent in custom_fields are checked against its type (text, number, boolean, date as YYYY-MM-DD, select from options, url, email, phone), and you can filter and sort on it. A field that holds values keeps its type; delete it and define it again to change the type.

What comes back

The field (object, key, type, label, options, description), and created: true when it is new. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
objectRequiredstringOne of: contact,company,deal.
keyRequiredstringsnake_case, e.g. "renewal_date". Matches ^[a-z][a-z0-9_]{0,39}$.
typeRequiredstringOne of: text,number,boolean,date,select,url,email,phone.
labelstringUp to 80 characters.
optionsarray of stringsselect only: the allowed values. Up to 100 items.
descriptionstringWhat the field means, for whoever reads it next. Up to 300 characters.

The call

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

Terminal
curl -X POST https://api.conecto.chat/v1/tools/crm_define_field \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"object":"company","key":"trade_tier","type":"select","label":"Trade tier","options":["Silver","Gold"],"description":"Discount of a trade account: Silver 10%, Gold 15%."}'

When it refuses

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

CodeWhenWhat to do
invalid_input400The key is a standard field, a select field has no options, or another type was given options.Pick another key, and give options only to select fields.
conflict409The field holds values and the type would change, or it was defined at the same moment.Delete it with crm_delete_field and define it again, or call again.
limit_reached409The object has as many custom fields as it may.Delete a field it no longer needs with crm_delete_field.

Give this to your agent.

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