# Add Deal

> Creates one or more deal records in the Carta CRM via the Carta CRM MCP Server. Use this skill when the user says things like "add a deal", "create a deal", "log a deal", "add deal to CRM", "add deal to Carta CRM", or "/add-deal". Collects deal information conversationally, then creates it via the MCP server.

- Skill: `carta/add-deal` (Agent Skill)
- Install (CLI): `npx skillmds@latest add carta/add-deal`
- Raw SKILL.md: https://api.skillmd.com/api/skills/carta/add-deal/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: carta (https://skillmd.com/u/carta)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/carta/add-deal

---


<!-- 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

Help the user create one or more deal records in the Carta CRM. First fetch available
pipelines and custom fields, then collect deal details conversationally, then call
`create_deal`.

## Step 1 — Fetch available pipelines and stages

Call the pipelines tool so the user can pick a pipeline and stage by name:

```
crm_call_tool({ "name": "crm:get_deal_pipelines_with_stages", "arguments": {} })
```

Present the pipeline and stage names to the user. If the call fails, proceed without
it — pipeline and stage default to the organization's defaults if omitted.

## Step 2 — Discover available custom fields (optional)

```
crm_call_tool({ "name": "crm:get_deal_custom_fields", "arguments": {} })
```

Use returned field IDs and labels as hints when collecting deal data.
If the call fails, proceed without it.

## Step 3 — Collect deal information

Ask the user for:
- **Pipeline** (optional) — which pipeline this deal belongs to (from Step 1)
- **Stage** (optional) — which stage within the pipeline (from Step 1)
- **Company name** (optional) — the company associated with the deal
- **Company URL** (optional) — company website (used for auto-enrichment)
- **Comment** (optional) — notes or comments about the deal
- **Tags** (optional) — array of tag strings
- **Deal lead** (optional) — user ID to assign as deal lead
- **Added at** (optional) — ISO 8601 date the deal was added
- **People** (optional) — contact IDs for advisers, introducers, management
- **Custom fields** (optional) — any fields returned in Step 2

If the user has already provided details in their message, extract them directly
without re-asking.

## Step 4 — Create the deal

Call:

```
crm_call_tool({
  "name": "crm:create_deal",
  "arguments": {
    pipelineId: "<pipeline id>",
    stageId: "<stage id>",
    company: {
      name: "<company name>",
      url: "<company url>"
    },
    comment: "<comment>",
    tags: ["<tag1>", "<tag2>"],
    dealLead: "<user id>",
    addedAt: "<ISO 8601 date>",
    people: {
      advisers: ["<contact id>"],
      introducer: ["<contact id>"],
      management: ["<contact id>"]
    },
    fields: {
      "<field_id>": "<value>"
    }
  }
})
```

Omit any key the user did not provide. Omit `company` if neither name nor URL was given.

## Step 5 — Report result

On success, respond with:
> "Deal for **{company name}** created successfully (ID: `{id}`)."

On error, show the error message and suggest:
- Verify pipeline and stage IDs — run `get_deal_pipelines_with_stages` to list valid options
- Check that custom field IDs are valid

## Adding multiple deals

If the user wants to add multiple deals at once, repeat Steps 3–5 for each one.
After all are done, summarize:
> "Created N deals: [list of company names with IDs]"

