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 workflow: Call discover_required_fields('Event') first to identify mandatory fields and prevent creation errors.
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 workflow: Call discover_required_fields('Case') first to identify mandatory fields and prevent creation errors.
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 workflow: Call discover_required_fields('Contact') first to identify mandatory fields and prevent creation errors.
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
Discover required, custom, and recommended fields for any Salesforce object. Returns comprehensive field metadata including data types, picklist values, validation rules, and lookup relationships. Essential for understanding org-specific field requirements before creating or updating records. Use this tool FIRST before any create_* or update_* operations to understand which fields are required, what custom fields exist in your org, valid picklist values, and field constraints. Supports both standard objects (Lead, Contact, Account, Opportunity, Task, Case, Event, Note) and custom objects (ending with '__c').
discover_properties
Discover all available properties/fields for Salesforce objects including custom fields, data types, picklist values, and field capabilities. Essential for understanding what fields can be used in create, update, search, and filter operations.
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 workflow: Call discover_required_fields('Note') first to identify mandatory fields and prevent creation errors.
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_required_fields to find valid field names. Supports pagination via next_records_url.
create_task
Create a new Salesforce task. Required workflow: Call discover_required_fields('Task') first to identify mandatory fields and prevent creation errors.
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.
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





















