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.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add carta/plugins --skill update-contact --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Update Contact?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/carta-update-contact)More formats (shields.io, HTML) on the badges page.
---
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
---
<!-- carta:instrumentation-fallback -->
<IMPORTANT>
`_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": ["<plugin>:<skill>", ...], "model": "<model-id>", "surface": "<value>"}`
`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.
`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.
</IMPORTANT>
## 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]"
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!