Customer Relation

Freshsales MCP Server

Use Studio chat to drive this server — credentials stay in your workspace.

Freshsales is a CRM by Freshworks for managing contacts, accounts, deals, tasks, appointments, and sales activities. Automate your sales pipeline with lead scoring, built-in phone/email, and visual deal pipelines.

45 tools
Agent guide included
API Key
Start Chatting

Opens MCPBundles Studio with this server selected. After sign-in, chat and run tools from the same thread.

Browse all tools

AI Skill
SKILL.md

Domain knowledge for Freshsales — workflow patterns, data models, and gotchas for your AI agent.

Freshsales

Freshsales is a CRM by Freshworks. It manages contacts, accounts (companies), deals (opportunities), tasks, notes, appointments, and sales activities.

Data Model

  • Contacts — people you interact with. Have email, phone, lead_score, lifecycle_stage, and custom fields. Full CRUD + upsert.
  • Accounts (sales_accounts) — companies. Contacts are associated to accounts. Full CRUD + upsert.
  • Deals — sales opportunities in pipeline stages. Linked to accounts and contacts. Full CRUD + upsert.
  • Tasks — to-do items assigned to users, linked to contacts/accounts/deals. Full CRUD. Set status=1 to mark done.
  • Notes — free-text annotations on contacts, accounts, or deals. Create, update, delete.
  • Appointments — scheduled meetings with attendees and time zones. Full CRUD. Filters: upcoming, past, overdue.
  • Sales Activities — logged activities (calls, emails, custom types) on contacts/accounts/deals. Full CRUD.

Typical workflow

First steps (always do these first)
  1. Resolve filters — obtain view IDs for contacts, deals, or accounts. Required before listing.
  2. Resolve selectors — picklist values (owners, deal_stages, territories, lead_sources, currencies).
  3. Resolve fields — field definitions and custom field names for any entity type.
Reading data
  • Every contact/deal/account listing needs a view_id from the filters step.
  • Use include to embed related data (owner, tasks, notes, deals, sales_account, etc.).
  • Search — fuzzy text across contacts, accounts, deals.
  • Lookup — exact-match on a field (e.g., contact by exact email).
  • Contact timeline — activity stream for one contact (calls, emails, notes, tasks).
Writing data
  • Create: send the full payload for the entity type; optional fields follow the schema defaults.
  • Update: send only fields you are changing.
  • Upsert: idempotent create-or-update — pass unique_identifier to match (e.g. {"emails": "jane@co.com"} for contacts, {"name": "Acme"} for accounts/deals).
  • Clone: duplicate a contact, deal, or account with all fields copied.
  • Delete: permanent — cannot be undone.

Key Patterns

  • Views (filters): Listing contacts, deals, or accounts requires a view_id. Resolve filters first to discover available views and their IDs for each entity type.
  • Embeds: Many reads accept include to pull related data (owner, tasks, notes, deals, sales_account, etc.) in one round trip.
  • Pagination: Collection responses are paginated (25 per page default). Use page=2 for subsequent pages.
  • Custom fields: Access via custom_field hash in request/response bodies. Internal names are prefixed with cf_.
  • Search vs Lookup: Search does fuzzy text matching. Lookup does exact field matching (e.g., exact email). Use lookup when you know the exact value.
  • Selectors: resolve picklist values (owners, deal_stages, territories, lead_sources, etc.).
  • Tasks filter: open, due_today, due_tomorrow, overdue, completed.
  • Appointments filter: upcoming, past, overdue.
  • Contact timeline: the activity feed returns all interactions (calls, emails, notes, tasks) for a contact in chronological order.

Gotchas

  • View ID required for lists: You cannot list all contacts/deals/accounts without a view_id. Resolve filters first to obtain view IDs.
  • Account field naming: Accounts use sales_account (singular) and sales_accounts (plural) in responses and paths—not just account.
  • Upsert unique_identifier: Upsert flows need a unique_identifier object to match existing records. For contacts, use emails (plural), NOT email. For accounts/deals, use name or id.
  • Lookup requires exact match: Partial strings return no results. 'janesample' won't match 'janesampleton@gmail.com'.
  • Task status: 0 = open, 1 = completed. Update a task with status=1 to mark done.
  • Notes: Typically loaded together with a contact, account, or deal—not as a standalone global list.
  • Appointments attendees: Pass as array of {"email": "...", "name": "..."} objects in create/update.
  • Clone creates a new ID: Cloned records get new IDs. All fields are copied except unique identifiers.

Tools in this Server (45)

Freshsales Clone Account

Clone an existing Freshsales account, creating a duplicate with all fields copied.

Freshsales Clone Contact

Clone an existing Freshsales contact, creating a duplicate with all fields copied.

Freshsales Clone Deal

Clone an existing Freshsales deal, creating a duplicate with all fields copied.

Freshsales Create Account

Create a new account (company) in Freshsales. Name is required. Returns the created account with its ID.

Freshsales Create Activity

Log a sales activity (call, email, meeting, custom) in Freshsales. Title, start_date, and end_date are required. Link to a contact, account, or deal.

Freshsales Create Appointment

Create an appointment/meeting in Freshsales. Title, from_date, and end_date are required. Optionally link to a contact, account, or deal and add atten...

Freshsales Create Contact

Create a new contact in Freshsales. At minimum provide first_name or email. Returns the created contact with its ID. Supports custom fields via the cu...

Freshsales Create Deal

Create a new deal in Freshsales. Name is required. Returns the created deal. Associate with contacts and accounts, set pipeline stage and expected clo...

Freshsales Create Note

Create a note on a Freshsales contact, account, or deal. Notes support HTML content. Returns the created note with its ID.

Freshsales Create Task

Create a new task in Freshsales. Title and due_date are required. Optionally link to a contact, account, or deal. Returns the created task.

Freshsales Delete Account

Permanently delete a Freshsales account (company). This cannot be undone.

Freshsales Delete Activity

Permanently delete a Freshsales sales activity.

Freshsales Delete Appointment

Permanently delete a Freshsales appointment.

Freshsales Delete Contact

Permanently delete a Freshsales contact. This cannot be undone.

Freshsales Delete Deal

Permanently delete a Freshsales deal. This cannot be undone.

Freshsales Delete Note

Permanently delete a Freshsales note.

Freshsales Delete Task

Permanently delete a Freshsales task.

Freshsales Get Account

Get a single Freshsales account (company) by ID with optional embedded related data. Returns full account details including contacts, deals, and custo...

Freshsales Get Activity

Get a single Freshsales sales activity by ID with optional embedded related data.

Freshsales Get Appointment

Get a single Freshsales appointment by ID with optional embedded related data.

Freshsales Get Contact

Get a single Freshsales contact by ID with optional embedded related data. Returns full contact details including custom fields. Use 'include' to embe...

Freshsales Get Deal

Get a single Freshsales deal by ID with optional embedded related data. Returns full deal details including amount, stage, pipeline, and custom fields...

Freshsales Get Selectors

Get configuration picklist values from Freshsales. Returns available options for fields like owners (sales reps), deal stages, lead sources, territori...

Freshsales Get Task

Get a single Freshsales task by ID with optional embedded related data.

Freshsales List Accounts

List accounts (companies) from a Freshsales view. Requires a view_id — call freshsales_list_filters with entity_type='accounts' first. Paginated.

Freshsales List Activities

List sales activities (calls, emails, custom activities) in Freshsales. Returns activity titles, types, dates, and linked entities.

Freshsales List Appointments

List appointments in Freshsales filtered by upcoming, past, or overdue. Returns appointment titles, times, attendees, and linked entities.

Freshsales List Contact Activities

Get the full activity timeline for a Freshsales contact — calls, emails, tasks, notes, appointments, and deal updates in chronological order.

Freshsales List Contacts

List contacts from a Freshsales view. Requires a view_id — call freshsales_list_filters first to get available views. Returns contacts with basic fiel...

Freshsales List Deals

List deals from a Freshsales view. Requires a view_id — call freshsales_list_filters with entity_type='deals' first. Paginated.

Freshsales List Fields

List all field definitions (standard + custom) for a Freshsales entity type. Returns field names, types, labels, picklist choices, required status, an...

Freshsales List Filters

List available views (filters) for a Freshsales entity type. You MUST call this first to get a view_id before listing contacts, deals, or accounts. Re...

Freshsales List Tasks

List tasks in Freshsales filtered by status: open, due_today, due_tomorrow, overdue, or completed. Returns task titles, due dates, and linked entities...

Freshsales Lookup

Exact-match lookup search. Unlike the general search which is fuzzy, this finds records by an exact field value (e.g., find a contact by exact email a...

Freshsales Search

Search across Freshsales contacts, accounts, and deals using a text query. Searches name, email, phone, address, and custom fields. Returns matching r...

Freshsales Update Account

Update an existing Freshsales account. Only provided fields are changed. Returns the updated account.

Freshsales Update Activity

Update an existing Freshsales sales activity. Only provided fields are changed.

Freshsales Update Appointment

Update an existing Freshsales appointment. Only provided fields are changed.

Freshsales Update Contact

Update an existing Freshsales contact. Only provided fields are changed (partial update). Returns the updated contact.

Freshsales Update Deal

Update an existing Freshsales deal. Only provided fields are changed. Returns the updated deal.

Freshsales Update Note

Update an existing Freshsales note. Returns the updated note.

Freshsales Update Task

Update an existing Freshsales task. Set status=1 to mark as done. Only provided fields are changed. Returns the updated task.

Freshsales Upsert Account

Create or update an account based on a unique identifier. If an account matching the unique_identifier exists, it is updated; otherwise a new account ...

Freshsales Upsert Contact

Create or update a contact based on a unique identifier. If a contact matching the unique_identifier exists, it is updated; otherwise a new contact is...

Freshsales Upsert Deal

Create or update a deal based on a unique identifier. If a deal matching the unique_identifier exists, it is updated; otherwise a new deal is created....

Frequently Asked Questions

What is the Freshsales MCP server?

Freshsales is a CRM by Freshworks for managing contacts, accounts, deals, tasks, appointments, and sales activities. Automate your sales pipeline with lead scoring, built-in phone/email, and visual deal pipelines. It provides 45 tools that AI agents can use through the Model Context Protocol (MCP).

How do I connect Freshsales to my AI agent?

Add the MCPBundles server URL to your MCP client configuration (Claude Desktop, Cursor, VS Code, etc.). The URL format is: https://mcp.mcpbundles.com/bundle/freshsales. Authentication is handled automatically.

How many tools does Freshsales provide?

Freshsales provides 45 tools that can be called by AI agents, along with a SKILL.md that gives your AI agent domain knowledge about when and how to use them.

What authentication does Freshsales require?

Freshsales uses API Key. Freshsales requires credentials. Connect via MCPBundles and authentication is handled automatically.

Setup Instructions

Connect Freshsales to any MCP client in minutes

https://mcp.mcpbundles.com/bundle/freshsales

What is MCP?

Model Context Protocol lets AI tools call external capabilities securely through a single URL. This bundle groups tools behind an MCP endpoint that many clients can use.

Use this bundle in 3 steps

  1. Copy the MCP URL above
  2. Open your AI tool and add a new MCP/connector
  3. Paste the URL and follow any auth prompts

Claude Desktop Users

Skip the manual setup! Use the .mcpb file format for one-click installation. Check the Claude Desktop tab for setup instructions.

Pick your tool tab for exact steps

Select ChatGPT, Cursor, Claude Code, or another tab for copy-paste config.

Ready to chat with Freshsales?

Same flow: Studio opens on this server after sign-in. Keep chatting to call tools from the conversation.

Freshsales MCP Server & Skill — 45 Tools