MCP server
create_contact
Saves a new person record (name, job title, company domain) and returns it with its _id.
Create contact · Changes data
Saves a new person record (name, job title, company domain) and returns it with its _id. Its main use is to get a contactId for verify_contact. To find new people use search_people. To push someone into a CRM use push_lead_to_crm. The name, position, company domain and email (businessEmail, or personalEmail when there is no work email) are stored; phone and LinkedIn are not. Costs nothing. Errors: 405 when firstName, lastName or position is missing.
| Connection | Account URL, team member URL or OAuth |
|---|
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | Yes | Website ID from list_websites. Required by the tool schema; the saved record is not linked to it. |
firstName | string | Yes | Person's first name. Required. |
lastName | string | Yes | Person's last name. Required. |
position | string | Yes | Job title, e.g. "Head of Marketing". Required. |
domain | string | No | Company domain without protocol, e.g. "acme.example". Without it verify_contact cannot guess an address. |
businessEmail | string | No | Work email. Saved on the contact; verify_contact checks it. |
personalEmail | string | No | Personal email, used only when businessEmail is not given. |
linkedinUrl | string | No | LinkedIn profile URL. Accepted but not stored. |
phone | string | No | Phone number. Accepted but not stored. |
Tool definition
What your assistant receives from tools/list:
{
"name": "create_contact",
"title": "Create contact",
"annotations": {
"title": "Create contact",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false
},
"inputSchema": {
"type": "object",
"properties": {
"websiteId": {
"type": "string",
"description": "Website ID from list_websites. Required by the tool schema; the saved record is not linked to it."
},
"firstName": {
"type": "string",
"description": "Person's first name. Required."
},
"lastName": {
"type": "string",
"description": "Person's last name. Required."
},
"position": {
"type": "string",
"description": "Job title, e.g. \"Head of Marketing\". Required."
},
"domain": {
"type": "string",
"description": "Company domain without protocol, e.g. \"acme.example\". Without it verify_contact cannot guess an address."
},
"businessEmail": {
"type": "string",
"description": "Work email. Saved on the contact; verify_contact checks it."
},
"personalEmail": {
"type": "string",
"description": "Personal email, used only when businessEmail is not given."
},
"linkedinUrl": {
"type": "string",
"description": "LinkedIn profile URL. Accepted but not stored."
},
"phone": {
"type": "string",
"description": "Phone number. Accepted but not stored."
}
},
"required": [
"websiteId",
"firstName",
"lastName",
"position"
]
}
}