Skip to content

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_find_contact read Find a NexaCloser CRM contact by phone or email.
nc_list_recent_contacts read List the most recently-created CRM contacts in the caller’s organization (only contacts the caller may see; deleted contacts excluded).
nc_create_contact write Create a new NexaCloser CRM contact.
nc_update_contact write Update an existing NexaCloser CRM contact by id.
nc_add_tag write Append one or more tags to a contact.
nc_list_deals read List CRM deals the caller may see (org owners and members with “all data” see every rep’s deals).
nc_create_deal write Create a new CRM deal.
nc_search_contacts read Search contacts by partial name, phone or email.
nc_get_contact read Get the full record for one contact by id, including tags, notes, company, deals count and recent activity count.
nc_log_activity write Log an activity (note / call / email / meeting / task) against a contact and/or deal.
nc_create_task write Create a follow-up task on the team Tasks board.
nc_list_tasks 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_list_activities read List CRM timeline activities logged on contacts / deals (notes, calls, meetings, emails, WhatsApp, and legacy “task”-type timeline entries).
nc_list_calls read List phone calls (dialer / inbound) the caller may see — org owners and members with “all data” see every rep.
nc_list_team_members read List the organization’s team: user id, name, email, role (owner / admin / manager / agent), data scope and status.
nc_move_deal_stage write Move a deal to a new stage in its pipeline.
nc_close_deal write Close a deal as won or lost.
nc_list_pipelines read List all CRM pipelines for the authenticated user, including their stages.
nc_funnel_audit read Walks the closed-loop attribution path for a single contact/deal.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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"

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

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

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.

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