noCRM.io MCP by usefulapi
Read noCRM.io leads, pipeline steps, comments and client folders; create, update and assign leads.
Should I use this
Quality & Safety
Findings (4)
- HIGH
- MEDIUMin nocrm_update_lead
- LOWin nocrm_add_lead_to_client_folder
- INFOin nocrm_update_lead
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"nocrm-io": {
"url": "https://nocrm-io.usefulapi.io/mcp"
}
}
}Remote endpoints
https://nocrm-io.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (24)
🟢nocrm_list_leads(status, steps, user_id, tags, email, ...)
List or search sales leads (noCRM.io's opportunities), newest first by default, with title, pipeline step, status, amount, probability, tags, owner, next reminder and the contact details in the description. Filter by status, step (names or ids, not mixed), owner, tags, email, starred or a date range. Unassigned leads are excluded unless include_unassigned is true. GET /leads.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "Only leads in these statuses (todo = to do, standby = waiting for a reminder date).",
"minItems": 1,
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"enum": [
"todo",
"standby",
"won",
"cancelled",
"lost"
]
}
},
"steps": {
"description": "Only leads in these pipeline steps: exact step names OR step ids (not mixed). See nocrm_list_steps.",
"anyOf": [
{
"minItems": 1,
"maxItems": 30,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
{
"minItems": 1,
"maxItems": 30,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
]
},
"user_id": {
"description": "Only leads owned by this user (id or email).",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 200
}
]
},
"tags": {
"description": "Only leads carrying ALL of these tags.",
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"email": {
"description": "Only leads whose description or comments contain this email address.",
"type": "string",
"minLength": 3,
"maxLength": 200
},
"starred": {
"description": "true = only starred leads.",
"type": "boolean"
},
"include_unassigned": {
"description": "Also return leads that have no owner (default false).",
"type": "boolean"
},
"order": {
"description": "Sort attribute (default id).",
"type": "string",
"enum": [
"id",
"creation_date",
"last_update",
"next_action",
"sale_step",
"amount",
"probability",
"probalized_amount",
"alphabetically"
]
},
"direction": {
"description": "Sort direction (default desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"date_range_type": {
"description": "Which date start_date/end_date apply to (default creation).",
"type": "string",
"enum": [
"creation",
"update",
"next_action",
"closed"
]
},
"start_date": {
"description": "From this date (yyyy-mm-dd), by date_range_type.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end_date": {
"description": "Until this date (yyyy-mm-dd), by date_range_type.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"updated_after": {
"description": "Only leads updated on or after this date (yyyy-mm-dd). Do not combine with date_range_type.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"limit": {
"description": "Results per call, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Skip this many results (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_unassigned_leads(limit)
Leads that have no owner yet (for example web-form or API leads waiting to be handed to a salesperson). GET /leads/unassigned.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Results per call, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_get_lead(lead_id)
One lead by id: title, step, status, amount, probability, tags, owner, client folder, team, reminder, and the full description with the contact's details. GET /leads/{id}.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "noCRM.io lead id."
}
},
"required": [
"lead_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_lead_comments(lead_id, direction)
The comments (notes, logged calls/meetings/emails) on a lead, newest first by default. GET /leads/{id}/comments.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "noCRM.io lead id."
},
"direction": {
"description": "Sort by date (default desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"required": [
"lead_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_lead_history(lead_id, from, to, action_type, direction, ...)
The timeline of a lead: creation, assignments, step and status changes, amount changes, comments and emails sent, with who did it and when. Filter by date range, action type or user. GET /leads/{id}/action_histories.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "noCRM.io lead id."
},
"from": {
"description": "From this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"description": "Until this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"action_type": {
"description": "Only this kind of action.",
"type": "string",
"enum": [
"client_assigned",
"step_changed",
"status_changed",
"amount_set",
"user_assigned",
"lead_created",
"comment_added",
"email_sent"
]
},
"direction": {
"description": "Sort by id (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Results per call, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Skip this many results (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"required": [
"lead_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_get_lead_duplicates(lead_id)
Leads that noCRM.io detects as possible duplicates of this lead (same email or key field). GET /leads/{id}/duplicates.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "noCRM.io lead id."
}
},
"required": [
"lead_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_lead_attachments(lead_id)
File attachments on a lead (names, ids, sizes, links). GET /leads/{id}/attachments.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "noCRM.io lead id."
}
},
"required": [
"lead_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_follow_ups(lead_id, user_id, status)
Post-sales processes (task checklists created from a template) of one lead OR of one user. Needs lead_id or user_id. Post-sales is a higher-edition feature (HTTP 403 otherwise). GET /follow_ups.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"description": "Follow-ups of this lead.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"user_id": {
"description": "Follow-ups of this user (id or email).",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 200
}
]
},
"status": {
"description": "Only these statuses.",
"minItems": 1,
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"todo",
"standby",
"done"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_pipelines
The sales pipelines of the account (one unless the multiple-pipelines feature is on). GET /pipelines.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_steps(direction)
The steps (stages) of the sales pipeline in order, with ids, positions and their pipeline. Use the ids or names when filtering leads or moving a lead. GET /steps.
Input Schema
{
"type": "object",
"properties": {
"direction": {
"description": "Order by position (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_users(email, firstname, lastname, status, role, ...)
The users (salespeople) of the account with name, email, phone, role (admin or not) and whether they are active or deactivated. Deleted users are included, flagged is_disabled. GET /users.
Input Schema
{
"type": "object",
"properties": {
"email": {
"description": "Only the user with this email.",
"type": "string",
"minLength": 3,
"maxLength": 200
},
"firstname": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"lastname": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"status": {
"description": "Default all.",
"type": "string",
"enum": [
"all",
"activated",
"deactivated"
]
},
"role": {
"description": "Default all.",
"type": "string",
"enum": [
"all",
"admin",
"non-admin"
]
},
"teams": {
"description": "Only users in these teams (ids or names).",
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 200
}
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_get_user(user)
One user by id or email address. GET /users/{id}.
Input Schema
{
"type": "object",
"properties": {
"user": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 200
}
],
"description": "A user id or the user's email address (see nocrm_list_users)."
}
},
"required": [
"user"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_teams
Sales teams with their members and who manages each. The Teams feature must be on in the account (HTTP 403 otherwise). GET /teams.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_client_folders(order, direction)
Client folders (accounts that group several leads), ordered by name by default. GET /clients.
Input Schema
{
"type": "object",
"properties": {
"order": {
"description": "Order by name (default) or id.",
"type": "string",
"enum": [
"name",
"id"
]
},
"direction": {
"description": "Default asc.",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_get_client_folder(client_id)
One client folder by id, with its contact fields and owner. GET /clients/{id}.
Input Schema
{
"type": "object",
"properties": {
"client_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Client folder id."
}
},
"required": [
"client_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_activities
The activity types (call, email, meeting and their outcomes) that can be set on a comment or reminder. GET /activities.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_predefined_tags
The account's predefined tags (admin keys only; an HTTP 401 unauthorized_non_admin means the key lacks rights). GET /predefined_tags.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢nocrm_list_fields(type)
The custom fields defined for leads or client folders. GET /fields.
Input Schema
{
"type": "object",
"properties": {
"type": {
"description": "Only fields of this type.",
"type": "string",
"enum": [
"lead",
"client"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡nocrm_create_lead(title, description, user_id, tags, step)
WRITE: create a new lead. The description holds the contact's details, one 'Label: value' per line (for example 'Firstname: Ada', 'Email: [email protected]', 'Phone: ...'); noCRM.io reads those lines. Without user_id the lead is created unassigned; a pipeline step can only be set when the lead is assigned. Not idempotent: calling twice creates two leads. POST /leads.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Lead title, usually the company name."
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 20000,
"description": "Contact details and notes, one 'Label: value' per line."
},
"user_id": {
"description": "Owner (id or email). Omit for an unassigned lead.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 200
}
]
},
"tags": {
"description": "Tags (created if new).",
"maxItems": 30,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"step": {
"description": "Pipeline step id or exact name. Needs user_id.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 200
}
]
}
},
"required": [
"title",
"description"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴nocrm_update_lead(lead_id, title, status, step, amount, ...)
WRITE: change a lead: title, status (won, lost, cancelled, todo or standby), pipeline step, amount, probability, star, estimated closing date, tags (replaces the lead's tag list), or append text to the description (existing description text is never replaced). Moving to standby needs remind_date. Only the fields you pass change. PUT /leads/{id}.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "noCRM.io lead id."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"status": {
"description": "New status. standby needs remind_date.",
"type": "string",
"enum": [
"todo",
"standby",
"won",
"cancelled",
"lost"
]
},
"step": {
"description": "Move to this step (id or exact name; prefer the id when pipelines share names).",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 200
}
]
},
"amount": {
"description": "Deal amount in the account currency.",
"type": "number",
"minimum": 0,
"maximum": 1000000000000
},
"probability": {
"description": "Win probability, percent.",
"type": "integer",
"minimum": 0,
"maximum": 100
},
"starred": {
"type": "boolean"
},
"estimated_closing_date": {
"description": "yyyy-mm-dd, in the account's time zone.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"remind_date": {
"description": "Reminder date yyyy-mm-dd (required for standby).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"remind_time": {
"description": "Reminder time HH:MM, 24 h, in 15-minute steps.",
"type": "string",
"pattern": "^([01]\\d|2[0-3]):(00|15|30|45)$"
},
"reminder_note": {
"description": "Note stored with the reminder.",
"type": "string",
"maxLength": 2000
},
"tags": {
"description": "The lead's tags after the update (replaces the current list; new tags are created).",
"maxItems": 30,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"append_description": {
"description": "Text added at the end of the description.",
"type": "string",
"minLength": 1,
"maxLength": 20000
}
},
"required": [
"lead_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴nocrm_assign_lead(lead_id, user_id)
WRITE: assign a lead to a user (id or email), replacing its current owner. The owner may get a notification from noCRM.io. POST /leads/{id}/assign.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "noCRM.io lead id."
},
"user_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 200
}
],
"description": "The new owner (id or email)."
}
},
"required": [
"lead_id",
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡nocrm_add_lead_comment(lead_id, content, activity_id)
WRITE: add a comment (an internal note) to a lead, optionally typed as an activity such as a call or meeting. It is visible to the lead's team in noCRM.io and sends nothing to the customer. Not idempotent. POST /leads/{id}/comments.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "noCRM.io lead id."
},
"content": {
"type": "string",
"minLength": 1,
"maxLength": 20000,
"description": "The comment text."
},
"activity_id": {
"description": "Activity type id (see nocrm_list_activities), for example the id of 'Call'.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"lead_id",
"content"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡nocrm_create_client_folder(name, description, user_id)
WRITE: create a client folder (an account that groups leads). Not idempotent. POST /clients.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Folder name, usually the company."
},
"description": {
"description": "For example the address.",
"type": "string",
"maxLength": 5000
},
"user_id": {
"description": "Owner (id or email).",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 200
}
]
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴nocrm_add_lead_to_client_folder(lead_id, client_id)
WRITE: file a lead under a client folder. POST /leads/{id}/add_to_client.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "noCRM.io lead id."
},
"client_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Client folder id (see nocrm_list_client_folders)."
}
},
"required": [
"lead_id",
"client_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence