Index / MCP servers / Ray notifications

Ray notifications MCP server

Connect Ray notifications and your agent gets 21 tools, among them archive_template, create_template, create_webhook. It answers at https://ray-api.gege.mn/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 4 of 4 times since 14 September 2026; the last check, on 18 October 2026, succeeded.

Status
Answering
Tools
21
Reliability
4 of 4 checks
Response time
1074 ms
Transport
streamable HTTP
Last checked
18 October 2026

Send email, push, Slack, Discord, Telegram and webhook notifications and manage templates with Ray.

Description as the publisher wrote it.

The 21 tools Ray notifications offers

ToolWhat it does
archive_templateArchive a template (POST /templates/{id}/archive; write scope). Sends that reference it fail until it is restored with unarchive_template; its name stays reserved meanwhile. Confirm with the user first if it may be in production use.
Inputs: templateId
create_templateCreate a template (POST /templates; write scope). `channelKind` is permanent and must match the channels you'll send through (list_channels `templateKind`). It is saved as an unpublished draft unless `publish: true`; sending by templateId n
Inputs: name, folder, channelKind, content, logTitle, logDescription
create_webhookCreate an outbound webhook that Ray POSTs signed event payloads to (POST /tenant-webhooks; write scope; Pro plan or higher, otherwise 403). The URL must be public HTTPS. The response contains the signing `secret` exactly once: show it to th
Inputs: name, url, events
delete_webhookDelete (archive) a webhook so it receives no more events (DELETE /tenant-webhooks/{id}; write scope). It cannot be restored through the API; confirm with the user first.
Inputs: webhookId
get_click_statsEmail link click counts grouped by destination URL (GET /clicks) for a `sendId`, a `campaignId`, or both (at least one is required). Only links from email sends made with `trackClicks: true` are counted.
Inputs: sendId, campaignId
get_send_statusDelivery status of a send (GET /sends/{id}): `aggregate` counts per status over the whole send (pending, claimed, delivered, failed_retryable, failed_terminal, suppressed) plus one page of per-recipient delivery rows including provider erro
Inputs: sendId, cursor, limit
get_templateGet one template with its published version and its current draft (GET /templates/{id}): content, logTitle/logDescription, `requiredParams` a send must supply, and paramOverrides. Read this before update_template_draft, which needs the full
Inputs: templateId
get_usageThe workspace's plan, subscription status and this calendar month's usage against the monthly quota (GET /billing/subscription). `used`/`remaining` are null on unmetered plans. On a hard-capped plan, sends beyond the quota fail with HTTP 40
get_webhookGet one outbound webhook (GET /tenant-webhooks/{id}) including its delivery health (consecutiveFailures, lastDeliveryAt, lastFailureAt, lastError).
Inputs: webhookId
list_channelsList the delivery channels configured in this workspace (GET /channels). Call this FIRST before sending: each entry's `id` is the `channelConfigId` for send_notification and test_send_template, `kind` is the channel type (ses_email, smtp_em
list_feed_notificationsRead one end user's in-app notification feed (GET /notifications): the entries created by sends with `feed` or `showInFeed`. This is what an in-app inbox would show, not delivery status (use get_send_status for that). Paginate by passing `n
Inputs: externalUserId, templateId, channelConfigId, after, before, cursor
list_templatesList message templates (GET /templates): id, name, folder, channelKind, and `publishedVersionId` (null = never published, so it cannot be sent by templateId yet). Archived templates are hidden unless `includeArchived` is true. Use get_templ
Inputs: folder, includeArchived
list_webhooksList the workspace's outbound event webhooks (GET /tenant-webhooks): url, subscribed events, enabled flag and delivery health (consecutiveFailures, lastError). Signing secrets are never returned.
Inputs: includeArchived
publish_templatePublish a template's current draft as its new live version (POST /templates/{id}/publish; write scope). Sends by templateId use it immediately. Fails if there is no draft or the template is archived.
Inputs: templateId
read_docsRead Ray's documentation as markdown. With no `slug` it returns the index (llms.txt) listing every page; then pass a page slug, i.e. the path after /docs/ without `.md`, such as `sending`, `templates`, `idempotency`, `errors`, `rate-limits`
Inputs: slug
send_notificationSend a notification (POST /send; needs a `write`-scoped key). Returns `{ sendId }` with HTTP 202: delivery is asynchronous, so check the outcome with get_send_status. Use exactly one mode: 1. Single: `channelConfigId` + `recipient`. 2. Fan-
test_send_templateSend a real test of a template's PUBLISHED version to one recipient (POST /templates/{id}/test-send; write scope). It goes through the provider for real, so use a recipient the user controls. Test sends don't count toward the monthly quota
Inputs: templateId, channelConfigId, recipient, params
unarchive_templateRestore an archived template (POST /templates/{id}/unarchive; write scope). This is how to reclaim a name held by an archived template instead of creating a new one.
Inputs: templateId
update_template_draftReplace a template's draft (PATCH /templates/{id}; write scope). This is a full replacement, not a partial patch: pass content, logTitle, logDescription and paramOverrides as they should end up (get_template first). `name`, `folder` and `ch
Inputs: templateId, name, folder, channelKind, content, logTitle
update_webhookChange a webhook (PATCH /tenant-webhooks/{id}; write scope). Only the fields you pass change; pass at least one. `rotateSecret: true` issues a new signing secret, returned once in the response, and the old secret stops verifying immediately
Inputs: webhookId, name, url, events, enabled, rotateSecret
whoamiIdentify the API key this connection uses (GET /me): `tenantId` (the workspace), `apiKeyId` and `scopes`. Write tools need the `write` scope; call this to check before attempting them.

Add Ray notifications to your AI client

Every block below points at https://ray-api.gege.mn/mcp. Pick your client and copy.

Claude Code: one command in your terminal
claude mcp add --transport http ray-notifications https://ray-api.gege.mn/mcp
Claude Desktop: claude_desktop_config.json
{
  "mcpServers": {
    "ray-notifications": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://ray-api.gege.mn/mcp"]
    }
  }
}
Cursor: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
  "mcpServers": {
    "ray-notifications": {
      "url": "https://ray-api.gege.mn/mcp"
    }
  }
}
VS Code and GitHub Copilot: .vscode/mcp.json
{
  "servers": {
    "ray-notifications": {
      "type": "http",
      "url": "https://ray-api.gege.mn/mcp"
    }
  }
}
Zed: Zed settings.json
{
  "context_servers": {
    "ray-notifications": {
      "url": "https://ray-api.gege.mn/mcp"
    }
  }
}
Windsurf: ~/.codeium/mcp_config.json
{
  "mcpServers": {
    "ray-notifications": {
      "serverUrl": "https://ray-api.gege.mn/mcp"
    }
  }
}
JetBrains AI Assistant: Settings, Tools, AI Assistant, MCP, New MCP Server, as JSON
{
  "mcpServers": {
    "ray-notifications": {
      "url": "https://ray-api.gege.mn/mcp"
    }
  }
}
Continue: .continue/mcpServers/neuronto.yaml
name: Ray notifications
version: 0.0.1
schema: v1
mcpServers:
  - name: Ray notifications
    type: streamable-http
    url: https://ray-api.gege.mn/mcp
Gemini CLI: ~/.gemini/settings.json
{
  "mcpServers": {
    "ray-notifications": {
      "httpUrl": "https://ray-api.gege.mn/mcp"
    }
  }
}
Codex CLI: MCP server config
{
  "mcpServers": {
    "ray-notifications": {
      "type": "http",
      "url": "https://ray-api.gege.mn/mcp"
    }
  }
}
Warp: MCP servers, + Add, paste JSON
{
  "mcpServers": {
    "ray-notifications": {
      "url": "https://ray-api.gege.mn/mcp"
    }
  }
}
Goose: a one-click extension link
goose://extension?url=https%3A%2F%2Fray-api.gege.mn%2Fmcp&type=streamable_http&id=ray-notifications&name=Ray%20notifications

Is Ray notifications up right now?

It answered our last check on 18 October 2026 in 1074 ms. Over 4 checks since 14 September 2026 it answered 4. Status here comes from Neuronto's own probes, not from the publisher.

MCP servers similar to Ray notifications

Questions about Ray notifications

How many tools does Ray notifications have?

21, as returned by the server's own tools/list on 24 September 2026: archive_template, create_template, create_webhook, delete_webhook, get_click_stats, get_send_status, get_template, get_usage, and 13 more.

Is Ray notifications down?

It answered our last check on 18 October 2026 in 1074 ms. Over 4 checks since 14 September 2026 it answered 4.

How do I add Ray notifications to Cursor?

Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://ray-api.gege.mn/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.

Does Ray notifications need an API key?

It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.

Where this comes from

Publisher: io.github.gege-mn. Endpoint host: ray-api.gege.mn. ARD identifier: urn:air:io.github.gege-mn:mcp:ray-mcp. First indexed 14 September 2026. The tools are exactly what the server returned; nothing on this page is inferred from its name. Ranking in Neuronto search is never for sale.

Is this your server? Get a message the day it stops answering or its tools change: monitoring, 14 days free. Or claim the domain to manage how it is listed.