CRM: contacts, deals and tasks
Contacts, deals, pipelines, tasks, timeline activities, calls and the team. 19 tools: 11 read, 8 write.
| Tool | Access | What it does |
|---|---|---|
nc_ |
read | Find a NexaCloser CRM contact by phone or email. |
nc_ |
read | List the most recently-created CRM contacts in the caller’s organization (only contacts the caller may see; deleted contacts excluded). |
nc_ |
write | Create a new NexaCloser CRM contact. |
nc_ |
write | Update an existing NexaCloser CRM contact by id. |
nc_ |
write | Append one or more tags to a contact. |
nc_ |
read | List CRM deals the caller may see (org owners and members with “all data” see every rep’s deals). |
nc_ |
write | Create a new CRM deal. |
nc_ |
read | Search contacts by partial name, phone or email. |
nc_ |
read | Get the full record for one contact by id, including tags, notes, company, deals count and recent activity count. |
nc_ |
write | Log an activity (note / call / email / meeting / task) against a contact and/or deal. |
nc_ |
write | Create a follow-up task on the team Tasks board. |
nc_ |
read | THE tool for tasks / “overdue tasks of <rep>” / “how many tasks are late”: lists the team Tasks board (the Tasks page in the app). |
nc_ |
read | List CRM timeline activities logged on contacts / deals (notes, calls, meetings, emails, WhatsApp, and legacy “task”-type timeline entries). |
nc_ |
read | List phone calls (dialer / inbound) the caller may see — org owners and members with “all data” see every rep. |
nc_ |
read | List the organization’s team: user id, name, email, role (owner / admin / manager / agent), data scope and status. |
nc_ |
write | Move a deal to a new stage in its pipeline. |
nc_ |
write | Close a deal as won or lost. |
nc_ |
read | List all CRM pipelines for the authenticated user, including their stages. |
nc_ |
read | Walks the closed-loop attribution path for a single contact/deal. |
nc_find_contact
Section titled “nc_find_contact”read Works with mcp:read.
Find a NexaCloser CRM contact by phone or email. Returns the contact record (id, name, phone, email, status, tags) or { found: false } if no match.
| Argument | Type | Required | Description |
|---|---|---|---|
phone |
string | Phone number (any format — auto-normalised) | |
email |
string | Email address |
nc_list_recent_contacts
Section titled “nc_list_recent_contacts”read Works with mcp:read.
List the most recently-created CRM contacts in the caller’s organization (only contacts the caller may see; deleted contacts excluded). Filter by assigned rep, status, tag or creation date. Defaults to 20. Returns count (this page) and total (every match — with no filters, the number on the Contacts page).
| Argument | Type | Required | Description |
|---|---|---|---|
assigned_to |
string | Rep: user id, email or name (see nc_list_team_members), or “me”. | |
status |
string | Contact status, e.g. lead / customer. | |
tag |
string | Only contacts carrying this tag. | |
created_after |
string | ISO date/timestamp. | |
created_before |
string | ISO date/timestamp. | |
limit |
integer | Default: 20 · Min 1 · Max 100 |
|
offset |
integer | Skip this many rows (paging). · Default: 0 · Min 0 |
nc_create_contact
Section titled “nc_create_contact”write Needs mcp:write on an OAuth or MCP-server token.
Create a new NexaCloser CRM contact. Either phone or email is required. Existing contacts with the same phone are updated (upsert).
| Argument | Type | Required | Description |
|---|---|---|---|
full_name |
string | ||
phone |
string | ||
email |
string | ||
source |
string | Where the lead came from. One of whatsapp, manual, import, api, webhook, facebook, google, tiktok, linkedin, landing_page, meeting, instagram, messenger, embed_form, webinar, organic, booking, call, sms, x — or any other label, which is kept as the source channel. Omit for api. Set on create only: an existing contact keeps its first source. | |
notes |
string | ||
tags |
string[] | ||
attribution |
object | Ad click / UTM data for this touch (utm_source, utm_medium, utm_campaign, utm_content, utm_term, gclid, fbclid, ttclid, campaign_id, adset_id, ad_id, landing_url, referrer). The first touch is kept forever; the last touch is updated. | |
preferred_language |
string | Language for outbound messages to this contact (email/SMS/WhatsApp). he = Hebrew, en = English, ru = Russian. Omit to inherit the business default. · One of: he, en, ru |
nc_update_contact
Section titled “nc_update_contact”write Needs mcp:write on an OAuth or MCP-server token.
Update an existing NexaCloser CRM contact by id.
| Argument | Type | Required | Description |
|---|---|---|---|
contact_id |
string | yes | |
full_name |
string | ||
phone |
string | ||
email |
string | ||
notes |
string | ||
status |
string | ||
attribution |
object | Ad click / UTM data for this touch (utm_source, utm_medium, utm_campaign, utm_content, utm_term, gclid, fbclid, ttclid, campaign_id, adset_id, ad_id, landing_url, referrer). The first touch is kept forever; the last touch is updated. | |
preferred_language |
string | Language for outbound messages to this contact. he = Hebrew, en = English, ru = Russian. · One of: he, en, ru |
nc_add_tag
Section titled “nc_add_tag”write Needs mcp:write on an OAuth or MCP-server token.
Append one or more tags to a contact. Existing tags are preserved (set union).
| Argument | Type | Required | Description |
|---|---|---|---|
contact_id |
string | yes | |
tags |
string[] | yes | Min items 1 |
nc_list_deals
Section titled “nc_list_deals”read Works with mcp:read.
List CRM deals the caller may see (org owners and members with “all data” see every rep’s deals). Filter by rep, status (open / won / lost), pipeline, stage, contact, creation date or close date. Newest first. total is the full match count, for “how many” questions.
| Argument | Type | Required | Description |
|---|---|---|---|
assigned_to |
string | Rep: user id, email or name (see nc_list_team_members), or “me”. | |
status |
string | One of: open, won, lost, all · Default: "all" |
|
pipeline_id |
string | ||
stage_id |
string | ||
contact_id |
string | ||
created_after |
string | ISO date/timestamp. | |
created_before |
string | ISO date/timestamp. | |
closed_after |
string | ISO: won or lost at/after this moment. | |
closed_before |
string | ISO: won or lost before this moment. | |
limit |
integer | Default: 20 · Min 1 · Max 100 |
|
offset |
integer | Skip this many rows (paging). · Default: 0 · Min 0 |
nc_create_deal
Section titled “nc_create_deal”write Needs mcp:write on an OAuth or MCP-server token.
Create a new CRM deal. Requires contact_id and title; optionally pipeline_id, stage_id, value.
| Argument | Type | Required | Description |
|---|---|---|---|
contact_id |
string | yes | |
title |
string | yes | |
pipeline_id |
string | ||
stage_id |
string | Default: "new" |
|
value |
number |
nc_search_contacts
Section titled “nc_search_contacts”read Works with mcp:read.
Search contacts by partial name, phone or email. Fuzzy match across all three fields. Returns up to limit newest matches.
| Argument | Type | Required | Description |
|---|---|---|---|
query |
string | yes | Min length 2 |
limit |
integer | Default: 10 · Min 1 · Max 50 |
|
offset |
integer | Skip this many rows (paging). · Default: 0 · Min 0 |
nc_get_contact
Section titled “nc_get_contact”read Works with mcp:read.
Get the full record for one contact by id, including tags, notes, company, deals count and recent activity count.
| Argument | Type | Required | Description |
|---|---|---|---|
contact_id |
string | yes |
nc_log_activity
Section titled “nc_log_activity”write Needs mcp:write on an OAuth or MCP-server token.
Log an activity (note / call / email / meeting / task) against a contact and/or deal. Becomes part of the timeline visible in the CRM.
| Argument | Type | Required | Description |
|---|---|---|---|
title |
string | yes | |
description |
string | ||
type |
string | One of: note, call, email, meeting, task, whatsapp · Default: "note" |
|
contact_id |
string | ||
deal_id |
string | ||
due_at |
string | ISO timestamp for scheduled activities | |
dry_run |
boolean |
nc_create_task
Section titled “nc_create_task”write Needs mcp:write on an OAuth or MCP-server token.
Create a follow-up task on the team Tasks board. Status defaults to “todo”. Assigned to the caller unless assigned_to names a teammate. Optional priority and due_date.
| Argument | Type | Required | Description |
|---|---|---|---|
title |
string | yes | |
description |
string | ||
assigned_to |
string | Teammate to assign: user id, email, or name (see nc_list_team_members). “me” or omitted = the caller. | |
contact_id |
string | ||
deal_id |
string | ||
due_date |
string | ISO date or timestamp | |
priority |
string | One of: low, medium, high, urgent · Default: "medium" |
|
dry_run |
boolean |
nc_list_tasks
Section titled “nc_list_tasks”read Works with mcp:read.
THE tool for tasks / “overdue tasks of <rep>” / “how many tasks are late”: lists the team Tasks board (the Tasks page in the app). Org owners, admins and managers see every teammate’s tasks; other members see the tasks assigned to them (and, unless limited to assigned data, the ones they created). Filter by assignee (user id, email or name), overdue, due-date range, contact, deal, priority. “open” = anything not done. Sorted by due date ascending. total is the full match count, for “how many” questions. Default 20.
| Argument | Type | Required | Description |
|---|---|---|---|
status |
string | One of: open, todo, in_progress, review, done, all · Default: "open" |
|
assigned_to |
string | User id, email or name of a teammate (see nc_list_team_members), “me”, “unassigned”, or “all” (default). | |
overdue |
boolean | Only tasks past their due date that are not done. | |
due_before |
string | ISO date/timestamp: due before this moment. | |
due_after |
string | ISO date/timestamp: due at or after this moment. | |
contact_id |
string | ||
deal_id |
string | ||
priority |
string | One of: low, medium, high, urgent |
|
limit |
integer | Default: 20 · Min 1 · Max 100 |
|
offset |
integer | Skip this many rows (paging). · Default: 0 · Min 0 |
nc_list_activities
Section titled “nc_list_activities”read Works with mcp:read.
List CRM timeline activities logged on contacts / deals (notes, calls, meetings, emails, WhatsApp, and legacy “task”-type timeline entries). NOT the Tasks board: for tasks / overdue tasks of a rep use nc_list_tasks. Org owners and members with “all data” see every rep. Filter by rep (assigned to, or logged by when unassigned), type, contact, deal, open / overdue (due and not completed) and date range. Newest first; total is the full match count.
| Argument | Type | Required | Description |
|---|---|---|---|
assigned_to |
string | Rep: user id, email or name (see nc_list_team_members), or “me”. | |
type |
string | One of: note, call, email, meeting, task, whatsapp |
|
contact_id |
string | ||
deal_id |
string | ||
open |
boolean | Only activities not completed yet. | |
overdue |
boolean | Only activities past their due time and not completed. | |
from |
string | ISO: created at/after this moment. | |
to |
string | ISO: created before this moment. | |
limit |
integer | Default: 20 · Min 1 · Max 100 |
|
offset |
integer | Skip this many rows (paging). · Default: 0 · Min 0 |
nc_list_calls
Section titled “nc_list_calls”read Works with mcp:read.
List phone calls (dialer / inbound) the caller may see — org owners and members with “all data” see every rep. Filter by rep, direction, status, disposition, contact or date range. Newest first. Returns total (full match count) and total_duration_seconds for the matching calls on this page.
| Argument | Type | Required | Description |
|---|---|---|---|
user |
string | Rep who made / took the call: user id, email or name, or “me”. | |
direction |
string | One of: inbound, outbound |
|
status |
string | e.g. completed / no-answer / busy / failed / initiated. | |
disposition |
string | ||
contact_id |
string | ||
from |
string | ISO: at/after this moment. | |
to |
string | ISO: before this moment. | |
limit |
integer | Default: 20 · Min 1 · Max 100 |
|
offset |
integer | Skip this many rows (paging). · Default: 0 · Min 0 |
nc_list_team_members
Section titled “nc_list_team_members”read Works with mcp:read.
List the organization’s team: user id, name, email, role (owner / admin / manager / agent), data scope and status. Use it to turn a teammate’s name into the user id other tools take (e.g. nc_list_tasks assigned_to).
| Argument | Type | Required | Description |
|---|---|---|---|
status |
string | One of: active, all · Default: "active" |
nc_move_deal_stage
Section titled “nc_move_deal_stage”write Needs mcp:write on an OAuth or MCP-server token.
Move a deal to a new stage in its pipeline. Records the stage change in crm_deal_stage_history.
| Argument | Type | Required | Description |
|---|---|---|---|
deal_id |
string | yes | |
stage_id |
string | yes | |
dry_run |
boolean |
nc_close_deal
Section titled “nc_close_deal”write Needs mcp:write on an OAuth or MCP-server token.
Close a deal as won or lost. Sets status + closed_at and (for won) records the final value.
| Argument | Type | Required | Description |
|---|---|---|---|
deal_id |
string | yes | |
outcome |
string | yes | One of: won, lost |
final_value |
number | Final closed-won value if different from deal.value | |
loss_reason |
string | Free text — captured on lost deals | |
dry_run |
boolean |
nc_list_pipelines
Section titled “nc_list_pipelines”read Works with mcp:read.
List all CRM pipelines for the authenticated user, including their stages. Use this to discover pipeline_id and stage_id values for other tools.
No arguments.
nc_funnel_audit
Section titled “nc_funnel_audit”read Works with mcp:read.
Walks the closed-loop attribution path for a single contact/deal. Answers ‘which ad sourced this deal?’ in one tool call. Pass exactly one of: contact_id, deal_id, phone, email. Returns timeline: first_touch, last_touch, conversions[], total_touches. Read-only.
| Argument | Type | Required | Description |
|---|---|---|---|
contact_id |
string | ||
deal_id |
string | ||
phone |
string | ||
email |
string |
