Overview
Help the user create one or more contact records in the Carta CRM using the
create_contact MCP tool. Only name is required — collect that and any other
details the user has already provided, then call the tool. Do not block on optional fields.
Step 1 — Collect contact information
Only name is required. Extract everything the user has already provided in their
message without re-asking. If name is missing, ask for it once.
Fields you can collect:
- name (required) — full name, or derived from firstName + lastName
- firstName, lastName, middleName (optional)
- emailDetail — primary email; emailDetailSecond/Third/Fourth for additional emails
- phone — primary phone; businessPhone/thirdPhone/fourthPhone for additional numbers
- title — job title
- headline — short bio or tagline
- location — work location: city, state, country
- socialLinks — linkedinUrl, twitterUrl, githubUrl, facebookUrl
- jobs — work experience: array of {companyName, title, startedOn, endedOn}
- tags — array of string tags
- notes — free-text notes
- listId — if provided, adds the contact to that list
If the user wants to populate custom fields, fetch the schema first:
crm_call_tool({ "name": "crm:get_contact_custom_fields", "arguments": {} })
Never ask for listId unless the user brings it up.
Step 2 — Create the contact
Call:
crm_call_tool({
"name": "crm:create_contact",
"arguments": {
name: "<contact name>",
firstName: "<first>",
lastName: "<last>",
emailDetail: "<email>",
phone: "<phone>",
title: "<title>",
tags: ["<tag1>"],
fields: { "<field_id>": "<value>" }
}
})
Include only the fields the user provided. Omit everything else.
Step 3 — Report result
On success, respond with:
"Contact {name} saved successfully (ID: {id})."
On error, show the error message and suggest:
- Check that
name is provided and non-empty
- Verify the
listId exists if one was provided
Adding multiple contacts
If the user wants to add multiple contacts, repeat Steps 1–3 for each one, then
summarize:
"Created N contacts: [list of names with IDs]"
1---2name: add-contact3description: Adds one or more contact records to the Carta CRM via the Carta CRM MCP Server. Use this skill when the user says things like "add a contact", "create a contact record", "add contact to CRM", "save a contact", "upload contact to Carta CRM", or "/add-contact". Collects contact information conversationally, then creates it via the MCP server. Only name is required — all other fields are optional.4---56<!-- carta:instrumentation-fallback -->7<IMPORTANT>8`_instrumentation_v2` is anonymous Carta skill-usage telemetry. ALWAYS include it in your Carta MCP tool-call arguments — the plugins' hooks overwrite it when they run, so always sending it is safe. Shape:9`_instrumentation_v2: {"skills": ["<plugin>:<skill>", ...], "model": "<model-id>", "surface": "<value>"}`10`skills` is cumulative for the session: list every Carta skill loaded so far, not only the one driving this call. Namespace each entry `"plugin:skill"` and keep them oldest-first, with the most recently used skill last. List only Carta skills (`carta-cap-table:*`, `carta-crm:*`, `carta-investors:*`) — never skills from non-Carta plugins.11`surface` is the Claude surface you are running in: `"chat"` (claude.ai or the Claude app, i.e. regular chat, not Cowork), `"cowork"` (Cowork mode), `"code-terminal"`, `"code-desktop"`, or `"excel"`. Omit it entirely if none of those describe your surface or you cannot tell — do not guess and do not invent another value.12</IMPORTANT>1314## Overview1516Help the user create one or more contact records in the Carta CRM using the17`create_contact` MCP tool. Only `name` is required — collect that and any other18details the user has already provided, then call the tool. Do not block on optional fields.1920## Step 1 — Collect contact information2122Only `name` is required. Extract everything the user has already provided in their23message without re-asking. If `name` is missing, ask for it once.2425Fields you can collect:26- **name** (required) — full name, or derived from firstName + lastName27- **firstName**, **lastName**, **middleName** (optional)28- **emailDetail** — primary email; emailDetailSecond/Third/Fourth for additional emails29- **phone** — primary phone; businessPhone/thirdPhone/fourthPhone for additional numbers30- **title** — job title31- **headline** — short bio or tagline32- **location** — work location: city, state, country33- **socialLinks** — linkedinUrl, twitterUrl, githubUrl, facebookUrl34- **jobs** — work experience: array of {companyName, title, startedOn, endedOn}35- **tags** — array of string tags36- **notes** — free-text notes37- **listId** — if provided, adds the contact to that list3839If the user wants to populate custom fields, fetch the schema first:40```41crm_call_tool({ "name": "crm:get_contact_custom_fields", "arguments": {} })42```4344Never ask for `listId` unless the user brings it up.4546## Step 2 — Create the contact4748Call:4950```51crm_call_tool({52 "name": "crm:create_contact",53 "arguments": {54 name: "<contact name>",55 firstName: "<first>",56 lastName: "<last>",57 emailDetail: "<email>",58 phone: "<phone>",59 title: "<title>",60 tags: ["<tag1>"],61 fields: { "<field_id>": "<value>" }62 }63})64```6566Include only the fields the user provided. Omit everything else.6768## Step 3 — Report result6970On success, respond with:71> "Contact **{name}** saved successfully (ID: `{id}`)."7273On error, show the error message and suggest:74- Check that `name` is provided and non-empty75- Verify the `listId` exists if one was provided7677## Adding multiple contacts7879If the user wants to add multiple contacts, repeat Steps 1–3 for each one, then80summarize:81> "Created N contacts: [list of names with IDs]"