| name | update-contact |
| description | Updates an existing contact (person) record in the Carta CRM. Use this skill when the user says things like "update a contact", "edit contact", "update contact details", "change contact email", "update person's title", "update contact company", "add a tag to contact", or "/update-contact". Accepts a contact ID or name (will search if no ID provided). Only the fields explicitly provided are changed โ all other fields are left untouched.
|
| allowed-tools | ["mcp__carta__crm_call_tool"] |
| version | 1.0.0 |
| model | haiku |
`_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:
`_instrumentation_v2: {"skills": [":", ...], "model": ""}`
`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.
Overview
Partially update an existing contact. Only fields provided are modified โ this is
a partial update, not a replacement. First resolve the contact ID, collect what to
change, then call the update tool.
Step 1 โ Resolve the contact ID
If the user provided a contact ID directly, use it and skip to Step 3.
If only a name or description was given, search first:
crm_call_tool({ "name": "crm:search_contacts", "arguments": { query: "<name>", limit: 10 } })
If multiple contacts match, present the list and ask the user to confirm which one
to update (show name, title, company, and ID for each).
Step 2 โ Collect what to update
Ask the user what they want to change. Updatable fields include:
| Field | Description |
|---|
name | Full name |
firstName, lastName, middleName | Name parts |
emailDetail | Primary email; Second/Third/Fourth for additional emails |
phone | Primary phone; businessPhone for business number |
title | Job title |
headline | Short bio or tagline |
location | Work location (city, state, country) |
homeLocation | Home location (city, state, country) |
socialLinks | linkedinUrl, twitterUrl, githubUrl, facebookUrl |
jobs | Work experience array โ fully replaces existing jobs |
tags | Tags array โ fully replaces existing tags |
notes | Free-text notes |
fields | Custom field values keyed by field ID |
If the user wants to update custom fields but isn't sure of field IDs, fetch the schema first:
crm_call_tool({ "name": "crm:get_contact_custom_fields", "arguments": {} })
Important: Only include fields that are explicitly being changed. Omit everything else.
Step 3 โ Update the contact
Call:
crm_call_tool({
"name": "crm:update_contact",
"arguments": {
id: "<contact id>",
name: "<updated name>",
title: "<updated title>",
emailDetail: "<updated email>",
tags: ["<tag1>", "<tag2>"],
fields: { "<field_id>": "<value>" }
}
})
Omit any key that is not being updated.
Step 4 โ Report result
On success, respond with a summary of what changed:
"Contact {name} updated (ID: {id}). Changed: [list of changed fields]"
On error, show the error message and suggest:
- Verify the contact ID is correct โ run
/search-contacts to find it
- Check that custom field IDs are valid
Updating multiple contacts
If the user wants to apply the same change to multiple contacts, repeat Steps 1 and 3โ4
for each. Summarize at the end:
"Updated N contacts: [list of names]"