AI Assistants

What the Assistant Can Do

Manage contacts and recipient lists, campaigns and petitions with an AI assistant

Your assistant manages contacts and recipient lists, and helps you create campaigns and petitions. Contact and list management works independently of campaigns. For a campaign, it follows the same steps as the editor in your Activoice admin. It reads this documentation on its own before working on a campaign, and after each step it reads the campaign's readiness report and tells you what is missing before the campaign can be published.

Editor steps

  1. Campaign — name, public description, language, channels, cover images through temporary signed uploads.
  2. Recipients — prepare contacts and recipient lists, then select them in recipient groups and configure each group's channels.
  3. Prompt — the factual briefing the AI uses to write supporters' messages, plus facts and extra writing instructions.
  4. Custom questions — optional questions asked to supporters so their messages can be personalized.
  5. Content samples — example messages per group and channel, which set the tone of the generated messages.
  6. Settings — public URL, number of recipients per supporter, collective progress, related campaigns, success page action call, greetings.
  7. Review and publish — the automated quality review, then publication, which the assistant does on its own once the campaign is complete.
  8. Share — the campaign's public link, and the snippet to embed it on your website, following the embed guide.

Each step is described in Campaign Configuration.

Petitions

Your assistant also creates and edits petitions, following the five steps of the petition editor: Content (title, description, cover images through temporary signed uploads, and the full text as a link to another page or written in Activoice), Form (the header and optional fields of the signature form), Follow-up (the campaign offered right after signing), Settings (URL, publication) and Share (public link and website embed). When it sets a follow-up campaign, it asks you whether that campaign should also invite its supporters to share the petition. Each step is described in Petitions, and embedding a petition in the embed guide.

Tools

ToolWhat it does
list_organizationsLists the organizations your account can access and identifies the one the assistant is working on.
switch_organizationSwitches the assistant to an accessible organization at your request. Your admin keeps its own selection.
get_guideReads the documentation index and the pages relevant to your request: contact and list management here, or Campaign Configuration and Quality Review for campaigns.
list_campaignsLists the organization's campaigns, with filters on name and state.
get_campaignReads a campaign with its recipient groups and readiness report.
create_campaignCreates a campaign, always as a draft.
update_campaignChanges campaign fields; publishes the campaign on its own once it is complete, ends it or puts it back to draft at your request.
prepare_campaign_cover_upload, upload_campaign_cover_imagePrepares private temporary uploads and applies the validated campaign covers after the files are sent.
run_campaign_review, get_campaign_reviewRuns the automated quality review and reads its results.
search_recipients, create_recipientFinds decision makers and recipient lists in your contact book, or adds a missing one.
list_recipients, get_recipient, update_recipientBrowses contacts, reads a full contact and updates the fields you provide.
list_recipient_lists, get_recipient_listBrowses recipient lists and reads their metadata and member counts.
create_recipient_list, update_recipient_list, duplicate_recipient_listCreates, edits or duplicates a recipient list. A duplicate reuses the existing contacts.
import_recipients_to_listCreates or updates contacts and adds them to a list in batches of up to 100, using CSV import rules. Returns per-row results, errors and membership warnings.
add_recipient_to_lists, remove_recipient_from_listsAdds a contact to selected lists or removes its memberships, preserving the contact and its other lists.
create_interpellation, update_interpellation, delete_interpellationManages recipient groups and their channel settings.
list_custom_questions, create_custom_questionReuses or creates custom questions.
list_greetingsLists the greeting formulas to attach to a campaign.
list_content_samples, create_content_sample, update_content_sample, delete_content_sampleManages the example messages of a recipient group.
list_petitionsLists the organization's petitions with their signature counts.
get_petitionReads a petition with its readiness report.
create_petitionCreates a petition, always as a draft.
update_petitionChanges petition fields, including its follow-up campaign; publishes it once it is complete.
prepare_petition_cover_upload, upload_petition_cover_imagePrepares private temporary uploads and applies the validated petition covers after the files are sent.
get_textsReads the texts of your public pages in one language, with your versions.
set_textsRewords texts of your public pages, per language.
clean_textsRemoves your versions of texts the pages no longer have.

Tool names show up in your assistant's activity log; you never have to type them.

Custom texts

Your assistant can reword the texts of your public pages, such as buttons and step titles, for instance to address your supporters informally. See Custom Texts.

Contacts and lists

You can ask your assistant to search your contact book, create or update contacts, and collect them in a recipient list without creating a campaign. When you need it for a campaign, the assistant can attach the list to a recipient group. A list is reusable across campaigns; a recipient group belongs to one campaign and also holds its channel settings. Editing a contact or a list affects every campaign that uses it.

To read a list's members, your assistant uses list_recipients with rlist set to the list ID. Both browsing tools return results, total, page, limit and next_page. Pages start at 1, with 25 results by default and at most 100 per page. Your assistant follows next_page until it is null. The quick search_recipients tool keeps its limited, combined search results.

List metadata updates preserve the members; the assistant adds or removes memberships explicitly. Removing a member keeps the contact's record. All contact and list references must belong to the assistant's current organization: an invalid reference rejects the whole request before any membership changes.

Geolocated lists only keep contacts with geography data. When creating a list or adding a contact, membership_warnings identifies any excluded memberships with the missing_geolocation code. Clearing a contact's geography removes it from geolocated lists; enabling a list's geolocation removes members without geography. Your assistant reads the saved state after each change.

Import contacts in batches

Use list_recipient_lists to find a destination, or create_recipient_list to create one. Read your CSV, spreadsheet or other source and map its columns to contact fields such as email, first_name, last_name, phone_number and twitter_handle. Existing custom-field slugs also work; unknown columns are ignored and reported. Send text or null values, keeping leading zeros and international phone prefixes.

Call import_recipients_to_list with the destination's recipient_list_id and 1 to 100 entries in recipients. Give each entry a unique, nonblank source_ref and a flat data object. Keep references tied to source rows so you can locate errors:

{
  "recipient_list_id": "00000000-0000-0000-0000-000000000001",
  "recipients": [
    {
      "source_ref": "contacts.csv:2",
      "data": {"email": "alex@example.org", "first_name": "Alex", "phone_number": "+33612345678"}
    }
  ]
}

This uses the CSV import engine: matching email, social or link identifiers update existing contacts across their lists; empty or absent cells preserve existing values. The 100-row limit applies only to this MCP tool. CSV uploads in the Activoice admin have no row-count cap. To resolve geography, pass geo_type and geo_id_column together, and put each area's code in that data column (for example geo_type: "commune_fr", geo_id_column: "insee", and "insee": "01001").

After each batch, read the result before continuing:

  • status is success, partial_success or failed, based on rejected contact rows. summary counts received, created, updated, unchanged and rejected rows, including repeated contacts.
  • results follows the input order and returns each source_ref, contact status, saved recipient_id, membership_status, errors and warnings.
  • Problems include a stable code, a message, an action and relevant fields or conflicting contact IDs. Correct and resend only rejected rows. For identifier_conflict, inspect the matching contacts first; do not invent identifiers or merge contacts automatically.
  • A saved contact can have membership_status: "rejected" when it lacks geography for a geolocated list. Use its recipient_id to update its geography, then add it to the list. Contact success alone does not guarantee membership.
  • A row without an email, social or link identifier can still create a contact, as in CSV imports. Its missing_identifier warning means replaying it may create a duplicate; use the returned ID for later edits. A phone number alone is not a matching identifier.

An invalid batch envelope (including duplicate source references, more than 100 rows or incomplete geography options) or an inaccessible destination writes nothing. Invalid contact values reject their own rows while valid neighbors are saved.

Cover images

For covers, your assistant first prepares an upload for each requested orientation, then sends each file as multipart HTTP POST to its returned URL using all returned form fields and the file field. It finishes by calling the cover upload tool with the resource ID and upload_token. Signed uploads expire after 10 minutes; completion must happen within 30 minutes. Each file must be PNG, JPEG or WebP and no larger than 10 MB. Only the requested covers change. Retrying within the token lifetime does not replace the same published covers again. If a requested cover changed after preparation, prepare a new upload.

Temporary originals stay private and are deleted after completion, with automatic expiry as a fallback. The published covers are converted to JPEG and cropped within desktop 1920×1080 or mobile 1080×1920 bounds, without enlarging small images. Your assistant needs access to the actual file bytes and an HTTP upload tool; if it cannot send files, use the admin upload. Public image links are not accepted by the cover tools.

What stays in your Activoice admin

Some actions are not available to assistants and are done in the admin: configuring CRM integrations, connecting Stripe and the donation settings (assistants only switch the ask on per campaign or petition), duplicating or reordering recipient groups, deleting a campaign or a petition, reading, deleting and exporting petition signatures, changing the design settings (colors, logo, custom CSS), and reading analytics. Your assistant points you to the right page when one of these is needed.

Deleting contacts or recipient lists, using the generic list catalog, managing custom fields, AI contact enrichment, directly uploading or exporting CSV files, and uploading contact avatars also stay in the admin. Your assistant can read a CSV or spreadsheet and import its contacts as structured batches with import_recipients_to_list.

Getting good results

  • Give the assistant the facts: who should be convinced, of what, by when, and who your supporters are. It writes the briefing and the sample messages from what you tell it, and asks rather than inventing.
  • Read the sample messages it drafts before approving them: they set the tone of everything the AI will then write for your supporters. Quality Review describes what they should look like.
  • Once the readiness report is clean and the review has run, the assistant publishes the campaign without asking and gives you its public link. Ask it to put the campaign back to draft if you are not ready. Publishing is refused while the readiness report has an error; Campaign Configuration lists what each step needs.
Copyright © 2026