Skip to main content
The iZap MCP server lets an AI agent operate your WhatsApp business end to end — not just send a message. iZap is an official WhatsApp BSP that also owns the app layer (CRM, chatbots, orders, analytics), and this server exposes that layer to any agent over Streamable HTTP at {origin}/mcp: read analytics, manage your AI assistants, and send messages and broadcasts. Same business logic and auth as the REST API. Every tool is scoped to your business over OAuth and carries read-only / destructive hints, so the agent knows what’s safe to call before it calls it. Titles and descriptions ship in English and Portuguese. Connect Claude, ChatGPT, or Cursor in one click.

Choosing WhatsApp tooling for AI agents?

How iZap compares to transport-only APIs (Twilio, Cloud API, 360dialog) and no-code inboxes — and when each is the right pick.

Connect

Authentication is OAuth 2.0 (interactive clients bootstrap it automatically) or a Bearer JWT for server-to-server code. Register it as a remote HTTP MCP server:

Add to your AI client

Point any MCP-capable client at the URL above — interactive clients run the OAuth login for you.
One-click: open Add iZap to Cursor and confirm the install — or paste this link into your browser:
Manual — add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per-project):
Swap the host for the staging URL (https://api-staging.izap.ai/mcp) to test against staging.

Tool catalog

All tools accept an optional business_id (UUID); omit it to use your first business. Read-only tools are safe to call freely; the ones marked write create, change, or send.

Analytics (read-only)

AI assistants

Contacts & WhatsApp messaging

Media library

Broadcast transmissions

Notes

  • Dates are ISO-8601 strings (e.g. 2026-04-15); timezone is an IANA name (e.g. America/Sao_Paulo).
  • search_messages (and its legacy name search_today_messages) is rate-limited per user per day.
  • create_whatsapp_template returns as soon as Meta accepts the template for review; approval is asynchronous, so poll get_whatsapp_template_status for the verdict. A template only appears in list_whatsapp_templates once Meta holds it — that tool reads Meta’s catalog, not local drafts.
  • send_whatsapp_template_message needs a file for a template approved with a media header (document, image or video), named exactly one of three ways:
    • header_media_image_id — an image already in the media library, from upload_library_image or list_library_images. Preferred for anything reused: iZap reads it straight from storage, so nothing expires and no URL is involved.
    • header_media_document_id — the same for a document or video, from upload_library_document or list_library_documents. Its header_kind (document or video) says which template header format it fits.
    • header_media_url — a publicly reachable https:// URL that iZap fetches.
    • header_media_base64 — the bytes themselves, for a one-off file. Not saved to the library; call upload_library_image first if it should be reusable. The type is read from the content, so JPEG, PNG, PDF, MP4 and 3GPP work and a text or Office document needs header_media_url.
    Add header_media_filename to control the name a document shows the recipient. The file may differ on every send — only the header format is fixed by the approved template. Documents accept PDF, plain text, Word, Excel and PowerPoint up to 100 MB; images accept JPEG/PNG up to 5 MB and videos MP4/3GPP up to 16 MB. Passing a header for a template without a media header — or omitting it for one with — fails before anything is sent.
  • The media library stores GIF and WebP, which WhatsApp will not accept as a template header image. list_library_images reports usable_as_template_header per image so you can pick a valid one instead of discovering it at send time.
  • Templates with a media header must be created in Meta’s WhatsApp Manager; create_whatsapp_template cannot submit one yet.
  • Server errors surface as MCP tool errors (isError: true) with the message Error <status>: <detail>; a 401 means refresh the token.

Build with the MCP in your code

Get a token, then use the Python or TypeScript MCP SDK to call these tools from your own app or agent.