Skip to content

Ably MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi

MCP server for Ably — channel history, presence, occupancy, stats, publish, and app management.

Deletes · 1

15 tools: 1 can delete or cancel things and 14 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http ably https://ably.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

15 tools

Deletes or cancels 1Claude Code: deny
  • ably_publish_messageWRITE: publish a message to a channel.No findings

    Why it is in this group

    • The name "ably_publish_message" says "publish": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: publish a message to a channel. Every connected subscriber receives it in real time. This is a real, outward-facing side effect — confirm the channel and payload before calling. REST: POST /channels/{channel}/messages.

    Annotations the server declares

    • title: Publish a message to a channel
    • readOnlyHint: false
    • destructiveHint: true
Only reads 14Claude Code: allow
  • ably_get_account_statsRetrieve aggregated usage statistics across the whole account, bucketed by time.No findings

    Why it is in this group

    • The name "ably_get_account_stats" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve aggregated usage statistics across the whole account, bucketed by time. Account id is resolved from the control token when ABLY_ACCOUNT_ID is unset. Control API: GET /accounts/{account_id}/stats.

    Annotations the server declares

    • title: Get account-level statistics
    • readOnlyHint: true
  • ably_get_channel_detailsGet status and occupancy metrics for a single channel (connections, publishers, subscribers, presence members).No findings

    Why it is in this group

    • The name "ably_get_channel_details" says "get": a word for reading.
    Description, as the server wrote it
    Get status and occupancy metrics for a single channel (connections, publishers, subscribers, presence members). REST: GET /channels/{channel}.

    Annotations the server declares

    • title: Get channel details / occupancy
    • readOnlyHint: true
  • ably_get_channel_historyRetrieve historical messages published to a channel, newest-first by default.No findings

    Why it is in this group

    • The name "ably_get_channel_history" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve historical messages published to a channel, newest-first by default. REST: GET /channels/{channel}/messages.

    Annotations the server declares

    • title: Get channel message history
    • readOnlyHint: true
  • ably_get_presenceList the members currently present on a channel (who is online now).No findings

    Why it is in this group

    • The name "ably_get_presence" says "get": a word for reading.
    Description, as the server wrote it
    List the members currently present on a channel (who is online now). REST: GET /channels/{channel}/presence.

    Annotations the server declares

    • title: Get channel presence set
    • readOnlyHint: true
  • ably_get_presence_historyRetrieve historical presence events (enter/leave/update) for a channel.No findings

    Why it is in this group

    • The name "ably_get_presence_history" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve historical presence events (enter/leave/update) for a channel. REST: GET /channels/{channel}/presence/history.

    Annotations the server declares

    • title: Get channel presence history
    • readOnlyHint: true
  • ably_get_service_timeReturn the current Ably service time in ms since epoch.No findings

    Why it is in this group

    • The name "ably_get_service_time" says "get": a word for reading.
    Description, as the server wrote it
    Return the current Ably service time in ms since epoch. Useful for aligning start/end windows to the server clock. REST: GET /time.

    Annotations the server declares

    • title: Get Ably service time
    • readOnlyHint: true
  • ably_get_statsRetrieve message/connection/channel usage statistics for the app tied to the API key, bucketed by time.No findings

    Why it is in this group

    • The name "ably_get_stats" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve message/connection/channel usage statistics for the app tied to the API key, bucketed by time. REST: GET /stats.

    Annotations the server declares

    • title: Get app statistics
    • readOnlyHint: true
  • ably_list_appsList all apps in the account (id, name, status, tls-only).No findings

    Why it is in this group

    • The name "ably_list_apps" says "list": a word for reading.
    Description, as the server wrote it
    List all apps in the account (id, name, status, tls-only). Account id is resolved automatically from the control token when ABLY_ACCOUNT_ID is unset. Control API: GET /accounts/{account_id}/apps.

    Annotations the server declares

    • title: List Ably apps
    • readOnlyHint: true
  • ably_list_channelsEnumerate channels that are currently active in the app.No findings

    Why it is in this group

    • The name "ably_list_channels" says "list": a word for reading.
    Description, as the server wrote it
    Enumerate channels that are currently active in the app. Requires the API key to have the 'channel-metadata' capability. REST: GET /channels.

    Annotations the server declares

    • title: List active channels
    • readOnlyHint: true
  • ably_list_keysList the API keys for an app, including their capabilities (but not the full secret).No findings

    Why it is in this group

    • The name "ably_list_keys" says "list": a word for reading.
    Description, as the server wrote it
    List the API keys for an app, including their capabilities (but not the full secret). Control API: GET /apps/{app_id}/keys.

    Annotations the server declares

    • title: List an app's API keys
    • readOnlyHint: true
  • ably_list_namespacesList the channel namespaces (channel-rule prefixes) configured for an app, e.g.No findings

    Why it is in this group

    • The name "ably_list_namespaces" says "list": a word for reading.
    Description, as the server wrote it
    List the channel namespaces (channel-rule prefixes) configured for an app, e.g. persistence and push settings. Control API: GET /apps/{app_id}/namespaces.

    Annotations the server declares

    • title: List an app's channel namespaces
    • readOnlyHint: true
  • ably_list_queuesList the Ably Queues (AMQP/STOMP message queues) provisioned for an app, with their state and messaging stats.No findings

    Why it is in this group

    • The name "ably_list_queues" says "list": a word for reading.
    Description, as the server wrote it
    List the Ably Queues (AMQP/STOMP message queues) provisioned for an app, with their state and messaging stats. Control API: GET /apps/{app_id}/queues.

    Annotations the server declares

    • title: List an app's queues
    • readOnlyHint: true
  • ably_list_rulesList the integration rules (reactor rules: webhooks, AWS Lambda/SQS/Kinesis, Kafka, Pulsar, etc.) configured for an app.No findings

    Why it is in this group

    • The name "ably_list_rules" says "list": a word for reading.
    Description, as the server wrote it
    List the integration rules (reactor rules: webhooks, AWS Lambda/SQS/Kinesis, Kafka, Pulsar, etc.) configured for an app. Control API: GET /apps/{app_id}/rules.

    Annotations the server declares

    • title: List an app's integration rules
    • readOnlyHint: true
  • ably_whoamiReturn details about the configured control token: the account and user it belongs to and its capabilities.No findings

    Why it is in this group

    • The name "ably_whoami" says "whoami": a word for reading.
    Description, as the server wrote it
    Return details about the configured control token: the account and user it belongs to and its capabilities. Good first call to confirm control-plane access. Control API: GET /me.

    Annotations the server declares

    • title: Get control token / account info
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.16.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http ably https://ably.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__ably__ably_get_channel_history",
      "mcp__ably__ably_get_presence",
      "mcp__ably__ably_get_presence_history",
      "mcp__ably__ably_get_channel_details",
      "mcp__ably__ably_list_channels",
      "mcp__ably__ably_get_stats",
      "mcp__ably__ably_get_service_time",
      "mcp__ably__ably_whoami",
      "mcp__ably__ably_list_apps",
      "mcp__ably__ably_list_keys",
      "mcp__ably__ably_list_namespaces",
      "mcp__ably__ably_list_queues",
      "mcp__ably__ably_list_rules",
      "mcp__ably__ably_get_account_stats"
    ],
    "ask": [],
    "deny": [
      "mcp__ably__ably_publish_message"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as ably. Review it before you use it.