---
canonical_url: "https://docs.composio.dev/toolkits/close_mcp"
markdown_url: "https://docs.composio.dev/toolkits/close_mcp.md"
product: "platform"
version: null
last_updated: null
---

# Close MCP

Close MCP gives agents scoped access to CRM leads, contacts, opportunities, activities, communications, and organization workflows.

- **Category:** model context protocol
- **Auth:** DCR_OAUTH
- **Composio-managed OAuth available?** No
- **Tools:** 114
- **Triggers:** 0
- **Slug:** `CLOSE_MCP`
- **Version:** 20260910_00

## Tools

### Activity search

**Slug:** `CLOSE_MCP_ACTIVITY_SEARCH`

Search for activities. Results are returned ordered by date descending.

Examples:
- To list activities on a lead, use the lead_ids filter.
- To list conversations, filter for calls and meetings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor, give only when more results are requested. |
| `lead_ids` | string | No |  |
| `user_ids` | string | No |  |
| `direction` | string | No | Filter activities by direction (inbound = received by the user, outbound = sent by the user). Applies to Call, SMS, Email, and WhatsApp activities; activity types that have no direction (e.g. Note, Task) are excluded when this filter is set. |
| `activity_at` | string | No |  |
| `call_status` | string | No | Filter calls by status (e.g. completed, no-answer, busy). Only meaningful when activity_types includes Call; a no-op unless Call is searched. Other activity types use different status vocabularies, so they never match these values and are effectively excluded. |
| `contact_ids` | string | No |  |
| `activity_types` | string | No |  |
| `agent_config_ids` | string | No | Filter by voice agent config IDs. Matches Call, Email, and SMS activities that carry an agent_config_id; other activity types are filtered out implicitly because the field is not indexed for them. |
| `lead_smart_view_ids` | string | No |  |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Aggregation

**Slug:** `CLOSE_MCP_AGGREGATION`

Perform an aggregation to answer questions like:

- How many emails were sent this week?
- Calls by user this week (Who made the most?)

You MUST first fetch the list of available fields using the
`get_fields` tool.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `group_by` | string | No | Reference or enum fields to group by, max 2 |
| `interval` | string | No | Interval to aggregate by when using date fields. Determined automatically by default. |
| `aggregations` | string | No | Aggregation specifications to compute |
| `display_mode` | string | No | Determined automatically by default. |
| `time_buckets` | string | No | Time buckets |
| `include_types` | array | Yes | Object types to include in aggregation |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `rows` | array | No |  |
| `count` | string | No |  |

### Apply voice agent update

**Slug:** `CLOSE_MCP_APPLY_VOICE_AGENT_UPDATE`

Apply a previously proposed voice agent update.

This tool persists the server-stored proposal identified by proposal_id.
It does not rerun the feedback processor, and it fails if the proposal has
expired or the voice agent changed after the proposal was created.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `proposal_id` | string | Yes | Proposal ID returned by propose_voice_agent_update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `summary` | string | Yes |  |
| `agent_config_id` | string | Yes |  |

### Close product knowledge search

**Slug:** `CLOSE_MCP_CLOSE_PRODUCT_KNOWLEDGE_SEARCH`

Search Close product documentation and knowledge base for relevant information.

Use this tool when users ask about:
- How to use specific Close features
- Close API documentation and integration
- Workflow automation and best practices
- Product capabilities and limitations
- Setup and configuration guidance

Example queries:
- "How do I set up automated lead assignment?"
- "What are Close's API rate limits?"
- "How to create custom fields in Close?"
- "Best practices for email templates in Close"

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | Natural language query to search Close product documentation and knowledge |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `results` | array | No | Relevant excerpts paired with their sources |

### Create address

**Slug:** `CLOSE_MCP_CREATE_ADDRESS`

Add a new address to an existing lead (company).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `city` | string | Yes | City |
| `label` | string | Yes | Label for the address |
| `state` | string | Yes | State or province |
| `country` | string | Yes | Country code (ISO 3166-1 alpha-2) |
| `lead_id` | string | Yes | ID of the lead to add the address to |
| `zipcode` | string | Yes | ZIP or postal code |
| `address_1` | string | Yes | Address line 1 |
| `address_2` | string | No | Address line 2 |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `url` | string | Yes |  |
| `name` | string | Yes |  |
| `addresses` | array | Yes |  |
| `status_id` | string | Yes |  |
| `summaries` | string | No |  |
| `created_at` | string | Yes |  |
| `created_by` | string | No |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | No |  |
| `description` | string | Yes |  |
| `custom_fields` | array | No | Custom field values set on this object |
| `primary_contact_id` | string | No | ID of the lead's primary contact (its first contact), if any. |

### Create call task

**Slug:** `CLOSE_MCP_CREATE_CALL_TASK`

Schedule a call task on a lead, assigned to either a user or a
voice agent (Chloe).

A call task represents a scheduled outbound call that will be made
to the specified contact at the given time. The task can be assigned
to a specific user or dispatched to a voice agent.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `text` | string | No | The call task description/instructions. |
| `lead_id` | string | Yes | ID of the lead this call task belongs to |
| `due_date` | string | No | Due date or datetime for the call task. Can be a date (YYYY-MM-DD) or datetime (ISO 8601). If not provided, the task will be due immediately. |
| `contact_id` | string | Yes | ID of the contact to call. Must belong to the specified lead. |
| `assigned_to` | string | No | ID of the user to assign the call task to. Mutually exclusive with agent_config_id. |
| `agent_config_id` | string | No | ID of the voice agent (Chloe) to dispatch the call task to. Mutually exclusive with assigned_to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `text` | string | No | Call task text/instructions |
| `is_new` | boolean | Yes |  |
| `call_id` | string | No | ID of the associated Call activity, if any |
| `lead_id` | string | Yes | ID of the lead this call task belongs to |
| `due_date` | string | Yes | Date and time of the scheduled call (ISO 8601) |
| `lead_name` | string | Yes | Name of the lead this call task belongs to |
| `contact_id` | string | Yes | ID of the associated contact |
| `created_at` | string | Yes |  |
| `resolution` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `assigned_to` | string | No | ID of the user assigned to this call task (None when assigned to an agent) |
| `is_complete` | boolean | Yes | Whether the call task has been completed |
| `contact_name` | string | Yes | Name of the associated contact |
| `assignee_name` | string | No | Full name of the assigned user (None when assigned to an agent) |
| `agent_config_id` | string | No | ID of the voice agent config (non-null when assigned to a voice agent) |
| `agent_config_name` | string | No | Name of the voice agent (non-null when assigned to a voice agent) |
| `deduplication_key` | string | Yes |  |

### Create comment

**Slug:** `CLOSE_MCP_CREATE_COMMENT`

Add a comment to a commentable object (note, call, opportunity, task,
custom object, etc.).

If the object already has a comment thread, the new comment is appended
to it. Otherwise a new thread is started for the object. Use this tool
for both starting a conversation and replying to an existing one — the
object_id alone determines which.

Comments support @-mentions of users and groups. The body is HTML.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | string | Yes | Body of the comment as Close rich text (HTML). Must be a valid Close rich-text document: wrap the whole content in a single <body> tag and put each line/paragraph in a block-level tag. Supported tags include <p>, <h1>-<h6>, <ul>/<ol> with <li>, <blockquote>, <hr>, <a href=...>, <br>, and inline formatting <strong>/<b>, <em>/<i>, <u>, <s>, <code>, <span>. Emoji and unicode are accepted. Escape literal '&' as '&amp;' and literal '<' as '&lt;' in text content. To @-mention a user, call the `org_users` tool to look up the target user and embed their `mention_html` value verbatim in the body. To @-mention a group, call the `find_groups` tool to look up the target group and embed their `mention_html` value verbatim in the body. Example: <body><p>Nice work <span data-type="mention" data-id="user_abc123" data-label="Jane Doe" class="mention">@Jane Doe</span> on closing this!</p></body> |
| `object_id` | string | Yes | ID of the commentable object: an activity ID (acti_..., e.g. a note, call, email, SMS, meeting, or custom activity), an opportunity ID (oppo_...), a task notification ID (task_...), or a custom object ID (custobj_...). One comment thread exists per object; this tool adds to it or creates it if none exists yet. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `body` | string | Yes |  |
| `lead_id` | string | Yes |  |
| `mentions` | array | Yes |  |
| `thread_id` | string | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | Yes |  |
| `created_by_name` | string | No | Full name of the user who wrote the comment. |
| `updated_by_name` | string | No | Full name of the user who last edited the comment. |

### Create contact

**Slug:** `CLOSE_MCP_CREATE_CONTACT`

Create a new contact for a lead.

A contact represents a person associated with a lead (company).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the contact |
| `urls` | string | No | List of URLs for the contact |
| `title` | string | No | Job title of the contact |
| `emails` | string | No | List of email addresses for the contact |
| `phones` | string | No | List of phone numbers for the contact |
| `lead_id` | string | Yes | ID of the lead this contact belongs to |
| `custom_fields` | array | No | Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | No |  |
| `urls` | array | No |  |
| `title` | string | No |  |
| `emails` | array | No |  |
| `phones` | array | No |  |
| `lead_id` | string | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | No |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | No |  |
| `display_name` | string | Yes |  |
| `custom_fields` | array | No | Custom field values set on this object |

### Create custom activity instance

**Slug:** `CLOSE_MCP_CREATE_CUSTOM_ACTIVITY_INSTANCE`

Create a new custom activity instance on a lead.

A custom activity instance is an activity of a custom activity type,
holding the custom field values defined by that type. Use the
find_custom_activities tool to look up the available custom activity
types.

If in an interactive session, ask the user for the relevant field values
(including custom fields) before creating, even if they are not required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pinned` | boolean | No | Whether to pin the custom activity to the top of the lead's timeline |
| `status` | string ("draft" | "published") | No | Status of the custom activity. Published activities validate required custom fields; draft activities do not. |
| `lead_id` | string | Yes | ID of the lead this custom activity belongs to |
| `user_id` | string | No | ID of the user to attribute the custom activity to (defaults to the caller) |
| `contact_id` | string | No | ID of the contact to associate with the custom activity |
| `activity_at` | string | No | When the custom activity occurred |
| `date_created` | string | No | When the custom activity was created. Defaults to now; set this to backfill an activity at a past time. |
| `custom_fields` | array | No | Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged. |
| `custom_activity_type_id` | string | Yes | ID of the custom activity type. Use the find_custom_activities tool to look up the available custom activity types. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the custom activity instance |
| `pinned` | boolean | Yes | Whether the custom activity is pinned to the top of the lead's timeline |
| `status` | string ("draft" | "published") | Yes | Whether the custom activity is published or draft; draft instances skip required custom-field validation |
| `lead_id` | string | Yes | ID of the lead this custom activity belongs to |
| `user_id` | string | No | ID of the user the custom activity is attributed to (its owner; may differ from the creator) |
| `lead_name` | string | No | Name of the lead this custom activity belongs to |
| `pinned_at` | string | No | When the custom activity was pinned, or null if it is not pinned |
| `user_name` | string | No | Full name of the user the custom activity is attributed to |
| `contact_id` | string | No | ID of the contact on the lead this custom activity is associated with, if any |
| `created_at` | string | Yes | When the custom activity was created |
| `created_by` | string | No | ID of the user who created the custom activity |
| `updated_at` | string | Yes | When the custom activity was last updated |
| `updated_by` | string | No | ID of the user who last updated the custom activity |
| `activity_at` | string | Yes | When the activity occurred; may be backdated and differ from the creation time |
| `contact_name` | string | No | Name of the associated contact, if any |
| `custom_fields` | array | No | Custom field values set on this object |
| `created_by_name` | string | No | Full name of the user who created the custom activity |
| `updated_by_name` | string | No | Full name of the user who last updated the custom activity |
| `last_published_at` | string | No | When the custom activity was last published, or null if it has only ever been a draft |
| `custom_activity_type_id` | string | Yes | ID of the custom activity type that defines this instance's shape and custom fields |
| `custom_activity_type_name` | string | No | Name of the custom activity type that defines this instance's shape and custom fields |

### Create custom object instance

**Slug:** `CLOSE_MCP_CREATE_CUSTOM_OBJECT_INSTANCE`

Create a new custom object instance on a lead.

A custom object instance is a record of a custom object type, attached
to a lead and holding the custom field values defined by that type. Use
the find_custom_object_types tool to look up the available custom object
types.

If in an interactive session, ask the user for the relevant field values
(including custom fields) before creating, even if they are not required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Display name for the custom object instance |
| `lead_id` | string | Yes | ID of the lead this custom object belongs to |
| `custom_fields` | array | No | Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged. |
| `custom_object_type_id` | string | Yes | ID of the custom object type that defines this instance's shape and custom fields. Use the find_custom_object_types tool to look up the available custom object types. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the custom object instance |
| `name` | string | No | Display name of the custom object instance |
| `lead_id` | string | Yes | ID of the lead this custom object belongs to |
| `lead_name` | string | No | Name of the lead this custom object belongs to |
| `created_at` | string | Yes | When the custom object was created |
| `created_by` | string | No | ID of the user who created the custom object |
| `updated_at` | string | Yes | When the custom object was last updated |
| `updated_by` | string | No | ID of the user who last updated the custom object |
| `custom_fields` | array | No | Custom field values set on this object |
| `created_by_name` | string | No | Full name of the user who created the custom object |
| `updated_by_name` | string | No | Full name of the user who last updated the custom object |
| `custom_object_type_id` | string | Yes | ID of the custom object type that defines this instance's shape and custom fields |
| `custom_object_type_name` | string | No | Name of the custom object type this instance belongs to |

### Create draft email

**Slug:** `CLOSE_MCP_CREATE_DRAFT_EMAIL`

Create a draft email on a lead.

The email is saved as an unsent draft for the user to review, edit, and
send from Close; it is never sent automatically. Provide the body as
Close rich text (HTML) via body_html; the sender's saved email signature
is appended automatically. To create a reply in an existing thread,
provide the ID of the email being replied to via in_reply_to_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cc` | string | No | List of CC email addresses |
| `to` | string | No | List of recipient email addresses |
| `bcc` | string | No | List of BCC email addresses |
| `sender` | string | No | Email address of a connected sending identity, including aliases. Must match an available sender for the current user. |
| `lead_id` | string | Yes | ID of the lead this draft email belongs to |
| `subject` | string | No | Subject line of the email |
| `body_html` | string | No | Draft body as Close rich text (HTML). Wrap the whole content in a single <body> tag and put each line/paragraph in a block-level tag. Supported tags include <p>, <h1>-<h6>, <ul>/<ol> with <li>, <blockquote>, <hr>, <a href=...>, <br>, and inline formatting <strong>/<b>, <em>/<i>, <u>, <s>, <code>, <span>. Escape literal ampersands as '&amp;'. Example: <body><p>Hi <strong>Jane</strong>,</p><p>Following up on our call.</p></body>. Do not include a signature block (name, title, company, contact details); the sender's saved email signature is appended automatically. A short closing line such as 'Best,' is fine. |
| `body_text` | string | No | Plaintext body content. Prefer body_html; if only one of body_html/body_text is provided the other is derived automatically. |
| `contact_id` | string | No | ID of the contact this draft email is addressed to |
| `in_reply_to_id` | string | No | ID of the email this draft replies to. The draft joins that email's thread. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cc` | array | No |  |
| `id` | string | Yes |  |
| `to` | array | No |  |
| `bcc` | array | No |  |
| `sender` | string | No |  |
| `status` | string | Yes |  |
| `lead_id` | string | No |  |
| `subject` | string | No |  |
| `user_id` | string | No |  |
| `body_html` | string | No | Rich-text (HTML) body content |
| `body_text` | string | No | Plaintext body content |
| `contact_id` | string | No |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |

### Create email template

**Slug:** `CLOSE_MCP_CREATE_EMAIL_TEMPLATE`

Create a new email template.

Handling of attachments and unsubscribe links via this tool is currently unsupported.

Email template body should be HTML formatted.

Use template tags as placeholders, for example:
{{ organization.name }} to refer to the sender's organization name.
{{ user.first_name }} {{ user.last_name }} {{ user.email }} {{ user.phone }} to refer to the user sending the email.
{{ lead.display_name }} to refer to the lead name (recipient's name/company).
{{ contact.first_name }} {{ contact.last_name }} to refer to the recipient.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cc` | string | No |  |
| `bcc` | string | No |  |
| `body` | string | Yes |  |
| `name` | string | Yes |  |
| `subject` | string | Yes |  |
| `is_shared` | boolean | No | Share this template with the organization (required for use in workflows) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cc` | array | Yes |  |
| `id` | string | Yes |  |
| `bcc` | array | Yes |  |
| `body` | string | Yes |  |
| `name` | string | Yes |  |
| `subject` | string | Yes |  |
| `is_shared` | boolean | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | Yes |  |
| `is_archived` | boolean | Yes |  |
| `last_used_at` | string | Yes |  |
| `last_used_by` | string | Yes |  |
| `last_used_type` | string | Yes |  |

### Create lead

**Slug:** `CLOSE_MCP_CREATE_LEAD`

Create a new lead (company).

After creating a lead, you should usually add an address or contact
(including phone or email) to the lead.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | No | URL of the lead's website |
| `name` | string | No | Name of the lead |
| `status_id` | string | No | ID of the lead status |
| `description` | string | No | Description of the lead |
| `custom_fields` | array | No | Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `url` | string | Yes |  |
| `name` | string | Yes |  |
| `addresses` | array | Yes |  |
| `status_id` | string | Yes |  |
| `summaries` | string | No |  |
| `created_at` | string | Yes |  |
| `created_by` | string | No |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | No |  |
| `description` | string | Yes |  |
| `custom_fields` | array | No | Custom field values set on this object |
| `primary_contact_id` | string | No | ID of the lead's primary contact (its first contact), if any. |

### Create lead status

**Slug:** `CLOSE_MCP_CREATE_LEAD_STATUS`

Create a new lead status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `label` | string | Yes | Label for the lead status |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `label` | string | Yes |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |

### Create note

**Slug:** `CLOSE_MCP_CREATE_NOTE`

Create a new note on a lead.

A note is a text-based activity attached to a lead. At least one
of note (plaintext) or note_html (rich text) must be provided.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note` | string | No | Plaintext note content |
| `title` | string | No | Title of the note |
| `pinned` | string | No | Whether to pin the note to the top of the lead |
| `lead_id` | string | Yes | ID of the lead this note belongs to |
| `user_id` | string | No | ID of the user to attribute the note to (defaults to caller) |
| `note_html` | string | No | Rich-text (HTML) note content |
| `contact_id` | string | No | ID of the contact to associate with the note |
| `activity_at` | string | No | When the note activity occurred |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `note` | string | Yes | Plaintext note content |
| `title` | string | No |  |
| `pinned` | boolean | No |  |
| `lead_id` | string | Yes |  |
| `user_id` | string | No |  |
| `lead_name` | string | No |  |
| `note_html` | string | No | Rich-text (HTML) note content |
| `user_name` | string | No |  |
| `contact_id` | string | No |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `activity_at` | string | Yes |  |
| `contact_name` | string | No |  |
| `has_attachments` | boolean | No |  |

### Create opportunity

**Slug:** `CLOSE_MCP_CREATE_OPPORTUNITY`

Create a new opportunity.

Requires a lead ID and status ID. Other fields are optional.
The value should be specified in cents (e.g., $100.00 = 10000).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note` | string | No | Plaintext version of the note. |
| `value` | string | No | Value in cents |
| `lead_id` | string | Yes | ID of the lead this opportunity belongs to |
| `user_id` | string | No | ID of the user assigned to this opportunity. Defaults to the current user. |
| `close_at` | string | No | Expected close date |
| `note_html` | string | No | Rich-text HTML version of the note, wrapped in `<body>...</body>` (e.g. `<body><p>text with <strong>bold</strong></p></body>`). When set, `note` is automatically derived from it, overriding any `note` value passed in the same request. |
| `status_id` | string | Yes | ID of the opportunity status |
| `confidence` | string | No | Confidence percentage (0-100) |
| `contact_id` | string | No | ID of the primary contact for this opportunity |
| `value_period` | string | No | Period for the value |
| `custom_fields` | array | No | Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `note` | string | No | Plaintext version of the note. |
| `value` | string | No | Value in cents |
| `lead_id` | string | Yes | ID of the lead this opportunity belongs to |
| `user_id` | string | Yes | ID of the user assigned to this opportunity |
| `close_at` | string | No | Date the opportunity is expected to close (if active), or date the opportunity was won or lost. |
| `lead_name` | string | Yes | Name of the lead this opportunity belongs to |
| `note_html` | string | No | Rich-text HTML version of the note, wrapped in `<body>...</body>`. |
| `status_id` | string | Yes | ID of the opportunity status |
| `user_name` | string | Yes | Name of the user assigned to this opportunity |
| `confidence` | integer | Yes | Confidence percentage (0-100) |
| `contact_id` | string | No | ID of the contact for this opportunity |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `status_type` | string | Yes | Type of the opportunity status |
| `contact_name` | string | Yes | Name of the contact for this opportunity |
| `display_name` | string | Yes |  |
| `status_label` | string | Yes | Label of the opportunity status |
| `value_period` | string ("one_time" | "monthly" | "annual") | Yes | Period for the value |
| `custom_fields` | array | No | Custom field values set on this object |

### Create opportunity status tool

**Slug:** `CLOSE_MCP_CREATE_OPPORTUNITY_STATUS_TOOL`

Create a new opportunity status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `type` | string ("won" | "lost" | "active") | Yes | Type of the opportunity status |
| `label` | string | Yes | Label for the opportunity status |
| `pipeline_id` | string | Yes | ID of the pipeline to add the status to |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `type` | string ("won" | "lost" | "active") | Yes |  |
| `label` | string | Yes |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `pipeline_id` | string | Yes |  |

### Create pipeline

**Slug:** `CLOSE_MCP_CREATE_PIPELINE`

Create a new opportunity pipeline.

Use the create_opportunity_status tool to add statuses to the pipeline.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the pipeline |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | Yes |  |
| `statuses` | array | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | Yes |  |

### Create sms template

**Slug:** `CLOSE_MCP_CREATE_SMS_TEMPLATE`

Create a new SMS template.

Handling of attachments via this tool is currently unsupported.

Use template tags as placeholders, for example:
{{ organization.name }} to refer to the sender's organization name.
{{ user.first_name }} {{ user.last_name }} {{ user.email }} {{ user.phone }} to refer to the user sending the message.
{{ lead.display_name }} to refer to the lead name (recipient's name/company).
{{ contact.first_name }} {{ contact.last_name }} to refer to the recipient.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes |  |
| `text` | string | Yes |  |
| `is_shared` | boolean | No | Share this template with the organization (required for use in workflows) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | Yes |  |
| `text` | string | Yes |  |
| `is_shared` | boolean | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | Yes |  |
| `is_archived` | boolean | Yes |  |
| `last_used_at` | string | Yes |  |
| `last_used_by` | string | Yes |  |
| `last_used_type` | string | Yes |  |

### Create task

**Slug:** `CLOSE_MCP_CREATE_TASK`

Create a new task for a lead.

A task represents a to-do item that can be assigned to a user
and optionally associated with a contact.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `text` | string | Yes | The task description |
| `lead_id` | string | Yes | ID of the lead this task belongs to |
| `due_date` | string | No | Due date or datetime for the task. Can be a date (YYYY-MM-DD) or datetime (ISO 8601). If not provided, the task will be due immediately. |
| `priority` | string | No | Task priority: 'high' or 'medium'. Defaults to 'medium'. Only set to high if the user explicitly says it's a high priority task. |
| `contact_id` | string | No | ID of the contact associated with this task. Must belong to the specified lead. |
| `assigned_to` | string | No | ID of the user to assign the task to. Defaults to the current user if not provided. |
| `send_notification` | boolean | No | Send an email notification to the assigned user. Assume notifications should be sent unless the user explicitly tells you not to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique task identifier |
| `text` | string | Yes | Task text/instructions |
| `lead_id` | string | Yes | ID of the lead this task belongs to |
| `due_date` | string | Yes | Due date: datetime if task has specific time, date if date-only, None if task has no due date |
| `priority` | string ("high" | "medium") | Yes | Task priority level |
| `lead_name` | string | Yes | Name of the lead this task belongs to |
| `contact_id` | string | No | ID of the associated contact, if any |
| `created_at` | string | Yes | When the task was created |
| `updated_at` | string | Yes | When the task was last updated |
| `assigned_to` | string | Yes | ID of the user assigned to task |
| `is_complete` | boolean | Yes | Whether task has been completed |
| `contact_name` | string | No | Name of the associated contact, if any |
| `assignee_name` | string | Yes | Full name of the assigned user |

### Create workflow

**Slug:** `CLOSE_MCP_CREATE_WORKFLOW`

Create a new workflow (a.k.a. sequence) with Draft status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Workflow name. Must be unique. |
| `steps` | array | Yes | Steps in the workflow. The `step_type` of each step has to exactly match one of the defined types in the mapping. |
| `trigger` | string | No | The trigger that determines when and how the workflow fires. The `trigger_type` must exactly match one of the defined types. Use 'contact-manual' (the default) when the user does not specify a trigger. |
| `goal_criteria` | object | No | Conditions that stop a workflow run early, before its remaining steps run.  Any one of them stops the run; they are never AND-ed. Use the defaults when the user does not specify what should stop the workflow. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | Yes |  |
| `steps` | array | Yes |  |
| `status` | string ("active" | "paused" | "draft") | Yes |  |

### Customized builtin labels

**Slug:** `CLOSE_MCP_CUSTOMIZED_BUILTIN_LABELS`

Return the customized builtin labels.

Only renamed labels are returned - an empty result
means the default names apply.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Delete address

**Slug:** `CLOSE_MCP_DELETE_ADDRESS`

Delete an address from an existing lead (company) if there is an exact
match.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `city` | string | Yes | City |
| `label` | string | Yes | Label for the address |
| `state` | string | Yes | State or province |
| `country` | string | Yes | Country code (ISO 3166-1 alpha-2) |
| `lead_id` | string | Yes | ID of the lead to delete the address from |
| `zipcode` | string | Yes | ZIP or postal code |
| `address_1` | string | Yes | Address line 1 |
| `address_2` | string | No | Address line 2 |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `url` | string | Yes |  |
| `name` | string | Yes |  |
| `addresses` | array | Yes |  |
| `status_id` | string | Yes |  |
| `summaries` | string | No |  |
| `created_at` | string | Yes |  |
| `created_by` | string | No |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | No |  |
| `description` | string | Yes |  |
| `custom_fields` | array | No | Custom field values set on this object |
| `primary_contact_id` | string | No | ID of the lead's primary contact (its first contact), if any. |

### Delete call task

**Slug:** `CLOSE_MCP_DELETE_CALL_TASK`

Delete a call task. Does not affect sibling tasks.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The ID of the call task to delete. |

### Delete contact

**Slug:** `CLOSE_MCP_DELETE_CONTACT`

Permanently delete an existing contact.

This will remove the contact from its lead including its email addresses,
phone numbers, and URLs will be removed. Activities on the lead are not
affected.

This action cannot be undone.

ONLY call this if the user specifically instructed you to delete the contact.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the contact to delete |

### Delete custom activity instance

**Slug:** `CLOSE_MCP_DELETE_CUSTOM_ACTIVITY_INSTANCE`

Permanently delete an existing custom activity instance.

This action cannot be undone.

ONLY call this if the user specifically instructed you to delete the
custom activity instance.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the custom activity instance to delete |

### Delete custom object instance

**Slug:** `CLOSE_MCP_DELETE_CUSTOM_OBJECT_INSTANCE`

Permanently delete an existing custom object instance.

A custom object instance is a record of a custom object type, attached
to a lead and holding the custom field values defined by that type. This
action cannot be undone.

ONLY call this if the user specifically instructed you to delete the
custom object instance.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the custom object instance to delete |

### Delete email template

**Slug:** `CLOSE_MCP_DELETE_EMAIL_TEMPLATE`

Permanently delete an email template.

If the template is used in any workflows (sequences), it cannot be deleted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the email template to delete |

### Delete lead

**Slug:** `CLOSE_MCP_DELETE_LEAD`

Permanently delete an existing lead (company) by ID including all of its
addresses, contacts, opportunities, tasks, and activities.

ONLY call this if the user specifically instructed you to delete the lead,
and you confirmed what the deletion will entail and that it cannot be
reversed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the lead to delete |

### Delete lead smart view

**Slug:** `CLOSE_MCP_DELETE_LEAD_SMART_VIEW`

Permanently delete a lead smart view (saved search).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the lead smart view to delete |

### Delete lead status

**Slug:** `CLOSE_MCP_DELETE_LEAD_STATUS`

Permanently delete a lead status.

Cannot delete if it's the last lead status in the organization or there are
leads currently using this status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the lead status to delete |

### Delete note

**Slug:** `CLOSE_MCP_DELETE_NOTE`

Permanently delete an existing note.

This action cannot be undone.

ONLY call this if the user specifically instructed you to delete
the note.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the note to delete |

### Delete opportunity

**Slug:** `CLOSE_MCP_DELETE_OPPORTUNITY`

Permanently delete an opportunity.

This action cannot be undone. All data associated with the opportunity will be removed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the opportunity to delete |

### Delete opportunity status tool

**Slug:** `CLOSE_MCP_DELETE_OPPORTUNITY_STATUS_TOOL`

Permanently delete an opportunity status.

Cannot delete if it's the last opportunity status in the organization or there are
opportunities currently using this status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the opportunity status to delete |

### Delete pipeline

**Slug:** `CLOSE_MCP_DELETE_PIPELINE`

Permanently delete an opportunity pipeline.

A pipeline can only be deleted if it has no statuses. The last pipeline
cannot be deleted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the pipeline to delete |

### Delete sms template

**Slug:** `CLOSE_MCP_DELETE_SMS_TEMPLATE`

Permanently delete an SMS template.

If the template is used in any workflows (sequences), it cannot be deleted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the SMS template to delete |

### Delete task

**Slug:** `CLOSE_MCP_DELETE_TASK`

Permanently delete an existing task by ID.

This action cannot be undone.

ONLY call this if the user specifically instructed you to delete the task.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the task to delete |

### Enrich field

**Slug:** `CLOSE_MCP_ENRICH_FIELD`

Use AI to determine and set the value of a field on a lead or contact.

The field is enriched using available data on the object and external
sources, and the enriched value is written back to the object. By default
the value is only written if the field is currently empty; set
overwrite_existing_value to True to replace an existing value.

Returns the enriched value along with the model's reasoning and confidence.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `field_id` | string | Yes | The ID of the field to enrich. This may be a built-in field name or a custom field ID. |
| `object_id` | string | Yes | The ID of the lead or contact to enrich (e.g. 'lead_xxx' or 'cont_xxx'). |
| `object_type` | string ("lead" | "contact") | Yes | The type of object whose field should be enriched. |
| `overwrite_existing_value` | boolean | No | Whether to overwrite an existing value. When False, the field is only written if it is currently empty. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `value` | string | Yes | The enriched value. |
| `field_id` | string | Yes |  |
| `object_id` | string | Yes |  |
| `reasoning` | string | Yes | Explanation of how the value was determined. |
| `confidence` | string ("high" | "medium" | "low") | Yes | The model's confidence in the enriched value. |
| `object_type` | string ("lead" | "contact") | Yes |  |

### Fetch call

**Slug:** `CLOSE_MCP_FETCH_CALL`

Fetch a single call activity by ID.

Returns the call's direction, outcome, participants, and (if available)
its transcript.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The ID of the call to fetch. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `note` | string | No | Call note (may contain HTML) |
| `status` | string | No |  |
| `lead_id` | string | Yes |  |
| `user_id` | string | No |  |
| `duration` | string | No | Duration in seconds |
| `direction` | string ("inbound" | "outbound") | Yes | Direction of a phone call or an SMS message.  If you want to use this for a new activity, consider more generic CommunicationDirection instead. |
| `lead_name` | string | No |  |
| `user_name` | string | No |  |
| `contact_id` | string | No |  |
| `created_at` | string | Yes |  |
| `outcome_id` | string | No | ID of the outcome logged on the call, if any |
| `transcript` | string | No | Full recording transcript text |
| `updated_at` | string | Yes |  |
| `activity_at` | string | Yes |  |
| `call_method` | string | No |  |
| `disposition` | string | No |  |
| `local_phone` | string | No | Close-side phone number on the call |
| `contact_name` | string | No |  |
| `remote_phone` | string | No | Lead/contact-side phone number on the call |
| `recording_url` | string | No | URL to the call recording, if one is available |
| `voicemail_url` | string | No | URL to the voicemail recording, if one was left |
| `agent_config_id` | string | No | Voice agent that placed the call. Non-null identifies a voice-agent-driven call. |
| `agent_config_name` | string | No | Name of the voice agent that placed the call |
| `recording_duration` | string | No | Recording duration in seconds |

### Fetch call task

**Slug:** `CLOSE_MCP_FETCH_CALL_TASK`

Fetch a single call task by ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The ID of the call task to fetch. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `text` | string | No | Call task text/instructions |
| `is_new` | boolean | Yes |  |
| `call_id` | string | No | ID of the associated Call activity, if any |
| `lead_id` | string | Yes | ID of the lead this call task belongs to |
| `due_date` | string | Yes | Date and time of the scheduled call (ISO 8601) |
| `lead_name` | string | Yes | Name of the lead this call task belongs to |
| `contact_id` | string | Yes | ID of the associated contact |
| `created_at` | string | Yes |  |
| `resolution` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `assigned_to` | string | No | ID of the user assigned to this call task (None when assigned to an agent) |
| `is_complete` | boolean | Yes | Whether the call task has been completed |
| `contact_name` | string | Yes | Name of the associated contact |
| `assignee_name` | string | No | Full name of the assigned user (None when assigned to an agent) |
| `agent_config_id` | string | No | ID of the voice agent config (non-null when assigned to a voice agent) |
| `agent_config_name` | string | No | Name of the voice agent (non-null when assigned to a voice agent) |
| `deduplication_key` | string | Yes |  |

### Fetch comment

**Slug:** `CLOSE_MCP_FETCH_COMMENT`

Fetch a single comment by ID.

Returns the comment's rich-text (HTML) body, the thread and lead it
belongs to, its @-mentions, and the resolved author and last-editor
names.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the comment to fetch. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `body` | string | Yes |  |
| `lead_id` | string | Yes |  |
| `mentions` | array | Yes |  |
| `thread_id` | string | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | Yes |  |
| `created_by_name` | string | No | Full name of the user who wrote the comment. |
| `updated_by_name` | string | No | Full name of the user who last edited the comment. |

### Fetch contact

**Slug:** `CLOSE_MCP_FETCH_CONTACT`

Fetch an existing contact by ID.

Returns the contact's details including name, title, email addresses, phone numbers, and URLs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the contact to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | No |  |
| `urls` | array | No |  |
| `title` | string | No |  |
| `emails` | array | No |  |
| `phones` | array | No |  |
| `lead_id` | string | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | No |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | No |  |
| `display_name` | string | Yes |  |
| `custom_fields` | array | No | Custom field values set on this object |

### Fetch custom activity instance

**Slug:** `CLOSE_MCP_FETCH_CUSTOM_ACTIVITY_INSTANCE`

Fetch an existing custom activity instance by ID.

A custom activity instance is an activity of a custom activity type,
holding the custom field values defined by that type. Returns the
full instance, including its custom field values and the resolved
lead, contact, and user names.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the custom activity instance to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the custom activity instance |
| `pinned` | boolean | Yes | Whether the custom activity is pinned to the top of the lead's timeline |
| `status` | string ("draft" | "published") | Yes | Whether the custom activity is published or draft; draft instances skip required custom-field validation |
| `lead_id` | string | Yes | ID of the lead this custom activity belongs to |
| `user_id` | string | No | ID of the user the custom activity is attributed to (its owner; may differ from the creator) |
| `lead_name` | string | No | Name of the lead this custom activity belongs to |
| `pinned_at` | string | No | When the custom activity was pinned, or null if it is not pinned |
| `user_name` | string | No | Full name of the user the custom activity is attributed to |
| `contact_id` | string | No | ID of the contact on the lead this custom activity is associated with, if any |
| `created_at` | string | Yes | When the custom activity was created |
| `created_by` | string | No | ID of the user who created the custom activity |
| `updated_at` | string | Yes | When the custom activity was last updated |
| `updated_by` | string | No | ID of the user who last updated the custom activity |
| `activity_at` | string | Yes | When the activity occurred; may be backdated and differ from the creation time |
| `contact_name` | string | No | Name of the associated contact, if any |
| `custom_fields` | array | No | Custom field values set on this object |
| `created_by_name` | string | No | Full name of the user who created the custom activity |
| `updated_by_name` | string | No | Full name of the user who last updated the custom activity |
| `last_published_at` | string | No | When the custom activity was last published, or null if it has only ever been a draft |
| `custom_activity_type_id` | string | Yes | ID of the custom activity type that defines this instance's shape and custom fields |
| `custom_activity_type_name` | string | No | Name of the custom activity type that defines this instance's shape and custom fields |

### Fetch custom object instance

**Slug:** `CLOSE_MCP_FETCH_CUSTOM_OBJECT_INSTANCE`

Fetch an existing custom object instance by ID.

A custom object instance is a record of a custom object type, attached
to a lead and holding the custom field values defined by that type.
Returns the full instance, including its custom field values and the
resolved lead, custom object type, and creator/updater names.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the custom object instance to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the custom object instance |
| `name` | string | No | Display name of the custom object instance |
| `lead_id` | string | Yes | ID of the lead this custom object belongs to |
| `lead_name` | string | No | Name of the lead this custom object belongs to |
| `created_at` | string | Yes | When the custom object was created |
| `created_by` | string | No | ID of the user who created the custom object |
| `updated_at` | string | Yes | When the custom object was last updated |
| `updated_by` | string | No | ID of the user who last updated the custom object |
| `custom_fields` | array | No | Custom field values set on this object |
| `created_by_name` | string | No | Full name of the user who created the custom object |
| `updated_by_name` | string | No | Full name of the user who last updated the custom object |
| `custom_object_type_id` | string | Yes | ID of the custom object type that defines this instance's shape and custom fields |
| `custom_object_type_name` | string | No | Name of the custom object type this instance belongs to |

### Fetch custom object type

**Slug:** `CLOSE_MCP_FETCH_CUSTOM_OBJECT_TYPE`

Fetch a single custom object type by its ID.

A custom object type defines the shape of a category of custom objects,
including the custom fields its instances hold. Returns the type with
its custom fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the custom object type to fetch. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the custom object type (e.g. 'cotype_abc123'). |
| `name` | string | Yes | Singular display name of the custom object type. |
| `fields` | array | Yes | Custom fields defined on this custom object type. |
| `description` | string | Yes | What this custom object type is used for. |
| `name_plural` | string | Yes | Plural display name of the custom object type. |

### Fetch email template

**Slug:** `CLOSE_MCP_FETCH_EMAIL_TEMPLATE`

Fetch an email template by ID.

Returns the complete email template with all its details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the email template to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cc` | array | Yes |  |
| `id` | string | Yes |  |
| `bcc` | array | Yes |  |
| `body` | string | Yes |  |
| `name` | string | Yes |  |
| `subject` | string | Yes |  |
| `is_shared` | boolean | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | Yes |  |
| `is_archived` | boolean | Yes |  |
| `last_used_at` | string | Yes |  |
| `last_used_by` | string | Yes |  |
| `last_used_type` | string | Yes |  |

### Fetch invoice

**Slug:** `CLOSE_MCP_FETCH_INVOICE`

Fetch one of the organization's billing invoices by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes |  |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Close invoice id. |
| `date` | string | Yes | Invoice date (UTC ISO 8601); null if unset. |
| `type` | string ("plan" | "usage_credit" | "usage_overview" | "ai_usage_tier_switch" | "ai_usage" | "chloe-beta" | "metronome_ai_usage" | "metronome_ai_usage_top_up") | Yes | The type of invoices we generate. |
| `status` | string | Yes | Invoice status: due or paid. |
| `pdf_url` | string | Yes | Authenticated redirect to the invoice PDF. |
| `html_url` | string | Yes | Authenticated redirect to the invoice web page. |
| `amount_formatted` | string | Yes | Human-readable amount; empty when there is no amount. |

### Fetch lead

**Slug:** `CLOSE_MCP_FETCH_LEAD`

Fetch an existing lead (company) by ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the lead to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `url` | string | Yes |  |
| `name` | string | Yes |  |
| `addresses` | array | Yes |  |
| `status_id` | string | Yes |  |
| `summaries` | string | No |  |
| `created_at` | string | Yes |  |
| `created_by` | string | No |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | No |  |
| `description` | string | Yes |  |
| `custom_fields` | array | No | Custom field values set on this object |
| `primary_contact_id` | string | No | ID of the lead's primary contact (its first contact), if any. |

### Fetch lead smart view

**Slug:** `CLOSE_MCP_FETCH_LEAD_SMART_VIEW`

Fetch a lead smart view (saved search) by ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the lead smart view to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | Yes |  |
| `owner_id` | string | Yes |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `description` | string | Yes |  |
| `last_used_at` | string | Yes |  |

### Fetch lead status

**Slug:** `CLOSE_MCP_FETCH_LEAD_STATUS`

Fetch a lead status by ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the lead status to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `label` | string | Yes |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |

### Fetch meeting transcript

**Slug:** `CLOSE_MCP_FETCH_MEETING_TRANSCRIPT`

Fetch a meeting's Notetaker transcript(s) by meeting activity ID.

Returns the meeting's speaker breakdown, summary, and full
speaker-labeled transcript text. Only covers Notetaker (meeting)
transcripts; call transcripts are served by `fetch_call`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The ID of the meeting activity to fetch transcripts for. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lead_id` | string | Yes |  |
| `meeting_id` | string | Yes |  |
| `transcripts` | array | Yes |  |
| `meeting_date` | string | Yes |  |
| `meeting_title` | string | No |  |

### Fetch membership

**Slug:** `CLOSE_MCP_FETCH_MEMBERSHIP`

Fetch one of the organization's members by user id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_id` | string | Yes | The id of the user whose membership to fetch. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `role` | object | Yes |  |
| `user` | object | Yes |  |
| `is_active` | boolean | Yes |  |
| `created_at` | string | Yes |  |
| `membership_id` | string | Yes |  |
| `active_ended_at` | string | Yes | Last time the membership was made inactive, in UTC. |
| `active_started_at` | string | Yes | Last time the membership was made active, in UTC. |

### Fetch note

**Slug:** `CLOSE_MCP_FETCH_NOTE`

Fetch an existing note by ID.

Returns the full note details including title, text, and metadata.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the note to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `note` | string | Yes | Plaintext note content |
| `title` | string | No |  |
| `pinned` | boolean | No |  |
| `lead_id` | string | Yes |  |
| `user_id` | string | No |  |
| `lead_name` | string | No |  |
| `note_html` | string | No | Rich-text (HTML) note content |
| `user_name` | string | No |  |
| `contact_id` | string | No |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `activity_at` | string | Yes |  |
| `contact_name` | string | No |  |
| `has_attachments` | boolean | No |  |

### Fetch opportunity

**Slug:** `CLOSE_MCP_FETCH_OPPORTUNITY`

Fetch a specific opportunity by ID.

Returns the complete opportunity with all its details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the opportunity to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `note` | string | No | Plaintext version of the note. |
| `value` | string | No | Value in cents |
| `lead_id` | string | Yes | ID of the lead this opportunity belongs to |
| `user_id` | string | Yes | ID of the user assigned to this opportunity |
| `close_at` | string | No | Date the opportunity is expected to close (if active), or date the opportunity was won or lost. |
| `lead_name` | string | Yes | Name of the lead this opportunity belongs to |
| `note_html` | string | No | Rich-text HTML version of the note, wrapped in `<body>...</body>`. |
| `status_id` | string | Yes | ID of the opportunity status |
| `user_name` | string | Yes | Name of the user assigned to this opportunity |
| `confidence` | integer | Yes | Confidence percentage (0-100) |
| `contact_id` | string | No | ID of the contact for this opportunity |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `status_type` | string | Yes | Type of the opportunity status |
| `contact_name` | string | Yes | Name of the contact for this opportunity |
| `display_name` | string | Yes |  |
| `status_label` | string | Yes | Label of the opportunity status |
| `value_period` | string ("one_time" | "monthly" | "annual") | Yes | Period for the value |
| `custom_fields` | array | No | Custom field values set on this object |

### Fetch opportunity status

**Slug:** `CLOSE_MCP_FETCH_OPPORTUNITY_STATUS`

Fetch an opportunity status by ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the opportunity status to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `type` | string ("won" | "lost" | "active") | Yes |  |
| `label` | string | Yes |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `pipeline_id` | string | Yes |  |

### Fetch pipeline and opportunity statuses

**Slug:** `CLOSE_MCP_FETCH_PIPELINE_AND_OPPORTUNITY_STATUSES`

Fetch an opportunity pipeline, including its opportunity statuses, by ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the pipeline to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | Yes |  |
| `statuses` | array | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | Yes |  |

### Fetch role

**Slug:** `CLOSE_MCP_FETCH_ROLE`

Fetch one of the organization's roles by id, with every permission it
grants.

Use `list_roles` to resolve a role name to its id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `role_id` | string | Yes | The id of the role to fetch. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | Yes |  |
| `is_built_in` | boolean | Yes | Whether this is one of Close's built-in roles. Distinguishes a built-in from a custom role that shares its name. |
| `permissions` | array | Yes | Every permission the role grants, alphabetically. |

### Fetch sms template

**Slug:** `CLOSE_MCP_FETCH_SMS_TEMPLATE`

Fetch an SMS template by ID.

Returns the complete SMS template with all its details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the SMS template to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | Yes |  |
| `text` | string | Yes |  |
| `is_shared` | boolean | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | Yes |  |
| `is_archived` | boolean | Yes |  |
| `last_used_at` | string | Yes |  |
| `last_used_by` | string | Yes |  |
| `last_used_type` | string | Yes |  |

### Fetch task

**Slug:** `CLOSE_MCP_FETCH_TASK`

Fetch an existing task by ID.

Returns the task's details including the associated lead, contact,
assignee, due date, priority, and completion status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the task to fetch |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique task identifier |
| `text` | string | Yes | Task text/instructions |
| `lead_id` | string | Yes | ID of the lead this task belongs to |
| `due_date` | string | Yes | Due date: datetime if task has specific time, date if date-only, None if task has no due date |
| `priority` | string ("high" | "medium") | Yes | Task priority level |
| `lead_name` | string | Yes | Name of the lead this task belongs to |
| `contact_id` | string | No | ID of the associated contact, if any |
| `created_at` | string | Yes | When the task was created |
| `updated_at` | string | Yes | When the task was last updated |
| `assigned_to` | string | Yes | ID of the user assigned to task |
| `is_complete` | boolean | Yes | Whether task has been completed |
| `contact_name` | string | No | Name of the associated contact, if any |
| `assignee_name` | string | Yes | Full name of the assigned user |

### Find call outcomes

**Slug:** `CLOSE_MCP_FIND_CALL_OUTCOMES`

List all outcomes applicable to calls available in the organization.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find call tasks

**Slug:** `CLOSE_MCP_FIND_CALL_TASKS`

Find call tasks based on various filters.
You can filter by lead, contact, assignee (a user or a voice agent),
completion state, and scheduled/created/updated dates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor, give only when more results are requested. |
| `lead_id` | string | No | Filter by lead ID |
| `due_date` | string | No | Filter by the scheduled call date range |
| `contact_id` | string | No | Filter by contact ID |
| `created_at` | string | No | Filter by call task creation date range |
| `updated_at` | string | No | Filter by call task last updated date range |
| `assigned_to` | string | No | Filter by the ID of the user the call task is assigned to |
| `is_complete` | string | No | Filter by completion status. If not provided, both complete and incomplete call tasks are returned. |
| `agent_config_id` | string | No | Filter by the ID of the voice agent the call task is dispatched to |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Find contact custom fields

**Slug:** `CLOSE_MCP_FIND_CONTACT_CUSTOM_FIELDS`

List all contact custom fields defined for the organization.

Includes both contact-specific fields and shared fields associated
with contacts. Returns each field's ID, name, description, type,
allowed choices (for choice fields), whether multiple values are
accepted, and whether it is a shared field. Useful for deciding which
custom field to read or write when working with contacts.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find custom activities

**Slug:** `CLOSE_MCP_FIND_CUSTOM_ACTIVITIES`

List all active (non-archived) Custom Activity Types in the organization,
along with the custom fields defined on each type.

Call this before creating a workflow with a "custom-activity-event" trigger
so you can look up the correct Custom Activity Type ID.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find custom activity instances

**Slug:** `CLOSE_MCP_FIND_CUSTOM_ACTIVITY_INSTANCES`

Find a lead's custom activity instances based on various filters.

A custom activity instance is an activity of a custom activity type,
holding the custom field values defined by that type. Always scoped
to a single lead; optionally filter by attributed user, one or more
custom activity types, or activity date. Results are sorted by most
recent activity first and are cursor-paginated.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor for retrieving the next page |
| `lead_id` | string | Yes | The lead whose custom activity instances to find |
| `user_id` | string | No | Filter custom activity instances by the user they are attributed to (their owner) |
| `activity_at` | string | No | Filter custom activity instances by their activity date range |
| `custom_activity_type_ids` | string | No | Filter by the custom activity types the instances belong to. Provide one or more type IDs to match instances of any of them. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Find custom object instances

**Slug:** `CLOSE_MCP_FIND_CUSTOM_OBJECT_INSTANCES`

Find a lead's custom object instances.

A custom object instance is a record of a custom object type, attached
to a lead and holding the custom field values defined by that type.
Always scoped to a single lead; optionally filter to a single custom
object type. Results are ordered by creation date (oldest first) and
are cursor-paginated.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor for retrieving the next page |
| `lead_id` | string | Yes | The lead whose custom object instances to find |
| `custom_object_type_id` | string | No | Filter to instances of a single custom object type. Use the find_custom_object_types tool to look up the available types. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Find custom object types

**Slug:** `CLOSE_MCP_FIND_CUSTOM_OBJECT_TYPES`

List all custom object types in the organization, along with the
custom fields defined on each type.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find email templates

**Slug:** `CLOSE_MCP_FIND_EMAIL_TEMPLATES`

List or find email templates

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor, give only when more results are requested. |
| `status` | string ("all" | "private" | "sharedWithUser" | "archived") | No | Use all to return all except archived. |
| `name_search` | string | No | Template name case-insensitive contains search |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Find forms

**Slug:** `CLOSE_MCP_FIND_FORMS`

List all web forms in the organization.

Call this before creating a workflow with a "form-submission-event" trigger
so you can look up the correct Form ID.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find groups

**Slug:** `CLOSE_MCP_FIND_GROUPS`

List all groups in the organization.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find invoices

**Slug:** `CLOSE_MCP_FIND_INVOICES`

Find the organization's billing invoices, newest first.

Invoices without a date sort first.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No |  |
| `offset` | integer | No |  |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find lead custom fields

**Slug:** `CLOSE_MCP_FIND_LEAD_CUSTOM_FIELDS`

List all lead custom fields defined for the organization.

Returns each field's ID, name, description, type, allowed choices
(for choice fields), whether multiple values are accepted, and whether
it is a shared field. Useful for deciding which custom field to read
or write when working with leads.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find lead smart views

**Slug:** `CLOSE_MCP_FIND_LEAD_SMART_VIEWS`

List lead smart views (saved searches).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor, give only when more results are requested. |
| `filter` | string ("pinned" | "all") | No | Filter to show only pinned smart views (those shown in the sidebar), or all available smart views. When the user asks about smart views you should filter for pinned smart views unless the user is requesting to see all views or searches by name. |
| `name_search` | string | No | Smart view name case-insensitive contains search. When using name search you should filter by all smart views. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Find lead statuses

**Slug:** `CLOSE_MCP_FIND_LEAD_STATUSES`

List or find lead statuses for the organization

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find meeting outcomes

**Slug:** `CLOSE_MCP_FIND_MEETING_OUTCOMES`

List all outcomes applicable to meetings available in the organization.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find memberships

**Slug:** `CLOSE_MCP_FIND_MEMBERSHIPS`

List the organization's members with each member's role name, whether the
role is built-in or custom, active/inactive status, and join date. Richer
than `org_users` — prefer this unless you only need a name or email.
Most recent members first.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `include_inactive` | boolean | No | If true, also return deactivated members. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find notes

**Slug:** `CLOSE_MCP_FIND_NOTES`

Find notes based on various filters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor for retrieving the next page |
| `lead_id` | string | No | Filter notes by lead ID |
| `user_id` | string | No | Filter notes by the user who created them |
| `contact_id` | string | No | Filter notes by associated contact ID |
| `activity_at` | string | No | Filter notes by activity date range |
| `date_created` | string | No | Filter notes by creation date range |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Find opportunities

**Slug:** `CLOSE_MCP_FIND_OPPORTUNITIES`

Find opportunities by status (active/won/lost), owner, lead, or
close-date range, optionally only those needing attention, sorted by
soonest close, largest value, or highest confidence. Returns each
opportunity with resolved lead, contact, owner, and status names;
cursor-paginated.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor, give only when more results are requested. |
| `lead_id` | string | No |  |
| `sort_by` | string | No | Order the results; this does not filter them. Ordering by closing_soonest still returns far-out deals, so to restrict to a time window (e.g. 'closing soon') also set close_at. |
| `close_at` | string | No | Filter by when the opportunity is expected to close (the won or lost date for closed deals). Use this to answer time-bounded questions such as 'closing soon' or 'closing this month' by passing a date window. Sorting alone does not restrict the range: to only return deals closing within a period, set this filter. |
| `user_ids` | string | No |  |
| `created_at` | string | No |  |
| `status_ids` | string | No |  |
| `updated_at` | string | No |  |
| `status_type` | string | No |  |
| `lead_view_id` | string | No |  |
| `needs_attention` | string | No | Filter by opportunities that may be stalled and need attention. To see why the an opportunity is stalled, direct the user to the opportunities pipeline page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Find opportunity custom fields

**Slug:** `CLOSE_MCP_FIND_OPPORTUNITY_CUSTOM_FIELDS`

List all opportunity custom fields defined for the organization.

Includes both opportunity-specific fields and shared fields associated
with opportunities. Returns each field's ID, name, description, type,
allowed choices (for choice fields), whether multiple values are
accepted, and whether it is a shared field. Useful for deciding which
custom field to read or write when working with opportunities.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find pipelines and opportunity statuses

**Slug:** `CLOSE_MCP_FIND_PIPELINES_AND_OPPORTUNITY_STATUSES`

List all opportunity pipelines and their opportunity statuses in the organization.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find scheduling links

**Slug:** `CLOSE_MCP_FIND_SCHEDULING_LINKS`

List available scheduling links for the user and org.

User-owned personal links come with a URL. Shared links come with a special
template tag. Each can be inserted into generated templates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor. Give only when more results are desired. |
| `name_search` | string | No | Scheduling Link name. Case-insensitive substring search. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Find sms templates

**Slug:** `CLOSE_MCP_FIND_SMS_TEMPLATES`

List or find SMS templates

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor, give only when more results are requested. |
| `status` | string ("all" | "private" | "sharedWithUser" | "archived") | No | Use all to return all except archived. |
| `name_search` | string | No | Template name case-insensitive contains search |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Find tasks

**Slug:** `CLOSE_MCP_FIND_TASKS`

Find tasks based on various filters.
You can filter by lead, assignee, completion state, and due/created/
updated dates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor, give only when more results are requested. |
| `lead_id` | string | No | Filter by lead ID |
| `due_date` | string | No | Filter by task due date range |
| `created_at` | string | No | Filter by task creation date range |
| `updated_at` | string | No | Filter by task last updated date range |
| `assigned_to` | string | No | Filter by the ID of the user the task is assigned to |
| `is_complete` | string | No | Filter by completion status. If not provided, both complete and incomplete tasks are returned. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Find voice agents

**Slug:** `CLOSE_MCP_FIND_VOICE_AGENTS`

List all voice agents configured for the organization. Voice agents are
AI callers that place outbound calls to leads' contacts on the user's
behalf.

Returns each voice agent's ID and name. Use this to find the right
voice agent ID when scheduling a call or assigning a call step in a
workflow.

Users may refer to voice agents as "voice agents", "Chloe", or by their
configured name. When more than one agent exists, pick the most
appropriate one based on the name.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Find workflows

**Slug:** `CLOSE_MCP_FIND_WORKFLOWS`

List or find workflows

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor, give only when more results are requested. |
| `status` | string ("all" | "active" | "paused" | "draft") | No |  |
| `name_search` | string | No | Workflow name case-insensitive contains search |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Get ai credit usage

**Slug:** `CLOSE_MCP_GET_AI_CREDIT_USAGE`

AI credit usage for the billing account, broken down by feature.

Reports total credits used and a per-feature breakdown. Credits
are the billing unit for AI features. Usage covers the whole
billing account, not a single organization. Omit `start`/`end`
for the current billing period; the result's `start`/`end` report
the window actually measured.
Explicit ranges must be timezone-aware and span at most 366 days.
Older ranges may return empty or partial data — zero usage for an
old range does not mean no activity. On a rate-limited error,
retry after `retry_after` seconds.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end` | string | No | End of the period. Timezone-aware; seconds are ignored. Provide both start and end, or neither; omit both for the current billing period. |
| `start` | string | No | Start of the period. Timezone-aware; seconds are ignored. Provide both start and end, or neither; omit both for the current billing period. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end` | string | Yes | End of the measured period: the requested end, or the billing period end if the range was omitted. The queried window is minute-aligned. |
| `start` | string | Yes | Start of the measured period: the requested start, or the billing period start if the range was omitted. The queried window is minute-aligned. |
| `by_feature` | array | Yes |  |
| `total_credits_used` | integer | Yes |  |

### Get billing summary

**Slug:** `CLOSE_MCP_GET_BILLING_SUMMARY`

Billing summary for the organization's billing account.

Reports the subscription plan, billing status with the trial end
date, seat counts, and AI usage availability, tier, and credit
allowance for the current billing cycle. Whether the account is on
trial is `status`, not anything under `ai_usage`. Use
`get_ai_credit_usage` for the credits actually used.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `status` | string ("paying" | "canceled" | "trial" | "trial_expired" | "fake" | "archived") | Yes | Billing status of the account, and the only signal for whether it is on trial: `trial` is an active trial, `trial_expired` a lapsed one, `paying` a converted account. The rest are inactive. AI usage can be blocked during a trial, so this is independent of `ai_usage.availability_status`. |
| `ai_usage` | string | Yes | AI usage availability, tier, and total credit allowance. Null only when the account has no AI usage status record. |
| `plan_name` | string | Yes | Name of the subscription plan. |
| `plan_version` | integer | Yes | Version of the plan lineup the plan belongs to; plans with the same name can differ across versions. |
| `trial_ends_at` | string | Yes | When the trial ends or ended (UTC). Null if the account never had a trial. |
| `free_seat_count` | integer | Yes | Number of seats granted to the account for free and not charged for. |
| `billable_seat_count` | integer | Yes | Number of seats the account is charged for. Excludes free seats and non-billable users. |

### Get fields

**Slug:** `CLOSE_MCP_GET_FIELDS`

Use this tool ONLY to get a list of fields for the aggregation tool.

### Get voice agent overview report

**Slug:** `CLOSE_MCP_GET_VOICE_AGENT_OVERVIEW_REPORT`

Cross-agent rollup for the Voice Agents list page.

Returns one row per **active** agent — agents with completed calls
in `date_range` **or** queued upcoming calls. Cumulative funnel
counts (`answered`, `engaged`, `objective_met`) plus `total_calls`.
`upcoming_calls` is the agent's queued (not yet completed) calls and
is **not** bound by `date_range` — open tasks are open regardless of
when scheduled (so an agent with only upcoming calls still appears).
Use this to compare agents;
for one agent's outcomes, sentiment, or time saved use
`get_voice_agent_performance_report`. For an inventory of all
configured voice agents regardless of activity, use
`find_agent_configs`.

The Voice Agents list (Agents tab) shows all-time stats, so leave
`date_range` at its default (`all_time`) unless the user asks for a
specific window. (The Upcoming and Recent tabs are call lists, not
this rollup — search Calls for those.)

Rows are sorted server-side per the `sort` field (default
`most_calls`); pass a different mode rather than re-sorting in
your reply. Set `reverse=True` to invert (e.g. `sort=most_calls,
reverse=True` for least active first) — necessary to surface the
bottom of the ordering, since `rows` are capped before they reach
you. `truncated` and `total_agent_count` flag in-scope active
agents; `dormant_agent_count` reports in-scope agents with
**neither** completed calls in the date range **nor** queued
upcoming calls (not included in `rows`).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sort` | string ("most_calls" | "agent_name" | "most_recently_used" | "most_answered" | "most_engaged" | "most_objective_met") | No |  |
| `reverse` | boolean | No |  |
| `date_range` | string ("yesterday" | "last_week" | "last_month" | "last_quarter" | "last_year" | "today" | "this_week" | "this_month" | "this_quarter" | "this_year" | "tomorrow" | "next_week" | "next_month" | "next_quarter" | "next_year" | "all_time") | No |  |
| `agent_config_ids` | string | No |  |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `rows` | array | Yes |  |
| `truncated` | boolean | Yes |  |
| `total_agent_count` | integer | Yes |  |
| `dormant_agent_count` | integer | Yes |  |

### Get voice agent performance report

**Slug:** `CLOSE_MCP_GET_VOICE_AGENT_PERFORMANCE_REPORT`

Performance metrics for one voice agent.

Returns the numbers shown on the Performance tab of a Voice Agent
detail page. Passing multiple `agent_config_ids` pools metrics
into a single aggregate (not a per-agent breakdown — for that,
use `get_voice_agent_overview_report`). For per-call drill-down,
search Calls filtered by `agent_config_id`.

When the user is on a Voice Agent page, pull `date_range` from
`page_context.date_range` so the numbers match the UI.

Percentages: `*_pct` is over `total_calls`;
`engaged_over_answered_pct` and `objective_met_over_answered_pct`
are over `answered` (tier-to-tier conversion). For any other
denominator, compute from `*_count`.

`funnel_previous_period_deltas` is null when the date range has
no defined previous period (e.g. `all_time`).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date_range` | string ("yesterday" | "last_week" | "last_month" | "last_quarter" | "last_year" | "today" | "this_week" | "this_month" | "this_quarter" | "this_year" | "tomorrow" | "next_week" | "next_month" | "next_quarter" | "next_year" | "all_time") | No |  |
| `agent_config_ids` | array | Yes |  |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `outcomes` | array | Yes |  |
| `engaged_pct` | number | Yes |  |
| `total_calls` | integer | Yes |  |
| `answered_pct` | number | Yes |  |
| `unique_leads` | integer | Yes |  |
| `engaged_count` | integer | Yes |  |
| `sentiment_avg` | string | Yes |  |
| `answered_count` | integer | Yes |  |
| `objective_met_pct` | number | Yes |  |
| `time_saved_seconds` | integer | Yes |  |
| `objective_met_count` | integer | Yes |  |
| `total_conversations` | integer | Yes |  |
| `sentiment_distribution` | array | Yes |  |
| `engaged_over_answered_pct` | number | Yes |  |
| `funnel_previous_period_deltas` | string | Yes |  |
| `objective_met_over_answered_pct` | number | Yes |  |

### Get voice agents

**Slug:** `CLOSE_MCP_GET_VOICE_AGENTS`

Return detailed configuration for one or more voice agents.

Includes each agent's objective, user instructions, and which skills are
enabled. Use this as the follow-up to `find_voice_agents` once one or
more agent IDs have been selected.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `agent_config_ids` | array | Yes | IDs of the voice agents (AgentConfig) to fetch details for. Up to 30 IDs per call. Use `find_voice_agents` to discover available agent IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Lead search

**Slug:** `CLOSE_MCP_LEAD_SEARCH`

Perform a simple lead search and return the initial set of results.

Use this to retrieve all leads, most recent leads, search leads by
keyword, or filter by lead status and smart view. For more complex
searches use the `search` tool instead.

Leads will be returned by last updated first.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Search lead name or contact name |
| `full_text` | string | No | Full text search |
| `smart_view_id` | string | No | Filter by smart view |
| `lead_status_id` | string | No | Filter by lead status |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `results` | object | Yes |  |
| `close_url` | string | Yes |  |
| `search_id` | string | Yes |  |

### List membership requests

**Slug:** `CLOSE_MCP_LIST_MEMBERSHIP_REQUESTS`

List pending requests to join the current organization.

Each entry includes the requesting user's name and email, the
request id, and when the request was created.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### List roles

**Slug:** `CLOSE_MCP_LIST_ROLES`

List the roles that can be assigned in the organization.

Covers Close's built-in roles plus any custom roles the org defines.
Use this to resolve a role name to its id, or to see which roles
grant organization management access.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Org info

**Slug:** `CLOSE_MCP_ORG_INFO`

Return general information about the organization and the user.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `current_user` | object | Yes |  |
| `current_organization` | object | Yes |  |

### Org users

**Slug:** `CLOSE_MCP_ORG_USERS`

Return active users (memberships) which are part of the current org.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `objects` | array | Yes |  |

### Paginate search

**Slug:** `CLOSE_MCP_PAGINATE_SEARCH`

Paginate a search to retrieve more results.

Provide exactly one of:
- `search_id`: a `share_*` id from a previous search or shared entry, or
- `smart_view_id`: a `save_*` Smart View (saved search) id the user is
  viewing.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor |
| `search_id` | string | No | Shared-entry/search id (share_*) to paginate |
| `smart_view_id` | string | No | Smart View (saved search) id (save_*) to paginate |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | string | No |  |
| `results` | array | Yes |  |
| `next_cursor` | string | No |  |

### Propose voice agent update

**Slug:** `CLOSE_MCP_PROPOSE_VOICE_AGENT_UPDATE`

Propose a voice agent configuration update from natural-language feedback.

This tool does not apply changes to the voice agent. It returns a short
behavioral summary and proposal ID when the requested edit is clear. If the
feedback is ambiguous, it returns clarification questions instead of making
a proposal. Use apply_voice_agent_update with the proposal ID only after
the user approves the proposal.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `feedback` | string | Yes | Natural-language feedback describing how the voice agent should change. |
| `proposal_id` | string | No | Existing proposal ID to refine. Omit when creating a new proposal. |
| `agent_config_id` | string | Yes | ID of the voice agent to update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `status` | string ("proposal" | "clarification") | Yes |  |
| `proposal` | string | No |  |
| `clarification` | string | No |  |

### Schedule voice agent call

**Slug:** `CLOSE_MCP_SCHEDULE_VOICE_AGENT_CALL`

Schedule a voice agent to call a lead's contact.

Creates a call task assigned to the voice agent. The voice agent will
place the call automatically at the scheduled time, or as soon as the
queue picks it up when no time is given.

Use `find_voice_agents` first to discover which voice agents are
available in this organization.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lead_id` | string | Yes | ID of the lead to call. |
| `contact_id` | string | No | Optional contact to call. If omitted, the first contact on the lead that has a phone number will be selected. |
| `scheduled_at` | string | No | When the call should be made. ISO 8601 datetime, timezone-aware. If omitted, the call is scheduled to run as soon as the voice agent queue picks it up (ASAP). |
| `agent_config_id` | string | Yes | ID of the voice agent (AgentConfig) that should make the call. Use `find_voice_agents` to discover available agents. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the created call task. |
| `lead_id` | string | Yes |  |
| `contact_id` | string | Yes |  |
| `scheduled_at` | string | Yes |  |
| `agent_config_id` | string | Yes |  |

### Search

**Slug:** `CLOSE_MCP_SEARCH`

Perform a natural language search for leads or contacts.

If a more specific search tool (like lead_search or activity_search)
satisfies the request, use that tool instead.

You can reference related objects like activities (such as calls, emails,
meetings, notes, custom activities, etc.), opportunities, tasks as long as
they are part of a lead query.

Example queries:

- leads not contacted in the past week
- leads assigned to me with uncompleted tasks
- leads with an active opportunity over $500
- contacts with CTO title

Each returned result will contain a title label, preview text, object ID,
and URL.

The initial set of results, total count of all results, and a URL to open
the results in Close is returned. To retrieve more results, use the
returned cursor and call the paginate_search tool using the cursor and
search ID returned in this response.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes |  |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes |  |
| `count` | string | No |  |
| `status` | string ("partial" | "success") | Yes |  |
| `results` | array | Yes |  |
| `notes_md` | string | No |  |
| `close_url` | string | Yes |  |
| `search_id` | string | Yes |  |
| `next_cursor` | string | No |  |

### Update call task

**Slug:** `CLOSE_MCP_UPDATE_CALL_TASK`

Update a call task.

Only fields that are provided will be updated. Reassigning to a user or
voice agent (agent_config_id) affects only this task. Completing a call
task also completes every sibling task sharing its deduplication key.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The ID of the call task to update. |
| `text` | string | No | Updated call task text. |
| `due_date` | string | No | Updated due date or datetime for the call task. Can be a date (YYYY-MM-DD) or datetime (ISO 8601). |
| `resolution` | string | No | Resolution to set when completing the call task, e.g. 'skipped'. |
| `assigned_to` | string | No | Reassign the call task to this user. Mutually exclusive with agent_config_id. |
| `is_complete` | string | No | Mark the call task as complete (true) or reopen it (false). Completing a call task also completes every sibling task sharing its deduplication key. |
| `agent_config_id` | string | No | Reassign (dispatch) the call task to this voice agent. Mutually exclusive with assigned_to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `text` | string | No | Call task text/instructions |
| `is_new` | boolean | Yes |  |
| `call_id` | string | No | ID of the associated Call activity, if any |
| `lead_id` | string | Yes | ID of the lead this call task belongs to |
| `due_date` | string | Yes | Date and time of the scheduled call (ISO 8601) |
| `lead_name` | string | Yes | Name of the lead this call task belongs to |
| `contact_id` | string | Yes | ID of the associated contact |
| `created_at` | string | Yes |  |
| `resolution` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `assigned_to` | string | No | ID of the user assigned to this call task (None when assigned to an agent) |
| `is_complete` | boolean | Yes | Whether the call task has been completed |
| `contact_name` | string | Yes | Name of the associated contact |
| `assignee_name` | string | No | Full name of the assigned user (None when assigned to an agent) |
| `agent_config_id` | string | No | ID of the voice agent config (non-null when assigned to a voice agent) |
| `agent_config_name` | string | No | Name of the voice agent (non-null when assigned to a voice agent) |
| `deduplication_key` | string | Yes |  |

### Update contact

**Slug:** `CLOSE_MCP_UPDATE_CONTACT`

Update an existing contact.

You can update a contact's name, title, email addresses, phone numbers, and URLs.
Only fields that are provided will be updated.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the contact to update |
| `name` | string | No | Name of the contact |
| `urls` | string | No | When providing this field, you must provide the full updated list of URLs for the contact. |
| `title` | string | No | Job title of the contact |
| `emails` | string | No | When providing this field, you must provide the full updated list of email addresses for the contact. |
| `phones` | string | No | When providing this field, you must provide the full updated list of phone numbers for the contact. |
| `custom_fields` | array | No | Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | No |  |
| `urls` | array | No |  |
| `title` | string | No |  |
| `emails` | array | No |  |
| `phones` | array | No |  |
| `lead_id` | string | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | No |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | No |  |
| `display_name` | string | Yes |  |
| `custom_fields` | array | No | Custom field values set on this object |

### Update custom activity instance

**Slug:** `CLOSE_MCP_UPDATE_CUSTOM_ACTIVITY_INSTANCE`

Update an existing custom activity instance.

A custom activity instance is an activity of a custom activity type,
holding the custom field values defined by that type.

Only fields that are provided will be updated. For custom fields, only
the custom fields included are modified; pass null to clear one. Pass
'clear' for contact_id to detach the contact.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the custom activity instance to update |
| `pinned` | string | No | Whether to pin the custom activity to the top of the lead's timeline |
| `status` | string | No | New status of the custom activity. Publishing a draft validates required custom fields; leave unset to keep the current status. |
| `contact_id` | string | No | ID of the contact to associate with the custom activity; must belong to the same lead. Pass 'clear' to remove the existing contact. |
| `activity_at` | string | No | When the custom activity occurred |
| `custom_fields` | array | No | Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the custom activity instance |
| `pinned` | boolean | Yes | Whether the custom activity is pinned to the top of the lead's timeline |
| `status` | string ("draft" | "published") | Yes | Whether the custom activity is published or draft; draft instances skip required custom-field validation |
| `lead_id` | string | Yes | ID of the lead this custom activity belongs to |
| `user_id` | string | No | ID of the user the custom activity is attributed to (its owner; may differ from the creator) |
| `lead_name` | string | No | Name of the lead this custom activity belongs to |
| `pinned_at` | string | No | When the custom activity was pinned, or null if it is not pinned |
| `user_name` | string | No | Full name of the user the custom activity is attributed to |
| `contact_id` | string | No | ID of the contact on the lead this custom activity is associated with, if any |
| `created_at` | string | Yes | When the custom activity was created |
| `created_by` | string | No | ID of the user who created the custom activity |
| `updated_at` | string | Yes | When the custom activity was last updated |
| `updated_by` | string | No | ID of the user who last updated the custom activity |
| `activity_at` | string | Yes | When the activity occurred; may be backdated and differ from the creation time |
| `contact_name` | string | No | Name of the associated contact, if any |
| `custom_fields` | array | No | Custom field values set on this object |
| `created_by_name` | string | No | Full name of the user who created the custom activity |
| `updated_by_name` | string | No | Full name of the user who last updated the custom activity |
| `last_published_at` | string | No | When the custom activity was last published, or null if it has only ever been a draft |
| `custom_activity_type_id` | string | Yes | ID of the custom activity type that defines this instance's shape and custom fields |
| `custom_activity_type_name` | string | No | Name of the custom activity type that defines this instance's shape and custom fields |

### Update custom object instance

**Slug:** `CLOSE_MCP_UPDATE_CUSTOM_OBJECT_INSTANCE`

Update an existing custom object instance.

A custom object instance is a record of a custom object type, attached
to a lead and holding the custom field values defined by that type.

Only fields that are provided will be updated. For custom fields, only
the custom fields included are modified; pass null to clear one.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the custom object instance to update |
| `name` | string | No | New display name for the custom object instance; leave unset to keep the current name. |
| `custom_fields` | array | No | Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the custom object instance |
| `name` | string | No | Display name of the custom object instance |
| `lead_id` | string | Yes | ID of the lead this custom object belongs to |
| `lead_name` | string | No | Name of the lead this custom object belongs to |
| `created_at` | string | Yes | When the custom object was created |
| `created_by` | string | No | ID of the user who created the custom object |
| `updated_at` | string | Yes | When the custom object was last updated |
| `updated_by` | string | No | ID of the user who last updated the custom object |
| `custom_fields` | array | No | Custom field values set on this object |
| `created_by_name` | string | No | Full name of the user who created the custom object |
| `updated_by_name` | string | No | Full name of the user who last updated the custom object |
| `custom_object_type_id` | string | Yes | ID of the custom object type that defines this instance's shape and custom fields |
| `custom_object_type_name` | string | No | Name of the custom object type this instance belongs to |

### Update draft email

**Slug:** `CLOSE_MCP_UPDATE_DRAFT_EMAIL`

Update an existing draft email.

Only draft emails can be updated; sent or scheduled emails are rejected.
Only fields that are provided are changed. When the body is replaced the
sender's saved email signature is appended again. This never sends the
email.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cc` | string | No | List of CC email addresses |
| `id` | string | Yes | ID of the draft email to update |
| `to` | string | No | List of recipient email addresses |
| `bcc` | string | No | List of BCC email addresses |
| `sender` | string | No | Email address of a connected sending identity, including aliases. Must match an available sender for the current user. |
| `subject` | string | No | Subject line of the email |
| `body_html` | string | No | Draft body as Close rich text (HTML). Wrap the whole content in a single <body> tag and put each line/paragraph in a block-level tag. Supported tags include <p>, <h1>-<h6>, <ul>/<ol> with <li>, <blockquote>, <hr>, <a href=...>, <br>, and inline formatting <strong>/<b>, <em>/<i>, <u>, <s>, <code>, <span>. Escape literal ampersands as '&amp;'. Example: <body><p>Hi <strong>Jane</strong>,</p><p>Following up on our call.</p></body>. Do not include a signature block (name, title, company, contact details); the sender's saved email signature is appended automatically. A short closing line such as 'Best,' is fine. |
| `body_text` | string | No | Plaintext body content. Prefer body_html; if only one of body_html/body_text is provided the other is derived automatically. |
| `contact_id` | string | No | ID of the contact this draft email is addressed to |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cc` | array | No |  |
| `id` | string | Yes |  |
| `to` | array | No |  |
| `bcc` | array | No |  |
| `sender` | string | No |  |
| `status` | string | Yes |  |
| `lead_id` | string | No |  |
| `subject` | string | No |  |
| `user_id` | string | No |  |
| `body_html` | string | No | Rich-text (HTML) body content |
| `body_text` | string | No | Plaintext body content |
| `contact_id` | string | No |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |

### Update email template

**Slug:** `CLOSE_MCP_UPDATE_EMAIL_TEMPLATE`

Update an existing email template.

Only fields that are provided and not None will be updated.

Handling of attachments and unsubscribe links via this tool is currently unsupported.

Email template body should be HTML formatted.

Use template tags as placeholders, for example:
{{ organization.name }} to refer to the sender's organization name.
{{ user.first_name }} {{ user.last_name }} {{ user.email }} {{ user.phone }} to refer to the user sending the email.
{{ lead.display_name }} to refer to the lead name (recipient's name/company).
{{ contact.first_name }} {{ contact.last_name }} to refer to the recipient.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cc` | string | No |  |
| `id` | string | Yes | ID of the email template to update |
| `bcc` | string | No |  |
| `body` | string | No |  |
| `name` | string | No |  |
| `subject` | string | No |  |
| `is_shared` | string | No |  |
| `is_archived` | string | No |  |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cc` | array | Yes |  |
| `id` | string | Yes |  |
| `bcc` | array | Yes |  |
| `body` | string | Yes |  |
| `name` | string | Yes |  |
| `subject` | string | Yes |  |
| `is_shared` | boolean | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | Yes |  |
| `is_archived` | boolean | Yes |  |
| `last_used_at` | string | Yes |  |
| `last_used_by` | string | Yes |  |
| `last_used_type` | string | Yes |  |

### Update lead

**Slug:** `CLOSE_MCP_UPDATE_LEAD`

Update an existing lead (company).

Only fields that are provided and not None will be updated.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the lead to update |
| `url` | string | No | URL of the lead's website |
| `name` | string | No | Name of the lead |
| `status_id` | string | No | ID of the lead status |
| `description` | string | No | Description of the lead |
| `custom_fields` | array | No | Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `url` | string | Yes |  |
| `name` | string | Yes |  |
| `addresses` | array | Yes |  |
| `status_id` | string | Yes |  |
| `summaries` | string | No |  |
| `created_at` | string | Yes |  |
| `created_by` | string | No |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | No |  |
| `description` | string | Yes |  |
| `custom_fields` | array | No | Custom field values set on this object |
| `primary_contact_id` | string | No | ID of the lead's primary contact (its first contact), if any. |

### Update lead smart view

**Slug:** `CLOSE_MCP_UPDATE_LEAD_SMART_VIEW`

Update a lead smart view (saved search).

Only fields that are provided and not None will be updated.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the lead smart view to update |
| `name` | string | No | New name for the smart view |
| `description` | string | No | New description for the smart view |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | Yes |  |
| `owner_id` | string | Yes |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `description` | string | Yes |  |
| `last_used_at` | string | Yes |  |

### Update lead status

**Slug:** `CLOSE_MCP_UPDATE_LEAD_STATUS`

Update the label of an existing lead status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the lead status to update |
| `label` | string | Yes | New label for the lead status |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `label` | string | Yes |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |

### Update note

**Slug:** `CLOSE_MCP_UPDATE_NOTE`

Update an existing note.

Only fields that are provided will be updated. Note content is
provided as rich text (HTML) via note_html; the plaintext note is
automatically derived.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the note to update |
| `title` | string | No | Title of the note. Pass an empty string to remove the existing title. |
| `pinned` | string | No | Whether to pin the note to the top of the lead |
| `note_html` | string | No | Updated note content as Close rich text (HTML). Must be a valid Close rich-text document: wrap the whole content in a single <body> tag and put each line/paragraph in a block-level tag. Supported tags include <p>, <h1>-<h6>, <ul>/<ol> with <li>, <blockquote>, <hr>, <a href=...>, <br>, and inline formatting <strong>/<b>, <em>/<i>, <u>, <s>, <code>, <span>. Escape literal ampersands as '&amp;'. Example: <body><p>Spoke with <strong>Jane</strong> about pricing.</p><ul><li>Wants a demo</li><li>Budget approved</li></ul></body> |
| `contact_id` | string | No | ID of the contact to associate with the note. Pass 'clear' to remove the existing contact. |
| `activity_at` | string | No | When the note activity occurred |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `note` | string | Yes | Plaintext note content |
| `title` | string | No |  |
| `pinned` | boolean | No |  |
| `lead_id` | string | Yes |  |
| `user_id` | string | No |  |
| `lead_name` | string | No |  |
| `note_html` | string | No | Rich-text (HTML) note content |
| `user_name` | string | No |  |
| `contact_id` | string | No |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `activity_at` | string | Yes |  |
| `contact_name` | string | No |  |
| `has_attachments` | boolean | No |  |

### Update opportunity

**Slug:** `CLOSE_MCP_UPDATE_OPPORTUNITY`

Update an existing opportunity.

Only fields that are provided will be updated.
The value should be specified in cents (e.g., $100.00 = 10000).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the opportunity to update |
| `note` | string | No | Plaintext version of the note. |
| `value` | string | No | Value in cents. Pass clear to clear an existing value. |
| `user_id` | string | No | ID of the user assigned to this opportunity |
| `close_at` | string | No | Expected close date. Pass clear to clear an existing date. |
| `note_html` | string | No | Rich-text HTML version of the note, wrapped in `<body>...</body>` (e.g. `<body><p>text with <strong>bold</strong></p></body>`). When set, `note` is automatically derived from it, overriding any `note` value passed in the same request. |
| `status_id` | string | No | ID of the opportunity status |
| `confidence` | string | No | Confidence percentage (0-100) |
| `contact_id` | string | No | ID of the primary contact for this opportunity |
| `value_period` | string | No | Period for the value |
| `custom_fields` | array | No | Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `note` | string | No | Plaintext version of the note. |
| `value` | string | No | Value in cents |
| `lead_id` | string | Yes | ID of the lead this opportunity belongs to |
| `user_id` | string | Yes | ID of the user assigned to this opportunity |
| `close_at` | string | No | Date the opportunity is expected to close (if active), or date the opportunity was won or lost. |
| `lead_name` | string | Yes | Name of the lead this opportunity belongs to |
| `note_html` | string | No | Rich-text HTML version of the note, wrapped in `<body>...</body>`. |
| `status_id` | string | Yes | ID of the opportunity status |
| `user_name` | string | Yes | Name of the user assigned to this opportunity |
| `confidence` | integer | Yes | Confidence percentage (0-100) |
| `contact_id` | string | No | ID of the contact for this opportunity |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `status_type` | string | Yes | Type of the opportunity status |
| `contact_name` | string | Yes | Name of the contact for this opportunity |
| `display_name` | string | Yes |  |
| `status_label` | string | Yes | Label of the opportunity status |
| `value_period` | string ("one_time" | "monthly" | "annual") | Yes | Period for the value |
| `custom_fields` | array | No | Custom field values set on this object |

### Update opportunity status tool

**Slug:** `CLOSE_MCP_UPDATE_OPPORTUNITY_STATUS_TOOL`

Update the label of an existing opportunity status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the opportunity status to update |
| `label` | string | Yes | New label for the opportunity status |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `type` | string ("won" | "lost" | "active") | Yes |  |
| `label` | string | Yes |  |
| `created_at` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `pipeline_id` | string | Yes |  |

### Update pipeline

**Slug:** `CLOSE_MCP_UPDATE_PIPELINE`

Update an existing opportunity pipeline.

Only fields that are provided will be updated.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the pipeline to update |
| `name` | string | No | New name for the pipeline |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | Yes |  |
| `statuses` | array | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | Yes |  |

### Update sms template

**Slug:** `CLOSE_MCP_UPDATE_SMS_TEMPLATE`

Update an existing SMS template.

Only fields that are provided will be updated. Fields that are not provided will remain unchanged.

Handling of attachments via this tool is currently unsupported.

Use template tags as placeholders, for example:
{{ organization.name }} to refer to the sender's organization name.
{{ user.first_name }} {{ user.last_name }} {{ user.email }} {{ user.phone }} to refer to the user sending the message.
{{ lead.display_name }} to refer to the lead name (recipient's name/company).
{{ contact.first_name }} {{ contact.last_name }} to refer to the recipient.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the SMS template to update |
| `name` | string | No |  |
| `text` | string | No |  |
| `is_shared` | string | No |  |
| `is_archived` | string | No |  |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `name` | string | Yes |  |
| `text` | string | Yes |  |
| `is_shared` | boolean | Yes |  |
| `created_at` | string | Yes |  |
| `created_by` | string | Yes |  |
| `updated_at` | string | Yes |  |
| `updated_by` | string | Yes |  |
| `is_archived` | boolean | Yes |  |
| `last_used_at` | string | Yes |  |
| `last_used_by` | string | Yes |  |
| `last_used_type` | string | Yes |  |

### Update task

**Slug:** `CLOSE_MCP_UPDATE_TASK`

Update an existing task.

Only fields that are provided will be updated. Pass 'clear' for
contact_id or due_date to clear those values.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the task to update |
| `text` | string | No | Updated task description. Cannot be blank. |
| `due_date` | string | No | Due date or datetime for the task. Can be a date (YYYY-MM-DD) or datetime (ISO 8601). Pass 'clear' to make the task dateless (due immediately). |
| `priority` | string | No | Task priority: 'high' or 'medium'. Only set to 'high' if the user explicitly says it's a high priority task. |
| `contact_id` | string | No | ID of the contact associated with this task. Must belong to the task's lead. Pass 'clear' to remove the existing contact. |
| `assigned_to` | string | No | ID of the user to assign the task to. Tasks must always have an assignee, so this cannot be cleared. |
| `is_complete` | string | No | Mark the task as complete (true) or reopen it (false). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique task identifier |
| `text` | string | Yes | Task text/instructions |
| `lead_id` | string | Yes | ID of the lead this task belongs to |
| `due_date` | string | Yes | Due date: datetime if task has specific time, date if date-only, None if task has no due date |
| `priority` | string ("high" | "medium") | Yes | Task priority level |
| `lead_name` | string | Yes | Name of the lead this task belongs to |
| `contact_id` | string | No | ID of the associated contact, if any |
| `created_at` | string | Yes | When the task was created |
| `updated_at` | string | Yes | When the task was last updated |
| `assigned_to` | string | Yes | ID of the user assigned to task |
| `is_complete` | boolean | Yes | Whether task has been completed |
| `contact_name` | string | No | Name of the associated contact, if any |
| `assignee_name` | string | Yes | Full name of the assigned user |
