You can find the most up-to-date list of tools on https://developer.close.com/mcp/tools
-
-
Save philfreo/5ca7925a6413e434c3d8955008317440 to your computer and use it in GitHub Desktop.
As of 2026-04-08, 64 tools are available from the Close MCP Server
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.
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_fieldstool.
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"
Retrieve the contents of an arbitrary object by its ID.
Currently supported are leads and contacts.
Fetch an existing contact by ID.
Returns the contact's details including name, title, email addresses, phone numbers, and URLs.
Fetch an email template by ID.
Returns the complete email template with all its details.
Fetch an existing lead (company) by ID.
Fetch a lead smart view (saved search) by ID.
Fetch a lead status by ID.
Fetch a specific opportunity by ID.
Returns the complete opportunity with all its details.
Fetch an opportunity status by ID.
Fetch an opportunity pipeline, including its opportunity statuses, by ID.
Fetch an SMS template by ID.
Returns the complete SMS template with all its details.
List all AI agent configurations (also known as "Chloe", bots, or AI agents) defined for the organization.
Returns each agent's ID and name. Use this to find the right agent ID when assigning a call step to an AI agent in a workflow.
Users may refer to agents as "agents", "bots", "Chloe", or by their configured name. When more than one agent exists, pick the most appropriate one based on the name.
List all outcomes applicable to calls available in the organization.
List all active (non-archived) Custom Activity Types in the organization.
Call this before creating a workflow with a "custom-activity-event" trigger so you can look up the correct Custom Activity Type ID.
List or find email templates
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.
List all groups in the organization.
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.
List lead smart views (saved searches).
List or find lead statuses for the organization
List all outcomes applicable to meetings available in the organization.
Find opportunities based on various filters.
You can filter by lead, user, status, dates, and more.
List all opportunity pipelines and their opportunity statuses in the organization.
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.
List or find SMS templates
List or find workflows
Use this field ONLY to get a list of fields for the aggregation tool.
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
searchtool instead.Leads will be returned by last updated first.
Return general information about the organization and the user.
Return active users (memberships) which are part of the current org.
Paginate an existing search (from search or lead_search) to retrieve more results.
Use the search_id from a previous search and a pagination cursor.
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.
Add a new address to an existing lead (company).
Create a new contact for a lead.
A contact represents a person associated with a lead (company).
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 a new lead (company).
After creating a lead, you should usually add an address or contact (including phone or email) to the lead.
Create a new lead status.
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 a new opportunity status.
Create a new opportunity pipeline.
Use the create_opportunity_status tool to add statuses to the pipeline.
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 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 a new workflow (a.k.a. sequence) with Draft status.
Delete an address from an existing lead (company) if there is an exact match.
Permanently delete an existing contact.
This will remove the contact from its lead including its email addresses, phone numbers, and URLs will be removed. Activitise on the lead are not affected.
This action cannot be undone.
ONLY call this if the user specifically instructed you to delete the contact.
Permanently delete an email template.
If the template is used in any workflows (sequences), it cannot be deleted.
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.
Permanently delete a lead smart view (saved search).
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.
Permanently delete an opportunity.
This action cannot be undone. All data associated with the opportunity will be removed.
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.
Permanently delete an opportunity pipeline.
A pipeline can only be deleted if it has no statuses. The last pipeline cannot be deleted.
Permanently delete an SMS template.
If the template is used in any workflows (sequences), it cannot be deleted.
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 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 an existing lead (company).
Only fields that are provided and not None will be updated.
Update a lead smart view (saved search).
Only fields that are provided and not None will be updated.
Update the label of an existing lead status.
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 the label of an existing opportunity status.
Update an existing opportunity pipeline.
Only fields that are provided will be updated.
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.
| #!/usr/bin/env bash | |
| # Usage: | |
| # chmod +x close_mcp_tools.sh | |
| # CLOSE_API_KEY=api_XXX.XXX ./close_mcp_tools.sh | |
| set -euo pipefail | |
| fetch_tools() { | |
| local scope="$1" | |
| npx --yes @modelcontextprotocol/inspector \ | |
| --cli https://mcp.close.com/mcp \ | |
| --transport http \ | |
| --method tools/list \ | |
| --header "Close-API-Key: ${CLOSE_API_KEY}" \ | |
| --header "Close-Scope: ${scope}" \ | |
| | jq '.tools' | |
| } | |
| read_tools_json="$(fetch_tools mcp.read)" | |
| write_safe_tools_json="$(fetch_tools mcp.write_safe)" | |
| write_destructive_tools_json="$(fetch_tools mcp.write_destructive)" | |
| # count unique tools across all scopes | |
| tool_count="$(jq -n \ | |
| --argjson r "$read_tools_json" \ | |
| --argjson s "$write_safe_tools_json" \ | |
| --argjson d "$write_destructive_tools_json" \ | |
| '$r+$s+$d | unique_by(.name) | length')" | |
| today="$(date +%Y-%m-%d)" | |
| echo "As of $today, $tool_count tools are available from the [Close MCP Server](https://help.close.com/docs/mcp-server)" | |
| echo | |
| jq -r -n \ | |
| --argjson read "$read_tools_json" \ | |
| --argjson safe "$write_safe_tools_json" \ | |
| --argjson destr "$write_destructive_tools_json" ' | |
| def markdown(tools): | |
| tools | |
| | sort_by(.name)[] | |
| | "#### **`\(.name)`**\n\n" | |
| + ((.description // "" | tostring | split("\n") | map("> "+.) | join("\n")) + "\n"); | |
| def only(a;b): [ a[] | select(.name as $n | (b|map(.name)|index($n))|not) ]; | |
| "## `mcp.read`", | |
| markdown($read), | |
| "\n## `mcp.write_safe` adds the following to the above", | |
| (only($safe;$read) as $extra_safe | |
| | if ($extra_safe|length)>0 then markdown($extra_safe) else "*(no additional tools)*" end), | |
| "\n## `mcp.write_destructive` adds the following to the above", | |
| (only($destr; ($read+$safe)) as $extra_destr | |
| | if ($extra_destr|length)>0 then markdown($extra_destr) else "*(no additional tools)*" end) | |
| ' |