Connect your AI Agents to Salesforce in minutes

Available tools
create_account
Create a new Salesforce account. Required: Name (must be unique). Use unique account names with timestamps to avoid duplicates.
get_account
Retrieve a Salesforce account by ID with complete details including standard and custom fields. Returns account information such as name, industry, revenue, employee count, addresses, and any custom fields. Use this to fetch full account details before updating or to verify account data. Supports selective field retrieval for performance optimization.
update_account
Update an existing Salesforce account with new information. Modify any account fields including name, industry, revenue, employee count, addresses, parent relationship, and custom fields. Only provide fields you want to change - unchanged fields remain as-is. Supports partial updates for efficient data management. Use when account information changes or to enrich account data.
delete_account
Permanently delete a Salesforce account from the system. This moves the account to the Recycle Bin where it can be restored within 15 days, after which it's permanently deleted. Use with extreme caution - deleting accounts removes all related contacts, opportunities, cases, and activities. This is a destructive operation that impacts multiple objects. Requires delete permissions on Account object.
list_accounts
List Salesforce accounts with automatic field access handling. Dynamically removes inaccessible fields and retries query.
search_accounts
Search Salesforce accounts using text queries across name, website, and phone fields. Automatically handles field access permissions by removing inaccessible fields and retrying. More powerful than list_accounts for finding specific accounts by keywords. Returns ranked results based on relevance.
create_event
Create a new Salesforce event. Required: Subject, StartDateTime, EndDateTime (ISO 8601 UTC).
get_event
Get a Salesforce event by ID
update_event
Update an existing Salesforce event
delete_event
Delete a Salesforce event
list_events
List Salesforce events
log_activity
Log a Salesforce activity
search_events
Search Salesforce events
create_case
Create a new Salesforce case. Required: Subject. Status defaults to New, Priority to Medium.
get_case
Retrieve a Salesforce case by ID with complete details including standard and custom fields. Returns case information such as case number, subject, status, priority, origin, contact/account associations, and any custom fields. Use this to fetch full case details before updating or to verify case data. Supports selective field retrieval for performance optimization.
update_case
Update an existing Salesforce case with new information. Modify any case fields including subject, status, priority, type, reason, description, contact/account associations, and custom fields. Only provide fields you want to change - unchanged fields remain as-is. Supports partial updates for efficient case management. Use when case details change or to update case status/priority.
delete_case
Permanently delete a Salesforce case from the system. This moves the case to the Recycle Bin where it can be restored within 15 days, after which it's permanently deleted. Use with caution - deleting cases removes customer support history and metrics. All related activities, emails, and case comments are also deleted. Requires delete permissions on Case object.
list_cases
List Salesforce cases with automatic field access handling. Dynamically removes inaccessible fields and retries query. Supports flexible filtering with comparison operators.
search_cases
Search Salesforce cases using text queries across subject and description fields. Automatically handles field access permissions by removing inaccessible fields and retrying. Returns ranked results based on relevance.
get_chatter_comments
Get comments for a Chatter feed element.
post_chatter_comment
Post comment to Chatter feed element.
update_chatter_comment
Update Chatter comment by ID.
delete_chatter_comment
Delete Chatter comment by ID.
get_chatter_comment
Get specific Chatter comment by ID.
get_chatter_feed
Get Chatter feed for news, user, group, or record.
post_to_chatter_feed
Post to Chatter feed (news, user, group, or record). News feed posts redirect to user-profile endpoint since the news feed is read-only.
get_chatter_feed_element
Get specific Chatter feed element by ID.
delete_chatter_feed_element
Delete Chatter feed element by ID.
list_chatter_groups
List Chatter groups.
create_chatter_group
Create new Chatter group.
get_chatter_group
Get specific Chatter group by ID.
join_chatter_group
Join Chatter group.
leave_chatter_group
Leave Chatter group.
get_chatter_group_members
Get Chatter group members.
get_chatter_user
Get Chatter user information by ID.
follow_chatter_user
Follow Chatter user.
unfollow_chatter_user
Unfollow Chatter user.
get_chatter_user_followers
Get Chatter user followers.
get_chatter_user_following
Get Chatter users being followed.
like_chatter_item
Like Chatter item (feed element or comment).
unlike_chatter_item
Unlike Chatter item (feed element or comment).
create_contact
Create a new Salesforce contact. Required: LastName.
get_contact
Retrieve a Salesforce contact by ID with complete details including standard and custom fields. Returns contact information such as name, email, phone, account association, title, department, and any custom fields. Use this to fetch full contact details before updating or to verify contact data. Supports selective field retrieval for performance optimization.
update_contact
Update an existing Salesforce contact with new information. Modify any contact fields including name, email, phone, account association, title, department, address, and custom fields. Only provide fields you want to change - unchanged fields remain as-is. Supports partial updates for efficient data management. Use when contact information changes or to enrich contact data.
delete_contact
Permanently delete a Salesforce contact from the system. This moves the contact to the Recycle Bin where it can be restored within 15 days, after which it's permanently deleted. Use with caution - deleting contacts removes relationship history with accounts and opportunities. All related activities, notes, and attachments are also deleted. Requires delete permissions on Contact object.
list_contacts
List Salesforce contacts with automatic field access handling. Dynamically removes inaccessible fields and retries query. Supports flexible filtering with comparison operators.
search_contacts
Search Salesforce contacts using text queries across name, email, and phone fields. Automatically handles field access permissions by removing inaccessible fields and retrying. Returns ranked results based on relevance.
list_objects
List all standard and custom objects in the Salesforce org. Use this to discover what objects are available before creating or querying records. Supports filtering by standard/custom objects and searching by name or label. Returns object metadata including capabilities (createable, updateable, deletable, queryable).
discover_required_fields_for_writes
Discover the minimal set of required fields for Salesforce write operations. Returns only non-nullable, createable fields without defaults — exactly what you need to create a record. Includes slim picklist values and lookup targets. Use this before any create_* operation. Supports standard and custom objects.
discover_required_fields
DEPRECATED: Use discover_required_fields_for_writes instead. This alias will be removed in a future release. Discover required fields for Salesforce write operations.
discover_properties
Discover all fields for a Salesforce object with category tags. Returns a flat list of every field once, tagged with: required, custom, picklist, lookup, readonly, recommended. Supports standard and custom objects. Optional before querying or writing, but returns a larger response — use discover_required_fields_for_writes for write pre-flight checks.
create_record
Create a new Salesforce record for any SObject — custom objects (__c), managed-package objects, or non-exposed standard objects. Pass field values as extra kwargs alongside object_type. Call list_objects() to find object names, discover_properties(object_type) to learn fields. For Account/Contact/Lead/Opportunity/Case/Task/Event/Note prefer their dedicated tools.
get_record
Retrieve any Salesforce record by object type and ID. Optionally specify which fields to return. Use discover_properties(object_type) to find available field names. For Account/Contact/Lead/Opportunity/Case/Task/Event/Note prefer their dedicated tools.
update_record
Update any Salesforce record by object type and ID. Pass only the fields to change — all other fields remain unchanged. Call discover_properties(object_type) to find field names and types. For Account/Contact/Lead/Opportunity/Case/Task/Event/Note prefer their dedicated tools.
delete_record
Delete any Salesforce record by object type and ID. Moves the record to the Recycle Bin (restorable within 15 days). For Account/Contact/Lead/Opportunity/Case/Task/Event/Note prefer their dedicated tools.
upsert_record
Create or update a Salesforce record matched by an external ID field. Creates the record if the external ID is not found; updates it if found. The external ID field must be marked as an External ID in Salesforce setup. Use list_objects() and discover_properties(object_type) to find field names.
search_records
Full-text search across any Salesforce SObject using SOSL. Returns records whose text fields contain the query term. Specify fields to return; defaults to Id + Name. Use discover_properties(object_type) to find searchable field names. For Account/Contact/Lead/Opportunity/Case/Task prefer their dedicated search tools.
create_lead
Create a new Salesforce lead. Required: LastName, Company. Use unique email addresses and company names to avoid duplicate detection issues.
get_lead
Retrieve a Salesforce lead by ID with complete details including standard and custom fields. Returns lead information such as name, company, email, phone, status, lead source, and any custom fields. Use this to fetch full lead details before updating or to verify lead data. Supports selective field retrieval for performance optimization.
update_lead
Update an existing Salesforce lead with new information. Modify any lead fields including name, company, contact details, status, rating, and custom fields. Only provide fields you want to change - unchanged fields remain as-is. Supports partial updates for efficient data management. Use after lead qualification or when contact information changes.
delete_lead
Permanently delete a Salesforce lead from the system. This moves the lead to the Recycle Bin where it can be restored within 15 days, after which it's permanently deleted. Use with caution - consider converting leads instead of deleting them to preserve data history. Requires delete permissions on Lead object.
list_leads
List Salesforce leads with automatic field access handling. Dynamically removes inaccessible fields and retries query. Supports flexible filtering with comparison operators.
search_leads
Search Salesforce leads using text queries across name, company, email, and phone fields. Automatically handles field access permissions by removing inaccessible fields and retrying. Returns ranked results based on relevance.
convert_lead
Convert a Salesforce lead to Account, Contact, and optionally Opportunity. IMPORTANT: Works best with newly created leads to avoid duplicate detection issues. Use unique account/contact names.
create_note
Create a new Salesforce note. Required: Title, Body, ParentId (record to attach to).
get_note
Get a Salesforce note by ID
update_note
Update a Salesforce note
list_notes
List Salesforce notes (both legacy Notes and modern ContentNotes)
search_notes
Search Salesforce notes (both legacy Notes and modern ContentNotes)
delete_note
Delete a Salesforce note
create_opportunity
Create a new Salesforce opportunity. Required: Name, AccountId, StageName, CloseDate. Use valid AccountId and standard stage names for success.
get_opportunity
Retrieve a Salesforce opportunity by ID with complete details including standard and custom fields. Returns opportunity information such as name, amount, stage, close date, probability, account association, and any custom fields. Use this to fetch full opportunity details before updating or to verify opportunity data. Supports selective field retrieval for performance optimization.
delete_opportunity
Permanently delete a Salesforce opportunity from the system. This moves the opportunity to the Recycle Bin where it can be restored within 15 days, after which it's permanently deleted. Use with caution - deleting opportunities removes sales history and forecasting data. All related activities, notes, and opportunity contact roles are also deleted. Requires delete permissions on Opportunity object.
update_opportunity
Update an existing Salesforce opportunity with new information. Modify any opportunity fields including name, amount, stage, close date, probability, and custom fields. Only provide fields you want to change - unchanged fields remain as-is. Supports partial updates for efficient data management. Use to progress opportunities through sales stages or update deal information.
list_opportunities
List Salesforce opportunities with automatic field access handling. Dynamically removes inaccessible fields and retries query. Supports flexible filtering with comparison operators.
search_opportunities
Search Salesforce opportunities with automatic field access handling. Supports text search combined with flexible filtering. Dynamically removes inaccessible fields and retries query.
run_soql_query
Execute a raw SOQL query against the Salesforce org. Use for ad-hoc queries, cross-object joins, aggregations, or any query not covered by entity-specific tools. Only SELECT queries are supported. Use list_objects to discover available objects, and discover_properties to find valid field names. Supports pagination via next_records_url.
create_task
Create a new Salesforce task. Required: Subject. Status defaults to Not Started, Priority to Normal.
get_task
Retrieve a Salesforce task by ID with complete details including standard and custom fields. Returns task information such as subject, status, priority, activity date, related contact/lead, related account/opportunity, and any custom fields. Use this to fetch full task details before updating or to verify task data. Supports selective field retrieval for performance optimization.
update_task
Update an existing Salesforce task with new information. Modify any task fields including subject, status, priority, activity date, related contacts/accounts, and custom fields. Only provide fields you want to change - unchanged fields remain as-is. Supports partial updates for efficient data management. Use to progress tasks through workflow or update task information.
delete_task
Permanently delete a Salesforce task from the system. This moves the task to the Recycle Bin where it can be restored within 15 days, after which it's permanently deleted. Use with caution - deleting tasks removes activity history and tracking data. Requires delete permissions on Task object.
list_tasks
List Salesforce tasks with automatic field access handling. Dynamically removes inaccessible fields and retries query. Supports flexible filtering with comparison operators.
search_tasks
Search Salesforce tasks using text queries across subject and description fields. Automatically handles field access permissions by removing inaccessible fields and retrying. Returns ranked results based on relevance.
validate_credential
Validate Salesforce credentials. Verifies authentication by querying the organization. Returns {success, message}.

How to set up Merge Agent Handler
In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}FAQs on using Merge's Salesforce MCP server
FAQs on using Merge's Salesforce MCP server
How can I use the Salesforce MCP server?
The use cases naturally depend on the agent you’ve built, but here are a few common ones:
- Automated opportunity creation: Your agent can automatically create Salesforce Opportunities when leads hit qualification thresholds
- Real-time opportunity updates: As sales reps talk to prospects, your agent can automatically update opportunity details, such as the deal amount, expected close date, and status
- Sales intelligence: Your agent can help sales leaders create custom reports on rep performance via CRM data. For example, a sales leader can ask for a quota attainment report, and the agent can use fields like sales reps’ names, historical quotas, and close-won revenues to create them
- Proposal writing: Your agent can generate personalized sales proposals by pulling data from the relevant CRM opportunity pages and by leveraging similar past proposals from other prospects
What are popular tools for Salesforce’s MCP server?
Here are some popular MCP tools broken down into categories:
Accounts:
- <code class="blog_inline-code">search_accounts</code>
- <code class="blog_inline-code">get_account</code>
- <code class="blog_inline-code">create_account</code>
- <code class="blog_inline-code">update_account</code>
- <code class="blog_inline-code">list_accounts</code>
Leads:
- <code class="blog_inline-code">search_leads</code>
- <code class="blog_inline-code">get_lead</code>
- <code class="blog_inline-code">create_lead</code>
- <code class="blog_inline-code">update_lead</code>
- <code class="blog_inline-code">delete_lead</code>
- <code class="blog_inline-code">list_leads</code>
Opportunities:
- <code class="blog_inline-code">search_opportunities</code>
- <code class="blog_inline-code">get_opportunity</code>
- <code class="blog_inline-code">create_opportunity</code>
- <code class="blog_inline-code">list_opportunities</code>
Cases:
- <code class="blog_inline-code">search_cases</code>
- <code class="blog_inline-code">get_case</code>
- <code class="blog_inline-code">create_case</code>
- <code class="blog_inline-code">update_case</code>
- <code class="blog_inline-code">list_cases</code>
What makes Merge Agent Handler’s Salesforce MCP server better than alternative Salesforce MCP servers?
Here are just a few reasons:
- Enterprise-grade security with DLP: Merge Agent Handler scans tool inputs and responses for sensitive data and applies configured rules to block, redact, or mask sensitive information. This protects Salesforce data handled by agents
- Real-time observability and a fully-searchable audit trail: Every tool call is logged, including underlying API requests, enabling debugging, monitoring, and compliance reviews. Logs are also fully-searchable, making it easy for your team to troubleshoot and resolve specific integration issues quickly
- Built-in authentication and credential lifecycle management: Agent Handler provides guided authentication flows, dynamic authorization, and secure credential handling without requiring custom auth code
- Connector Studio for customizing Salesforce tools: You can add, modify, or extend Salesforce connector functionality, which is especially useful when your agents need to work with and support custom Salesforce objects or workflows
How can I add the Salesforce MCP connector to Tool Packs in Merge Agent Handler?
To add the Salesforce connector to a Tool Pack in Merge Agent Handler:
1. Log into the Agent Handler dashboard.
2. Create or select a Tool Pack. Navigate to "Tool Packs" in the sidebar, and either create a new Tool Pack or select an existing one.
3. Add the Salesforce connector to your Tool Pack. Simply Click "Add Connector," select Salesforce from the available connectors, and configure the authentication type (Individual or Shared credentials).
4. Customize the connector (optional). Navigate to "Connectors" in the sidebar, and then select the Salesforce connector. From there, you can add new tools, modify existing tool descriptions, or adjust input schemas. You can also edit tool implementations for custom Salesforce actions.
5. Save your changes.The Salesforce connector and its tools should now be available in your Tool Pack.
Can employees use Merge Agent Handler to connect their AI tools to Salesforce?
Yes, Agent Handler for Employees lets your employees connect Claude, ChatGPT, Microsoft Copilot, Cursor, and other MCP-compatible AI tools to Salesforce without bypassing IT governance.
Instead of setting up direct connections with personal credentials that IT can't monitor or revoke, each employee authenticates through Agent Handler and gets individual credentials tied to their identity.
IT also provisions access by role or group via SCIM. A sales rep, for example, gets Salesforce access to manage pipeline, Gong to review call recordings, and Gmail to handle outreach; while a CS manager gets Salesforce access to track accounts, Zendesk to resolve tickets, and Slack to coordinate with the team.
Every tool call an employee's AI makes to Salesforce is also inspected against your DLP rules and logged to a searchable audit trail, giving security teams full visibility into what data was accessed and by whom.
Ready to try it out?
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now




















