Skip to content

Freshsales MCP by usefulapi

io.usefulapi/freshsalesusefulapi.iostreamable-httpv1.0.0Scanned

Manage Freshsales contacts, accounts, deals, tasks and appointments; add notes.

31 tools: 5 can delete or cancel things, 6 change things and 20 only read.

Tools: 5 delete, 0 irreversible, 6 write, 20 read.
  • Reads private data · 9
  • Reads text others write · 31
  • Can send data out · 1
  • No findings

Anlyon alternative

11 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

31 tools

Deletes or cancels 5Claude Code: deny
  • freshsales_update_accountWRITE: change fields of an existing account (company); only the fields you pass are changed.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_update_account" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: change fields of an existing account (company); only the fields you pass are changed. PUT /sales_accounts/{id}.

    Annotations the server declares

    • title: Update account
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • freshsales_update_contactWRITE: change fields of an existing contact; only the fields you pass are changed (passing sales_accounts replaces the associated companies).Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_update_contact" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: change fields of an existing contact; only the fields you pass are changed (passing sales_accounts replaces the associated companies). PUT /contacts/{id}.

    Annotations the server declares

    • title: Update contact
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • freshsales_update_dealWRITE: change fields of an existing deal, e.g.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_update_deal" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Update deal
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • freshsales_update_noteWRITE: replace the text of an existing note.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_update_note" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: replace the text of an existing note. PUT /notes/{id}.

    Annotations the server declares

    • title: Update note
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • freshsales_update_taskWRITE: change a task: title, details, due date, owner, or mark it completed (status 1) or open (status 0).Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_update_task" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: change a task: title, details, due date, owner, or mark it completed (status 1) or open (status 0). PUT /tasks/{id}.

    Annotations the server declares

    • title: Update task
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Changes things 6Claude Code: ask
  • freshsales_create_accountWRITE: create an account (company).Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "freshsales_create_account" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    WRITE: create an account (company). name is required. It may duplicate an existing company: search first (freshsales_search). POST /sales_accounts.

    Annotations the server declares

    • title: Create account
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • freshsales_create_appointmentWRITE: create an appointment (meeting) with a start and end, optionally attached to a contact, account or deal and with attendees.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_create_appointment" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create appointment
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • freshsales_create_contactWRITE: create a contact.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_create_contact" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create contact
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • freshsales_create_dealWRITE: create a deal.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_create_deal" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create deal
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • freshsales_create_noteWRITE: add a note to a contact, account or deal.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_create_note" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: add a note to a contact, account or deal. Visible to your team on the record. POST /notes.

    Annotations the server declares

    • title: Add note
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • freshsales_create_taskWRITE: create a task (to-do) attached to a contact, account or deal.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_create_task" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 20Show 20 read-only tools
  • freshsales_get_accountOne account (company) by id with its fields, optionally with related records embedded (contacts, deals, tasks, appointments, owner...).Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "freshsales_get_account" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One account (company) by id with its fields, optionally with related records embedded (contacts, deals, tasks, appointments, owner...). GET /sales_accounts/{id}.

    Annotations the server declares

    • title: Get account
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_get_appointmentOne appointment by id with its attendees.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_get_appointment" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One appointment by id with its attendees. GET /appointments/{id}.

    Annotations the server declares

    • title: Get appointment
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_get_contactOne contact by id with all its fields, optionally with related records embedded via include (notes, tasks, appointments, deals, sales_accounts, owner, sales_activities...).Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "freshsales_get_contact" says "get": a word for reading.

    What it can reach

    • private-dataThe name "freshsales_get_contact" says "get" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Get contact
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_get_dealOne 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, own…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "freshsales_get_deal" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Get deal
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_get_taskOne task by id.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_get_task" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One task by id. GET /tasks/{id}.

    Annotations the server declares

    • title: Get task
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_account_viewsList the saved account (company) views of the account, e.g.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_account_views" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List account views
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_accountsList 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.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_accounts" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: List accounts
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_appointmentsList appointments that are open (upcoming) or complete (one filter per call), with title, time, location and creator.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_appointments" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List appointments that are open (upcoming) or complete (one filter per call), with title, time, location and creator. GET /appointments.

    Annotations the server declares

    • title: List appointments
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_contact_viewsList the saved contact views (filters) of the account, e.g.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_contact_views" says "list": a word for reading.

    What it can reach

    • private-dataThe name "freshsales_list_contact_views" says "list" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "list" and "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List contact views
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_contactsList 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 contact…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_contacts" says "list": a word for reading.

    What it can reach

    • private-dataThe name "freshsales_list_contacts" says "list" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "list" and "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: List contacts
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_deal_pipelinesList the deal pipelines (id, name).Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_deal_pipelines" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the deal pipelines (id, name). GET /selector/deal_pipelines.

    Annotations the server declares

    • title: List deal pipelines
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_deal_stagesList deal stages (id, name, deal_pipeline_id): those of the default pipeline, or of the pipeline given by pipeline_id.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_deal_stages" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List deal stages
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_deal_viewsList the saved deal views of the account, e.g.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_deal_views" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the saved deal views of the account, e.g. 'Open Deals'. A view id is needed by freshsales_list_deals. GET /deals/filters.

    Annotations the server declares

    • title: List deal views
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_dealsList the deals in a view (view_id from freshsales_list_deal_views), 25 per page, with name, amount, expected close, probability and age.Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_deals" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: List deals
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_optionsList 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…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_options" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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_outcomes. Use the ids in the *_id fields of the write tools. GET /selector/{kind}.

    Annotations the server declares

    • title: List option values
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_ownersList the users of the account (id and name).Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_owners" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the users of the account (id and name). Use the id as owner_id when creating or updating records. GET /selector/owners.

    Annotations the server declares

    • title: List owners
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_sales_activitiesList logged sales activities (calls, meetings, emails...) of the account.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_sales_activities" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "meeting": it reads calendars.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    List logged sales activities (calls, meetings, emails...) of the account. GET /sales_activities.

    Annotations the server declares

    • title: List sales activities
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_list_tasksList tasks by status filter: open, due_today, due_tomorrow, overdue or completed (one filter per call).Reads text others writeNo findings

    Why it is in this group

    • The name "freshsales_list_tasks" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List tasks
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • freshsales_lookupExact-match lookup of contacts, companies or deals by one field, e.g.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "freshsales_lookup" says "lookup": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Look up by field
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

279 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.

Can send data out1
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__freshsales__freshsales_create_account"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http freshsales https://freshsales.usefulapi.io/mcp
claude mcp add --transport http freshsales https://freshsales.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__freshsales__freshsales_list_contact_views",
      "mcp__freshsales__freshsales_list_contacts",
      "mcp__freshsales__freshsales_get_contact",
      "mcp__freshsales__freshsales_search",
      "mcp__freshsales__freshsales_lookup",
      "mcp__freshsales__freshsales_list_account_views",
      "mcp__freshsales__freshsales_list_accounts",
      "mcp__freshsales__freshsales_get_account",
      "mcp__freshsales__freshsales_list_deal_views",
      "mcp__freshsales__freshsales_list_deals",
      "mcp__freshsales__freshsales_get_deal",
      "mcp__freshsales__freshsales_list_tasks",
      "mcp__freshsales__freshsales_get_task",
      "mcp__freshsales__freshsales_list_appointments",
      "mcp__freshsales__freshsales_get_appointment",
      "mcp__freshsales__freshsales_list_sales_activities",
      "mcp__freshsales__freshsales_list_owners",
      "mcp__freshsales__freshsales_list_deal_pipelines",
      "mcp__freshsales__freshsales_list_deal_stages",
      "mcp__freshsales__freshsales_list_options"
    ],
    "ask": [
      "mcp__freshsales__freshsales_create_contact",
      "mcp__freshsales__freshsales_create_account",
      "mcp__freshsales__freshsales_create_deal",
      "mcp__freshsales__freshsales_create_note",
      "mcp__freshsales__freshsales_create_task",
      "mcp__freshsales__freshsales_create_appointment"
    ],
    "deny": [
      "mcp__freshsales__freshsales_update_contact",
      "mcp__freshsales__freshsales_update_account",
      "mcp__freshsales__freshsales_update_deal",
      "mcp__freshsales__freshsales_update_note",
      "mcp__freshsales__freshsales_update_task"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as freshsales. Review it before you use it.

Capability tags behind 31 rules
  • mcp__freshsales__freshsales_list_contact_views private-data, untrusted-input
  • mcp__freshsales__freshsales_list_contacts private-data, untrusted-input
  • mcp__freshsales__freshsales_get_contact private-data, untrusted-input
  • mcp__freshsales__freshsales_search private-data, untrusted-input
  • mcp__freshsales__freshsales_lookup private-data, untrusted-input
  • mcp__freshsales__freshsales_list_account_views untrusted-input
  • mcp__freshsales__freshsales_list_accounts untrusted-input
  • mcp__freshsales__freshsales_get_account private-data, untrusted-input
  • mcp__freshsales__freshsales_list_deal_views untrusted-input
  • mcp__freshsales__freshsales_list_deals untrusted-input
  • mcp__freshsales__freshsales_get_deal private-data, untrusted-input
  • mcp__freshsales__freshsales_list_tasks untrusted-input
  • mcp__freshsales__freshsales_get_task untrusted-input
  • mcp__freshsales__freshsales_list_appointments untrusted-input
  • mcp__freshsales__freshsales_get_appointment untrusted-input
  • mcp__freshsales__freshsales_list_sales_activities private-data, untrusted-input
  • mcp__freshsales__freshsales_list_owners untrusted-input
  • mcp__freshsales__freshsales_list_deal_pipelines untrusted-input
  • mcp__freshsales__freshsales_list_deal_stages untrusted-input
  • mcp__freshsales__freshsales_list_options private-data, untrusted-input
  • mcp__freshsales__freshsales_create_contact untrusted-input
  • mcp__freshsales__freshsales_update_contact untrusted-input
  • mcp__freshsales__freshsales_create_account untrusted-input, outbound
  • mcp__freshsales__freshsales_update_account untrusted-input
  • mcp__freshsales__freshsales_create_deal untrusted-input
  • mcp__freshsales__freshsales_update_deal untrusted-input
  • mcp__freshsales__freshsales_create_note untrusted-input
  • mcp__freshsales__freshsales_update_note untrusted-input
  • mcp__freshsales__freshsales_create_task untrusted-input
  • mcp__freshsales__freshsales_update_task untrusted-input
  • mcp__freshsales__freshsales_create_appointment untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.usefulapi/freshsales/verify?hash=b1e736d195b059f99b62c8c08003c1286931a8c22cc9e9c7dced97b013efc3a5" | jq -e '.changed == false'

Pinned hash b1e736d195b0, from Oct 25, 2026, 13:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.usefulapi/freshsales/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.usefulapi/freshsales
[![anlyon.dev](https://anlyon.dev/badge/io.usefulapi/freshsales.svg)](https://anlyon.dev/servers/io.usefulapi/freshsales)

Source: MCP Registry · repository. Synced Oct 25, 2026, 13:17 UTC.