> For a complete page index, fetch https://developer.close.com/llms.txt

# Close MCP Tools

The Close MCP Server provides tools organized by scope. Each higher scope includes all tools from the lower scopes.

## Read-only Tools – `mcp.read`

Read-only tools for searching, fetching, and exploring your Close data.

### Activity Search – `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.

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

### Close Product Knowledge Search – `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"

### Fetch Object – `fetch`

> Retrieve the contents of an arbitrary object by its ID.
> Currently supported are leads and contacts.

### Fetch Comment – `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.

### Fetch Contact – `fetch_contact`

> Fetch an existing contact by ID.
> Returns the contact's details including name, title, email addresses, phone numbers, and URLs.

### Fetch Custom Activity Instance – `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.

### Fetch Custom Object Type – `fetch_custom_object_type`

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

### Fetch Email Template – `fetch_email_template`

> Fetch an email template by ID.
> Returns the complete email template with all its details.

### Fetch Lead – `fetch_lead`

> Fetch an existing lead (company) by ID.

### Fetch Lead Smart View – `fetch_lead_smart_view`

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

### Fetch Lead Status – `fetch_lead_status`

> Fetch a lead status by ID.

### Fetch Note – `fetch_note`

> Fetch an existing note by ID.
> Returns the full note details including title, text, and metadata.

### Fetch Opportunity – `fetch_opportunity`

> Fetch a specific opportunity by ID.
> Returns the complete opportunity with all its details.

### Fetch Opportunity Status – `fetch_opportunity_status`

> Fetch an opportunity status by ID.

### Fetch Pipeline – `fetch_pipeline_and_opportunity_statuses`

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

### Fetch SMS Template – `fetch_sms_template`

> Fetch an SMS template by ID.
> Returns the complete SMS template with all its details.

### Fetch Task – `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.

### Find Call Outcomes – `find_call_outcomes`

> List all outcomes applicable to calls available in the organization.

### List Contact Custom Fields – `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.

### Find Custom Activity Types – `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.

### Find Custom Activity Instances – `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.

### Find Custom Object Types – `find_custom_object_types`

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

### Find Email Templates – `find_email_templates`

> List or find email templates

### Find Web Forms – `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.

### Find Groups – `find_groups`

> List all groups in the organization.

### List Lead Custom Fields – `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.

### Find Lead Smart Views – `find_lead_smart_views`

> List lead smart views (saved searches).

### Find Lead Statuses – `find_lead_statuses`

> List or find lead statuses for the organization

### Find Meeting Outcomes – `find_meeting_outcomes`

> List all outcomes applicable to meetings available in the organization.

### Find Notes – `find_notes`

> Find notes based on various filters.

### Find Opportunities – `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.

### List Opportunity Custom Fields – `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.

### Find Pipelines – `find_pipelines_and_opportunity_statuses`

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

### Find Scheduling Links – `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.

### Find SMS Templates – `find_sms_templates`

> List or find SMS templates

### Find Tasks – `find_tasks`

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

### Find Voice Agents – `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.

### Find Workflows – `find_workflows`

> List or find workflows

### Get Fields – `get_fields`

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

### Get Voice Agent Overview Report – `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`).

### Get Voice Agent Performance Report – `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`).

### Get Voice Agents – `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.

### Lead Search – `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.

### Org Info – `org_info`

> Return general information about the organization and the user.

### Org Users – `org_users`

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

### Paginate Search Results – `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.

### Propose Voice Agent Update – `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.

### Search Objects – `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.

## Write (Safe) Tools – `mcp.write_safe`

Includes all `mcp.read` scoped tools, plus these tools for creating and updating data:

### Create Address – `create_address`

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

### Create Call Task – `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.

### Create Comment – `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.

### Create Contact – `create_contact`

> Create a new contact for a lead.
> A contact represents a person associated with a lead (company).

### Create Custom Activity Instance – `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.

### Create Email Template – `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.

### Create Lead – `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.

### Create Lead Status – `create_lead_status`

> Create a new lead status.

### Create Note – `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.

### Create Opportunity – `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).

### Create Opportunity Status – `create_opportunity_status_tool`

> Create a new opportunity status.

### Create Pipeline – `create_pipeline`

> Create a new opportunity pipeline.
> Use the create\_opportunity\_status tool to add statuses to the pipeline.

### Create SMS Template – `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.

### Create Task – `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.

### Create Workflow – `create_workflow`

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

### Schedule Voice Agent Call – `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.

## Write (Destructive) Tools – `mcp.write_destructive`

Includes all `mcp.read` and `mcp.write_safe` scoped tools, plus these tools for updating and deleting data:

### Apply Voice Agent Update – `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.

### Delete Address – `delete_address`

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

### Delete Contact – `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.

### Delete Custom Activity Instance – `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.

### Delete Email Template – `delete_email_template`

> Permanently delete an email template.
> If the template is used in any workflows (sequences), it cannot be deleted.

### Delete Lead – `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.

### Delete Lead Smart View – `delete_lead_smart_view`

> Permanently delete a lead smart view (saved search).

### Delete Lead Status – `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.

### Delete Note – `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.

### Delete Opportunity – `delete_opportunity`

> Permanently delete an opportunity.
> This action cannot be undone. All data associated with the opportunity will be removed.

### Delete Opportunity Status – `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.

### Delete Pipeline – `delete_pipeline`

> Permanently delete an opportunity pipeline.
> A pipeline can only be deleted if it has no statuses. The last pipeline
> cannot be deleted.

### Delete SMS Template – `delete_sms_template`

> Permanently delete an SMS template.
> If the template is used in any workflows (sequences), it cannot be deleted.

### Delete Task – `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.

### Update Contact – `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.

### Update Custom Activity Instance – `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.

### Update Email Template – `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.

### Update Lead – `update_lead`

> Update an existing lead (company).
> Only fields that are provided and not None will be updated.

### Update Lead Smart View – `update_lead_smart_view`

> Update a lead smart view (saved search).
> Only fields that are provided and not None will be updated.

### Update Lead Status – `update_lead_status`

> Update the label of an existing lead status.

### Update Note – `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.

### Update Opportunity – `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).

### Update Opportunity Status – `update_opportunity_status_tool`

> Update the label of an existing opportunity status.

### Update Pipeline – `update_pipeline`

> Update an existing opportunity pipeline.
> Only fields that are provided will be updated.

### Update SMS Template – `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.

### Update Task – `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.