Skip to content

Instantly share code, notes, and snippets.

@philfreo
Last active September 2, 2025 14:21
Show Gist options
  • Save philfreo/5ca7925a6413e434c3d8955008317440 to your computer and use it in GitHub Desktop.
Save philfreo/5ca7925a6413e434c3d8955008317440 to your computer and use it in GitHub Desktop.
Close MCP Tool List

As of 2025-09-02, 52 tools are available as of from the Close MCP Server

mcp.read

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.

fetch_contact

Fetch an existing contact by ID.

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

fetch_email_template

Fetch an email template by ID.

Returns the complete email template with all its details.

fetch_lead

Fetch an existing lead (company) by ID.

fetch_lead_smart_view

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

fetch_lead_status

Fetch a lead status by ID.

fetch_opportunity

Fetch a specific opportunity by ID.

Returns the complete opportunity with all its details.

fetch_opportunity_status

Fetch an opportunity status by ID.

fetch_pipeline_and_opportunity_statuses

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

fetch_sms_template

Fetch an SMS template by ID.

Returns the complete SMS template with all its details.

find_email_templates

List or find email templates

find_lead_smart_views

List lead smart views (saved searches).

find_lead_statuses

List or find lead statuses for the organization

find_opportunities

Find opportunities based on various filters.

You can filter by lead, user, status, dates, and more.

find_pipelines_and_opportunity_statuses

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

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

List or find SMS templates

find_workflows

List or find workflows

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 perform_search tool instead.

Leads will be returned by last updated first.

org_info

Return current organization name, current user name and email.

org_users

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

paginate_search

Paginate an existing search (from perform_search or lead_search) to retrieve more results.

Use the search_id from a previous search and a pagination cursor.

perform_search

Perform a natural language search for leads or contacts.

The initial set of results is returned. To retrieve more results, use the returned cursor and call the paginate_search tool.

mcp.write_safe adds the following to the above

create_address

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

create_contact

Create a new contact for a lead.

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

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 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 a new lead status.

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_tool

Create a new opportunity status.

create_pipeline

Create a new opportunity pipeline.

Use the create_opportunity_status tool to add statuses to the pipeline.

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_workflow

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

mcp.write_destructive adds the following to the above

delete_address

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

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

delete_email_template

Permanently delete an email template.

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

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

Permanently delete a lead smart view (saved search).

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_opportunity

Permanently delete an opportunity.

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

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

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

Permanently delete an SMS template.

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

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_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 an existing lead (company).

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

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 the label of an existing lead status.

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_tool

Update the label of an existing opportunity status.

update_pipeline

Update an existing opportunity pipeline.

Only fields that are provided will be updated.

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.

#!/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 github: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)
'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment