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.
Close MCP gives agents scoped access to CRM leads, contacts, opportunities, activities, communications, and organization workflows.
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_fields` tool.
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.
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"
Add a new address to an existing lead (company).
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.
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 a new contact for a lead. A contact represents a person associated with a lead (company).
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 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.
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. To create a reply in an existing thread, provide the ID of the email being replied to via in_reply_to_id.
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 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 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.
Return the customized builtin labels. Only renamed labels are returned - an empty result means the default names apply.
Delete an address from an existing lead (company) if there is an exact match.
Delete a call task. Does not affect sibling tasks.
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.
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.
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.
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 existing note. This action cannot be undone. ONLY call this if the user specifically instructed you to delete the note.
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.
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.
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.
Fetch a single call activity by ID. Returns the call's direction, outcome, participants, and (if available) its transcript.
Fetch a single call task by ID.
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 an existing contact by ID. Returns the contact's details including name, title, email addresses, phone numbers, and URLs.
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 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.
Fetch a single custom object type by its ID. A custom object type defines the shape of a category of custom objects, including the custom fields its instances hold. Returns the type with its custom fields.
Fetch an email template by ID. Returns the complete email template with all its details.
Fetch one of the organization's billing invoices by id.
Fetch an existing lead (company) by ID.
Fetch a lead smart view (saved search) by ID.
Fetch a lead status by ID.
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`.
Fetch an existing note by ID. Returns the full note details including title, text, and metadata.
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.
Fetch an existing task by ID. Returns the task's details including the associated lead, contact, assignee, due date, priority, and completion status.
List all outcomes applicable to calls available in the organization.
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.
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.
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 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 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.
List all custom object types in the organization, along with the custom fields defined on each type.
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.
Find the organization's billing invoices, newest first. Invoices without a date sort first.
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 notes based on various filters.
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 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.
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
Find tasks based on various filters. You can filter by lead, assignee, completion state, and due/created/ updated dates.
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.
List or find workflows
AI credit usage for the billing account, broken down by feature. Reports total credits used and a per-feature breakdown. Credits are the billing unit for AI features. Usage covers the whole billing account, not a single organization. Omit `start`/`end` for the current billing period; the result's `start`/`end` report the window actually measured. Explicit ranges must be timezone-aware and span at most 366 days. Older ranges may return empty or partial data — zero usage for an old range does not mean no activity. On a rate-limited error, retry after `retry_after` seconds.
Use this field ONLY to get a list of fields for the aggregation tool.
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`).
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`).
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.
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.
List pending requests to join the current organization. Each entry includes the requesting user's name and email, the request id, and when the request was created.
Return general information about the organization and the user.
Return active users (memberships) which are part of the current org.
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 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.
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.
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.
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.
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 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 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.
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.
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 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 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.
Update an existing task. Only fields that are provided will be updated. Pass 'clear' for contact_id or due_date to clear those values.
The Close MCP integration connects your Dench AI CRM directly to Close MCP, so agents can read and act on your Close MCP data as part of everyday work — answering questions in chat, keeping your CRM in sync, and running automations without anyone copying data between tools.
109 actions are available for agents to invoke on your behalf. Every call runs through Close MCP's own authorization, scoped to the account you connect.
Sign in to your Dench workspace and open Integrations.
Find Close MCP and click Connect — you'll authorize access through Close MCP's own sign-in flow. No API keys or code required.
Ask an agent to use Close MCP in chat, or call it from an automation.
Manage or disconnect the connection any time from workspace settings.
The Dench Close MCP integration connects your AI CRM to Close MCP, so AI agents can work with your Close MCP data as part of chats, automations, and CRM workflows. You connect your account once, and every agent in your workspace can use it — governed by your workspace permissions.
The Close MCP integration currently exposes 109 actions, including Activity search, Aggregation, Apply voice agent update, Close product knowledge search, Create address, and Create call task. Agents invoke them on your behalf from chat or from automations.
No. You connect Close MCP from your Dench workspace using Close MCP's own sign-in and authorization flow — no API keys to copy, no glue code to maintain.
Connections are authorized through Close MCP's own authentication flow, and Dench stores only the authorization needed to act on your behalf. You can review and disconnect the Close MCP connection from your workspace settings at any time.