Skip to content
Development
Skill

/deals

HubSpot deal records and sales pipelines: deal fields, default and custom pipeline stages, deal amount conventions (MRR vs. TCV), forecast categories and weighted forecasting, and associating deals with contacts and companies.

From plugin
msp-claude-plugins
55200 skills165 agents200 commands4 MCP

Claude Code

$ npx -y skills add wyre-ai/msp-claude-plugins --skill deals --agent claude-code

SKILL.md

deals.SKILL.md
name: "HubSpot Deals"
description: >
  HubSpot deal records and sales pipelines: deal fields, default and custom
  pipeline stages, deal amount conventions (MRR vs. TCV), forecast categories
  and weighted forecasting, and associating deals with contacts and companies.
when_to_use: >-
  When searching, creating, updating, or reporting on deal records and pipelines in HubSpot CRM. Use
  when: hubspot deal, hubspot pipeline, hubspot opportunity, hubspot sale, hubspot revenue, deal
  search hubspot, deal management hubspot, hubspot forecast, hubspot deal stage, sales pipeline
  hubspot, or hubspot close date.

HubSpot Deal & Pipeline Management

Overview

Deals in HubSpot represent sales opportunities -- potential or active revenue from clients. For MSPs, deals track managed services agreements, project engagements, hardware sales, or any revenue opportunity moving through the sales process. Each deal belongs to a pipeline (e.g., "Sales Pipeline" or "Renewals") and progresses through stages (e.g., "Discovery", "Proposal", "Closed Won"). Deals are associated with contacts and companies to provide full context on who is involved and which client the revenue belongs to.

Conduit connector

Conduit's `hubspot` connector is HubSpot's own hosted MCP server (`https://mcp.hubspot.com/anthropic/v1/mcp`, OAuth). Its CRM tools are generic over object type, so every call names the `objectType`:

| Tool | Call shape | |------|-----------| | `search_crm_objects` | `objectType`, optional `query` (free text), `filterGroups` (property `filters` and `associatedWith` association filters), `properties`, `sorts`, `limit` (max 200), `offset` | | `get_crm_objects` | `objectType`, `objectIds` (1-100), `properties` | | `manage_crm_objects` | `createRequest.objects[]` or `updateRequest.objects[]` (each with `objectType`, `properties`, optional `associations`, and `objectId` for updates), plus `confirmationStatus` (`CONFIRMED` only after the user approved the exact change) | | `search_properties` / `get_properties` | Discover property names and enumeration values for an `objectType` | | `search_owners` | Resolve `hubspot_owner_id` values to people |

Parameter names in the tables below (such as `contactId`) describe the HubSpot fields involved; send them in the call shapes above. See `hubspot-api-patterns` for the full tool list.

Anti-triggers

  • **Building or pricing the quote behind the deal** — a deal records *that* an

opportunity exists and what it is worth; the line items, catalog, and margin live in `salesbuildr-quotes` or `connectwise-cpq-quotes`.

  • **Sending the customer something to sign** — use `pandadoc-documents`.
  • **Billing a won deal** — moving a deal to Closed Won invoices nobody; use

`xero-invoices` or `qbo-invoices`.

  • **Salesbuildr opportunities** — a different vendor's pipeline object with

identical vocabulary; use `salesbuildr-opportunities`.

MCP Tools

Available Tools

| Tool | Description | Key Parameters | |------|-------------|----------------| | `get_crm_objects` (`objectType: "deals"`) | Get deals by ID | `objectIds` (required, 1-100) | | `manage_crm_objects` (`createRequest`, `objectType: "deals"`) | Create a new deal | `dealname` (required), `amount`, `dealstage`, `pipeline` | | `manage_crm_objects` (`updateRequest`, `objectType: "deals"`) | Update an existing deal | `objectId` (required), property fields to update | | `search_properties` (`objectType: "deals"`) | List all available deal properties | None | | `search_crm_objects` (`objectType: "deals"`) | Search deals by criteria | `filterGroups`, `sorts`, `limit`, `offset` |

Search Deals

Call `search_crm_objects` (`objectType: "deals"`) with filter groups to find deals:

**Search by deal name:**

{
  "filterGroups": [
    {
      "filters": [
        {
          "propertyName": "dealname",
          "operator": "CONTAINS_TOKEN",
          "value": "Managed Services"
        }
      ]
    }
  ],
  "limit": 100
}

**Search by deal stage:**

{
  "filterGroups": [
    {
      "filters": [
        {
          "propertyName": "dealstage",
          "operator": "EQ",
          "value": "proposalpendinng"
        }
      ]
    }
  ],
  "sorts": [
    {
      "propertyName": "amount",
      "direction": "DESCENDING"
    }
  ],
  "limit": 100
}

**Search by close date range (upcoming closings):**

{
  "filterGroups": [
    {
      "filters": [
        {
          "propertyName": "closedate",
          "operator": "GTE",
          "value": "2026-02-01"
        },
        {
          "propertyName": "closedate",
          "operator": "LTE",
          "value": "2026-03-31"
        }
      ]
    }
  ],
  "limit": 100
}

**Search for high-value open deals:**

{
  "filterGroups": [
    {
      "filters": [
        {
          "propertyName": "amount",
          "operator": "GT",
          "value": "10000"
        },
        {
          "propertyName": "dealstage",
          "operator": "NOT_IN",
          "values": ["closedwon", "closedlost"]
        }
      ]
    }
  ],
  "sorts": [
    {
      "propertyName": "amount",
      "direction": "DESCENDING"
    }
  ],
  "limit": 100
}

Create a Deal

Call `manage_crm_objects` (`createRequest`, `objectType: "deals"`) with the deal's properties:

**Example: Create a managed services deal:**

  • `dealname`: `Acme Corp - Managed IT Services`
  • `amount`: `5000`
  • `dealstage`: `appointmentscheduled`
  • `pipeline`: `default`
  • `closedate`: `2026-04-15`
  • `hubspot_owner_id`: `67890`

Update a Deal

Call `manage_crm_objects` (`updateRequest`, `objectType: "deals"`) with the deal's `objectId` and the properties to change:

**Example: Move deal to next stage:**

  • `objectId`: `54321`
  • `dealstage`: `proposalpending`
  • `amount`: `6000`

Retrieve a Deal

Call `get_crm_objects` (`objectType: "deals"`) with the deal ID in `objectIds`:

**Example:**

  • `get_crm_objects` (`objectType: "deals"`) with `objectIds: [54321]`

Key C

Read more
@wyre-technology
Ships withmsp-claude-plugins

One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: wyre-ai.github.io/msp-claude-plugins

55200 skills165 agents4 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
55
Star history of wyre-technology/msp-claude-plugins on GitHub, a chart by star-history.com

Other skills on msp-claude-plugins.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about deals.

Which coding agents can use deals?
deals installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.