Lby Loops
Create or update a contact
Updates the contact with a matching email address or user ID, or creates it, with properties and mailing list subscriptions.
Description
Identify the contact by `email` or `userId`. To change a contact's email address, it needs a `userId`: send the `userId` with the new address. Leave `subscribed` out unless you mean to unsubscribe or re-subscribe the contact. Set list membership with `mailingLists` (`--list <id>=true` on the CLI). On the MCP server, `search`, `describe` and `execute` find, inspect and run this operation.
upsert-contact.md
Create or update a contact
Updates the contact with a matching email address or user ID, or creates it, with properties and mailing list subscriptions.
Identify the contact by email or userId. To change a contact's email
address, it needs a userId: send the userId with the new address. Leave
subscribed out unless you mean to unsubscribe or re-subscribe the contact.
Set list membership with mailingLists (--list <id>=true on the CLI). On
the MCP server, search, describe and execute find, inspect and run this
operation.
Set up
Use the first option your agent supports.
MCP (official, remote)
Add this server to your agent's MCP settings, then sign in when asked.
{ "mcpServers": { "loops": { "url": "https://mcp.loops.so" } } }
Call the MCP tool execute.
Server URL: https://mcp.loops.so
CLI (official)
Install the command, then confirm it runs.
brew install loops-so/tap/loops
loops --version
Run loops contacts update.
Set $LOOPS_API_KEY in your environment first (get a key: https://app.loops.so/settings?page=api).
API (official)
- Base URL: https://app.loops.so/api
- Endpoint:
PUT /v1/contacts/update - Auth: send the header
Authorization: Bearer $LOOPS_API_KEY - Get a key: https://app.loops.so/settings?page=api
- Docs: https://loops.so/docs/api-reference/intro
Before doing anything else, make one read-only call to confirm access.
Rules
- Ask the user before anything that sends messages, costs money, or changes data.
- Never print API keys.
Built from these files in the repository
The layout and the rules come from lib/catalog/render-markdown.ts, the set-up wording from lib/catalog/render-access.ts.