Keap MCP by usefulapi
Server Details
List and create Keap contacts, companies, tasks, opportunities, orders, tags and campaigns.
- Status
- Healthy
- Uptime
- 70.1% over 54 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 18 tools
Each tool targets a clearly distinct resource and action: list_* tools are separated by entity, get_* tools retrieve individual records, and create_/update_/apply_ tools perform unique mutations. There is no meaningful overlap or ambiguity between tools.
All tools consistently use the keap_ prefix followed by a verb_noun pattern, such as list_contacts, get_company, create_task, and update_contact. The naming convention is uniform across all 18 tools.
At 18 tools, the count falls into the borderline 16-25 range and feels somewhat heavy for a single server. Each tool does have a distinct purpose, but the set is larger than ideal and includes many read-only list/get operations.
Contacts and tasks have reasonable lifecycle coverage, but most other entities such as opportunities, companies, orders, products, and subscriptions are read-only. Notable operations like removing a tag, updating/deleting tasks, and updating opportunities are missing, creating potential dead ends.
Available Tools
18 toolskeap_apply_tagApply tag to contactsDestructiveInspect
APPLY a tag to one or more contacts (segments them / can trigger automation). Keap: POST /tags/{tag_id}/contacts:applyTags.
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | The id of the tag to apply. | |
| contact_ids | Yes | Ids of the contacts to tag. |
keap_create_contactCreate contactDestructiveInspect
CREATE a new contact in the Keap CRM. Provide any of given_name, family_name, email_addresses, phone_numbers, company_id, plus an optional extra object of any other Keap fields. Keap: POST /contacts.
| Name | Required | Description | Default |
|---|---|---|---|
| extra | No | Any other Keap fields to merge into the request body verbatim. | |
| company_id | No | Id of the company to associate the contact with. | |
| given_name | No | The contact's first name. | |
| family_name | No | The contact's last name. | |
| phone_numbers | No | Phone numbers to set on the contact. | |
| email_addresses | No | Email addresses to set on the contact. |
keap_create_taskCreate taskDestructiveInspect
CREATE a task (follow-up / to-do), optionally linked to a contact. Keap: POST /tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| extra | No | Any other Keap fields to merge into the request body verbatim. | |
| title | Yes | The task title. | |
| due_date | No | Due date/time, ISO 8601 (e.g. 2026-08-01T17:00:00Z). | |
| contact_id | No | Id of a contact to link the task to. | |
| description | No | A longer description / notes for the task. |
keap_get_companyGet companyRead-onlyInspect
Get a single company by id. Keap: GET /companies/{company_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated list of fields to return (field selection). | |
| company_id | Yes | The company id. |
keap_get_contactGet contactRead-onlyInspect
Get a single contact by id. Keap: GET /contacts/{contact_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated list of fields to return (field selection). | |
| contact_id | Yes | The contact id. |
keap_get_opportunityGet opportunityRead-onlyInspect
Get a single opportunity by id. Keap: GET /opportunities/{opportunity_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| opportunity_id | Yes | The opportunity id. |
keap_get_taskGet taskRead-onlyInspect
Get a single task by id. Keap: GET /tasks/{task_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task id. |
keap_list_affiliatesList affiliatesRead-onlyInspect
List referral-program affiliates. Supports filtering, ordering, and cursor pagination. Keap: GET /affiliates.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter expression, e.g. `given_name==John` (see Keap REST v2 filtering). | |
| order_by | No | Field to order results by, e.g. `given_name` or `-date_created`. | |
| page_size | No | Number of records per page (max 1000). | |
| page_token | No | Opaque pagination cursor from a prior response's next_page_token. |
keap_list_campaignsList campaignsRead-onlyInspect
List marketing campaigns (automation sequences). Supports filtering, ordering, and cursor pagination. Keap: GET /campaigns.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter expression, e.g. `given_name==John` (see Keap REST v2 filtering). | |
| order_by | No | Field to order results by, e.g. `given_name` or `-date_created`. | |
| page_size | No | Number of records per page (max 1000). | |
| page_token | No | Opaque pagination cursor from a prior response's next_page_token. |
keap_list_companiesList companiesRead-onlyInspect
List companies in the Keap CRM. Supports filtering, ordering, field selection, and cursor pagination. Keap: GET /companies.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated list of fields to return (field selection). | |
| filter | No | Filter expression, e.g. `given_name==John` (see Keap REST v2 filtering). | |
| order_by | No | Field to order results by, e.g. `given_name` or `-date_created`. | |
| page_size | No | Number of records per page (max 1000). | |
| page_token | No | Opaque pagination cursor from a prior response's next_page_token. |
keap_list_contactsList contactsRead-onlyInspect
List contacts in the Keap CRM. Supports filtering, ordering, field selection, and cursor pagination (page_size / page_token). Keap: GET /contacts.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated list of fields to return (field selection). | |
| filter | No | Filter expression, e.g. `given_name==John` (see Keap REST v2 filtering). | |
| order_by | No | Field to order results by, e.g. `given_name` or `-date_created`. | |
| page_size | No | Number of records per page (max 1000). | |
| page_token | No | Opaque pagination cursor from a prior response's next_page_token. |
keap_list_opportunitiesList opportunitiesRead-onlyInspect
List sales opportunities (deals) in the pipeline. Supports filtering, ordering, field selection, and cursor pagination. Keap: GET /opportunities.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated list of fields to return (field selection). | |
| filter | No | Filter expression, e.g. `given_name==John` (see Keap REST v2 filtering). | |
| order_by | No | Field to order results by, e.g. `given_name` or `-date_created`. | |
| page_size | No | Number of records per page (max 1000). | |
| page_token | No | Opaque pagination cursor from a prior response's next_page_token. |
keap_list_ordersList ordersRead-onlyInspect
List e-commerce orders. Supports filtering, ordering, and cursor pagination. Keap: GET /orders.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter expression, e.g. `given_name==John` (see Keap REST v2 filtering). | |
| order_by | No | Field to order results by, e.g. `given_name` or `-date_created`. | |
| page_size | No | Number of records per page (max 1000). | |
| page_token | No | Opaque pagination cursor from a prior response's next_page_token. |
keap_list_productsList productsRead-onlyInspect
List products in the catalog. Supports filtering, ordering, and cursor pagination. Keap: GET /products.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter expression, e.g. `given_name==John` (see Keap REST v2 filtering). | |
| order_by | No | Field to order results by, e.g. `given_name` or `-date_created`. | |
| page_size | No | Number of records per page (max 1000). | |
| page_token | No | Opaque pagination cursor from a prior response's next_page_token. |
keap_list_subscriptionsList subscriptionsRead-onlyInspect
List recurring subscriptions / payment plans. Supports filtering, ordering, and cursor pagination. Keap: GET /subscriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter expression, e.g. `given_name==John` (see Keap REST v2 filtering). | |
| order_by | No | Field to order results by, e.g. `given_name` or `-date_created`. | |
| page_size | No | Number of records per page (max 1000). | |
| page_token | No | Opaque pagination cursor from a prior response's next_page_token. |
keap_list_tagsList tagsRead-onlyInspect
List tags defined in the account (used to segment contacts). Supports filtering, ordering, and cursor pagination. Keap: GET /tags.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter expression, e.g. `given_name==John` (see Keap REST v2 filtering). | |
| order_by | No | Field to order results by, e.g. `given_name` or `-date_created`. | |
| page_size | No | Number of records per page (max 1000). | |
| page_token | No | Opaque pagination cursor from a prior response's next_page_token. |
keap_list_tasksList tasksRead-onlyInspect
List tasks (follow-ups / to-dos). Supports filtering, ordering, and cursor pagination. Keap: GET /tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter expression, e.g. `given_name==John` (see Keap REST v2 filtering). | |
| order_by | No | Field to order results by, e.g. `given_name` or `-date_created`. | |
| page_size | No | Number of records per page (max 1000). | |
| page_token | No | Opaque pagination cursor from a prior response's next_page_token. |
keap_update_contactUpdate contactDestructiveInspect
UPDATE an existing contact by id. Provide any of given_name, family_name, email_addresses, phone_numbers, company_id, plus an optional extra object of any other Keap fields (only supplied fields are changed). Keap: PATCH /contacts/{contact_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| extra | No | Any other Keap fields to merge into the request body verbatim. | |
| company_id | No | Id of the company to associate the contact with. | |
| contact_id | Yes | The contact id to update. | |
| given_name | No | The contact's first name. | |
| family_name | No | The contact's last name. | |
| phone_numbers | No | Phone numbers to set on the contact. | |
| email_addresses | No | Email addresses to set on the contact. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
18 tool updates
- Changed
keap_apply_tag1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_create_contact1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_create_task1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_get_company1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_get_contact1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_get_opportunity1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_get_task1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_list_affiliates1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_list_campaigns1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_list_companies1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_list_contacts1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_list_opportunities1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_list_orders1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_list_products1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_list_subscriptions1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_list_tags1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_list_tasks1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
keap_update_contact1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
18 tool updates
- First observed
keap_apply_tag - First observed
keap_create_contact - First observed
keap_create_task - First observed
keap_get_company - First observed
keap_get_contact - First observed
keap_get_opportunity - First observed
keap_get_task - First observed
keap_list_affiliates - First observed
keap_list_campaigns - First observed
keap_list_companies - First observed
keap_list_contacts - First observed
keap_list_opportunities - First observed
keap_list_orders - First observed
keap_list_products - First observed
keap_list_subscriptions - First observed
keap_list_tags - First observed
keap_list_tasks - First observed
keap_update_contact
Related MCP Connectors
Read and write Less Annoying CRM contacts, notes, tasks, events, pipelines and groups.
Read deals, persons, organizations, activities and pipelines; create and update CRM records.
Create, search, update, and manage data in OnePageCRM.
Read and write Copper CRM people, companies, opportunities and activities.
Related MCP Servers
- AlicenseBqualityFmaintenanceEnables interacting with the GetCourse LMS API to list users, create or update users, and query deals/orders with status and date filters.316 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables interaction with ActiveCampaign email marketing and CRM via API v3 through natural language.26 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to read and write leads, contacts, companies, tasks, notes, pipelines, tags, custom fields, users, events, conversations, and catalogs in the conversation-first sales CRM through its official v4 API, including a raw API call tool for any endpoint.MIT
- FlicenseNot gradedqualityDmaintenanceEnables integration with Kommo CRM to manage leads, add notes and tasks, update custom fields, and list pipelines. Supports multi-tenant authentication and includes an approval system for bulk operations.2-
Glama MCP Gateway
Add one secure layer between your agents and this server.