Skip to main content
Glama

Loops MCP by usefulapi

Server Details

Manage Loops contacts, mailing lists, and transactional/event emails.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
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

A3.7/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a distinct purpose and target resource (contacts, properties, lists, events, transactional emails, API key). No overlap or ambiguity in descriptions.

Naming Consistency5/5

All tools follow a consistent 'loops_verb_noun' pattern in snake_case. Verbs are descriptive and nouns match the resource.

Tool Count5/5

10 tools is well-scoped for the domain, covering contacts, properties, lists, events, transactional emails, and an API test. Neither sparse nor overloaded.

Completeness4/5

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 tools
loops_create_contactCreate a contact
Destructive
Inspect

Creates a contact in Loops (additive). Loops API: POST /v1/contacts/create.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesContact email address (required).
sourceNoSource label for where the contact came from.
userIdNoYour app's user id for this contact.
lastNameNoLast name.
firstNameNoFirst name.
userGroupNoUser group segment name.
propertiesNoArbitrary custom contact properties (string/number/boolean); merged into the request body.
subscribedNoWhether the contact is subscribed to email.
mailingListsNoMap of mailing-list id -> subscribed boolean.
loops_create_contact_propertyCreate a contact property
Destructive
Inspect

Creates a custom contact property/field (additive schema change). Loops API: POST /v1/contacts/properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the custom property to create (required).
typeYesData type of the property (required).
loops_delete_contactDelete a contact
Destructive
Inspect

Deletes a contact from Loops. Destructive. Supply email OR userId. Loops API: POST /v1/contacts/delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoEmail of the contact to delete.
userIdNouserId of the contact to delete.
loops_find_contactFind a contact
Read-only
Inspect

Find a contact by email or userId (supply at least one). Loops API: GET /v1/contacts/find.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoContact email address to look up.
userIdNoContact userId to look up (your app's user id).
loops_list_contact_propertiesList contact properties
Read-only
Inspect

List contact fields / custom properties defined in Loops. Loops API: GET /v1/contacts/properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
listNoWhich properties to return: all (default) or custom only.
loops_list_mailing_listsList mailing lists
Read-only
Inspect

List all mailing lists in the Loops account (id + name). Loops API: GET /v1/lists.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

loops_send_eventSend an event
Destructive
Inspect

Sends an event to Loops for a contact — TRIGGERS any automations/loops subscribed to this event. Loops API: POST /v1/events/send.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoContact email (supply email or userId).
userIdNoContact userId (supply email or userId).
eventNameYesThe event name to send (required).
mailingListsNoMap of mailing-list id -> subscribed boolean.
eventPropertiesNoProperties attached to this event.
contactPropertiesNoContact properties to update alongside the event.
loops_send_transactionalSend a transactional email
Destructive
Inspect

SENDS a real transactional email via a Loops template. This dispatches an actual email to the recipient. Loops API: POST /v1/transactional.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesRecipient email address (required).
attachmentsNoOptional attachments: array of { filename, contentType, data } objects.
addToAudienceNoWhether to add the recipient to your audience.
dataVariablesNoTemplate data variables (string/number) to interpolate into the template.
transactionalIdYesThe Loops transactional template id (required).
loops_test_api_keyTest API key
Read-only
Inspect

Verify the configured Loops API key and return the team name — a good first call. Loops API: GET /v1/api-key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

loops_update_contactUpdate a contact
Destructive
Inspect

Updates (or creates) a contact by email/userId. Upserts — creates the contact if not found. Loops API: PUT /v1/contacts/update.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesContact email address (required; identifies the contact).
sourceNoSource label.
userIdNoYour app's user id (alternative identifier).
lastNameNoLast name.
firstNameNoFirst name.
userGroupNoUser group segment name.
propertiesNoArbitrary custom contact properties (string/number/boolean); merged into the request body.
subscribedNoWhether the contact is subscribed to email.
mailingListsNoMap of mailing-list id -> subscribed boolean.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updates
    • Changedloops_create_contact3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / properties / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]
      • addedInput schema / properties / properties / additionalProperties / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean"
        +]
    • Changedloops_create_contact_property1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedloops_delete_contact1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedloops_find_contact1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedloops_list_contact_properties1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedloops_list_mailing_lists1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedloops_send_event5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / contactProperties / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]
      • addedInput schema / properties / contactProperties / additionalProperties / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean"
        +]
      • removedInput schema / properties / eventProperties / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]
      • addedInput schema / properties / eventProperties / additionalProperties / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean"
        +]
    • Changedloops_send_transactional3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / dataVariables / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / dataVariables / additionalProperties / type
        Added value: +[
        +  "string",
        +  "number"
        +]
    • Changedloops_test_api_key1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedloops_update_contact3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / properties / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]
      • addedInput schema / properties / properties / additionalProperties / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean"
        +]
  2. 10 tool updates
    • First observedloops_create_contact
    • First observedloops_create_contact_property
    • First observedloops_delete_contact
    • First observedloops_find_contact
    • First observedloops_list_contact_properties
    • First observedloops_list_mailing_lists
    • First observedloops_send_event
    • First observedloops_send_transactional
    • First observedloops_test_api_key
    • First observedloops_update_contact

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    Provides an interface to manage email marketing, contact lists, dynamic templates, and email analytics via SendGrid's API.
    21
    898 npm
    32
    ISC
  • A
    license
    B
    quality
    D
    maintenance
    Manages SendGrid email workflows including design library, transactional templates, marketing contacts and lists, single sends, and direct email sends via the SendGrid v3 API.
    80
    898 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.