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.
15 tools: 1 can delete or cancel things and 14 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads14Claude Code: allow: see these tools
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/mcpTools
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/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .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.