NextCRM MCP Server Skill
Use the NextCRM MCP server to read and write CRM data. This skill documents all available tools and how to use them.
Connection Setup
The server supports two MCP transports. Pick one — most modern clients (Claude Code, Cursor) work with either.
Option A — Streamable HTTP (recommended)
Single POST endpoint. Simpler, the current MCP spec default.
{
"mcpServers": {
"nextcrm": {
"type": "http",
"url": "https://YOUR_NEXTCRM_URL/api/mcp/mcp",
"headers": { "Authorization": "Bearer YOUR_API_TOKEN" }
}
}
}
Option B — SSE (legacy, for older clients)
Two endpoints: a GET SSE stream and a POST message channel. The client opens /api/mcp/sse, the server announces the matching /api/mcp/message?sessionId=… endpoint over the stream, and the client POSTs JSON-RPC there.
{
"mcpServers": {
"nextcrm": {
"type": "sse",
"url": "https://YOUR_NEXTCRM_URL/api/mcp/sse",
"headers": { "Authorization": "Bearer YOUR_API_TOKEN" }
}
}
}
You only configure the /sse URL — the client discovers the message endpoint automatically.
Notes
- Replace
YOUR_NEXTCRM_URL with your NextCRM instance URL (e.g. http://localhost:3000 for local dev)
- Replace
YOUR_API_TOKEN with a token generated from Profile > Developer > API Tokens
- Token prefix:
nxtc__
- Some clients omit the
type field and infer the transport from the URL — both forms above include it explicitly for clarity
Authentication
All tools require a valid Bearer token. Tokens are generated from the Developer tab in your profile settings. Each token is SHA-256 hashed — the raw value is shown only once at creation.
Available Tools
Accounts (6 tools)
- crm_list_accounts — List CRM accounts assigned to the authenticated user
- crm_get_account — Get a single CRM account by ID
- crm_search_accounts — Search accounts by name or website (substring match)
- crm_create_account — Create a new CRM account
- crm_update_account — Update an existing CRM account by ID (accepts
assigned_to to reassign the owner)
- crm_delete_account — Soft-delete a CRM account by ID (sets deletedAt timestamp)
Contacts (6 tools)
- crm_list_contacts — List CRM contacts assigned to the authenticated user
- crm_get_contact — Get a single CRM contact by ID
- crm_search_contacts — Search contacts by name, email, or phone (substring match)
- crm_create_contact — Create a new CRM contact
- crm_update_contact — Update an existing CRM contact by ID (accepts
assigned_to to reassign, account to link/unlink a parent account)
- crm_delete_contact — Soft-delete a CRM contact by ID (sets deletedAt timestamp)
Leads (6 tools)
- crm_list_leads — List CRM leads assigned to the authenticated user
- crm_get_lead — Get a single CRM lead by ID
- crm_search_leads — Search leads by name, company, or email (substring match)
- crm_create_lead — Create a new CRM lead
- crm_update_lead — Update an existing CRM lead by ID (accepts
assigned_to to reassign the owner)
- crm_delete_lead — Soft-delete a CRM lead by ID (sets deletedAt timestamp)
Opportunities (6 tools)
- crm_list_opportunities — List CRM opportunities assigned to the authenticated user
- crm_get_opportunity — Get a single CRM opportunity by ID
- crm_search_opportunities — Search opportunities by name or description (substring match)
- crm_create_opportunity — Create a new CRM opportunity
- crm_update_opportunity — Update an existing CRM opportunity by ID (accepts
assigned_to to reassign, account/contact to link/unlink)
- crm_delete_opportunity — Soft-delete a CRM opportunity by ID
Targets (6 tools)
- crm_list_targets — List CRM targets created by the authenticated user
- crm_get_target — Get a single CRM target by ID
- crm_search_targets — Search targets by name, email, or company (substring match)
- crm_create_target — Create a new CRM target
- crm_update_target — Update an existing CRM target by ID
- crm_delete_target — Soft-delete a CRM target by ID (sets deletedAt timestamp)
Products (5 tools)
Writes (create/update/delete) require a manager or admin role; reads are open to all roles.
- crm_list_products — List CRM products (org-wide catalog)
- crm_get_product — Get a single CRM product by ID
- crm_create_product — Create a new CRM product
- crm_update_product — Update an existing CRM product by ID
- crm_delete_product — Soft-delete a CRM product (sets deletedAt timestamp)
Contracts (5 tools)
- crm_list_contracts — List CRM contracts (org-wide)
- crm_get_contract — Get a single CRM contract by ID with line items
- crm_create_contract — Create a new CRM contract with optional line items
- crm_update_contract — Update an existing CRM contract by ID (does not modify line items)
- crm_delete_contract — Soft-delete a CRM contract (sets deletedAt timestamp)
Activities (5 tools)
- crm_list_activities — List CRM activities created by the authenticated user, optionally filtered by linked entity
- crm_get_activity — Get a single CRM activity by ID with entity links
- crm_create_activity — Create a CRM activity (call/meeting/note/email) and link to entities
- crm_update_activity — Update an existing CRM activity by ID
- crm_delete_activity — Soft-delete a CRM activity by ID (sets deletedAt timestamp)
Documents (8 tools)
- crm_list_documents — List documents, optionally filtered by linked entity type and ID
- crm_get_document — Get a single document by ID
- crm_create_document — Create a document record and get a presigned upload URL
- crm_get_upload_url — Get a presigned upload URL for an existing document
- crm_get_download_url — Get a presigned download URL for a document
- crm_link_document — Link a document to an entity (account, contact, lead, opportunity, or task)
- crm_unlink_document — Remove a document link from an entity
- crm_delete_document — Soft-delete a document (sets status to DELETED)
Target Lists (7 tools)
- crm_list_target_lists — List target lists (org-wide)
- crm_get_target_list — Get a target list by ID with its members
- crm_create_target_list — Create a new target list
- crm_update_target_list — Update a target list by ID
- crm_delete_target_list — Soft-delete a target list (sets deletedAt timestamp)
- crm_add_to_target_list — Add one or more targets to a target list
- crm_remove_from_target_list — Remove one or more targets from a target list
Enrichment (4 tools)
- crm_enrich_contact — Enrich a single contact using Firecrawl + AI (requires API keys configured)
- crm_enrich_contact_bulk — Enrich multiple contacts in bulk (max 100, dispatches async jobs)
- crm_enrich_target — Enrich a single target using Firecrawl + AI (requires API keys configured)
- crm_enrich_target_bulk — Enrich multiple targets in bulk (max 100, dispatches async jobs)
Email Accounts (1 tool)
- crm_list_email_accounts — List the authenticated user's connected email accounts
Users (1 tool)
- crm_list_users — List NextCRM users to resolve a person to the user ID that
assigned_to needs. Returns active users by default; managers and admins additionally see email, role, status, and last login
Campaigns (19 tools)
- campaigns_list — List campaigns (org-wide)
- campaigns_get — Get a campaign by ID with steps and stats summary
- campaigns_create — Create a new campaign
- campaigns_update — Update a campaign by ID
- campaigns_delete — Soft-delete a campaign (sets deletedAt timestamp)
- campaigns_send — Trigger sending a campaign (must be in draft or scheduled status)
- campaigns_pause — Pause an active/sending campaign
- campaigns_resume — Resume a paused campaign
- campaigns_list_templates — List campaign email templates (org-wide)
- campaigns_get_template — Get a campaign template by ID
- campaigns_create_template — Create a campaign email template
- campaigns_update_template — Update a campaign template by ID
- campaigns_delete_template — Soft-delete a campaign template (sets deletedAt timestamp)
- campaigns_create_step — Add a step to a campaign sequence
- campaigns_update_step — Update a campaign step by ID
- campaigns_delete_step — Delete a campaign step by ID
- campaigns_assign_target_list — Assign a target list to a campaign
- campaigns_remove_target_list — Remove a target list from a campaign
- campaigns_get_stats — Get send/open/click/unsubscribe stats for a campaign
Projects (18 tools)
- projects_list_boards — List project boards the user owns or is shared with
- projects_get_board — Get a project board with its sections and tasks
- projects_create_board — Create a new project board
- projects_update_board — Update a project board by ID
- projects_delete_board — Soft-delete a project board (sets deletedAt timestamp)
- projects_create_section — Add a section (column) to a board
- projects_update_section — Update a section title or position
- projects_delete_section — Delete a section (must be empty)
- projects_list_tasks — List tasks, optionally filtered by board, section, user, or status
- projects_get_task — Get a task by ID with comments and documents
- projects_create_task — Create a task in a board section
- projects_update_task — Update a task by ID
- projects_move_task — Move a task to a different section and/or position
- projects_delete_task — Soft-delete a task
- projects_add_comment — Add a comment to a task
- projects_list_comments — List comments on a task
- projects_assign_document — Link a document to a task
- projects_watch_board — Watch or unwatch a project board
Reports (2 tools)
- reports_list — List available report configurations
- reports_run — Run a report by category and get the data
Common Workflows
Research a company and create an account
crm_search_accounts — check if it already exists
crm_create_account — create the account with company details
crm_create_contact — add key contacts
crm_create_activity — log the research as a note
Build a prospecting campaign
crm_create_target_list — create a target list
crm_create_target (repeated) — add prospects
crm_add_to_target_list — add targets to the list
campaigns_create — create the campaign
campaigns_create_template — create email template
campaigns_create_step — add sequence steps
campaigns_assign_target_list — connect target list to campaign
campaigns_send — launch the campaign
Track a deal pipeline
crm_list_opportunities — review current pipeline
crm_create_opportunity — add new deal
crm_create_activity — log meetings and calls
crm_link_document — attach proposals
crm_update_opportunity — update stage/amount as deal progresses
Enrich contacts with AI
crm_list_targets or crm_search_targets — find targets to enrich
crm_enrich_target_bulk — enrich up to 100 targets at once
crm_get_target — check enrichment results
Reassign records to another user
crm_list_users — resolve the person's name to a user ID (query does a substring match on name)
crm_update_account / crm_update_contact / crm_update_lead / crm_update_opportunity — set assigned_to to that ID
- Pass
assigned_to: null instead to unassign; omit it entirely to leave the current owner alone
A member token can only reassign records it already owns, and the target must be an ACTIVE user — otherwise the update returns NOT_FOUND.
Project management
projects_create_board — create a project board
projects_create_section — add columns (To Do, In Progress, Done)
projects_create_task — add tasks
projects_move_task — move tasks between sections
projects_add_comment — discuss tasks
Notes
- All list operations support pagination (cursor-based)
- Search operations use substring matching
- Delete operations are soft-deletes (set
deletedAt, recoverable via admin audit log)
- Reads are scoped by the token owner's role, matching the web UI: admin and manager tokens see all non-deleted records, member tokens see only their own
- Writes are gated per-record. A denied write returns
NOT_FOUND rather than FORBIDDEN, so a failure never confirms a record exists
assigned_to accepts an active user ID (reassign) or explicit null (unassign); omitting it leaves the owner untouched. Use crm_list_users to resolve the ID
- Enrichment tools require API keys (OpenAI + Firecrawl) configured at system or user level
1---2name: nextcrm3description: Connect to NextCRM MCP server to manage CRM data — accounts, contacts, leads, opportunities, targets, products, contracts, activities, documents, target lists, enrichment, email accounts, campaigns, projects, and reports.4---56# NextCRM MCP Server Skill78Use the NextCRM MCP server to read and write CRM data. This skill documents all available tools and how to use them.910## Connection Setup1112The server supports two MCP transports. Pick one — most modern clients (Claude Code, Cursor) work with either.1314### Option A — Streamable HTTP (recommended)1516Single POST endpoint. Simpler, the current MCP spec default.1718```json19{20 "mcpServers": {21 "nextcrm": {22 "type": "http",23 "url": "https://YOUR_NEXTCRM_URL/api/mcp/mcp",24 "headers": { "Authorization": "Bearer YOUR_API_TOKEN" }25 }26 }27}28```2930### Option B — SSE (legacy, for older clients)3132Two endpoints: a GET SSE stream and a POST message channel. The client opens `/api/mcp/sse`, the server announces the matching `/api/mcp/message?sessionId=…` endpoint over the stream, and the client POSTs JSON-RPC there.3334```json35{36 "mcpServers": {37 "nextcrm": {38 "type": "sse",39 "url": "https://YOUR_NEXTCRM_URL/api/mcp/sse",40 "headers": { "Authorization": "Bearer YOUR_API_TOKEN" }41 }42 }43}44```4546You only configure the `/sse` URL — the client discovers the message endpoint automatically.4748### Notes4950- Replace `YOUR_NEXTCRM_URL` with your NextCRM instance URL (e.g. `http://localhost:3000` for local dev)51- Replace `YOUR_API_TOKEN` with a token generated from Profile > Developer > API Tokens52- Token prefix: `nxtc__`53- Some clients omit the `type` field and infer the transport from the URL — both forms above include it explicitly for clarity5455## Authentication5657All tools require a valid Bearer token. Tokens are generated from the Developer tab in your profile settings. Each token is SHA-256 hashed — the raw value is shown only once at creation.5859## Available Tools6061### Accounts (6 tools)6263- **crm_list_accounts** — List CRM accounts assigned to the authenticated user64- **crm_get_account** — Get a single CRM account by ID65- **crm_search_accounts** — Search accounts by name or website (substring match)66- **crm_create_account** — Create a new CRM account67- **crm_update_account** — Update an existing CRM account by ID (accepts `assigned_to` to reassign the owner)68- **crm_delete_account** — Soft-delete a CRM account by ID (sets deletedAt timestamp)6970### Contacts (6 tools)7172- **crm_list_contacts** — List CRM contacts assigned to the authenticated user73- **crm_get_contact** — Get a single CRM contact by ID74- **crm_search_contacts** — Search contacts by name, email, or phone (substring match)75- **crm_create_contact** — Create a new CRM contact76- **crm_update_contact** — Update an existing CRM contact by ID (accepts `assigned_to` to reassign, `account` to link/unlink a parent account)77- **crm_delete_contact** — Soft-delete a CRM contact by ID (sets deletedAt timestamp)7879### Leads (6 tools)8081- **crm_list_leads** — List CRM leads assigned to the authenticated user82- **crm_get_lead** — Get a single CRM lead by ID83- **crm_search_leads** — Search leads by name, company, or email (substring match)84- **crm_create_lead** — Create a new CRM lead85- **crm_update_lead** — Update an existing CRM lead by ID (accepts `assigned_to` to reassign the owner)86- **crm_delete_lead** — Soft-delete a CRM lead by ID (sets deletedAt timestamp)8788### Opportunities (6 tools)8990- **crm_list_opportunities** — List CRM opportunities assigned to the authenticated user91- **crm_get_opportunity** — Get a single CRM opportunity by ID92- **crm_search_opportunities** — Search opportunities by name or description (substring match)93- **crm_create_opportunity** — Create a new CRM opportunity94- **crm_update_opportunity** — Update an existing CRM opportunity by ID (accepts `assigned_to` to reassign, `account`/`contact` to link/unlink)95- **crm_delete_opportunity** — Soft-delete a CRM opportunity by ID9697### Targets (6 tools)9899- **crm_list_targets** — List CRM targets created by the authenticated user100- **crm_get_target** — Get a single CRM target by ID101- **crm_search_targets** — Search targets by name, email, or company (substring match)102- **crm_create_target** — Create a new CRM target103- **crm_update_target** — Update an existing CRM target by ID104- **crm_delete_target** — Soft-delete a CRM target by ID (sets deletedAt timestamp)105106### Products (5 tools)107108Writes (create/update/delete) require a manager or admin role; reads are open to all roles.109110- **crm_list_products** — List CRM products (org-wide catalog)111- **crm_get_product** — Get a single CRM product by ID112- **crm_create_product** — Create a new CRM product113- **crm_update_product** — Update an existing CRM product by ID114- **crm_delete_product** — Soft-delete a CRM product (sets deletedAt timestamp)115116### Contracts (5 tools)117118- **crm_list_contracts** — List CRM contracts (org-wide)119- **crm_get_contract** — Get a single CRM contract by ID with line items120- **crm_create_contract** — Create a new CRM contract with optional line items121- **crm_update_contract** — Update an existing CRM contract by ID (does not modify line items)122- **crm_delete_contract** — Soft-delete a CRM contract (sets deletedAt timestamp)123124### Activities (5 tools)125126- **crm_list_activities** — List CRM activities created by the authenticated user, optionally filtered by linked entity127- **crm_get_activity** — Get a single CRM activity by ID with entity links128- **crm_create_activity** — Create a CRM activity (call/meeting/note/email) and link to entities129- **crm_update_activity** — Update an existing CRM activity by ID130- **crm_delete_activity** — Soft-delete a CRM activity by ID (sets deletedAt timestamp)131132### Documents (8 tools)133134- **crm_list_documents** — List documents, optionally filtered by linked entity type and ID135- **crm_get_document** — Get a single document by ID136- **crm_create_document** — Create a document record and get a presigned upload URL137- **crm_get_upload_url** — Get a presigned upload URL for an existing document138- **crm_get_download_url** — Get a presigned download URL for a document139- **crm_link_document** — Link a document to an entity (account, contact, lead, opportunity, or task)140- **crm_unlink_document** — Remove a document link from an entity141- **crm_delete_document** — Soft-delete a document (sets status to DELETED)142143### Target Lists (7 tools)144145- **crm_list_target_lists** — List target lists (org-wide)146- **crm_get_target_list** — Get a target list by ID with its members147- **crm_create_target_list** — Create a new target list148- **crm_update_target_list** — Update a target list by ID149- **crm_delete_target_list** — Soft-delete a target list (sets deletedAt timestamp)150- **crm_add_to_target_list** — Add one or more targets to a target list151- **crm_remove_from_target_list** — Remove one or more targets from a target list152153### Enrichment (4 tools)154155- **crm_enrich_contact** — Enrich a single contact using Firecrawl + AI (requires API keys configured)156- **crm_enrich_contact_bulk** — Enrich multiple contacts in bulk (max 100, dispatches async jobs)157- **crm_enrich_target** — Enrich a single target using Firecrawl + AI (requires API keys configured)158- **crm_enrich_target_bulk** — Enrich multiple targets in bulk (max 100, dispatches async jobs)159160### Email Accounts (1 tool)161162- **crm_list_email_accounts** — List the authenticated user's connected email accounts163164### Users (1 tool)165166- **crm_list_users** — List NextCRM users to resolve a person to the user ID that `assigned_to` needs. Returns active users by default; managers and admins additionally see email, role, status, and last login167168### Campaigns (19 tools)169170- **campaigns_list** — List campaigns (org-wide)171- **campaigns_get** — Get a campaign by ID with steps and stats summary172- **campaigns_create** — Create a new campaign173- **campaigns_update** — Update a campaign by ID174- **campaigns_delete** — Soft-delete a campaign (sets deletedAt timestamp)175- **campaigns_send** — Trigger sending a campaign (must be in draft or scheduled status)176- **campaigns_pause** — Pause an active/sending campaign177- **campaigns_resume** — Resume a paused campaign178- **campaigns_list_templates** — List campaign email templates (org-wide)179- **campaigns_get_template** — Get a campaign template by ID180- **campaigns_create_template** — Create a campaign email template181- **campaigns_update_template** — Update a campaign template by ID182- **campaigns_delete_template** — Soft-delete a campaign template (sets deletedAt timestamp)183- **campaigns_create_step** — Add a step to a campaign sequence184- **campaigns_update_step** — Update a campaign step by ID185- **campaigns_delete_step** — Delete a campaign step by ID186- **campaigns_assign_target_list** — Assign a target list to a campaign187- **campaigns_remove_target_list** — Remove a target list from a campaign188- **campaigns_get_stats** — Get send/open/click/unsubscribe stats for a campaign189190### Projects (18 tools)191192- **projects_list_boards** — List project boards the user owns or is shared with193- **projects_get_board** — Get a project board with its sections and tasks194- **projects_create_board** — Create a new project board195- **projects_update_board** — Update a project board by ID196- **projects_delete_board** — Soft-delete a project board (sets deletedAt timestamp)197- **projects_create_section** — Add a section (column) to a board198- **projects_update_section** — Update a section title or position199- **projects_delete_section** — Delete a section (must be empty)200- **projects_list_tasks** — List tasks, optionally filtered by board, section, user, or status201- **projects_get_task** — Get a task by ID with comments and documents202- **projects_create_task** — Create a task in a board section203- **projects_update_task** — Update a task by ID204- **projects_move_task** — Move a task to a different section and/or position205- **projects_delete_task** — Soft-delete a task206- **projects_add_comment** — Add a comment to a task207- **projects_list_comments** — List comments on a task208- **projects_assign_document** — Link a document to a task209- **projects_watch_board** — Watch or unwatch a project board210211### Reports (2 tools)212213- **reports_list** — List available report configurations214- **reports_run** — Run a report by category and get the data215216## Common Workflows217218### Research a company and create an account2191. `crm_search_accounts` — check if it already exists2202. `crm_create_account` — create the account with company details2213. `crm_create_contact` — add key contacts2224. `crm_create_activity` — log the research as a note223224### Build a prospecting campaign2251. `crm_create_target_list` — create a target list2262. `crm_create_target` (repeated) — add prospects2273. `crm_add_to_target_list` — add targets to the list2284. `campaigns_create` — create the campaign2295. `campaigns_create_template` — create email template2306. `campaigns_create_step` — add sequence steps2317. `campaigns_assign_target_list` — connect target list to campaign2328. `campaigns_send` — launch the campaign233234### Track a deal pipeline2351. `crm_list_opportunities` — review current pipeline2362. `crm_create_opportunity` — add new deal2373. `crm_create_activity` — log meetings and calls2384. `crm_link_document` — attach proposals2395. `crm_update_opportunity` — update stage/amount as deal progresses240241### Enrich contacts with AI2421. `crm_list_targets` or `crm_search_targets` — find targets to enrich2432. `crm_enrich_target_bulk` — enrich up to 100 targets at once2443. `crm_get_target` — check enrichment results245246### Reassign records to another user2471. `crm_list_users` — resolve the person's name to a user ID (`query` does a substring match on name)2482. `crm_update_account` / `crm_update_contact` / `crm_update_lead` / `crm_update_opportunity` — set `assigned_to` to that ID2493. Pass `assigned_to: null` instead to unassign; omit it entirely to leave the current owner alone250251A member token can only reassign records it already owns, and the target must be an ACTIVE user — otherwise the update returns `NOT_FOUND`.252253### Project management2541. `projects_create_board` — create a project board2552. `projects_create_section` — add columns (To Do, In Progress, Done)2563. `projects_create_task` — add tasks2574. `projects_move_task` — move tasks between sections2585. `projects_add_comment` — discuss tasks259260## Notes261262- All list operations support pagination (cursor-based)263- Search operations use substring matching264- Delete operations are soft-deletes (set `deletedAt`, recoverable via admin audit log)265- Reads are scoped by the token owner's role, matching the web UI: admin and manager tokens see all non-deleted records, member tokens see only their own266- Writes are gated per-record. A denied write returns `NOT_FOUND` rather than `FORBIDDEN`, so a failure never confirms a record exists267- `assigned_to` accepts an active user ID (reassign) or explicit `null` (unassign); omitting it leaves the owner untouched. Use `crm_list_users` to resolve the ID268- Enrichment tools require API keys (OpenAI + Firecrawl) configured at system or user level