# NotifyHub — Unified Notification MCP Server

> Send notifications across 23 channels with 36 AI-ready tools. One API, zero boilerplate.

- name: io.github.GabrielBBaldez/notify-hub
- version: 1.1.0
- connection class: L0 (run_local_package)
- trust: 74/100
- quality: –/100 (not scored)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.GabrielBBaldez%2Fnotify-hub
- tools: https://api.protogrid.dev/v1/servers/io.github.GabrielBBaldez%2Fnotify-hub/tools

**Runs on your machine: something must execute the package.** Only local packages are published (npm, PyPI, OCI, …). The registry never executes them, so tools are unknown until you run it.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "notify-hub": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "NOTIFY_CHANNELS_EMAIL_USERNAME",
        "-e",
        "NOTIFY_CHANNELS_EMAIL_PASSWORD",
        "-e",
        "NOTIFY_CHANNELS_SMS_ACCOUNTSID",
        "-e",
        "NOTIFY_CHANNELS_SMS_AUTHTOKEN",
        "-e",
        "NOTIFY_CHANNELS_SLACK_WEBHOOKURL",
        "-e",
        "NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN",
        "-e",
        "NOTIFY_CHANNELS_DISCORD_WEBHOOKURL",
        "-e",
        "NOTIFY_CHANNELS_TEAMS_WEBHOOKURL",
        "-e",
        "NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL",
        "-e",
        "NOTIFY_CHANNELS_TWITTER_APIKEY",
        "-e",
        "NOTIFY_CHANNELS_TWITTER_APISECRET",
        "-e",
        "NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN",
        "-e",
        "NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET",
        "-e",
        "NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN",
        "-e",
        "NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID",
        "-e",
        "NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN",
        "-e",
        "NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS",
        "-e",
        "NOTIFY_CHANNELS_NOTION_APIKEY",
        "-e",
        "NOTIFY_CHANNELS_TWITCH_CLIENTID",
        "-e",
        "NOTIFY_CHANNELS_TWITCH_CLIENTSECRET",
        "-e",
        "NOTIFY_CHANNELS_YOUTUBE_CLIENTID",
        "-e",
        "NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET",
        "-e",
        "NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN",
        "-e",
        "NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN",
        "-e",
        "NOTIFY_CHANNELS_SENDGRID_APIKEY",
        "-e",
        "NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY",
        "-e",
        "NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET",
        "-e",
        "NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN",
        "-e",
        "NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN",
        "-e",
        "NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID",
        "-e",
        "NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY",
        "-e",
        "NOTIFY_CHANNELS_MAILGUN_APIKEY",
        "-e",
        "NOTIFY_CHANNELS_PAGERDUTY_APIKEY",
        "ghcr.io/gabrielbbaldez/notify-hub:1.1.0"
      ],
      "env": {
        "NOTIFY_CHANNELS_EMAIL_USERNAME": "${NOTIFY_CHANNELS_EMAIL_USERNAME}",
        "NOTIFY_CHANNELS_EMAIL_PASSWORD": "${NOTIFY_CHANNELS_EMAIL_PASSWORD}",
        "NOTIFY_CHANNELS_SMS_ACCOUNTSID": "${NOTIFY_CHANNELS_SMS_ACCOUNTSID}",
        "NOTIFY_CHANNELS_SMS_AUTHTOKEN": "${NOTIFY_CHANNELS_SMS_AUTHTOKEN}",
        "NOTIFY_CHANNELS_SLACK_WEBHOOKURL": "${NOTIFY_CHANNELS_SLACK_WEBHOOKURL}",
        "NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN": "${NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN}",
        "NOTIFY_CHANNELS_DISCORD_WEBHOOKURL": "${NOTIFY_CHANNELS_DISCORD_WEBHOOKURL}",
        "NOTIFY_CHANNELS_TEAMS_WEBHOOKURL": "${NOTIFY_CHANNELS_TEAMS_WEBHOOKURL}",
        "NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL": "${NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL}",
        "NOTIFY_CHANNELS_TWITTER_APIKEY": "${NOTIFY_CHANNELS_TWITTER_APIKEY}",
        "NOTIFY_CHANNELS_TWITTER_APISECRET": "${NOTIFY_CHANNELS_TWITTER_APISECRET}",
        "NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN": "${NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN}",
        "NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET": "${NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET}",
        "NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN": "${NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN}",
        "NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID": "${NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID}",
        "NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN": "${NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN}",
        "NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS": "${NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS}",
        "NOTIFY_CHANNELS_NOTION_APIKEY": "${NOTIFY_CHANNELS_NOTION_APIKEY}",
        "NOTIFY_CHANNELS_TWITCH_CLIENTID": "${NOTIFY_CHANNELS_TWITCH_CLIENTID}",
        "NOTIFY_CHANNELS_TWITCH_CLIENTSECRET": "${NOTIFY_CHANNELS_TWITCH_CLIENTSECRET}",
        "NOTIFY_CHANNELS_YOUTUBE_CLIENTID": "${NOTIFY_CHANNELS_YOUTUBE_CLIENTID}",
        "NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET": "${NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET}",
        "NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN": "${NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN}",
        "NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN": "${NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN}",
        "NOTIFY_CHANNELS_SENDGRID_APIKEY": "${NOTIFY_CHANNELS_SENDGRID_APIKEY}",
        "NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY": "${NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY}",
        "NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET": "${NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET}",
        "NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN": "${NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN}",
        "NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN": "${NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN}",
        "NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID": "${NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID}",
        "NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY": "${NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY}",
        "NOTIFY_CHANNELS_MAILGUN_APIKEY": "${NOTIFY_CHANNELS_MAILGUN_APIKEY}",
        "NOTIFY_CHANNELS_PAGERDUTY_APIKEY": "${NOTIFY_CHANNELS_PAGERDUTY_APIKEY}"
      }
    }
  }
}
```

Placeholders to fill: `${NOTIFY_CHANNELS_EMAIL_USERNAME}`, `${NOTIFY_CHANNELS_EMAIL_PASSWORD}`, `${NOTIFY_CHANNELS_SMS_ACCOUNTSID}`, `${NOTIFY_CHANNELS_SMS_AUTHTOKEN}`, `${NOTIFY_CHANNELS_SLACK_WEBHOOKURL}`, `${NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN}`, `${NOTIFY_CHANNELS_DISCORD_WEBHOOKURL}`, `${NOTIFY_CHANNELS_TEAMS_WEBHOOKURL}`, `${NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL}`, `${NOTIFY_CHANNELS_TWITTER_APIKEY}`, `${NOTIFY_CHANNELS_TWITTER_APISECRET}`, `${NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN}`, `${NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET}`, `${NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN}`, `${NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID}`, `${NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN}`, `${NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS}`, `${NOTIFY_CHANNELS_NOTION_APIKEY}`, `${NOTIFY_CHANNELS_TWITCH_CLIENTID}`, `${NOTIFY_CHANNELS_TWITCH_CLIENTSECRET}`, `${NOTIFY_CHANNELS_YOUTUBE_CLIENTID}`, `${NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET}`, `${NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN}`, `${NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN}`, `${NOTIFY_CHANNELS_SENDGRID_APIKEY}`, `${NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY}`, `${NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET}`, `${NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN}`, `${NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN}`, `${NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID}`, `${NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY}`, `${NOTIFY_CHANNELS_MAILGUN_APIKEY}`, `${NOTIFY_CHANNELS_PAGERDUTY_APIKEY}`.

## Trust

- hygiene: 95
- liveness: n/a
- freshness: 45
- provenance: 80
- drivers: +repository +namespace-matches-repo ~liveness-unmeasured -stale-217d -unpinned-packages(1)
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality –/100 (not scored)

Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.

### protocol: n/a (weight 25)

- n/a `protocol.modern`, `protocol.stateless`, `protocol.transport`, `protocol.list_ttl`: no remote answered a protocol handshake (not probed yet, unreachable, or local-only)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: n/a (weight 30)

- n/a `tools.descriptions`, `tools.description_length`, `tools.schemas`, `tools.annotations`, `tools.directory_hints`, `tools.token_cost`, `tools.api_dump`: tool list unknown (behind auth, not probed, or empty)

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool list unknown

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: unknown
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.GabrielBBaldez/notify-hub.svg)](https://protogrid.dev/servers/io.github.GabrielBBaldez/notify-hub)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

_none_

## Packages

- oci ghcr.io/gabrielbbaldez/notify-hub:1.1.0 secrets: NOTIFY_CHANNELS_EMAIL_USERNAME, NOTIFY_CHANNELS_EMAIL_PASSWORD, NOTIFY_CHANNELS_SMS_ACCOUNTSID, NOTIFY_CHANNELS_SMS_AUTHTOKEN, NOTIFY_CHANNELS_SLACK_WEBHOOKURL, NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN, NOTIFY_CHANNELS_DISCORD_WEBHOOKURL, NOTIFY_CHANNELS_TEAMS_WEBHOOKURL, NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL, NOTIFY_CHANNELS_TWITTER_APIKEY, NOTIFY_CHANNELS_TWITTER_APISECRET, NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN, NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET, NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN, NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID, NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN, NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS, NOTIFY_CHANNELS_NOTION_APIKEY, NOTIFY_CHANNELS_TWITCH_CLIENTID, NOTIFY_CHANNELS_TWITCH_CLIENTSECRET, NOTIFY_CHANNELS_YOUTUBE_CLIENTID, NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET, NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN, NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN, NOTIFY_CHANNELS_SENDGRID_APIKEY, NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY, NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET, NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN, NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN, NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID, NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY, NOTIFY_CHANNELS_MAILGUN_APIKEY, NOTIFY_CHANNELS_PAGERDUTY_APIKEY

## Tools (0)

_none observed_
