Loops MCP by usefulapi
Server Details
Manage Loops contacts, mailing lists, and transactional/event emails.
- Status
- Healthy
- Uptime
- 82.8% over 57 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 10 tools
Each tool has a distinct purpose and target resource (contacts, properties, lists, events, transactional emails, API key). No overlap or ambiguity in descriptions.
All tools follow a consistent 'loops_verb_noun' pattern in snake_case. Verbs are descriptive and nouns match the resource.
10 tools is well-scoped for the domain, covering contacts, properties, lists, events, transactional emails, and an API test. Neither sparse nor overloaded.
Covers core contact CRUD, property creation, listing, and sending capabilities. Minor gap: no update/delete for contact properties, but the surface handles primary workflows.
Available Tools
10 toolsloops_create_contactCreate a contactDestructiveInspect
Creates a contact in Loops (additive). Loops API: POST /v1/contacts/create.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Contact email address (required). | ||
| source | No | Source label for where the contact came from. | |
| userId | No | Your app's user id for this contact. | |
| lastName | No | Last name. | |
| firstName | No | First name. | |
| userGroup | No | User group segment name. | |
| properties | No | Arbitrary custom contact properties (string/number/boolean); merged into the request body. | |
| subscribed | No | Whether the contact is subscribed to email. | |
| mailingLists | No | Map of mailing-list id -> subscribed boolean. |
loops_create_contact_propertyCreate a contact propertyDestructiveInspect
Creates a custom contact property/field (additive schema change). Loops API: POST /v1/contacts/properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the custom property to create (required). | |
| type | Yes | Data type of the property (required). |
loops_delete_contactDelete a contactDestructiveInspect
Deletes a contact from Loops. Destructive. Supply email OR userId. Loops API: POST /v1/contacts/delete.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Email of the contact to delete. | ||
| userId | No | userId of the contact to delete. |
loops_find_contactFind a contactRead-onlyInspect
Find a contact by email or userId (supply at least one). Loops API: GET /v1/contacts/find.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Contact email address to look up. | ||
| userId | No | Contact userId to look up (your app's user id). |
loops_list_contact_propertiesList contact propertiesRead-onlyInspect
List contact fields / custom properties defined in Loops. Loops API: GET /v1/contacts/properties.
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | Which properties to return: all (default) or custom only. |
loops_list_mailing_listsList mailing listsRead-onlyInspect
List all mailing lists in the Loops account (id + name). Loops API: GET /v1/lists.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
loops_send_eventSend an eventDestructiveInspect
Sends an event to Loops for a contact — TRIGGERS any automations/loops subscribed to this event. Loops API: POST /v1/events/send.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Contact email (supply email or userId). | ||
| userId | No | Contact userId (supply email or userId). | |
| eventName | Yes | The event name to send (required). | |
| mailingLists | No | Map of mailing-list id -> subscribed boolean. | |
| eventProperties | No | Properties attached to this event. | |
| contactProperties | No | Contact properties to update alongside the event. |
loops_send_transactionalSend a transactional emailDestructiveInspect
SENDS a real transactional email via a Loops template. This dispatches an actual email to the recipient. Loops API: POST /v1/transactional.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Recipient email address (required). | ||
| attachments | No | Optional attachments: array of { filename, contentType, data } objects. | |
| addToAudience | No | Whether to add the recipient to your audience. | |
| dataVariables | No | Template data variables (string/number) to interpolate into the template. | |
| transactionalId | Yes | The Loops transactional template id (required). |
loops_test_api_keyTest API keyRead-onlyInspect
Verify the configured Loops API key and return the team name — a good first call. Loops API: GET /v1/api-key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
loops_update_contactUpdate a contactDestructiveInspect
Updates (or creates) a contact by email/userId. Upserts — creates the contact if not found. Loops API: PUT /v1/contacts/update.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Contact email address (required; identifies the contact). | ||
| source | No | Source label. | |
| userId | No | Your app's user id (alternative identifier). | |
| lastName | No | Last name. | |
| firstName | No | First name. | |
| userGroup | No | User group segment name. | |
| properties | No | Arbitrary custom contact properties (string/number/boolean); merged into the request body. | |
| subscribed | No | Whether the contact is subscribed to email. | |
| mailingLists | No | Map of mailing-list id -> subscribed boolean. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
- Changed
loops_create_contact3 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / properties / additionalProperties / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } -] - added
Input schema / properties / properties / additionalProperties / typeAdded value: +[ + "string", + "number", + "boolean" +]
- Changed
loops_create_contact_property1 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
loops_delete_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
loops_find_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
loops_list_contact_properties1 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
loops_list_mailing_lists1 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
loops_send_event5 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / contactProperties / additionalProperties / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } -] - added
Input schema / properties / contactProperties / additionalProperties / typeAdded value: +[ + "string", + "number", + "boolean" +] - removed
Input schema / properties / eventProperties / additionalProperties / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } -] - added
Input schema / properties / eventProperties / additionalProperties / typeAdded value: +[ + "string", + "number", + "boolean" +]
- Changed
loops_send_transactional3 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / dataVariables / additionalProperties / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - } -] - added
Input schema / properties / dataVariables / additionalProperties / typeAdded value: +[ + "string", + "number" +]
- Changed
loops_test_api_key1 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
loops_update_contact3 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / properties / additionalProperties / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } -] - added
Input schema / properties / properties / additionalProperties / typeAdded value: +[ + "string", + "number", + "boolean" +]
10 tool updates
- First observed
loops_create_contact - First observed
loops_create_contact_property - First observed
loops_delete_contact - First observed
loops_find_contact - First observed
loops_list_contact_properties - First observed
loops_list_mailing_lists - First observed
loops_send_event - First observed
loops_send_transactional - First observed
loops_test_api_key - First observed
loops_update_contact
Related MCP Connectors
Manage Loops contacts, mailing lists, campaigns, and transactional email from your Loops account.
Query people, segments, campaigns, and message deliveries; send transactional email or broadcasts.
Send transactional email, run campaigns, manage contacts and automations, audit deliverability.
Send email and read templates, marketing contacts, lists, stats, bounces and unsubscribes.
Related MCP Servers
- AlicenseBqualityFmaintenanceProvides an interface to manage email marketing, contact lists, dynamic templates, and email analytics via SendGrid's API.21898 npm32ISC
- AlicenseBqualityDmaintenanceManages SendGrid email workflows including design library, transactional templates, marketing contacts and lists, single sends, and direct email sends via the SendGrid v3 API.80898 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage mailing lists and contacts, read campaign reports with per-link clicks, and trigger automations. Supports lookups and updates by email address, tag and status management, and destructive operations with client confirmation.MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to programmatically manage email outreach campaigns, leads, domains, senders, and webhook events, as well as send emails, through the Model Context Protocol over HTTP.-
Glama MCP Gateway
Add one secure layer between your agents and this server.