# Freshsales MCP Muse connector

From musedirectory.ai, the independent directory of Meta Muse connectors. Not affiliated with Meta.

## Freshsales MCP

Manage contacts, accounts, deals, tasks and appointments in Freshsales CRM

- Record: https://musedirectory.ai/connector/freshsales-mcp
- Category: Productivity
- Developer: usefulapi (https://usefulapi.io/freshsales/)
- Muse status: Extra setup. Not in Muse's Connectors list yet. Muse can still use it: its page gives you a request to paste into Muse.
- Health: Working, 125ms, checked 2026-10-29T23:56:16Z
- Endpoint: https://freshsales.usefulapi.io/mcp
- Auth: No account needed; Pricing: unknown
- Screening: Screened, no issues found (2026-10-29T23:56:16Z)
- Source: Found in the official MCP Registry (io.usefulapi/freshsales) https://registry.modelcontextprotocol.io/v0/servers?search=io.usefulapi%2Ffreshsales

Connect to Freshsales to view and manage your sales pipeline. List contacts, companies and deals; create and update records; add notes and tasks; schedule appointments. Requires a Freshsales account.

Example request: "Show me my open deals and update the expected close date for the largest one"

How to connect: Not in Muse's Connectors list yet, but Muse can still use it. Paste this into Muse: "Use Freshsales MCP to help me. It is a free service with an MCP server at https://freshsales.usefulapi.io/mcp. It does not need an API key. Ask me before you share anything with it." Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.

Tools:
- freshsales_list_contact_views: List the saved contact views (filters) of the account, e.g. 'My Contacts', 'New Contacts', 'All Contacts'. A view id is needed by freshsales_list_contacts; ids differ per account. GET /contacts/filters.
- freshsales_list_contacts: List the contacts in a view (get view_id from freshsales_list_contact_views), 25 per page with name, email, phone numbers, job title, lead score, open deals amount and last contacted. Pages: use next_page. GET /contacts/view/{view_id}.
- freshsales_get_contact: One contact by id with all its fields, optionally with related records embedded via include (notes, tasks, appointments, deals, sales_accounts, owner, sales_activities...). GET /contacts/{id}.
- freshsales_search: Search by name/email text across one record type: contact, sales_account (company), deal or user. Returns id, type, name and email for the matches (up to per_page, default 10). Use the id with the get tools. GET /search.
- freshsales_lookup: Exact-match lookup of contacts, companies or deals by one field, e.g. a contact by email address. field is 'email' (contacts), 'name', or a custom field name (cf_...). Returns the full records. GET /lookup.
- freshsales_list_account_views: List the saved account (company) views of the account, e.g. 'My Accounts'. A view id is needed by freshsales_list_accounts. GET /sales_accounts/filters.
- freshsales_list_accounts: List the accounts (companies) in a view (view_id from freshsales_list_account_views), 25 per page, with name, location, open deals amount and last contacted. GET /sales_accounts/view/{view_id}.
- freshsales_get_account: One account (company) by id with its fields, optionally with related records embedded (contacts, deals, tasks, appointments, owner...). GET /sales_accounts/{id}.
- freshsales_list_deal_views: List the saved deal views of the account, e.g. 'Open Deals'. A view id is needed by freshsales_list_deals. GET /deals/filters.
- freshsales_list_deals: List the deals in a view (view_id from freshsales_list_deal_views), 25 per page, with name, amount, expected close, probability and age. GET /deals/view/{view_id}.
- freshsales_get_deal: One deal by id with amount, expected close, probability and ids of its stage, pipeline and owner, optionally with related records embedded (contacts, sales_account, deal_stage, owner, notes via sales_activities...). GET /deals/{id}.
- freshsales_list_tasks: List tasks by status filter: open, due_today, due_tomorrow, overdue or completed (one filter per call). Returns title, due date, owner and status. GET /tasks.
- freshsales_get_task: One task by id. GET /tasks/{id}.
- freshsales_list_appointments: List appointments that are open (upcoming) or complete (one filter per call), with title, time, location and creator. GET /appointments.
- freshsales_get_appointment: One appointment by id with its attendees. GET /appointments/{id}.
- freshsales_list_sales_activities: List logged sales activities (calls, meetings, emails...) of the account. GET /sales_activities.
- freshsales_list_owners: List the users of the account (id and name). Use the id as owner_id when creating or updating records. GET /selector/owners.
- freshsales_list_deal_pipelines: List the deal pipelines (id, name). GET /selector/deal_pipelines.
- freshsales_list_deal_stages: List deal stages (id, name, deal_pipeline_id): those of the default pipeline, or of the pipeline given by pipeline_id. Use the id as deal_stage_id. GET /selector/deal_stages or /selector/deal_pipelines/{id}/deal_stages.
- freshsales_list_options: List the configured choices (id and name) for a field: lead_sources, contact_statuses, lifecycle_stages, deal_types, deal_reasons, deal_products, deal_payment_statuses, territories, currencies, industry_types, business_types, campaigns, sales_activity_types, sales_activity_outcom
- freshsales_create_contact: WRITE: create a contact. Freshsales requires an email or a mobile number. It may create a duplicate of an existing contact: search first (freshsales_lookup by email). POST /contacts.
- freshsales_update_contact: WRITE: change fields of an existing contact; only the fields you pass are changed (passing sales_accounts replaces the associated companies). PUT /contacts/{id}.
- freshsales_create_account: WRITE: create an account (company). name is required. It may duplicate an existing company: search first (freshsales_search). POST /sales_accounts.
- freshsales_update_account: WRITE: change fields of an existing account (company); only the fields you pass are changed. PUT /sales_accounts/{id}.
- freshsales_create_deal: WRITE: create a deal. name, amount and sales_account_id are required; contact_ids attach existing contacts. Stage and pipeline default to the first of the default pipeline. POST /deals.
- freshsales_update_deal: WRITE: change fields of an existing deal, e.g. move it to another stage (deal_stage_id), change amount or expected close; only the fields you pass are changed. PUT /deals/{id}.
- freshsales_create_note: WRITE: add a note to a contact, account or deal. Visible to your team on the record. POST /notes.
- freshsales_update_note: WRITE: replace the text of an existing note. PUT /notes/{id}.
- freshsales_create_task: WRITE: create a task (to-do) attached to a contact, account or deal. title, due_date, owner_id and the target are required. POST /tasks.
- freshsales_update_task: WRITE: change a task: title, details, due date, owner, or mark it completed (status 1) or open (status 0). PUT /tasks/{id}.
- freshsales_create_appointment: WRITE: create an appointment (meeting) with a start and end, optionally attached to a contact, account or deal and with attendees. Attendees may be notified by Freshsales. POST /appointments.

Screening checks:
- MCP handshake: pass (Answered in 125ms)
- Domain against threat feeds (Cloudflare security DNS): pass (freshsales.usefulapi.io, usefulapi.io not flagged)
- Published packages against the OSV malicious-package database: n/a (No npm or PyPI package published)
- Hidden instructions or invisible characters in tool text: pass (31 tools read, nothing found)
- Inputs asking for passwords, card numbers or seed phrases: pass (None found)
- Domain and redirects: pass (No redirects off the domain)
- AI review of purpose and tool behavior: pass (No concerns)
