> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Close MCP server

The Close MCP connector routes your AI agent's tool calls to Close's own MCP server through Scalekit. Each user signs in to Close once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 105 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** CRM & Sales, Communication
**Tools:** 105: 52 read, 38 write, 15 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=CLOSEMCP)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Close MCP connection

   In **AgentKit > Connections**, create a Close MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   Scalekit credentials are available for Close, so you don't need to register an OAuth app.

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'closemcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Close MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'closemcp_customized_builtin_labels',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "closemcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Close MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="closemcp_customized_builtin_labels",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'closemcp_aggregation',
  toolInput: {
    include_types: [],
  },
  connector: 'closemcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="closemcp_aggregation",
    tool_input={
        "include_types": [],
    },
    connection_name="closemcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `closemcp_aggregation`

Aggregation · Read-only

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 leads of fields using the
`get_fields` tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `include_types` (`array`, required): Object types to include in aggregation. Valid values: lead, contact, opportunity, task, email, call, note, meeting, sms, whatsapp, custom_activity, custom_object, sequence_subscription, lead_status_change, opportunity_status_change.
- `aggregations` (`string`, optional): Aggregation specifications to compute. Each item must specify an aggregation_type (e.g. count, sum, average, min, max, median, cardinality, percent_empty, etc.) and most require a field name.
- `display_mode` (`string`, optional): How to display the aggregation results. Determined automatically by default.
- `group_by` (`string`, optional): Reference or enum fields to group by (maximum 2). Use field names returned by the get_fields tool.
- `interval` (`string`, optional): Interval to aggregate by when using date fields. Determined automatically by default.
- `time_buckets` (`string`, optional): Time buckets configuration for grouping results by time period.

Example input: `{"include_types":[]}`

### `closemcp_close_product_knowledge_search`

Close Product Knowledge Search · Read-only

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"

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `query` (`string`, required): Natural language query to search Close product documentation and knowledge. For example: 'How do I set up automated lead assignment?' or 'What are Close API rate limits?'

Example input: `{"query":"<query>"}`

### `closemcp_customized_builtin_labels`

Customized Builtin Labels · Read-only

Return the customized builtin labels.

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_fetch_call`

Fetch Call · Read-only

Fetch a single call activity by ID.

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): The ID of the call to fetch.

Example input: `{"id":"<id>"}`

### `closemcp_fetch_call_task`

Fetch Call Task · Read-only

Fetch a single call task by ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): The ID of the call task to fetch.

Example input: `{"id":"<id>"}`

### `closemcp_fetch_comment`

Close Fetch Comment · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the comment to fetch.

Example input: `{"id":"<id>"}`

### `closemcp_fetch_contact`

Fetch Contact · Read-only

Fetch an existing contact by ID.

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the contact to fetch

Example input: `{"id":"<id>"}`

### `closemcp_fetch_custom_activity_instance`

Fetch Custom Activity Instance · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the custom activity instance to fetch

Example input: `{"id":"<id>"}`

### `closemcp_fetch_custom_object_instance`

Fetch Custom Object Instance · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the custom object instance to fetch

Example input: `{"id":"<id>"}`

### `closemcp_fetch_custom_object_type`

Fetch Custom Object Type · Read-only

Fetch a custom object type by 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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the custom object type to fetch.

Example input: `{"id":"<id>"}`

### `closemcp_fetch_email_template`

Fetch Email Template · Read-only

Fetch an email template by ID.

Returns the complete email template with all its details.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the email template to fetch

Example input: `{"id":"<id>"}`

### `closemcp_fetch_lead`

Close Fetch Lead · Read-only

Fetch an existing lead (company) by ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the lead to fetch

Example input: `{"id":"<id>"}`

### `closemcp_fetch_lead_smart_view`

Close Fetch Lead Smart View · Read-only

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the lead smart view to fetch

Example input: `{"id":"<id>"}`

### `closemcp_fetch_lead_status`

Close Fetch Lead Status · Read-only

Fetch a lead status by ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the lead status to fetch

Example input: `{"id":"<id>"}`

### `closemcp_fetch_meeting_transcript`

Fetch Meeting Transcript · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): The ID of the meeting activity to fetch transcripts for.

Example input: `{"id":"<id>"}`

### `closemcp_fetch_note`

Fetch Note · Read-only

Fetch an existing note by ID.

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the note to fetch

Example input: `{"id":"<id>"}`

### `closemcp_fetch_opportunity`

Fetch Opportunity · Read-only

Fetch a specific opportunity by ID.

Returns the complete opportunity with all its details.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the opportunity to fetch

Example input: `{"id":"<id>"}`

### `closemcp_fetch_opportunity_status`

Fetch Opportunity Status · Read-only

Fetch an opportunity status by ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the opportunity status to fetch

Example input: `{"id":"<id>"}`

### `closemcp_fetch_pipeline_and_opportunity_statuses`

Fetch Pipeline And Opportunity Statuses · Read-only

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the pipeline to fetch.

Example input: `{"id":"<id>"}`

### `closemcp_fetch_sms_template`

Fetch SMS Template · Read-only

Fetch an SMS template by ID.

Returns the complete SMS template with all its details.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the SMS template to fetch

Example input: `{"id":"<id>"}`

### `closemcp_fetch_task`

Close Fetch Task · Read-only

Fetch an existing task by ID.

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): ID of the task to fetch

Example input: `{"id":"<id>"}`

### `closemcp_find_call_outcomes`

Close Find Call Outcomes · Read-only

List all outcomes applicable to calls available in the organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_call_tasks`

Find Call Tasks · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

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

Example input: `{}`

### `closemcp_find_contact_custom_fields`

Close Find Contact Custom Fields · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_custom_activities`

Find Custom Activities · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_custom_activity_instances`

Find Custom Activity Instances · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

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

Example input: `{"lead_id":"<lead_id>"}`

### `closemcp_find_custom_object_instances`

Find Custom Object Instances · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `lead_id` (`string`, required): The lead whose custom object instances to find
- `cursor` (`string`, optional): Pagination cursor for retrieving the next page
- `custom_object_type_id` (`string`, optional): Filter to instances of a single custom object type. Use the find_custom_object_types tool to look up the available types.

Example input: `{"lead_id":"<lead_id>"}`

### `closemcp_find_custom_object_types`

Find Custom Object Types · Read-only

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_email_templates`

Close Find Email Templates · Read-only

List or find email templates

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor, give only when more results are requested.
- `name_search` (`string`, optional): Template name case-insensitive contains search
- `status` (`string`, optional): Use all to return all except archived. One of: `all`, `private`, `sharedWithUser`, `archived`. Default: `all`.

Example input: `{}`

### `closemcp_find_forms`

Find Forms · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_groups`

Close Find Groups · Read-only

List all groups in the organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_lead_custom_fields`

Find Lead Custom Fields · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_lead_smart_views`

Close Find Lead Smart Views · Read-only

List lead smart views (saved searches).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor, give only when more results are requested.
- `filter` (`string`, optional): 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. One of: `pinned`, `all`. Default: `pinned`.
- `name_search` (`string`, optional): Smart view name case-insensitive contains search. When using name search you should filter by all smart views.

Example input: `{}`

### `closemcp_find_lead_statuses`

Close Find Lead Statuses · Read-only

List or find lead statuses for the organization

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_meeting_outcomes`

Close Find Meeting Outcomes · Read-only

List all outcomes applicable to meetings available in the organization.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_notes`

Find Notes · Read-only

Find notes based on various filters.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `activity_at` (`string`, optional): Filter notes by activity date range
- `contact_id` (`string`, optional): Filter notes by associated contact ID
- `cursor` (`string`, optional): Pagination cursor for retrieving the next page
- `date_created` (`string`, optional): Filter notes by creation date range
- `lead_id` (`string`, optional): Filter notes by lead ID
- `user_id` (`string`, optional): Filter notes by the user who created them

Example input: `{}`

### `closemcp_find_opportunities`

Find Opportunities · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `close_at` (`string`, optional): Filter opportunities by expected close date range
- `created_at` (`string`, optional): Filter by opportunity creation date range
- `cursor` (`string`, optional): Pagination cursor, give only when more results are requested.
- `lead_id` (`string`, optional): Filter by the ID of the lead the opportunities belong to
- `lead_view_id` (`string`, optional): Filter by a lead smart view ID
- `needs_attention` (`string`, optional): Filter by opportunities that may be stalled and need attention. To see why an opportunity is stalled, direct the user to the opportunities pipeline page.
- `sort_by` (`string`, optional): Sort order: 'closing_soonest', 'largest_value', or 'largest_confidence'
- `status_ids` (`string`, optional): Filter by specific opportunity status IDs
- `status_type` (`string`, optional): Filter by status type: 'won', 'lost', or 'active'
- `updated_at` (`string`, optional): Filter by opportunity last updated date range
- `user_ids` (`string`, optional): Filter by owner user IDs

Example input: `{}`

### `closemcp_find_opportunity_custom_fields`

Close Find Opportunity Custom Fields · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_pipelines_and_opportunity_statuses`

Find Pipelines And Opportunity Statuses · Read-only

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_scheduling_links`

Close Find Scheduling Links · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Give only when more results are desired.
- `name_search` (`string`, optional): Scheduling Link name. Case-insensitive substring search.

Example input: `{}`

### `closemcp_find_sms_templates`

Find SMS Templates · Read-only

List or find SMS templates

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor, give only when more results are requested.
- `name_search` (`string`, optional): Template name case-insensitive contains search
- `status` (`string`, optional): Use all to return all except archived. One of: `all`, `private`, `sharedWithUser`, `archived`. Default: `all`.

Example input: `{}`

### `closemcp_find_tasks`

Close Find Tasks · Read-only

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

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

Example input: `{}`

### `closemcp_find_voice_agents`

Close Find Voice Agents · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_find_workflows`

Find Workflows · Read-only

List or find workflows

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor. Provide only when more results are requested from a previous response.
- `name_search` (`string`, optional): Workflow name case-insensitive contains search. Returns workflows whose name contains this string.
- `status` (`string`, optional): Filter workflows by status. Use 'all' to return all workflows regardless of status. One of: `all`, `active`, `paused`, `draft`. Default: `all`.

Example input: `{}`

### `closemcp_get_fields`

Get Fields · Read-only

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_get_voice_agent_overview_report`

Close Get Voice Agent Overview Report · Read-only

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`).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `agent_config_ids` (`string`, optional): Optional list of voice agent IDs to filter the report to. If omitted, all active agents are included.
- `date_range` (`string`, optional): Time window for the report. Defaults to all_time. One of: `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`. Default: `all_time`.
- `reverse` (`boolean`, optional): Whether to reverse the sort order. Set to true to invert (e.g. least active first when sort=most_calls). Default: `false`.
- `sort` (`string`, optional): Sort order for the rows. Defaults to most_calls. One of: `most_calls`, `agent_name`, `most_recently_used`, `most_answered`, `most_engaged`, `most_objective_met`. Default: `most_calls`.

Example input: `{}`

### `closemcp_get_voice_agent_performance_report`

Close Get Voice Agent Performance Report · Read-only

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`).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `agent_config_ids` (`array`, required): IDs of the voice agents to get performance metrics for. Use `find_voice_agents` to discover available agent IDs.
- `date_range` (`string`, optional): Time window for the report. Defaults to all_time. One of: `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`. Default: `all_time`.

Example input: `{"agent_config_ids":[]}`

### `closemcp_get_voice_agents`

Close Get Voice Agents · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `agent_config_ids` (`array`, required): 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.

Example input: `{"agent_config_ids":[]}`

### `closemcp_org_info`

Close Org Info · Read-only

Return general information about the organization and the user.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_org_users`

Close Org Users · Read-only

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

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `closemcp_paginate_search`

Paginate Search · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor from a previous search response
- `search_id` (`string`, optional): Shared-entry/search id (share_*) to paginate. Provide exactly one of search_id or smart_view_id.
- `smart_view_id` (`string`, optional): Smart View (saved search) id (save_*) to paginate. Provide exactly one of search_id or smart_view_id.

Example input: `{}`

### `closemcp_search`

Search · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `query` (`string`, required): Natural language search query. For example: 'leads not contacted in the past week', 'leads with an active opportunity over $500', or 'contacts with CTO title'.

Example input: `{"query":"<query>"}`

### `closemcp_activity_search`

Activity Search · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `activity_at` (`string`, optional): Filter activities by the date/time the activity occurred.
- `activity_types` (`string`, optional): Filter by activity types. Valid values include activity.call, activity.email, activity.note, activity.meeting, activity.sms, activity.custom_activity, and others.
- `agent_config_ids` (`string`, optional): 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.
- `call_status` (`string`, optional): 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`, optional): Filter by contact IDs. Only activities associated with these contacts will be returned.
- `cursor` (`string`, optional): Pagination cursor. Provide only when more results are requested from a previous response.
- `direction` (`string`, optional): 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.
- `lead_ids` (`string`, optional): Filter by lead IDs. Only activities on these leads will be returned.
- `lead_smart_view_ids` (`string`, optional): Filter by lead smart view IDs. Only activities on leads matching these smart views will be returned.
- `user_ids` (`string`, optional): Filter by user IDs. Only activities created by these users will be returned.

Example input: `{}`

### `closemcp_apply_voice_agent_update`

Close Apply Voice Agent Update · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `proposal_id` (`string`, required): Proposal ID returned by propose_voice_agent_update.

Example input: `{"proposal_id":"<proposal_id>"}`

### `closemcp_create_address`

Close Create Address · Write

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

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `address_1` (`string`, required): Address line 1 (street address)
- `city` (`string`, required): City
- `country` (`string`, required): Country code in ISO 3166-1 alpha-2 format (e.g. US, GB, DE)
- `label` (`string`, required): Label for the address. One of: business, mailing, other.
- `lead_id` (`string`, required): ID of the lead to add the address to
- `state` (`string`, required): State or province
- `zipcode` (`string`, required): ZIP or postal code
- `address_2` (`string`, optional): Address line 2 (suite, unit, etc.)

Example input: `{"address_1":"<address_1>","city":"<city>","country":"<country>","label":"<label>","lead_id":"<lead_id>","state":"<state>","zipcode":"<zipcode>"}`

### `closemcp_create_call_task`

Close Create Call Task · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_id` (`string`, required): ID of the contact to call. Must belong to the specified lead.
- `lead_id` (`string`, required): ID of the lead this call task belongs to
- `agent_config_id` (`string`, optional): ID of the voice agent (Chloe) to dispatch the call task to. Mutually exclusive with assigned_to.
- `assigned_to` (`string`, optional): ID of the user to assign the call task to. Mutually exclusive with agent_config_id.
- `due_date` (`string`, optional): 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.
- `text` (`string`, optional): The call task description/instructions.

Example input: `{"contact_id":"<contact_id>","lead_id":"<lead_id>"}`

### `closemcp_create_comment`

Close Create Comment · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `body` (`string`, required): 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 , <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!
</body>
- `object_id` (`string`, required): 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.

Example input: `{"body":"<body>","object_id":"lead_xxx"}`

### `closemcp_create_contact`

Close Create Contact · Write

Create a new contact for a lead.

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

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `lead_id` (`string`, required): ID of the lead this contact belongs to
- `custom_fields` (`array`, optional): Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged.
- `emails` (`string`, optional): List of email addresses for the contact. Each entry needs a type (office, mobile, home, direct, fax, url, other) and an email address.
- `name` (`string`, optional): Full name of the contact
- `phones` (`string`, optional): List of phone numbers for the contact. Each entry needs a type (office, mobile, home, direct, fax, url, other) and a phone number in international format (e.g. +16505551234).
- `title` (`string`, optional): Job title of the contact (e.g. CEO, VP of Sales)
- `urls` (`string`, optional): List of URLs for the contact (e.g. LinkedIn, personal website). Each entry needs a type and a URL.

Example input: `{"lead_id":"<lead_id>"}`

### `closemcp_create_custom_activity_instance`

Create Custom Activity Instance · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

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

Example input: `{"custom_activity_type_id":"<custom_activity_type_id>","lead_id":"<lead_id>"}`

### `closemcp_create_custom_object_instance`

Create Custom Object Instance · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `custom_object_type_id` (`string`, required): 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.
- `lead_id` (`string`, required): ID of the lead this custom object belongs to
- `name` (`string`, required): Display name for the custom object instance
- `custom_fields` (`string`, optional): Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged.

Example input: `{"custom_object_type_id":"<custom_object_type_id>","lead_id":"<lead_id>","name":"<name>"}`

### `closemcp_create_draft_email`

Create Draft Email · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `lead_id` (`string`, required): ID of the lead this draft email belongs to
- `bcc` (`string`, optional): List of BCC email addresses
- `body_html` (`string`, optional): 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 , <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>,
Following up on our call.
</body>
- `body_text` (`string`, optional): Plaintext body content. Prefer body_html; if only one of body_html/body_text is provided the other is derived automatically.
- `cc` (`string`, optional): List of CC email addresses
- `contact_id` (`string`, optional): ID of the contact this draft email is addressed to
- `sender` (`string`, optional): Sender email address for the draft
- `subject` (`string`, optional): Subject line of the email
- `to` (`string`, optional): List of recipient email addresses

Example input: `{"lead_id":"<lead_id>"}`

### `closemcp_create_email_template`

Create Email Template · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `body` (`string`, required): HTML body of the email template. Supports template tags like {{ organization.name }}, {{ user.first_name }}, {{ lead.display_name }}, {{ contact.first_name }}
- `name` (`string`, required): Name of the email template
- `subject` (`string`, required): Subject line of the email template
- `bcc` (`string`, optional): List of BCC email addresses
- `cc` (`string`, optional): List of CC email addresses
- `is_shared` (`boolean`, optional): Share this template with the organization (required for use in workflows). Default: `false`.

Example input: `{"body":"<body>","name":"<name>","subject":"<subject>"}`

### `closemcp_create_lead`

Create Lead · Write

Create a new lead (company).

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

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `custom_fields` (`array`, optional): Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged.
- `description` (`string`, optional): Description of the lead
- `name` (`string`, optional): Name of the lead
- `status_id` (`string`, optional): ID of the lead status. Use find_lead_statuses to get available status IDs.
- `url` (`string`, optional): URL of the lead's website

Example input: `{}`

### `closemcp_create_lead_status`

Close Create Lead Status · Write

Create a new lead status.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `label` (`string`, required): Label for the lead status

Example input: `{"label":"<label>"}`

### `closemcp_create_note`

Create Note · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `lead_id` (`string`, required): ID of the lead this note belongs to
- `activity_at` (`string`, optional): When the note activity occurred (ISO 8601 date-time)
- `contact_id` (`string`, optional): ID of the contact to associate with the note
- `note` (`string`, optional): Plaintext note content. At least one of note or note_html must be provided.
- `note_html` (`string`, optional): Rich-text (HTML) note content. At least one of note or note_html must be provided.
- `pinned` (`string`, optional): Whether to pin the note to the top of the lead
- `title` (`string`, optional): Title of the note
- `user_id` (`string`, optional): ID of the user to attribute the note to (defaults to caller)

Example input: `{"lead_id":"<lead_id>"}`

### `closemcp_create_opportunity`

Create Opportunity · Write

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).

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `lead_id` (`string`, required): ID of the lead this opportunity belongs to
- `status_id` (`string`, required): ID of the opportunity status. Use find_pipelines_and_opportunity_statuses to list valid IDs.
- `close_at` (`string`, optional): Expected close date in ISO 8601 format
- `confidence` (`string`, optional): Confidence percentage (0-100) that the opportunity will close
- `contact_id` (`string`, optional): ID of the primary contact for this opportunity
- `custom_fields` (`array`, optional): Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged.
- `note` (`string`, optional): Plaintext note to attach to the opportunity
- `note_html` (`string`, optional): Rich-text HTML version of the note, wrapped in `<body>...</body>`. When set, `note` is automatically derived from it.
- `user_id` (`string`, optional): ID of the user assigned to this opportunity. Defaults to the current user.
- `value` (`string`, optional): Monetary value of the opportunity in cents (e.g., $100.00 = 10000)
- `value_period` (`string`, optional): Recurrence period for the value: 'one_time', 'monthly', or 'annual'

Example input: `{"lead_id":"<lead_id>","status_id":"<status_id>"}`

### `closemcp_create_opportunity_status_tool`

Create Opportunity Status Tool · Write

Create a new opportunity status.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `label` (`string`, required): Label for the opportunity status
- `pipeline_id` (`string`, required): ID of the pipeline to add the status to
- `type` (`string`, required): Type of the opportunity status. One of: 'won', 'lost', 'active'. One of: `won`, `lost`, `active`.

Example input: `{"label":"<label>","pipeline_id":"<pipeline_id>","type":"won"}`

### `closemcp_create_pipeline`

Create Pipeline · Write

Create a new opportunity pipeline.

Use the create_opportunity_status tool to add statuses to the pipeline.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the pipeline.

Example input: `{"name":"<name>"}`

### `closemcp_create_sms_template`

Create SMS Template · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the SMS template
- `text` (`string`, required): Text content of the SMS template. Supports template tags like {{ organization.name }}, {{ user.first_name }}, {{ lead.display_name }}, {{ contact.first_name }}
- `is_shared` (`boolean`, optional): Share this template with the organization (required for use in workflows). Default: `false`.

Example input: `{"name":"<name>","text":"<text>"}`

### `closemcp_create_task`

Close Create Task · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `lead_id` (`string`, required): ID of the lead this task belongs to
- `text` (`string`, required): The task description
- `assigned_to` (`string`, optional): ID of the user to assign the task to. Defaults to the current user if not provided.
- `contact_id` (`string`, optional): ID of the contact associated with this task. Must belong to the specified lead.
- `due_date` (`string`, optional): 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`, optional): Task priority: 'high' or 'medium'. Defaults to 'medium'. Only set to high if the user explicitly says it's a high priority task.
- `send_notification` (`boolean`, optional): Send an email notification to the assigned user. Assume notifications should be sent unless the user explicitly tells you not to. Default: `true`.

Example input: `{"lead_id":"<lead_id>","text":"<text>"}`

### `closemcp_create_workflow`

Create Workflow · Write

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

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Workflow name. Must be unique.
- `steps` (`array`, required): Steps in the workflow. The `step_type` of each step has to exactly match one of the defined types in the mapping.
- `trigger` (`string`, optional): 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.

Example input: `{"name":"<name>","steps":[]}`

### `closemcp_enrich_field`

Close Enrich Field · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `field_id` (`string`, required): The ID of the field to enrich. This may be a built-in field name or a custom field ID.
- `object_id` (`string`, required): The ID of the lead or contact to enrich (e.g. 'lead_xxx' or 'cont_xxx').
- `object_type` (`string`, required): The type of object whose field should be enriched. One of: `lead`, `contact`.
- `overwrite_existing_value` (`boolean`, optional): Whether to overwrite an existing value. When False, the field is only written if it is currently empty. Default: `false`.

Example input: `{"field_id":"<field_id>","object_id":"lead_xxx","object_type":"lead"}`

### `closemcp_lead_search`

Lead Search · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `full_text` (`string`, optional): Full text search across lead data
- `lead_status_id` (`string`, optional): Filter by lead status ID
- `name` (`string`, optional): Search lead name or contact name
- `smart_view_id` (`string`, optional): Filter by smart view ID (saved search)

Example input: `{}`

### `closemcp_propose_voice_agent_update`

Close Propose Voice Agent Update · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `agent_config_id` (`string`, required): ID of the voice agent to update.
- `feedback` (`string`, required): Natural-language feedback describing how the voice agent should change.
- `proposal_id` (`string`, optional): Existing proposal ID to refine. Omit when creating a new proposal.

Example input: `{"agent_config_id":"<agent_config_id>","feedback":"<feedback>"}`

### `closemcp_schedule_voice_agent_call`

Close Schedule Voice Agent Call · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `agent_config_id` (`string`, required): ID of the voice agent (AgentConfig) that should make the call. Use `find_voice_agents` to discover available agents.
- `lead_id` (`string`, required): ID of the lead to call.
- `contact_id` (`string`, optional): Optional contact to call. If omitted, the first contact on the lead that has a phone number will be selected.
- `scheduled_at` (`string`, optional): 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).

Example input: `{"agent_config_id":"<agent_config_id>","lead_id":"<lead_id>"}`

### `closemcp_update_call_task`

Update Call Task · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

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

Example input: `{"id":"<id>"}`

### `closemcp_update_contact`

Update Contact · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

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

Example input: `{"id":"<id>"}`

### `closemcp_update_custom_activity_instance`

Update Custom Activity Instance · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

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

Example input: `{"id":"<id>"}`

### `closemcp_update_custom_object_instance`

Update Custom Object Instance · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the custom object instance to update
- `custom_fields` (`string`, optional): Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged.
- `name` (`string`, optional): New display name for the custom object instance; leave unset to keep the current name.

Example input: `{"id":"<id>"}`

### `closemcp_update_draft_email`

Update Draft Email · Write

Update an existing draft email.

Only draft emails can be updated; sent or scheduled emails are rejected.
Only fields that are provided are changed. This never sends the email.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the draft email to update
- `bcc` (`string`, optional): List of BCC email addresses
- `body_html` (`string`, optional): 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 , <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>,
Following up on our call.
</body>
- `body_text` (`string`, optional): Plaintext body content. Prefer body_html; if only one of body_html/body_text is provided the other is derived automatically.
- `cc` (`string`, optional): List of CC email addresses
- `contact_id` (`string`, optional): ID of the contact this draft email is addressed to
- `sender` (`string`, optional): Sender email address for the draft
- `subject` (`string`, optional): Subject line of the email
- `to` (`string`, optional): List of recipient email addresses

Example input: `{"id":"<id>"}`

### `closemcp_update_email_template`

Update Email Template · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the email template to update
- `bcc` (`string`, optional): List of BCC email addresses
- `body` (`string`, optional): HTML body of the email template. Supports template tags like {{ organization.name }}, {{ user.first_name }}, {{ lead.display_name }}, {{ contact.first_name }}
- `cc` (`string`, optional): List of CC email addresses
- `is_archived` (`string`, optional): Whether to archive this template
- `is_shared` (`string`, optional): Whether to share this template with the organization (required for use in workflows)
- `name` (`string`, optional): New name for the email template
- `subject` (`string`, optional): New subject line for the email template

Example input: `{"id":"<id>"}`

### `closemcp_update_lead`

Close Update Lead · Write

Update an existing lead (company).

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

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the lead to update
- `custom_fields` (`array`, optional): Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged.
- `description` (`string`, optional): Description of the lead
- `name` (`string`, optional): Name of the lead
- `status_id` (`string`, optional): ID of the lead status. Use find_lead_statuses to look up valid status IDs.
- `url` (`string`, optional): URL of the lead's website

Example input: `{"id":"<id>"}`

### `closemcp_update_lead_smart_view`

Close Update Lead Smart View · Write

Update a lead smart view (saved search).

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

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the lead smart view to update
- `description` (`string`, optional): New description for the smart view
- `name` (`string`, optional): New name for the smart view

Example input: `{"id":"<id>"}`

### `closemcp_update_lead_status`

Close Update Lead Status · Write

Update the label of an existing lead status.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the lead status to update
- `label` (`string`, required): New label for the lead status

Example input: `{"id":"<id>","label":"<label>"}`

### `closemcp_update_note`

Update Note · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the note to update
- `activity_at` (`string`, optional): When the note activity occurred (ISO 8601 date-time)
- `contact_id` (`string`, optional): ID of the contact to associate with the note. Pass 'clear' to remove the existing contact.
- `note_html` (`string`, optional): 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 , <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.
<ul><li>Wants a demo</li><li>Budget approved</li></ul></body>
- `pinned` (`string`, optional): Whether to pin the note to the top of the lead
- `title` (`string`, optional): Title of the note. Pass an empty string to remove the existing title.

Example input: `{"id":"<id>"}`

### `closemcp_update_opportunity`

Update Opportunity · Write

Update an existing opportunity.

Only fields that are provided will be updated. The value should be specified in cents (e.g., $100.00 = 10000). Pass 'clear' for value or close_at to remove those values.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the opportunity to update
- `close_at` (`string`, optional): Expected close date in ISO 8601 format. Pass 'clear' to remove an existing date.
- `confidence` (`string`, optional): Confidence percentage (0-100) that the opportunity will close
- `contact_id` (`string`, optional): ID of the primary contact for this opportunity
- `custom_fields` (`array`, optional): Custom field values to set on this object. Only the custom fields included are modified; omitted fields are left unchanged.
- `note` (`string`, optional): Plaintext version of the note
- `note_html` (`string`, optional): Rich-text HTML version of the note, wrapped in `<body>...</body>`. When set, `note` is automatically derived from it.
- `status_id` (`string`, optional): ID of the opportunity status. Use find_pipelines_and_opportunity_statuses to list valid IDs.
- `user_id` (`string`, optional): ID of the user assigned to this opportunity
- `value` (`string`, optional): Monetary value of the opportunity in cents. Pass 'clear' to remove an existing value.
- `value_period` (`string`, optional): Recurrence period for the value: 'one_time', 'monthly', or 'annual'

Example input: `{"id":"<id>"}`

### `closemcp_update_opportunity_status_tool`

Update Opportunity Status Tool · Write

Update the label of an existing opportunity status.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the opportunity status to update
- `label` (`string`, required): New label for the opportunity status

Example input: `{"id":"<id>","label":"<label>"}`

### `closemcp_update_pipeline`

Update Pipeline · Write

Update an existing opportunity pipeline.

Only fields that are provided will be updated.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the pipeline to update
- `name` (`string`, optional): New name for the pipeline

Example input: `{"id":"<id>"}`

### `closemcp_update_sms_template`

Update SMS Template · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the SMS template to update
- `is_archived` (`string`, optional): Whether to archive this template
- `is_shared` (`string`, optional): Whether to share this template with the organization (required for use in workflows)
- `name` (`string`, optional): New name for the SMS template
- `text` (`string`, optional): New text content for the SMS template. Supports template tags like {{ organization.name }}, {{ user.first_name }}, {{ lead.display_name }}, {{ contact.first_name }}

Example input: `{"id":"<id>"}`

### `closemcp_update_task`

Close Update Task · Write

Update an existing task.

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

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the task to update
- `assigned_to` (`string`, optional): ID of the user to assign the task to. Tasks must always have an assignee, so this cannot be cleared.
- `contact_id` (`string`, optional): ID of the contact associated with this task. Must belong to the task's lead. Pass 'clear' to remove the existing contact.
- `due_date` (`string`, optional): 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).
- `is_complete` (`string`, optional): Mark the task as complete (true) or reopen it (false).
- `priority` (`string`, optional): Task priority: 'high' or 'medium'. Only set to 'high' if the user explicitly says it's a high priority task.
- `text` (`string`, optional): Updated task description. Cannot be blank.

Example input: `{"id":"<id>"}`

### `closemcp_delete_address`

Close Delete Address · Destructive

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

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `address_1` (`string`, required): Address line 1 — must match exactly
- `city` (`string`, required): City — must match exactly
- `country` (`string`, required): Country code (ISO 3166-1 alpha-2) — must match exactly
- `label` (`string`, required): Label for the address (e.g. business, mailing, other)
- `lead_id` (`string`, required): ID of the lead to delete the address from
- `state` (`string`, required): State or province — must match exactly
- `zipcode` (`string`, required): ZIP or postal code — must match exactly
- `address_2` (`string`, optional): Address line 2 — must match exactly if present

Example input: `{"address_1":"<address_1>","city":"<city>","country":"<country>","label":"<label>","lead_id":"<lead_id>","state":"<state>","zipcode":"<zipcode>"}`

### `closemcp_delete_call_task`

Delete Call Task · Destructive

Delete a call task. Does not affect sibling tasks.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): The ID of the call task to delete.

Example input: `{"id":"<id>"}`

### `closemcp_delete_contact`

Delete Contact · Destructive

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.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the contact to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_custom_activity_instance`

Delete Custom Activity Instance · Destructive

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.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the custom activity instance to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_custom_object_instance`

Delete Custom Object Instance · Destructive

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.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the custom object instance to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_email_template`

Delete Email Template · Destructive

Permanently delete an email template.

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

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the email template to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_lead`

Close Delete Lead · Destructive

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.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the lead to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_lead_smart_view`

Close Delete Lead Smart View · Destructive

Permanently delete a lead smart view (saved search).

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the lead smart view to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_lead_status`

Close Delete Lead Status · Destructive

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.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the lead status to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_note`

Delete Note · Destructive

Permanently delete an existing note.

This action cannot be undone.

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

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the note to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_opportunity`

Close Delete Opportunity · Destructive

Permanently delete an opportunity.

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

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the opportunity to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_opportunity_status_tool`

Delete Opportunity Status Tool · Destructive

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.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the opportunity status to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_pipeline`

Delete Pipeline · Destructive

Permanently delete an opportunity pipeline.

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

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the pipeline to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_sms_template`

Delete SMS Template · Destructive

Permanently delete an SMS template.

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

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the SMS template to delete

Example input: `{"id":"<id>"}`

### `closemcp_delete_task`

Close Delete Task · Destructive

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.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): ID of the task to delete

Example input: `{"id":"<id>"}`

## Related

Other ways to connect Close:

- [OAuth](/agentkit/connectors/close/): Scalekit connector, OAuth, 103 tools

Other CRM & Sales connectors ([all 64](/agentkit/connectors/?category=crm-sales)):

- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Salesforce](/agentkit/connectors/salesforce/): Scalekit connector, OAuth, 74 tools
- [LinkedIn](/agentkit/connectors/linkedin/): Scalekit connector, OAuth, 59 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
