{
  "info": {
    "name": "Loops.so — mcp.ai",
    "description": "REST API for the Loops.so MCP. Set {{apiKey}} to a workspace key (sk_live_…) created at https://mcp.ai/settings/api-keys.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.mcp.ai/api/loops_so",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "sk_live_...",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "loops_so_create_contact",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/contact",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "contact"
          ]
        },
        "description": "Tool to add a new contact to your Loops audience. Use when you need to create a contact with email and optional properties like name, subscription status, or custom attributes. Returns 409 if contact ",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"\",\n  \"source\": \"\",\n  \"userId\": \"\",\n  \"lastName\": \"\",\n  \"firstName\": \"\",\n  \"userGroup\": \"\",\n  \"subscribed\": false,\n  \"mailingLists\": {}\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "loops_so_create_contact_property",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/contact/property",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "contact",
            "property"
          ]
        },
        "description": "Tool to add a custom contact property to your Loops team. Use when you need to store additional contact data beyond default fields. Properties must have unique names in camelCase format and a specifie",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"type\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "loops_so_delete_contact",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/contact",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "contact"
          ]
        },
        "description": "Tool to delete a contact by email address or user ID. Use when you need to remove a contact from Loops. Either email or userId must be provided to identify the contact.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"\",\n  \"userId\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "loops_so_find_contact",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/find/contact",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "find",
            "contact"
          ]
        },
        "description": "Tool to search for a contact by email or userId. Use when you need to find a specific contact's details including subscription status and custom properties. Exactly one of email or userId must be prov",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"\",\n  \"userId\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "loops_so_get_contact_properties",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/contact/properties",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "contact",
            "properties"
          ]
        },
        "description": "Tool to retrieve a list of your account's contact properties from Loops.so. Use when you need to view all available contact properties or filter to only custom properties created by your team.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"list\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "loops_so_get_dedicated_sending_ips",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/dedicated/sending/ips",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "dedicated",
            "sending",
            "ips"
          ]
        },
        "description": "Tool to retrieve a list of Loops' dedicated sending IP addresses. Use when you need to get IP addresses for whitelisting purposes.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "loops_so_get_mailing_lists",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/mailing/lists",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "mailing",
            "lists"
          ]
        },
        "description": "Tool to retrieve all mailing lists associated with your Loops account. Use when you need to browse or manage mailing list information.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "loops_so_list_custom_fields",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/custom/fields",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "custom",
            "fields"
          ]
        },
        "description": "Tool to retrieve a list of custom contact properties. Use when you need to view available custom fields for contacts. Note: This endpoint is deprecated in favor of 'List contact properties'.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "loops_so_list_transactional_emails",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/transactional/emails",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "transactional",
            "emails"
          ]
        },
        "description": "Tool to retrieve a list of published transactional emails. Use when you need to view all available transactional email templates. Supports pagination with perPage and cursor parameters.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"cursor\": \"\",\n  \"perPage\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "loops_so_send_event",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/send/event",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "send",
            "event"
          ]
        },
        "description": "Tool to send events to trigger emails in Loops. Use when you need to track user actions and trigger automated email workflows based on those events.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"\",\n  \"userId\": \"\",\n  \"eventName\": \"\",\n  \"mailingLists\": {},\n  \"idempotencyKey\": \"\",\n  \"eventProperties\": {}\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "loops_so_test_api_key",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/test/api/key",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "test",
            "api",
            "key"
          ]
        },
        "description": "Tool to test API key validity and retrieve team information. Use to verify API credentials are working correctly.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "loops_so_update_contact",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/contact",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "contact"
          ]
        },
        "description": "Tool to update an existing contact by email or userId. Use when you need to modify contact properties or re-subscribe contacts. Creates a new contact if no matching record exists.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"\",\n  \"source\": \"\",\n  \"userId\": \"\",\n  \"lastName\": \"\",\n  \"firstName\": \"\",\n  \"userGroup\": \"\",\n  \"subscribed\": false,\n  \"mailingLists\": {}\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    }
  ]
}