{
    "$schema": "https://modelcontextprotocol.io/schema/mcp.json",
    "name": "blasty",
    "title": "Blasty — WhatsApp marketing & AI auto-reply",
    "description": "Send WhatsApp messages and campaigns, and manage contacts and templates, through Blasty. Wraps the Blasty REST API (https://blasty.my/api/v1).",
    "version": "1.0.0",
    "documentation": "https://blasty.my/llms.txt",
    "websiteUrl": "https://blasty.my",
    "authentication": {
        "type": "http_bearer",
        "description": "Sanctum API token sent as 'Authorization: Bearer <token>'. Sending tools require a verified email on the token owner.",
        "tokenUrl": "https://blasty.my/tokens"
    },
    "transport": {
        "type": "streamable-http",
        "url": "https://blasty.my/mcp"
    },
    "capabilities": {
        "tools": [
            {
                "name": "list_messages",
                "description": "List sent/queued messages, newest first. Filter by status and campaign_id.",
                "method": "GET",
                "endpoint": "/api/v1/messages"
            },
            {
                "name": "get_message",
                "description": "Get the current delivery status of a single message by id.",
                "method": "GET",
                "endpoint": "/api/v1/messages/{id}"
            },
            {
                "name": "send_message",
                "description": "Queue a single WhatsApp message to a Malaysian phone number. Costs one credit. Requires a verified email.",
                "method": "POST",
                "endpoint": "/api/v1/messages/send"
            },
            {
                "name": "send_bulk_messages",
                "description": "Queue up to 1000 WhatsApp messages in one call. Credits charged up front per valid recipient. Requires a verified email.",
                "method": "POST",
                "endpoint": "/api/v1/messages/bulk"
            },
            {
                "name": "list_campaigns",
                "description": "List broadcast campaigns, newest first.",
                "method": "GET",
                "endpoint": "/api/v1/campaigns"
            },
            {
                "name": "get_campaign",
                "description": "Get a single campaign with its template.",
                "method": "GET",
                "endpoint": "/api/v1/campaigns/{id}"
            },
            {
                "name": "create_campaign",
                "description": "Create and immediately dispatch a campaign to a contact group and/or inline recipients. Requires a verified email.",
                "method": "POST",
                "endpoint": "/api/v1/campaigns"
            },
            {
                "name": "list_contacts",
                "description": "List/search contacts. Filter by search (name or phone) or external_id.",
                "method": "GET",
                "endpoint": "/api/v1/contacts"
            },
            {
                "name": "upsert_contact",
                "description": "Create or update a contact. Idempotent on the normalized phone number.",
                "method": "POST",
                "endpoint": "/api/v1/contacts"
            },
            {
                "name": "update_contact",
                "description": "Update a contact's name, external_id, attributes, or opted_out flag.",
                "method": "PUT",
                "endpoint": "/api/v1/contacts/{id}"
            },
            {
                "name": "delete_contact",
                "description": "Permanently delete a contact.",
                "method": "DELETE",
                "endpoint": "/api/v1/contacts/{id}"
            },
            {
                "name": "list_templates",
                "description": "List reusable message templates. Pass active_only=1 for active templates only.",
                "method": "GET",
                "endpoint": "/api/v1/templates"
            },
            {
                "name": "create_template",
                "description": "Create a reusable message template with merge fields like {{name}}.",
                "method": "POST",
                "endpoint": "/api/v1/templates"
            },
            {
                "name": "connection_status",
                "description": "Report the WhatsApp connection state and list linked devices.",
                "method": "GET",
                "endpoint": "/api/v1/connection/status"
            }
        ]
    }
}
