kweenkl-mcp

Push notifications for AI agents - send instant iPhone notifications from any MCP client.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
87%
Naming quality
87%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,246Tokens (tool definitions)
~1.7 KBTypical response size
Moderate attention impact (0.97% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "kweenkl-mcp": {
      "url": "https://api.kweenkl.com/mcp"
    }
  }
}

Remote endpoints

https://api.kweenkl.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒kweenkl_status

Check kweenkl server connectivity and status. Use this to verify the connection is working before sending notifications. No authentication required.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": []
}
🟑kweenkl_login(device_token, has_app, email)

Start the kweenkl login/onboarding flow. If the user provides their device_token (from the iOS app), this will immediately create their webhook. Otherwise, guides them to download the app or join the waitlist.

Input Schema

{
  "type": "object",
  "properties": {
    "device_token": {
      "type": "string",
      "description": "The user's device token from the kweenkl iOS app. If provided, immediately creates a webhook for them."
    },
    "has_app": {
      "type": "boolean",
      "description": "Whether the user already has the kweenkl iOS app installed. If true and no device_token, starts device auth flow."
    },
    "email": {
      "type": "string",
      "description": "User's email address for waitlist subscription (only used if has_app is false)"
    }
  },
  "required": []
}
🟒kweenkl_login_check(session_id)

Check the status of a device authorization flow. Call this after kweenkl_login to see if the user has approved the connection in their iOS app.

Input Schema

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "The session ID returned from kweenkl_login"
    }
  },
  "required": [
    "session_id"
  ]
}
🟒search(query)

Search kweenkl notification channels and messages. Use this to find channels by name or search through notification history.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query to find channels or notifications"
    }
  },
  "required": [
    "query"
  ]
}
🟒fetch(id, type)

Fetch details about a specific kweenkl channel or notification by ID.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The ID of the channel or notification to fetch"
    },
    "type": {
      "type": "string",
      "enum": [
        "channel",
        "notification"
      ],
      "description": "Type of resource to fetch: 'channel' or 'notification'"
    }
  },
  "required": [
    "id",
    "type"
  ]
}
🟑kweenkl(webhook_token, message, title, priority, payload, ...)

Send a push notification using kweenkl. The verb 'kweenkl' means to send a notification. Use this to notify users about important events, updates, or information that requires immediate attention.

Input Schema

{
  "type": "object",
  "properties": {
    "webhook_token": {
      "type": "string",
      "description": "The webhook token for your kweenkl channel. Format: UUID-like string. Can be found in the kweenkl iOS app by opening a channel and viewing 'Channel Info'."
    },
    "message": {
      "type": "string",
      "description": "The notification message content. Should be clear, concise, and actionable. Maximum recommended length: 500 characters for optimal mobile display."
    },
    "title": {
      "type": "string",
      "description": "Optional title for the notification. Should be brief (max 50 chars recommended). If omitted, only the message will be shown."
    },
    "priority": {
      "type": "string",
      "enum": [
        "low",
        "normal",
        "high"
      ],
      "description": "Priority level for the notification. 'high' = urgent/critical alerts, 'normal' = standard updates (default), 'low' = non-urgent information."
    },
    "payload": {
      "type": "object",
      "description": "Optional custom JSON payload for additional metadata. Can include any structured data that your app might process (e.g., action buttons, deep links, custom data)."
    },
    "glance": {
      "type": "object",
      "description": "Optional structured visualization rendered as a card inside the kweenkl iOS app. Must include a 'type' field. v1 supports type='line_chart' with required fields {labels: string[], values: number[]} (same length, β‰₯2 points) and optional fields {subtitle, accent (#hex), comment, x_label, y_label}. Example: {type:'line_chart', subtitle:'Γ‰volution 2015β†’2024', labels:['2015','2016','2017'], values:[670,720,780], accent:'#ff6b6b', comment:'tendance haussiΓ¨re'}",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "line_chart"
          ],
          "description": "Glance card type. Currently only 'line_chart' is supported."
        },
        "subtitle": {
          "type": "string",
          "description": "Small text under the title."
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "X-axis labels (same length as values, β‰₯2)."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Y-axis numeric values (same length as labels, β‰₯2)."
        },
        "accent": {
          "type": "string",
          "description": "Hex color for the line, e.g. '#ff6b6b'. Defaults to coral if omitted or invalid."
        },
        "comment": {
          "type": "string",
          "description": "Optional annotation displayed near the delta badge."
        },
        "x_label": {
          "type": "string",
          "description": "Optional X-axis title."
        },
        "y_label": {
          "type": "string",
          "description": "Optional Y-axis title."
        }
      },
      "required": [
        "type"
      ]
    }
  },
  "required": [
    "webhook_token",
    "message"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools