Search, read, create and update Vtiger CRM leads, contacts, deals, cases and more; tag records.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: add tags to one record (existing tags stay). POST /tags_add. Not retried.
Record id of the form <moduleTypeId>x<recordId>, for example 4x2063.
Tag names to add.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
WRITE: add tags to one record (existing tags stay). POST /tags_add. Not retried.
| Argument | Type | Description |
|---|---|---|
| id* | string | Record id of the form <moduleTypeId>x<recordId>, for example 4x2063. |
| tags* | array | Tag names to add. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"tags"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]{1,6}x[0-9]{1,18}$",
"description": "Record id of the form <moduleTypeId>x<recordId>, for example 4x2063."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"maxItems": 20,
"minItems": 1,
"description": "Tag names to add."
}
}
}How many records of a module match the filters (same filters as vtiger_list_records). GET /query with count(*).
| Argument | Type | Description |
|---|---|---|
| module* | string | Module name, for example Contacts, Accounts, Leads, Potentials (deals), Cases, Calendar (tasks and events). Names come from vtiger_list_modules. |
| filters | array | Conditions combined with AND. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"module"
],
"properties": {
"module": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
"description": "Module name, for example Contacts, Accounts, Leads, Potentials (deals), Cases, Calendar (tasks and events). Names come from vtiger_list_modules."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op",
"value"
],
"properties": {
"op": {
"enum": [
"=",
"!=",
"<",
">",
"<=",
">=",
"like"
],
"type": "string"
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$"
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"maxItems": 10,
"description": "Conditions combined with AND."
}
}
}WRITE: create one record in a module (a lead, contact, account, deal, case, ...). Send every mandatory field (vtiger_describe_module lists them; assigned_user_id is usually mandatory, use the id from vtiger_get_me). Returns the new record. POST /create. Not retried.
| Argument | Type | Description |
|---|---|---|
| fields* | object | Field values keyed by field name (see vtiger_describe_module). Reference fields take a record id like 3x12; picklists take the exact value. |
| module* | string | Module name, for example Contacts, Accounts, Leads, Potentials (deals), Cases, Calendar (tasks and events). Names come from vtiger_list_modules. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"module",
"fields"
],
"properties": {
"fields": {
"type": "object",
"description": "Field values keyed by field name (see vtiger_describe_module). Reference fields take a record id like 3x12; picklists take the exact value.",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 20000
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"module": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
"description": "Module name, for example Contacts, Accounts, Leads, Potentials (deals), Cases, Calendar (tasks and events). Names come from vtiger_list_modules."
}
}
}A module's fields (name, label, type, mandatory, editable, reference targets, picklist values) and whether it can be created, updated or deleted. Read this before creating or filtering. GET /describe?elementType=<module>.
| Argument | Type | Description |
|---|---|---|
| module* | string | Module name, for example Contacts, Accounts, Leads, Potentials (deals), Cases, Calendar (tasks and events). Names come from vtiger_list_modules. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"module"
],
"properties": {
"module": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
"description": "Module name, for example Contacts, Accounts, Leads, Potentials (deals), Cases, Calendar (tasks and events). Names come from vtiger_list_modules."
}
}
}The Vtiger user the credentials belong to (id, user name, name, email). GET /me.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One record with all its fields, by id (for example 4x2063). GET /retrieve?id=<id>.
| Argument | Type | Description |
|---|---|---|
| id* | string | Record id of the form <moduleTypeId>x<recordId>, for example 4x2063. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]{1,6}x[0-9]{1,18}$",
"description": "Record id of the form <moduleTypeId>x<recordId>, for example 4x2063."
}
}
}The tags on one record. GET /tags_retrieve?id=<id>.
| Argument | Type | Description |
|---|---|---|
| id* | string | Record id of the form <moduleTypeId>x<recordId>, for example 4x2063. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]{1,6}x[0-9]{1,18}$",
"description": "Record id of the form <moduleTypeId>x<recordId>, for example 4x2063."
}
}
}The CRM modules this user can access (Leads, Contacts, Accounts, Potentials, Cases, ...) with label and whether each holds records. GET /listtypes.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Records of one module, optionally filtered (all filters AND-ed), sorted and paged. Builds a SELECT for GET /query. The vendor returns at most 100 records per call; pass next_offset as offset for the next page. Name the fields you need: a full record has 100+ fields.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Records per page, 1-100 (default 20). |
| fields | array | Fields to return (default all). Example: ["id","firstname","lastname","email"]. |
| module* | string | Module name, for example Contacts, Accounts, Leads, Potentials (deals), Cases, Calendar (tasks and events). Names come from vtiger_list_modules. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| filters | array | Conditions combined with AND. Example: [{field:'leadstatus',op:'=',value:'Hot'},{field:'lastname',op:'like',value:'Sm%'}]. |
| order_by | string | Field to sort by (default id). |
| descending | boolean | Sort descending (default false). |
The modules a module can be related to (for example Accounts relate to Contacts, Potentials, Cases, Documents). GET /relatedtypes?elementType=<module>.
| Argument | Type | Description |
|---|---|---|
| module* | string | Module name, for example Contacts, Accounts, Leads, Potentials (deals), Cases, Calendar (tasks and events). Names come from vtiger_list_modules. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"module"
],
"properties": {
"module": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
"description": "Module name, for example Contacts, Accounts, Leads, Potentials (deals), Cases, Calendar (tasks and events). Names come from vtiger_list_modules."
}
}
}Find records in one or more modules by an exact email address or phone number. GET /lookup.
| Argument | Type | Description |
|---|---|---|
| type* | string | What the value is. |
| value* | string | The email address or phone number. |
| modules | array | Modules to search (default Contacts, Leads, Accounts). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"value"
],
"properties": {
"type": {
"enum": [
"email",
"phone"
],
"type": "string",
"description": "What the value is."
},
"value": {
"type": "string",
"maxLength": 200,
"minLength": 3,
"description": "The email address or phone number."
},
"modules": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
"description": "Module name, for example Contacts, Accounts, Leads, Potentials (deals), Cases, Calendar (tasks and events). Names come from vtiger_list_modules."
},
"maxItems": 10,
"minItems": 1,
"description": "Modules to search (default Contacts, Leads, Accounts)."
}
}
}Run your own read-only query: SELECT <fields|*|count(*)> FROM <Module> [WHERE ...] [ORDER BY ...] [LIMIT offset,count]. One module only, no joins, no grouping brackets; at most 100 records per call. Only SELECT is accepted. GET /query.
| Argument | Type | Description |
|---|---|---|
| query* | string | Example: select id,firstname,lastname from Contacts where mailingcity = 'Boston' or mailingcity = 'Austin' order by createdtime desc limit 0,25 |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 2000,
"minLength": 8,
"description": "Example: select id,firstname,lastname from Contacts where mailingcity = 'Boston' or mailingcity = 'Austin' order by createdtime desc limit 0,25"
}
}
}WRITE: change only the named fields of an existing record (the vendor's revise call; other fields stay as they are). Returns the updated record. POST /revise. Not retried.
| Argument | Type | Description |
|---|---|---|
| id* | string | Record id of the form <moduleTypeId>x<recordId>, for example 4x2063. |
| fields* | object | Field values keyed by field name (see vtiger_describe_module). Reference fields take a record id like 3x12; picklists take the exact value. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"fields"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9]{1,6}x[0-9]{1,18}$",
"description": "Record id of the form <moduleTypeId>x<recordId>, for example 4x2063."
},
"fields": {
"type": "object",
"description": "Field values keyed by field name (see vtiger_describe_module). Reference fields take a record id like 3x12; picklists take the exact value.",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 20000
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
}
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"module"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Records per page, 1-100 (default 20)."
},
"fields": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$"
},
"maxItems": 60,
"description": "Fields to return (default all). Example: [\"id\",\"firstname\",\"lastname\",\"email\"]."
},
"module": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
"description": "Module name, for example Contacts, Accounts, Leads, Potentials (deals), Cases, Calendar (tasks and events). Names come from vtiger_list_modules."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op",
"value"
],
"properties": {
"op": {
"enum": [
"=",
"!=",
"<",
">",
"<=",
">=",
"like"
],
"type": "string",
"description": "=, !=, <, >, <=, >= or like (use % as a wildcard)."
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$"
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"maxItems": 10,
"description": "Conditions combined with AND. Example: [{field:'leadstatus',op:'=',value:'Hot'},{field:'lastname',op:'like',value:'Sm%'}]."
},
"order_by": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
"description": "Field to sort by (default id)."
},
"descending": {
"type": "boolean",
"description": "Sort descending (default false)."
}
}
}