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

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
89%
Qualität der Benennung
80%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~3,697Tokens (Tool-Definitionen)
~1.5 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.89% von 128k Kontext)

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-http

Was es kann

Tool-Inventar

Tools (16)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢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

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet16 Tools