CRM

Save a deal

crm_save_deal · Changes data · Markdown

Creates a deal, or updates one by its deal_id: pipeline and stage, amount, close date, next step, company and contact.

$0.01 a call

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

An example

Open a deal for Hotel Elbblick's new kitchen, two combi steamers and a dishwasher, about 38,600 euros, expected to close by November 20.

Your agent callscrm_save_deal$0.01 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
{
  "title": "Hotel Elbblick kitchen",
  "company_name": "Hotel Elbblick",
  "contact_email": "lukas.meyer@hotel-elbblick.example",
  "stage": "Proposal",
  "amount": 38600,
  "currency": "EUR",
  "close_date": "2026-11-20",
  "next_step": "Send the quote for two combi steamers and a dishwasher"
}
What comes back
{
  "deal": {
    "id": 4101,
    "title": "Hotel Elbblick kitchen",
    "pipeline": "Sales",
    "pipeline_id": 4101,
    "stage": "Proposal",
    "stage_id": 4104,
    "status": "open",
    "probability": 60,
    "amount": "38600.00",
    "weighted_amount": "23160.00",
    "currency": "EUR",
    "close_date": "2026-11-20",
    "next_step": "Send the quote for two combi steamers and a dishwasher",
    "description": "",
    "lost_reason": null,
    "company_id": 4101,
    "contact_id": 4102,
    "tags": [],
    "custom_fields": {},
    "stage_entered_at": "2026-10-14T08:00:00+00:00",
    "closed_at": null,
    "updated_at": "2026-10-14T08:00:00+00:00"
  },
  "created": true
}

Use it when

A sale is in play, or its amount, close date or next step changed.

What it does

Create a deal (no deal_id) or update one (with deal_id): pipeline and stage, amount, expected close date, next step, the company and contact it belongs to, tags and custom fields. A new deal starts at the first stage of its pipeline unless you give one.

What comes back

The deal as saved (pipeline, stage, status, probability, amount and weighted amount, currency, close date, next step, company, contact, tags, custom fields, when it entered its stage), and created. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
deal_idintegerAt least 1.
titlestring1 to 200 characters.
pipelinestringPipeline name or id (crm_list_pipelines). Default: the deal's own, else the first pipeline. Up to 80 characters.
stagestringStage name or id in that pipeline, e.g. "Proposal". A new deal without one starts at the first stage. crm_move_deal moves deals too. Up to 60 characters.
amountnumberAt least 0.
currencystringExactly 3 characters.
close_datestringYYYY-MM-DD: when it is expected to close. Up to 10 characters.
next_stepstringUp to 500 characters.
descriptionstringUp to 20,000 characters.
company_idintegerAt least 1.
company_namestringUp to 255 characters.
contact_idintegerAt least 1.
contact_emailstringUp to 254 characters.
lost_reasonstringUp to 500 characters.
custom_fieldsobjectCustom fields as {"key": value}, merged into the existing ones; null clears one. Keys defined with crm_define_field are checked against their type.
tagsarray of stringsTags to add, e.g. ["vip"]; a new tag is made on first use. crm_tag_records removes tags. Up to 20 items.

The call

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

Terminal
curl -X POST https://api.conecto.chat/v1/tools/crm_save_deal \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Hotel Elbblick kitchen","company_name":"Hotel Elbblick","contact_email":"lukas.meyer@hotel-elbblick.example","stage":"Proposal","amount":38600,"currency":"EUR","close_date":"2026-11-20","next_step":"Send the quote for two combi steamers and a dishwasher"}'

When it refuses

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

CodeWhenWhat to do
not_found404No deal of the business has that deal_id.Find the deal with crm_find_deals or crm_search and use its id.
not_found404No pipeline, or no stage in it, has that name or id.Call crm_list_pipelines and use a pipeline and stage from it.
not_found404No company of the business has that company_id.Find the company with crm_search or crm_find_companies and use its id.
not_found404No contact of the business matches that contact_id or email.Find the person with crm_search and use the id it returns.
invalid_input400A custom field value does not fit the field's type, or the record would hold too many custom fields.Send a value of the type crm_list_fields shows for that key, or null to clear it.
invalid_input400A new deal has no title, or close_date is not YYYY-MM-DD.Give a title and a date like 2026-11-20.

Give this to your agent.

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