AiSensy MCP by usefulapi
Read AiSensy contacts, templates and campaigns; add contacts, send WhatsApp messages on approval.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"aisensy": {
"url": "https://aisensy.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://aisensy.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (16)
🟢aisensy_get_project
The AiSensy project (WhatsApp account) this key belongs to: name, status, plan and renewal date, monthly active user quota and usage, credit balance (raw units as AiSensy reports them), WhatsApp number, display name status, quality rating and messaging tier. GET /project/{project_id}.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aisensy_list_templates(limit, after, before)
List the WhatsApp template messages of the project with name, language, status (PENDING, APPROVED, REJECTED), category, text and parameter count. Only APPROVED templates can be sent. Pages by record id: pass next_after from the previous reply as `after`. GET /project/{project_id}/wa_template/.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Templates per page, 1-100 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"after": {
"description": "Return records after this template id (exclusive); use the previous reply's next_after.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$"
},
"before": {
"description": "Return records before this template id (exclusive).",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aisensy_get_template(template_id)
One WhatsApp template by id, with status, rejection reason, buttons and text. GET /project/{project_id}/wa_template/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"template_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "AiSensy record id (as returned by the list tools)."
}
},
"required": [
"template_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aisensy_list_campaigns(campaign_type, skip, limit)
List campaigns (API campaigns, broadcasts or both) with name, type, status, audience size, submitted count, template and creation time. Pages with skip + limit. POST /project/{project_id}/campaigns (a read: it only queries).
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_type": {
"description": "Which campaigns (default ALL).",
"type": "string",
"enum": [
"API",
"BROADCAST",
"ALL"
]
},
"skip": {
"description": "Campaigns to skip (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"limit": {
"description": "Campaigns per page, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aisensy_list_api_campaigns
List the project's API campaigns (the campaigns messages can be sent through) with status and template. A campaign must be LIVE to send. GET /project/{project_id}/campaign/api.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aisensy_get_api_campaign(campaign_id)
One API campaign by id: status, template, parameters and counts. GET /project/{project_id}/campaign/api/{campaign_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "AiSensy record id (as returned by the list tools)."
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aisensy_get_campaign_analytics(campaign_id, start_date, end_date)
Daily delivery and credit-usage statistics of one campaign (sent, delivered, read, failed counts and message credit usage), optionally within a date range. POST /project/{project_id}/campaign/analytics/{campaign_id} (a read: it only queries).
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "AiSensy record id (as returned by the list tools)."
},
"start_date": {
"description": "First day, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end_date": {
"description": "Last day, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aisensy_list_campaign_audience(campaign_id, category, limit, sort, after, ...)
Who a campaign was sent to, with name, number and sent/delivered/read times, optionally filtered by outcome (SENT, DELIVERED, READ, FAILED, REPLIED, CLICKED) and date range. Pages by cursor: pass next_after from the previous reply as `after`. GET /project/{project_id}/campaign/audience/{campaign_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "AiSensy record id (as returned by the list tools)."
},
"category": {
"description": "Only recipients with this outcome.",
"type": "string",
"enum": [
"SENT",
"DELIVERED",
"READ",
"FAILED",
"REPLIED",
"CLICKED"
]
},
"limit": {
"description": "Recipients per page, 1-1000 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"sort": {
"type": "string",
"enum": [
"asc",
"desc"
]
},
"after": {
"description": "Cursor from the previous reply's next_after.",
"type": "string",
"minLength": 1,
"maxLength": 500
},
"start_date": {
"description": "Earliest day, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end_date": {
"description": "Latest day, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡aisensy_create_api_campaign(campaign_name, template_name)
WRITE: create an API campaign that binds a name to an APPROVED WhatsApp template. It sends nothing; messages go out only when aisensy_send_campaign_message is called for it. Not idempotent: calling twice with the same name may create two campaigns or fail. POST /project/{project_id}/campaign/api.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Name of the new campaign."
},
"template_name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Exact name of an APPROVED template (see aisensy_list_templates)."
}
},
"required": [
"campaign_name",
"template_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aisensy_find_contact(phone_number)
Look up a contact by phone number: id, name, tags, attributes, opt-in/chat state and last activity. 404 means no such contact. GET /project/{project_id}/contact?action=FetchContact&mobile_number=.
Eingabe-Schema
{
"type": "object",
"properties": {
"phone_number": {
"description": "Phone number with country code, e.g. 919876543210 (digits; a leading + is dropped).",
"type": "string"
}
},
"required": [
"phone_number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aisensy_get_contact(contact_id)
One contact by id: name, phone number, tags, attributes, chat state and last activity. GET /project/{project_id}/contact/{contact_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "AiSensy record id (as returned by the list tools)."
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡aisensy_create_contact(name, phone_number)
WRITE: add a contact (name and phone number with country code). AiSensy opts new contacts in to WhatsApp notifications automatically, so only add people who agreed to be messaged. A number that already exists returns a 409 conflict. POST /project/{project_id}/contact.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"phone_number": {
"description": "Phone number with country code, e.g. 919876543210 (digits; a leading + is dropped).",
"type": "string"
}
},
"required": [
"name",
"phone_number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴aisensy_update_contact(contact_id, name, opted_in, blocked, attributes)
WRITE: change a contact's name, custom attributes, WhatsApp opt-in status or blocked status. Setting opted_in=false stops campaign messages to that person; blocked=true blocks them. Only the fields you pass change. PATCH /project/{project_id}/contact/{contact_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "AiSensy record id (as returned by the list tools)."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"opted_in": {
"description": "Whether the contact accepts WhatsApp notifications.",
"type": "boolean"
},
"blocked": {
"description": "Whether the contact is blocked.",
"type": "boolean"
},
"attributes": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 1000
},
"description": "Contact attributes as name → text value. AiSensy ignores attribute names that do not exist in the project."
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aisensy_get_message(message_id)
One WhatsApp message by id: status (SENT, DELIVERED, READ), sent/delivered/read times, sender, campaign, content and price. GET /project/{project_id}/messages/{message_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"message_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "AiSensy record id (as returned by the list tools)."
}
},
"required": [
"message_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴aisensy_send_campaign_message(campaign_name, phone_number, name, template_params, media_url, ...)
WRITE, SENDS A WHATSAPP MESSAGE TO A CUSTOMER AND SPENDS AISENSY CREDIT: send the template of a LIVE API campaign to one phone number (a new contact is created if the number is unknown). Not idempotent: every call sends again. template_params must match the template's parameter count. Show the user the recipient and the template first and set confirm=true only after they approve. POST /project/{project_id}/campaign/api/send.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Name of a LIVE API campaign (see aisensy_list_api_campaigns)."
},
"phone_number": {
"description": "Phone number with country code, e.g. 919876543210 (digits; a leading + is dropped).",
"type": "string"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Recipient's name."
},
"template_params": {
"description": "Values for the template's {{1}}, {{2}}... in order; the count must match the template.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 1000
}
},
"media_url": {
"description": "Public https URL of the image/video/document for a media template.",
"type": "string",
"maxLength": 2000
},
"media_filename": {
"description": "File name shown for the media.",
"type": "string",
"maxLength": 200
},
"tags": {
"description": "Existing tags to put on the contact (unknown tags are ignored).",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"attributes": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 1000
},
"description": "Contact attributes as name → text value. AiSensy ignores attribute names that do not exist in the project."
},
"source": {
"description": "Lead source label.",
"type": "string",
"maxLength": 200
},
"default_country_code": {
"description": "Country code to assume when phone_number has none, e.g. 91.",
"type": "string",
"pattern": "^\\d{1,4}$"
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true. Set it only after the user has seen and approved the recipient and the message in this conversation."
}
},
"required": [
"campaign_name",
"phone_number",
"name",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴aisensy_send_message(phone_number, type, text, template_name, language_code, ...)
WRITE, SENDS A WHATSAPP MESSAGE TO A CUSTOMER AND MAY SPEND AISENSY CREDIT: send either a free-text message (type=text; WhatsApp only delivers it inside the 24-hour window after the customer last wrote) or an approved template (type=template with template_name, language_code and body_params). Not idempotent. Show the user the recipient and the text first and set confirm=true only after they approve. POST /project/{project_id}/messages.
Eingabe-Schema
{
"type": "object",
"properties": {
"phone_number": {
"description": "Phone number with country code, e.g. 919876543210 (digits; a leading + is dropped).",
"type": "string"
},
"type": {
"type": "string",
"enum": [
"text",
"template"
],
"description": "text = free-form reply; template = an approved template."
},
"text": {
"description": "Message text (type=text).",
"type": "string",
"minLength": 1,
"maxLength": 4096
},
"template_name": {
"description": "Approved template name (type=template).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"language_code": {
"description": "Template language code such as en, en_US, hi (type=template; default en).",
"type": "string",
"pattern": "^[A-Za-z]{2,3}(_[A-Za-z]{2,4})?$"
},
"body_params": {
"description": "Values for the template's body {{1}}, {{2}}... in order (type=template).",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 1000
}
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true. Set it only after the user has seen and approved the recipient and the message in this conversation."
}
},
"required": [
"phone_number",
"type",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis