Less Annoying CRM MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Read and write Less Annoying CRM contacts, notes, tasks, events, pipelines and groups.
23 tools: 9 can delete or cancel things and 14 only read.
Scanned Oct 21, 2026
- Deletes or cancels9Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads14Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http less-annoying-crm https://less-annoying-crm.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
23 tools
Deletes or cancels 9Claude Code: deny
lacrm_add_contact_to_groupAdd a contact or company to a group (creates a group membership).No findings
Why it is in this group
- The name "lacrm_add_contact_to_group" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Add a contact or company to a group (creates a group membership). Identify the group by group_id (preferred) or group_name — not both. LACRM: CreateGroupMembership.
Annotations the server declares
- title: Add a contact to a group
- destructiveHint: true
lacrm_create_contactCreate a new contact (person) or company record.No findings
Why it is in this group
- The name "lacrm_create_contact" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a new contact (person) or company record. For a person, company_name links them to that company (creating it if needed). Company names must be unique. If assigned_to is omitted, the record is assigned to the API key's own user (one extra GetUser call). Returns { ContactId }. LACRM: CreateContact.
Annotations the server declares
- title: Create a contact or company
- destructiveHint: true
lacrm_create_eventCreate a timed (or all-day) event on your calendar, optionally with contacts/users as attendees.No findings
Why it is in this group
- The name "lacrm_create_event" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a timed (or all-day) event on your calendar, optionally with contacts/users as attendees. The timezone of start_date becomes the event's timezone. Returns { EventId }. LACRM: CreateEvent.
Annotations the server declares
- title: Schedule a calendar event
- destructiveHint: true
lacrm_create_noteAttach a plain-text note to a contact or company's history (newlines kept, HTML/markdown escaped).No findings
Why it is in this group
- The name "lacrm_create_note" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Attach a plain-text note to a contact or company's history (newlines kept, HTML/markdown escaped). Returns { NoteId }. LACRM: CreateNote.
Annotations the server declares
- title: Add a note to a contact
- destructiveHint: true
lacrm_create_pipeline_itemCreate a pipeline item (deal, lead...) on a contact in a given pipeline and status, with an optional note.No findings
Why it is in this group
- The name "lacrm_create_pipeline_item" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a pipeline item (deal, lead...) on a contact in a given pipeline and status, with an optional note. Returns { PipelineItemId }. LACRM: CreatePipelineItem.
Annotations the server declares
- title: Add a contact to a pipeline
- destructiveHint: true
lacrm_create_taskCreate a to-do on a user's task list (date only, no time — use lacrm_create_event for timed things).No findings
Why it is in this group
- The name "lacrm_create_task" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a to-do on a user's task list (date only, no time — use lacrm_create_event for timed things). Optionally attach it to a contact. Returns { TaskId }. LACRM: CreateTask.
Annotations the server declares
- title: Create a task
- destructiveHint: true
lacrm_edit_contactUpdate fields on an existing contact or company.No findings
Why it is in this group
- The name "lacrm_edit_contact" says "edit": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update fields on an existing contact or company. Only the fields you pass change; omitted fields are left alone. Multi-value fields (email, phone, address, website) are REPLACED by the list you pass. Set is_company=true when renaming a company. LACRM: EditContact.
Annotations the server declares
- title: Edit a contact or company
- destructiveHint: true
lacrm_edit_taskUpdate a task — including marking it complete (is_complete=true) or re-opening it (false).No findings
Why it is in this group
- The name "lacrm_edit_task" says "edit": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update a task — including marking it complete (is_complete=true) or re-opening it (false). Only passed fields change. LACRM: EditTask.
Annotations the server declares
- title: Edit or complete a task
- destructiveHint: true
lacrm_update_pipeline_itemMove a pipeline item to another status (e.g.No findings
Why it is in this group
- The name "lacrm_update_pipeline_item" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Move a pipeline item to another status (e.g. Prospect → Won) and/or add a note to its history. LACRM: EditPipelineItem.
Annotations the server declares
- title: Move or annotate a pipeline item
- destructiveHint: true
Only reads 14Claude Code: allow
lacrm_get_contactFetch one contact or company record with all its fields (emails, phones, addresses, custom fields, owner).No findings
Why it is in this group
- The name "lacrm_get_contact" says "get": a word for reading.
Description, as the server wrote it Fetch one contact or company record with all its fields (emails, phones, addresses, custom fields, owner). LACRM: GetContact.
Annotations the server declares
- title: Get a contact or company
- readOnlyHint: true
lacrm_get_contact_groupsList the groups one contact or company belongs to.No findings
Why it is in this group
- The name "lacrm_get_contact_groups" says "get": a word for reading.
Description, as the server wrote it List the groups one contact or company belongs to. LACRM: GetGroupsAttachedToContact.
Annotations the server declares
- title: Get a contact's groups
- readOnlyHint: true
lacrm_get_contact_pipeline_itemsAll pipeline items attached to one contact or company, grouped by pipeline.No findings
Why it is in this group
- The name "lacrm_get_contact_pipeline_items" says "get": a word for reading.
Description, as the server wrote it All pipeline items attached to one contact or company, grouped by pipeline. LACRM: GetPipelineItemsAttachedToContact.
Annotations the server declares
- title: Get a contact's pipeline items
- readOnlyHint: true
lacrm_get_userReturn the user who owns this API key — UserId, name, email and timezone.No findings
Why it is in this group
- The name "lacrm_get_user" says "get": a word for reading.
Description, as the server wrote it Return the user who owns this API key — UserId, name, email and timezone. A cheap way to confirm the key works, and the UserId to use for AssignedTo. LACRM: GetUser.
Annotations the server declares
- title: Get the current user
- readOnlyHint: true
lacrm_list_contacts_in_groupList the contacts that are members of one group.No findings
Why it is in this group
- The name "lacrm_list_contacts_in_group" says "list": a word for reading.
Description, as the server wrote it List the contacts that are members of one group. Identify the group by group_id (preferred) or group_name — not both. LACRM: GetContactsInGroup.
Annotations the server declares
- title: List contacts in a group
- readOnlyHint: true
lacrm_list_custom_fieldsList the account's field definitions (name, type, options) for contacts, companies or pipelines — use the Name values as keys in custom_fields when creating/editing contacts.No findings
Why it is in this group
- The name "lacrm_list_custom_fields" says "list": a word for reading.
Description, as the server wrote it List the account's field definitions (name, type, options) for contacts, companies or pipelines — use the Name values as keys in custom_fields when creating/editing contacts. LACRM: GetCustomFields.
Annotations the server declares
- title: List custom fields
- readOnlyHint: true
lacrm_list_eventsList calendar events in a date range, filterable by user or calendar.No findings
Why it is in this group
- The name "lacrm_list_events" says "list": a word for reading.
Description, as the server wrote it List calendar events in a date range, filterable by user or calendar. If contact_id is given, all events attached to that contact are returned and other filters are ignored. LACRM: GetEvents.
Annotations the server declares
- title: List calendar events
- readOnlyHint: true
lacrm_list_groupsList the contact groups you can see (GroupId, Name, Sharing, Color), optionally with member counts.No findings
Why it is in this group
- The name "lacrm_list_groups" says "list": a word for reading.
Description, as the server wrote it List the contact groups you can see (GroupId, Name, Sharing, Color), optionally with member counts. LACRM: GetGroups.
Annotations the server declares
- title: List groups
- readOnlyHint: true
lacrm_list_notesList notes, newest first by default — across the whole CRM, or for one contact.No findings
Why it is in this group
- The name "lacrm_list_notes" says "list": a word for reading.
Description, as the server wrote it List notes, newest first by default — across the whole CRM, or for one contact. Filter by date range and author. LACRM: GetNotes.
Annotations the server declares
- title: List notes
- readOnlyHint: true
lacrm_list_pipeline_itemsList the items in one pipeline (deals, leads...), optionally only in given statuses or for given users.No findings
Why it is in this group
- The name "lacrm_list_pipeline_items" says "list": a word for reading.
Description, as the server wrote it List the items in one pipeline (deals, leads...), optionally only in given statuses or for given users. An empty status filter returns items in all ACTIVE statuses. LACRM: GetPipelineItems.
Annotations the server declares
- title: List pipeline items
- readOnlyHint: true
lacrm_list_pipelinesList the account's pipelines (e.g.No findings
Why it is in this group
- The name "lacrm_list_pipelines" says "list": a word for reading.
Description, as the server wrote it List the account's pipelines (e.g. Sales Leads) with their statuses (StatusId, Name, IsActive) and optionally their custom fields. This is the setup, not the items — use lacrm_list_pipeline_items for those. LACRM: GetPipelines.
Annotations the server declares
- title: List pipelines
- readOnlyHint: true
lacrm_list_tasksList tasks due in a date range, optionally only incomplete/complete, for given users.No findings
Why it is in this group
- The name "lacrm_list_tasks" says "list": a word for reading.
Description, as the server wrote it List tasks due in a date range, optionally only incomplete/complete, for given users. If contact_id is given, ALL of that contact's tasks are returned regardless of dates or status. LACRM: GetTasks.
Annotations the server declares
- title: List tasks
- readOnlyHint: true
lacrm_list_usersList the users on the account that you can see (admins see all), with their UserIds — needed to assign contacts, tasks or filter by owner.No findings
Why it is in this group
- The name "lacrm_list_users" says "list": a word for reading.
Description, as the server wrote it List the users on the account that you can see (admins see all), with their UserIds — needed to assign contacts, tasks or filter by owner. LACRM: GetUsers.
Annotations the server declares
- title: List users
- readOnlyHint: true
lacrm_search_contactsSearch (or list) contacts and companies.No findings
Why it is in this group
- The name "lacrm_search_contacts" says "search": a word for reading.
Description, as the server wrote it Search (or list) contacts and companies. With no search_terms, returns everything visible, paged. Returns { HasMoreResults, Results }. LACRM: GetContacts.
Annotations the server declares
- title: Search contacts and companies
- readOnlyHint: 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.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http less-annoying-crm https://less-annoying-crm.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__less-annoying-crm__lacrm_get_user",
"mcp__less-annoying-crm__lacrm_list_users",
"mcp__less-annoying-crm__lacrm_search_contacts",
"mcp__less-annoying-crm__lacrm_get_contact",
"mcp__less-annoying-crm__lacrm_list_notes",
"mcp__less-annoying-crm__lacrm_list_tasks",
"mcp__less-annoying-crm__lacrm_list_events",
"mcp__less-annoying-crm__lacrm_list_pipelines",
"mcp__less-annoying-crm__lacrm_list_pipeline_items",
"mcp__less-annoying-crm__lacrm_get_contact_pipeline_items",
"mcp__less-annoying-crm__lacrm_list_groups",
"mcp__less-annoying-crm__lacrm_list_contacts_in_group",
"mcp__less-annoying-crm__lacrm_get_contact_groups",
"mcp__less-annoying-crm__lacrm_list_custom_fields"
],
"ask": [],
"deny": [
"mcp__less-annoying-crm__lacrm_create_contact",
"mcp__less-annoying-crm__lacrm_edit_contact",
"mcp__less-annoying-crm__lacrm_create_note",
"mcp__less-annoying-crm__lacrm_create_task",
"mcp__less-annoying-crm__lacrm_edit_task",
"mcp__less-annoying-crm__lacrm_create_event",
"mcp__less-annoying-crm__lacrm_create_pipeline_item",
"mcp__less-annoying-crm__lacrm_update_pipeline_item",
"mcp__less-annoying-crm__lacrm_add_contact_to_group"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as less-annoying-crm. Review it before you use it.