
Create a new account (company/organization) in Dynamics 365. Accounts represent businesses or organizations you work with.
Retrieve a Dynamics 365 account by ID. Returns full account details including company info, contact details, and custom fields.
Update an existing Dynamics 365 account. Modify company information, contact details, or custom fields.
Delete a Dynamics 365 account. This is a permanent operation - consider deactivating instead.
List Dynamics 365 accounts with filtering, sorting, and pagination. Find accounts by name, industry, location, or custom criteria.
Search Dynamics 365 accounts by text query. Find accounts matching name, description, or other text fields.
Create an appointment in Dynamics 365. Schedule meetings associated with accounts, contacts, or opportunities.
Retrieve an appointment by ID from Dynamics 365.
Update an appointment in Dynamics 365. Reschedule, change location, or mark as completed.
Delete an appointment from Dynamics 365.
List appointments in Dynamics 365 with filtering by date range, status, or related records.
Create a new case (incident) in Dynamics 365. Cases track customer service issues, support requests, and inquiries.
Retrieve a Dynamics 365 case by ID. Returns case details including priority, status, customer, and SLA information.
Update an existing Dynamics 365 case. Modify priority, status, description, or resolve the case.
Delete a Dynamics 365 case. Consider resolving or canceling instead to preserve service history.
List Dynamics 365 cases with filtering. Find cases by status, priority, customer, or SLA dates.
Search Dynamics 365 cases by text query. Find cases matching title or description.
Create a new contact in Dynamics 365. Contacts represent individual people you work with, often associated with accounts.
Retrieve a Dynamics 365 contact by ID. Returns full contact details including personal info, contact methods, and relationships.
Update an existing Dynamics 365 contact. Modify personal information, contact methods, or preferences.
Delete a Dynamics 365 contact. This is a permanent operation.
List Dynamics 365 contacts with filtering, sorting, and pagination. Find contacts by account, name, email, or custom criteria.
Search Dynamics 365 contacts by text query. Find contacts matching name, email, or other text fields.
Discover available fields and their properties for a Dynamics 365 entity. Essential for understanding what fields can be used in create, update, and filter operations.
List all available entities in the Dynamics 365 organization. Useful for discovering what data types are available.
Create an email activity in Dynamics 365. Track sent or received emails associated with CRM records.
Retrieve an email activity by ID from Dynamics 365.
Update an email activity in Dynamics 365. Modify subject, content, or mark as completed.
Delete an email activity from Dynamics 365.
List email activities in Dynamics 365 with filtering by date, status, or related records.
Create a new lead in Dynamics 365. Requires subject (topic) and lastname. If no contact name provided, lastname defaults to 'Contact'. Use list_leads to verify creation.
Retrieve a Dynamics 365 lead by ID or name. Accepts GUID or subject/company name. Use search_leads if multiple matches expected.
Update an existing Dynamics 365 lead. Modify contact information, qualification status, or estimated value.
Delete a Dynamics 365 lead. Consider qualifying the lead instead to preserve data.
List Dynamics 365 leads with filtering, sorting, and pagination. Find leads by status, rating, source, or custom criteria.
Search Dynamics 365 leads by text query. Find leads matching name, company, or subject.
Qualify (convert) a Dynamics 365 lead to Account, Contact, and/or Opportunity. This is the standard way to advance a lead in the sales process.
Create a new note (annotation) in Dynamics 365. Notes can include text content and file attachments, attached to any record.
Retrieve a Dynamics 365 note by ID. Returns note content including text and attachment metadata.
Update an existing Dynamics 365 note. Modify the text content, subject, or attachment.
Delete a Dynamics 365 note. This is a permanent operation.
List Dynamics 365 notes with filtering. Find notes by parent record, date, or content.
Create a new opportunity in Dynamics 365. Opportunities represent potential sales deals in your pipeline.
Retrieve a Dynamics 365 opportunity by ID. Returns full deal details including value, probability, and stage.
Update an existing Dynamics 365 opportunity. Modify deal value, probability, stage, or other fields.
Delete a Dynamics 365 opportunity. Consider closing as won/lost instead to preserve history.
List Dynamics 365 opportunities with filtering, sorting, and pagination. Find deals by stage, value, customer, or custom criteria.
Search Dynamics 365 opportunities by text query. Find deals matching name or description.
Close a Dynamics 365 opportunity as Won. Records the successful deal closure with revenue and date.
Close a Dynamics 365 opportunity as Lost. Records the unsuccessful deal closure with reason.
Retrieve a Dynamics 365 system user (owner) by ID. Get user details for record assignment or team management.
List Dynamics 365 system users (owners) with filtering. Find users for record assignment or team management.
Create a phone call activity in Dynamics 365. Log incoming or outgoing calls with notes and duration.
Retrieve a phone call activity by ID from Dynamics 365.
Update a phone call activity in Dynamics 365. Add notes, mark as completed, or update details.
Delete a phone call activity from Dynamics 365.
List phone call activities in Dynamics 365 with filtering by date, status, or related records.
Create a new task in Dynamics 365. Tasks are activities for tracking follow-up work related to accounts, contacts, leads, opportunities, or cases.
Retrieve a Dynamics 365 task by ID. Returns task details including subject, due date, priority, and related records.
Update an existing Dynamics 365 task. Modify subject, due date, priority, completion status, or other fields.
Delete a Dynamics 365 task. Consider completing or canceling instead to preserve history.
List Dynamics 365 tasks with filtering. Find tasks by status, priority, due date, or related records.
Search Dynamics 365 tasks by text query. Find tasks matching subject or description.
Validate Dynamics 365 credentials. Verifies credentials during setup.

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}A Dynamics 365 Sales MCP is an MCP server that gives your agents direct access to data and functionality within your Dynamics 365 Sales instance via tools. Your agents can invoke these tools to retrieve and qualify leads, update opportunity stages, query account and contact records, log activities, and more.
Microsoft offers an official MCP server, but you can also use one from a third-party platform, like Merge Agent Handler.
The use cases naturally depend on the agent you've built, but here are a few common ones:
Here are some of the most commonly used tools:
list_leads: retrieves lead records filtered by status, owner, or date range. Call this when an agent needs to triage incoming leads or generate a pipeline intake report.create_lead: creates a new lead record in Dynamics 365 Sales. Useful for agents that pick up signals from external systems (form submissions, enrichment events) and need to register them in the CRM automaticallylist_opportunities: returns open opportunities with stage, value, and close date data. Good for workflows that monitor pipeline health or flag deals that are past their expected close dateupdate_opportunity: modifies fields on an existing opportunity, such as stage, probability, or close date. Use this when an agent detects a trigger event and needs to advance or correct the deal recordlist_contacts: retrieves contact records associated with an account or opportunity. Helpful when an agent needs to identify the right stakeholder before initiating outreach or logging an activitycreate_activity: logs a new activity (call, email, or task) against a contact or opportunity. Call this when an agent completes an action in another system and needs to record it in the CRM for visibility and audit purposesHere is why teams choose Merge Agent Handler's Dynamics 365 Sales MCP server over building or using an alternative:
You can take the following steps:
1. Create or log into your Merge Agent Handler account and navigate to Tool Packs (collections of connector tools scoped to a specific use case).
2. Create a new Tool Pack, then find and enable the Dynamics 365 Sales connector. Choose which tools to include: enable read tools for data retrieval and reporting use cases, or add write tools if your agent needs to create or update leads, opportunities, contacts, or activities.
3. Add a Registered User inside the Tool Pack. This is the identity context under which your agent operates. Merge generates a unique MCP URL scoped to this user once it's created.
4. From the Registered User detail page, authenticate Dynamics 365 Sales by completing the OAuth flow. Merge stores and manages the credentials going forward.
5. Copy the MCP URL from the Tool Pack detail page and generate an API key from Settings. You'll need both to connect your agent.
6. Add the MCP server to your agent or IDE using the MCP URL and API key. Your Dynamics 365 Sales tools are now accessible through that endpoint.
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now