Newsletters

Invite people to a newsletter

newsletters_invite · Changes data · Markdown

Emails each person a request to confirm a subscription; only those who confirm ever get an issue.

Free

This tool costs nothing to call.

An example

Rachel Kim and Marcus Webb asked about new arrivals in the shop. Invite them to Halverson Ride Notes.

Your agent callsnewsletters_inviteFree

The example business is Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon. The reply is the one the tool really gives.

With these arguments
{
  "newsletter": "halverson-ride-notes",
  "people": [
    {
      "email": "rachel.kim@example.com",
      "name": "Rachel Kim"
    },
    {
      "email": "marcus.webb@example.com",
      "name": "Marcus Webb"
    }
  ],
  "how_they_asked": "They asked about new arrivals at the shop counter."
}
What comes back
{
  "invited": [
    "rachel.kim@example.com",
    "marcus.webb@example.com"
  ],
  "skipped": [],
  "invitations_left_today": 18
}

Use it when

People asked to hear from the business, in person or by email, and should be signed up.

What it does

Email each person a request to confirm their subscription: only those who press Confirm ever get an issue. For people who asked to hear from the business. Skips anyone already in, invited in the last day, unsubscribed or undeliverable. At most 20 invitations a day per account. Free: they go out through the business's own email service.

What comes back

invited: the people sent an invitation, skipped: the ones left out with the reason (already in, invited lately, unsubscribed, undeliverable), and invitations_left_today. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
newsletterRequiredstringThe newsletter's slug (from newsletters_list) or its exact name. 1 to 120 characters.
peopleRequiredarray of objects1 to 50 items.
people[].emailRequiredstringUp to 254 characters.
people[].namestringUp to 120 characters.
how_they_askedRequiredstringHow these people asked to hear from the business, like "they signed up at the counter" or "they asked for it by email". The invitations are checked first: people who never asked are cold outreach, and nobody is invited. 3 to 300 characters.

The call

Over MCP, call newsletters_invite on https://api.conecto.chat/mcp/newsletters. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/newsletters_invite \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"newsletter":"halverson-ride-notes","people":[{"email":"rachel.kim@example.com","name":"Rachel Kim"},{"email":"marcus.webb@example.com","name":"Marcus Webb"}],"how_they_asked":"They asked about new arrivals at the shop counter."}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
not_found404No newsletter of the business has that slug or name.Call newsletters_list and use a slug from it.
no_sending_service409The business has not connected its own email service.Connect it with newsletters_connect_service (its SMTP server, login and from address).
invalid_input400An address is not an email address.Fix or drop the address the message names.
cold_email422The invitations look like cold outreach, to people who never asked to hear from the business.Invite only people who asked, and say how they did in how_they_asked.
check_unavailable503The check invitations go through couldn't run just now.Try again in a minute.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md