{
  "name": "app2email WhatsApp",
  "description": "WhatsApp messaging for the business whose app2email API key you hold: send approved templates, reply within the 24 hour window, read conversations, hand a conversation to a person, manage contacts and the Do Not Call list. Send ONE DataPart per message: {\"skill\": \"<skill id>\", ...arguments} (any tool of the app2email MCP server is a skill; the argument names are the MCP tool's). Text-only messages are answered with input-required. Tasks complete at once and are kept in memory for a while (not across restarts): read the result from the SendMessage answer.",
  "supportedInterfaces": [
    {
      "url": "https://api.app2email.com/a2a/v1",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Katalina Technologies Pty Ltd (app2email)",
    "url": "https://www.app2email.com"
  },
  "version": "1.0.0.0+2026-11-13",
  "documentationUrl": "https://www.app2email.com/docs/api",
  "iconUrl": "https://www.app2email.com/android-chrome-192x192.png",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false,
    "stateTransitionHistory": false
  },
  "securitySchemes": {
    "bearer": {
      "httpAuthSecurityScheme": {
        "scheme": "Bearer",
        "bearerFormat": "app2email API key (a2e_...)",
        "description": "The app2email API key of the WhatsApp number, from https://www.app2email.com/dashboard/apikey"
      }
    }
  },
  "securityRequirements": [
    {
      "schemes": {
        "bearer": {
          "list": []
        }
      }
    }
  ],
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "send_template",
      "name": "Send a WhatsApp template",
      "description": "Send an approved WhatsApp template to one number, a list or a contact segment. Works at any time; the only way to start a conversation. dry_run first.",
      "tags": [
        "whatsapp",
        "send",
        "template"
      ],
      "examples": [
        "{\"skill\":\"send_template\",\"to\":\"61412345678\",\"template_name\":\"order_update\",\"language\":\"en\",\"components\":[{\"type\":\"body\",\"parameters\":[{\"type\":\"text\",\"text\":\"#1234\"}]}],\"dry_run\":true}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "send_text",
      "name": "Send a WhatsApp text reply",
      "description": "Free-form text to one contact, only within 24 hours of their last message (window_state open).",
      "tags": [
        "whatsapp",
        "send",
        "reply"
      ],
      "examples": [
        "{\"skill\":\"send_text\",\"to\":\"61412345678\",\"body\":\"Thanks, it arrives on Friday.\",\"idempotency_key\":\"ticket-5512-1\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "send_media",
      "name": "Send an image, video or document",
      "description": "Free-form media by public link to one contact, within the 24 hour window.",
      "tags": [
        "whatsapp",
        "send",
        "media"
      ],
      "examples": [
        "{\"skill\":\"send_media\",\"to\":\"61412345678\",\"media_type\":\"document\",\"link\":\"https://example.com/invoice.pdf\",\"filename\":\"invoice.pdf\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_conversation",
      "name": "Window state and owner of a contact",
      "description": "Whether a free-form reply can be sent now, when the window closes, and who owns the conversation.",
      "tags": [
        "whatsapp",
        "conversation",
        "read"
      ],
      "examples": [
        "{\"skill\":\"get_conversation\",\"contact\":\"61412345678\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_conversation_messages",
      "name": "A contact's messages",
      "description": "The messages exchanged with one contact, newest first.",
      "tags": [
        "whatsapp",
        "conversation",
        "read"
      ],
      "examples": [
        "{\"skill\":\"get_conversation_messages\",\"contact\":\"61412345678\",\"limit\":20}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "set_conversation_owner",
      "name": "Hand a conversation over",
      "description": "Give the conversation to a person (owner human), an automation (agent) or pause it, with a reason and a summary.",
      "tags": [
        "whatsapp",
        "handoff"
      ],
      "examples": [
        "{\"skill\":\"set_conversation_owner\",\"contact\":\"61412345678\",\"owner\":\"human\",\"reason\":\"refund request\",\"summary\":\"Order #1234 arrived damaged; customer wants a refund.\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "list_templates",
      "name": "List message templates",
      "description": "The approved and pending templates, each with the values it needs and an example request.",
      "tags": [
        "whatsapp",
        "template",
        "read"
      ],
      "examples": [
        "{\"skill\":\"list_templates\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_usage",
      "name": "Plan usage and Meta costs",
      "description": "Messages used and left this billing month, and the Meta pricing categories.",
      "tags": [
        "usage",
        "read"
      ],
      "examples": [
        "{\"skill\":\"get_usage\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "list_contacts",
      "name": "Search contacts",
      "description": "Contacts with their tags, custom fields and marketing consent.",
      "tags": [
        "contacts",
        "read"
      ],
      "examples": [
        "{\"skill\":\"list_contacts\",\"q\":\"Mary\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ],
  "url": "https://api.app2email.com/a2a/v1",
  "protocolVersion": "0.3.0",
  "preferredTransport": "JSONRPC",
  "security": [
    {
      "bearer": []
    }
  ]
}