Read iContact contacts, lists, campaigns and message stats; add contacts and manage subscriptions.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: add one contact to the account (it is not added to any list; use icontact_set_subscription for that). Not idempotent: an email that already exists is reported by iContact as a warning. POST /contacts.
Email address.
Name prefix, e.g. Dr.
Contact status (default normal).
Company name.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
WRITE: add one contact to the account (it is not added to any list; use icontact_set_subscription for that). Not idempotent: an email that already exists is reported by iContact as a warning. POST /contacts.
| Argument | Type | Description |
|---|---|---|
| fax | string | |
| city | string | |
| email* | string | Email address. |
| phone | string | |
| state | string | |
| prefix | string | Name prefix, e.g. Dr. |
| status | string | Contact status (default normal). |
| street | string | |
| suffix | string | |
| street2 | string | |
| business | string | Company name. |
| last_name | string | |
| first_name | string | |
| postal_code | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"email"
],
"properties": {
"fax": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"city": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Email address."
},
"phone": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"state": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"prefix": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Name prefix, e.g. Dr."
},
"status": {
"enum": [
"normal",
"bounced",
"donotcontact",
"pending",
"invitable",
"deleted"
],
"type": "string",
"description": "Contact status (default normal)."
},
"street": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"suffix": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"street2": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"business": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Company name."
},
"last_name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"first_name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"postal_code": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
}The iContact account behind the credentials (company name, address, plan fields) and its client folders, with the folder this server uses. GET /a/ and GET /a/{accountId}/c/.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One campaign by id. GET /campaigns/{campaignId}.
| Argument | Type | Description |
|---|---|---|
| campaign_id* | integer | iContact campaign id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"campaign_id"
],
"properties": {
"campaign_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "iContact campaign id.",
"exclusiveMinimum": 0
}
}
}One contact by id. GET /contacts/{contactId}.
| Argument | Type | Description |
|---|---|---|
| contact_id* | integer | iContact contact id (see icontact_list_contacts). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "iContact contact id (see icontact_list_contacts).",
"exclusiveMinimum": 0
}
}
}One mailing list by id. GET /lists/{listId}.
| Argument | Type | Description |
|---|---|---|
| list_id* | integer | iContact list id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"list_id"
],
"properties": {
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "iContact list id.",
"exclusiveMinimum": 0
}
}
}One message by id, with subject and HTML/text bodies. GET /messages/{messageId}.
| Argument | Type | Description |
|---|---|---|
| message_id* | integer | iContact message id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message_id"
],
"properties": {
"message_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "iContact message id.",
"exclusiveMinimum": 0
}
}
}Delivery statistics of a message (released, bounces, opens, clicks, unsubscribes, complaints, forwards). GET /messages/{messageId}/statistics.
| Argument | Type | Description |
|---|---|---|
| message_id* | integer | iContact message id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message_id"
],
"properties": {
"message_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "iContact message id.",
"exclusiveMinimum": 0
}
}
}One segment by id. GET /segments/{segmentId}.
| Argument | Type | Description |
|---|---|---|
| segment_id* | integer | iContact segment id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"segment_id"
],
"properties": {
"segment_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "iContact segment id.",
"exclusiveMinimum": 0
}
}
}One send by id. GET /sends/{sendId}.
| Argument | Type | Description |
|---|---|---|
| send_id* | integer | iContact send id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"send_id"
],
"properties": {
"send_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "iContact send id.",
"exclusiveMinimum": 0
}
}
}List campaigns (the sender identity and settings that messages belong to). GET /campaigns.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Records to skip (default 0). Pass the previous reply's next_offset. |
| order_by | string | Sort by a field of the resource, optionally with a direction, e.g. createDate:desc. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_offset."
},
"order_by": {
"type": "string",
"pattern": "^[A-Za-z]{1,40}(:(asc|desc))?$",
"description": "Sort by a field of the resource, optionally with a direction, e.g. createDate:desc."
}
}
}List contacts (email, name, address, phone, status, create date). Filter by status, exact email, first/last name or a list the contact belongs to. GET /contacts.
| Argument | Type | Description |
|---|---|---|
| string | Only the contact with this email address. | |
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Records to skip (default 0). Pass the previous reply's next_offset. |
| status | string | Contact status; total = every contact, including those on no list (e.g. just created and not yet subscribed). |
| list_id | integer | Only contacts subscribed to this list id (see icontact_list_lists). |
| order_by | string | Sort by a field of the resource, optionally with a direction, e.g. createDate:desc. |
| last_name | string | Only contacts with this last name. |
| first_name | string | Only contacts with this first name. |
List the account's custom contact fields (name, type). GET /customfields.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Records to skip (default 0). Pass the previous reply's next_offset. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_offset."
}
}
}List the account's mailing lists (name, description, welcome-message settings). GET /lists.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Records to skip (default 0). Pass the previous reply's next_offset. |
| order_by | string | Sort by a field of the resource, optionally with a direction, e.g. createDate:desc. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_offset."
},
"order_by": {
"type": "string",
"pattern": "^[A-Za-z]{1,40}(:(asc|desc))?$",
"description": "Sort by a field of the resource, optionally with a direction, e.g. createDate:desc."
}
}
}Who opened, clicked, bounced from or unsubscribed after a message: one page of events for one message. GET /messages/{messageId}/opens | clicks | bounces | unsubscribes.
| Argument | Type | Description |
|---|---|---|
| kind* | string | Which events to list. |
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Records to skip (default 0). Pass the previous reply's next_offset. |
| message_id* | integer | iContact message id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message_id",
"kind"
],
"properties": {
"kind": {
"enum": [
"opens",
"clicks",
"bounces",
"unsubscribes"
],
"type": "string",
"description": "Which events to list."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_offset."
},
"message_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "iContact message id.",
"exclusiveMinimum": 0
}
}
}List messages (subject, type, campaign, create date, HTML and text bodies). Filter by type or campaign. GET /messages.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Records to skip (default 0). Pass the previous reply's next_offset. |
| order_by | string | Sort by a field of the resource, optionally with a direction, e.g. createDate:desc. |
| campaign_id | integer | Only messages of this campaign. |
| message_type | string | Message type. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_offset."
},
"order_by": {
"type": "string",
"pattern": "^[A-Za-z]{1,40}(:(asc|desc))?$",
"description": "Sort by a field of the resource, optionally with a direction, e.g. createDate:desc."
},
"campaign_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only messages of this campaign.",
"exclusiveMinimum": 0
},
"message_type": {
"enum": [
"normal",
"autoresponder",
"welcome",
"confirmation"
],
"type": "string",
"description": "Message type."
}
}
}List saved segments (rule-based groups of contacts). GET /segments.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Records to skip (default 0). Pass the previous reply's next_offset. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_offset."
}
}
}List sends (a message sent to lists/segments: send id, message id, included/excluded lists, scheduled time, status). GET /sends.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Records to skip (default 0). Pass the previous reply's next_offset. |
| order_by | string | Sort by a field of the resource, optionally with a direction, e.g. createDate:desc. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_offset."
},
"order_by": {
"type": "string",
"pattern": "^[A-Za-z]{1,40}(:(asc|desc))?$",
"description": "Sort by a field of the resource, optionally with a direction, e.g. createDate:desc."
}
}
}List list memberships (subscriptionId, contactId, listId, status). Filter by list, contact or status. GET /subscriptions.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-100 (default 25). |
| offset | integer | Records to skip (default 0). Pass the previous reply's next_offset. |
| status | string | Subscription status. |
| list_id | integer | Only subscriptions to this list. |
| contact_id | integer | Only subscriptions of this contact. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_offset."
},
"status": {
"enum": [
"normal",
"pending",
"unsubscribed"
],
"type": "string",
"description": "Subscription status."
},
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only subscriptions to this list.",
"exclusiveMinimum": 0
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only subscriptions of this contact.",
"exclusiveMinimum": 0
}
}
}WRITE: put a contact on a list (status normal, or pending to start double opt-in) or unsubscribe it (status unsubscribed). Only for contacts who agreed to receive mail. POST /subscriptions.
| Argument | Type | Description |
|---|---|---|
| status* | string | normal = subscribed, pending = awaiting confirmation, unsubscribed. |
| list_id* | integer | iContact list id. |
| contact_id* | integer | iContact contact id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id",
"list_id",
"status"
],
"properties": {
"status": {
"enum": [
"normal",
"pending",
"unsubscribed"
],
"type": "string",
"description": "normal = subscribed, pending = awaiting confirmation, unsubscribed."
},
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "iContact list id.",
"exclusiveMinimum": 0
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "iContact contact id.",
"exclusiveMinimum": 0
}
}
}WRITE: change fields of one contact; only the fields you pass are sent. Setting status to donotcontact or deleted stops mail to that contact. POST /contacts/{contactId}.
| Argument | Type | Description |
|---|---|---|
| fax | string | |
| city | string | |
| string | New email address. | |
| phone | string | |
| state | string | |
| prefix | string | Name prefix, e.g. Dr. |
| status | string | New contact status. |
| street | string | |
| suffix | string | |
| street2 | string | |
| business | string | Company name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"minLength": 1,
"description": "Only the contact with this email address."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Records to skip (default 0). Pass the previous reply's next_offset."
},
"status": {
"enum": [
"normal",
"bounced",
"donotcontact",
"pending",
"invitable",
"deleted",
"total"
],
"type": "string",
"description": "Contact status; total = every contact, including those on no list (e.g. just created and not yet subscribed)."
},
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only contacts subscribed to this list id (see icontact_list_lists).",
"exclusiveMinimum": 0
},
"order_by": {
"type": "string",
"pattern": "^[A-Za-z]{1,40}(:(asc|desc))?$",
"description": "Sort by a field of the resource, optionally with a direction, e.g. createDate:desc."
},
"last_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Only contacts with this last name."
},
"first_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Only contacts with this first name."
}
}
}| last_name | string |
| contact_id* | integer | iContact contact id. |
| first_name | string |
| postal_code | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"fax": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"city": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "New email address."
},
"phone": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"state": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"prefix": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Name prefix, e.g. Dr."
},
"status": {
"enum": [
"normal",
"bounced",
"donotcontact",
"pending",
"invitable",
"deleted"
],
"type": "string",
"description": "New contact status."
},
"street": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"suffix": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"street2": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"business": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Company name."
},
"last_name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "iContact contact id.",
"exclusiveMinimum": 0
},
"first_name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"postal_code": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
}