Save a deal
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.
{
"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"
}Use it when
A sale is in play, or its amount, close date or next step changed.
- For a new stage for a deal and nothing else, use
crm_move_deal.
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
| Name | Type | What it is |
|---|---|---|
deal_id | integer | At least 1. |
title | string | 1 to 200 characters. |
pipeline | string | Pipeline name or id (crm_list_pipelines). Default: the deal's own, else the first pipeline. Up to 80 characters. |
stage | string | Stage 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. |
amount | number | At least 0. |
currency | string | Exactly 3 characters. |
close_date | string | YYYY-MM-DD: when it is expected to close. Up to 10 characters. |
next_step | string | Up to 500 characters. |
description | string | Up to 20,000 characters. |
company_id | integer | At least 1. |
company_name | string | Up to 255 characters. |
contact_id | integer | At least 1. |
contact_email | string | Up to 254 characters. |
lost_reason | string | Up to 500 characters. |
custom_fields | object | Custom fields as {"key": value}, merged into the existing ones; null clears one. Keys defined with crm_define_field are checked against their type. |
tags | array of strings | Tags 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:
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.
| Code | When | What to do |
|---|---|---|
not_found404 | No deal of the business has that deal_id. | Find the deal with crm_find_deals or crm_search and use its id. |
not_found404 | No pipeline, or no stage in it, has that name or id. | Call crm_list_pipelines and use a pipeline and stage from it. |
not_found404 | No company of the business has that company_id. | Find the company with crm_search or crm_find_companies and use its id. |
not_found404 | No contact of the business matches that contact_id or email. | Find the person with crm_search and use the id it returns. |
invalid_input400 | A 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_input400 | A new deal has no title, or close_date is not YYYY-MM-DD. | Give a title and a date like 2026-11-20. |
More CRM tools
All 41 tools- Search the CRM
crm_searchFinds contacts, companies and deals from whatever you have: a name, an email, a phone number in any format, a domain or a deal title.Free* - Find contacts
crm_find_contactsFinds contacts by name, email, company or phone, by filters on any field or tag, or by a saved segment, one page at a time.Free* - Get a contact
crm_get_contactOne contact, by id or email, with its tags, custom fields, recent activity, open tasks and deals.Free* - Everything open with a customer
crm_get_customerEverything open with one customer in one read: deals, tickets, invoices, quotes, signatures, meetings and their last messages.Free* - Save a contact
crm_save_contactCreates a contact, or updates the one with the same email; only the fields you send change.$0.01 a call - Save many contacts
crm_save_contactsCreates or updates up to 100 contacts in one call, each like crm_save_contact; you pay only for the ones saved.$0.01 per record saved - Update a contact
crm_update_contactChanges fields on a contact by its id, its email included; only the fields you send change.$0.01 a call - Archive a contact
crm_archive_contactHides a contact from searches and lists; its history is kept.$0.001 a call
Give this to your agent.
Set up Conecto from https://conecto.chat/SKILL.md