Skip to main content
Glama

Server Details

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

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

Available Tools

15 tools
ably_get_account_statsGet account-level statisticsB
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd of range, ms since epoch (inclusive).
unitNoBucket size: minute | hour | day | month. Default minute.
limitNoMax buckets (<=1000). Default 100.
startNoStart of range, ms since epoch (inclusive).
account_idNoOverride the account id (defaults to the token's account).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the read-only safety profile, so the description's main added transparency is the account-id resolution behavior from ABLY_ACCOUNT_ID and the Control API endpoint. It does not describe return format, error behavior, or pagination, but for a straightforward read-only stats call the added context is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core purpose is front-loaded, and the additional endpoint and account-resolution details each contribute useful context without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only statistics tool with fully documented parameters and no output schema, the description covers the main action, scope, time bucketing, and account resolution. It does not detail the exact metrics returned, but given the tool's simplicity and the readOnlyHint, the missing return specification is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the input schema. The description adds minor value by explaining the account_id defaulting behavior via the ABLY_ACCOUNT_ID environment variable, but it does not add meaningful semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Retrieve'), resource ('aggregated usage statistics across the whole account'), and a key behavioral detail (bucketing by time). It clearly conveys the account-level scope, which helps distinguish it from related stats tools, though it does not explicitly name or contrast the closest sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to prefer this tool over alternatives. The phrase 'across the whole account' implies account scope, but the description never mentions ably_get_stats or any other sibling to clarify the boundary. It also does not state when not to use it or what prerequisites apply.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_get_channel_detailsGet channel details / occupancyA
Read-only
Inspect

Get status and occupancy metrics for a single channel (connections, publishers, subscribers, presence members). REST: GET /channels/{channel}.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel name.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description's 'GET' is consistent with that. It adds useful context by listing the metrics returned (connections, publishers, subscribers, presence members), though it does not describe response format, pagination, or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and efficiently front-loads the purpose and key returned metrics. The REST endpoint is included without unnecessary elaboration, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only tool with a readOnlyHint annotation, the description is nearly complete: it states the endpoint, the scope, and the substance of the response. The only notable gap is the lack of an output schema or explicit return format, but the listed metrics partially compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single 'channel' parameter, so the schema already documents it adequately. The tool description does not add parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('status and occupancy metrics for a single channel'), and the REST path adds precision. It distinguishes from multi-channel tools like list_channels, but does not explicitly differentiate from the overlapping sibling ably_get_presence, which also deals with presence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a single channel' implies when the tool is appropriate, but there is no explicit guidance about when to prefer this over ably_get_presence or ably_get_channel_history. No alternatives or exclusions are named, so usage context is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_get_channel_historyGet channel message historyA
Read-only
Inspect

Retrieve historical messages published to a channel, newest-first by default. REST: GET /channels/{channel}/messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoLatest message time, ms since epoch (inclusive).
limitNoMax messages (<=1000). Default 100.
startNoEarliest message time, ms since epoch (inclusive).
channelYesChannel name, e.g. 'chat:room1'.
directionNoforwards (oldest-first) or backwards (newest-first, default).

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint, so the description only needs to add behavioral nuance. It adds 'newest-first by default' and the REST endpoint, which is useful but does not cover pagination or rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core behavior first and no filler. The REST endpoint line is helpful context but slightly redundant for an MCP agent, preventing a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only history tool with fully documented scalar parameters and no output schema, the description is mostly sufficient. A note on the response format or pagination would make it fully complete, but these are not critical blockers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents every parameter. The description contributes only 'newest-first by default,' which duplicates the direction parameter's schema text, so it adds no new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Retrieve') with a clear resource ('historical messages published to a channel') and states default ordering. This distinguishes it from sibling tools like presence history and channel details without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first sentence establishes a clear use case: retrieving past channel messages. It does not name alternatives or explicitly state when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_get_presenceGet channel presence setA
Read-only
Inspect

List the members currently present on a channel (who is online now). REST: GET /channels/{channel}/presence.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax members (<=1000). Default 100.
channelYesChannel name.
clientIdNoFilter to a specific clientId.
connectionIdNoFilter to a specific connectionId.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the REST GET endpoint and clarifies current-state semantics, but does not disclose additional behavior such as response shape, default limit, or filtering implications beyond what the schema already states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence conveys the resource, semantics, and REST endpoint with no filler. Every word contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with one required parameter, the description, annotations, and fully documented schema provide enough to select and call the tool. There is no output schema, but 'List the members' adequately hints at the return; explicit pagination/response details would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies. The description mentions the channel in the REST path but adds no deeper meaning beyond the schema's own descriptions for limit, clientId, and connectionId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb ('List') and resource ('members currently present on a channel'), with plain-language gloss 'who is online now'. This clearly identifies the tool's purpose and distinguishes it from siblings like ably_get_presence_history or ably_get_channel_details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'currently present' and 'who is online now' imply real-time presence rather than history, but the description never explicitly says when to use this tool over ably_get_presence_history or other alternatives. No exclusionary guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_get_presence_historyGet channel presence historyA
Read-only
Inspect

Retrieve historical presence events (enter/leave/update) for a channel. REST: GET /channels/{channel}/presence/history.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoLatest event time, ms since epoch (inclusive).
limitNoMax events (<=1000). Default 100.
startNoEarliest event time, ms since epoch (inclusive).
channelYesChannel name.
directionNoforwards or backwards (default backwards).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already communicates that this is a safe read operation, lowering the burden on the description. It adds useful context by naming the event types (enter/leave/update) and the REST method/path, which goes beyond the annotation. However, it does not disclose result shape, pagination behavior, or default direction details, leaving some behavioral aspects to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence plus an endpoint reference, with no filler or redundancy. It front-loads the core purpose (retrieve historical presence events) before giving the REST path.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only historical lookup with 100% schema parameter coverage, the description is largely complete: it names the resource, event types, and endpoint. No output schema exists, but 'presence events' adequately conveys the return type for invocation purposes. It could mention pagination explicitly, but this is a minor gap given the read-only annotation and detailed schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with descriptions, so the baseline of 3 applies. The tool description restates that this is for 'a channel' but adds no new parameter-level meaning beyond the schema's already detailed start, end, limit, and direction descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Retrieve') and a specific resource ('historical presence events (enter/leave/update) for a channel'), which precisely identifies what the tool does. It also includes the REST endpoint, reinforcing the exact operation. The word 'historical' and the event types clearly distinguish it from sibling tools like ably_get_presence (current presence) and ably_get_channel_history (messages).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly signals when to use this tool via 'historical presence events' versus alternatives like ably_get_presence, but it does not explicitly state when not to use it or name an alternative for current presence or channel message history. There is no explicit 'use X for current presence' guidance, so the agent must infer routing from the name and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_get_service_timeGet Ably service timeA
Read-only
Inspect

Return the current Ably service time in ms since epoch. Useful for aligning start/end windows to the server clock. REST: GET /time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds the REST endpoint and clarifies that the returned time is the Ably server clock. It does not describe response format or rate-limit behavior, but for a zero-parameter read-only call that is a minor omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences carry all essential information: the return value, unit of measurement, use case, and REST endpoint. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter time-checking tool, the description fully tells an agent what the tool returns and why it is useful. The absence of an output schema is acceptable here because the described return value is simple.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters and 100% schema description coverage, so the schema needs no compensation. The baseline of 4 applies because there are no parameters to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Return' with clear resource 'current Ably service time in ms since epoch.' Sibling tools are all different resources, so this tool is immediately distinguishable without needing to compare schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States a clear use case: aligning start/end windows to the server clock. It does not explicitly compare to alternatives, but the sibling tools are unrelated in purpose, so the intended context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_get_statsGet app statisticsA
Read-only
Inspect

Retrieve message/connection/channel usage statistics for the app tied to the API key, bucketed by time. REST: GET /stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd of range, ms since epoch (inclusive).
unitNoBucket size: minute | hour | day | month. Default minute.
limitNoMax buckets (<=1000). Default 100.
startNoStart of range, ms since epoch (inclusive).
directionNoforwards or backwards (default backwards).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only; the description adds useful context by scoping results to the API key's app, stating time-bucketing, and giving the exact REST endpoint. No destructive or unexpected behavior is hidden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence with the key scope front-loaded, immediately followed by the concrete REST call. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only stats getter with no required parameters and a fully described input schema, the description covers the essential scope and result substance. It does not describe response shape beyond usage statistics and buckets, but annotations and schema carry the rest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter already has a meaningful description. The tool description adds only general time-bucketing context rather than new parameter-level meaning, so it stays at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description names a specific verb (retrieve), a concrete resource (message/connection/channel usage statistics), and a clear scope (app tied to the API key). It separates this from account-level or channel-specific operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is for the current app's usage stats and mentions time bucketing, but it never states when to prefer it over ably_get_account_stats or any other sibling. No explicit alternatives or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_list_appsList Ably appsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoOverride the account id (defaults to the token's account).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, which covers safety. The description adds the field list and the automatic account_id resolution logic, providing useful behavioral context beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler. The main action and output fields appear first, and the account-id resolution detail and API endpoint follow efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a simple read-only listing tool with one optional parameter, no nested objects, and no output schema. The description covers purpose, behavior, parameter default, and endpoint, leaving nothing an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and documents account_id's override/default behavior. The description adds the nuance that resolution happens via the control token when ABLY_ACCOUNT_ID is unset, which complements the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all apps in the account') with the exact fields returned. The sibling tools target other Ably resources (channels, keys, queues), so this definition clearly distinguishes itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context for a read-only listing operation, plus the automatic account-id resolution behavior. It doesn't explicitly name alternatives or exclusions, but the sibling set makes the intended use obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_list_channelsList active channelsA
Read-only
Inspect

Enumerate channels that are currently active in the app. Requires the API key to have the 'channel-metadata' capability. REST: GET /channels.

ParametersJSON Schema
NameRequiredDescriptionDefault
byNoReturn channel ids only ('id', default) or full details ('value').
limitNoMax channels per page (<=1000). Default 100.
prefixNoOnly return channels whose name starts with this prefix.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey readOnlyHint=true, and the description adds useful behavioral context by disclosing the required API-key capability and the specific REST endpoint. It also scopes the result to currently active channels. No annotation contradiction exists and no destructive behavior is implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences carry the purpose, scope, permission requirement, and REST verb/path. Every element earns its place; there is no repetition of the title or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with no output schema, the description and annotations cover authentication, scope, and the REST contract. It does not describe the return format or pagination behavior, but the schema documents limit and defaults, and the request is read-only, so the remaining gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (by, limit, prefix) are fully described in the JSON schema, including defaults and constraints, so the description need not repeat them. The tool description adds no extra parameter semantics beyond the schema, giving the standard baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Enumerate channels that are currently active') and identifies the resource ('in the app'), which differentiates it from siblings that handle account stats, channel details, presence, or history. The REST endpoint reference reinforces the operation. This is more than sufficient for an agent to select the correct tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit prerequisite (API key must have 'channel-metadata' capability) and the REST path, but it does not mention alternatives or state when not to use this tool. Context such as 'currently active' implies the use case, yet no comparison to sibling tools like ably_get_channel_details is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_list_keysList an app's API keysA
Read-only
Inspect

List the API keys for an app, including their capabilities (but not the full secret). Control API: GET /apps/{app_id}/keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesApp id (from ably_list_apps).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already provided, the description adds meaningful context: keys are listed with capabilities but the full secret is intentionally excluded. It also identifies this as a Control API GET request, giving an agent a clearer sense of the operation's nature and expected request style.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action, and contains no filler. Every sentence earns its place by adding either the functional scope or the API endpoint context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only list operation, the description covers purpose, the endpoint, and an important output limitation. It does not fully describe the response shape, but no output schema exists and the complexity is low, so the provided information is largely sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter app_id is already documented as 'App id (from ably_list_apps)'. The description adds no additional parameter-level meaning beyond restating the endpoint path, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List the API keys for an app'. It also clarifies the scope by adding 'including their capabilities (but not the full secret)', which distinguishes this from any secret-returning operation. This is clearly differentiated from sibling tools such as ably_list_channels and ably_list_rules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving an app's API keys, but it does not explicitly state when to use it over alternatives or when not to use it. The schema adds context by saying app_id comes from ably_list_apps, but the description itself provides only implied usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_list_namespacesList an app's channel namespacesB
Read-only
Inspect

List the channel namespaces (channel-rule prefixes) configured for an app, e.g. persistence and push settings. Control API: GET /apps/{app_id}/namespaces.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesApp id (from ably_list_apps).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this by showing the GET endpoint. It adds useful context about what namespaces are and that the call is scoped to an app, but it does not disclose response shape, pagination, or any other behavioral traits beyond the read-only GET nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the action and resource, and wastes no words. It packs the essential definition, an example, and the REST endpoint into a compact form.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only single-parameter list operation, the description plus the input schema is sufficient for an agent to make the call correctly. There is no output schema; the description could have noted the return type more explicitly, but 'List ... namespaces' strongly implies the response, so this is not a critical gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the single app_id parameter already documented, including its provenance from ably_list_apps. The description's endpoint template '/apps/{app_id}/namespaces' reinforces the parameter's role but adds little beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation: list channel namespaces configured for an app, adding a clarifying parenthetical and concrete examples. It is specific and unambiguous, but it does not explicitly distinguish itself from sibling list tools such as ably_list_rules or ably_list_channels, so it falls short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives. The phrase 'Control API' hints at the administrative context, but there are no explicit usage conditions, prerequisites, or comparisons to sibling tools, leaving the agent to infer when this is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_list_queuesList an app's queuesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesApp id (from ably_list_apps).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description only needs to add context. It adds the exact REST verb (GET), the control-API nature, and the return content ('state and messaging stats'). This is useful context and does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb and resource. The parenthetical 'AMQP/STOMP message queues' clarifies the resource type without bloat, and the endpoint line is compact and useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only listing tool with a rich schema, the description is nearly complete: endpoint, scope, and response content are mentioned. It does not specify pagination or detailed response structure, but those are not critical for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the app_id parameter is well described as coming from ably_list_apps. The tool description adds no parameter-level detail, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the operation ('List'), the resource ('Ably Queues (AMQP/STOMP message queues)'), and the scope ('provisioned for an app'). This differentiates it from sibling tools like ably_list_channels and ably_list_namespaces without requiring an agent to open them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear scope ('provisioned for an app') but offers no explicit when-to-use guidance or mention of alternatives. An agent must infer that this is the tool to use for queue listing; there are no exclusion rules or sibling comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_list_rulesList an app's integration rulesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesApp id (from ably_list_apps).

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safe read-only nature is covered. The description adds the endpoint and the specific rule types included, but does not disclose pagination behavior, output format, or any list-specific constraints. That is acceptable given the read-only annotation, but the description adds only modest behavioral context beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first states the resource and examples, the second gives the exact endpoint. Every part earns its place, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with one clearly documented parameter, the description provides the endpoint, the resource scope, and examples of the rule types. It does not mention pagination or return shape, but no output schema exists and the listing nature is clear enough to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single app_id parameter is already documented as 'App id (from ably_list_apps).' The description repeats app_id in the endpoint URL but does not add further semantic detail beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: list integration rules (reactor rules: webhooks, AWS Lambda/SQS/Kinesis, Kafka, Pulsar, etc.) configured for an app. It also gives the exact Control API endpoint, making the operation unambiguous and clearly distinct from sibling tools that list apps, channels, keys, or queues.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: this lists integration rules for a specific app, and the app_id is supplied from ably_list_apps. It does not explicitly name alternative tools or state when not to use it, but the resource is unique among siblings, so an agent can infer appropriate usage without confusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_publish_messagePublish a message to a channelA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesMessage payload (string; send JSON as a stringified value).
nameNoOptional event name for the message.
channelYesChannel name to publish to, e.g. 'chat:room1'.
clientIdNoOptional clientId to attribute the message to.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as destructive; the description adds beyond that by stating it is an outward-facing side effect, that all connected subscribers receive the message in real time, and that confirmation is needed before calling. This meaningfully enriches the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: the operation, the real-time effect, and the caution. The WRITE prefix is front-loaded and the REST endpoint is a useful compact addition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter write operation with a destructive annotation, the description covers the key behavioral context: it is a real side effect, delivery is real-time to subscribers, and the caller should verify inputs. No output schema exists, but the success semantics are straightforward enough that omitting return details is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents channel, data, name, and clientId adequately. The description adds no new parameter-level detail, but the baseline of 3 applies because the schema carries the full meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('publish') and resource ('message to a channel'), and marks it clearly as a WRITE operation. It also names the observable consequence (subscribers receive it in real time), which distinguishes it from the sibling read/list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The WRITE label and side-effect warning make the intended use clear: this is for publishing, not retrieving data. It doesn't explicitly name excluded alternatives, but among an all-read sibling set the usage context is unmistakable and the caution to confirm channel and payload is practical guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ably_whoamiGet control token / account infoA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already marks this as safe, and the description adds useful behavioral context by disclosing what the call returns (account, user, capabilities) and the underlying endpoint 'GET /me'. It does not discuss failure modes or auth details, but for a read-only identity probe the description carries adequate weight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each earning its place: the first states what the tool returns, the second gives usage guidance and the endpoint. There is no filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool, the description is complete: it explains the resource, the returned information, when to use it, and the API path. No output schema is present, but the expected return surface is adequately described for an agent to invoke and interpret the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and 100% schema description coverage, so the description is not required to document parameters. It adds implicit semantic context ('configured control token') beyond the empty schema, which is appropriate for a no-argument call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and names the exact resource ('details about the configured control token') and the three facets: account, user, and capabilities. This clearly distinguishes it from the sibling tools, none of which target the token/identity itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Good first call to confirm control-plane access' provides a clear usage context, indicating this tool should be used before other control-plane operations to verify credentials. It does not explicitly name alternative tools or exclusion conditions, but the guidance is sufficient for a zero-parameter identity check.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for the Mobilerun platform, exposing tools for device control, workflow automation, task management, and platform operations via a stateless HTTP or stdio interface with bearer-token authentication and policy-based access control.
    Apache 2.0
  • A
    license
    B
    quality
    C
    maintenance
    MCP server for interacting with a self-hosted Appsmith instance via its REST API, enabling read/update/create of pages, queries, JS objects, widgets, datasources, and applications with lazy session management and destructive-operation gating.
    30
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for the Take Blip platform that exposes contacts, buckets, broadcast lists, and more to any MCP client, with read-only safety by default and optional write capabilities.
    7
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4/5.0
Disambiguation5/5

Every tool targets a distinct resource and action: account-level stats, app-level stats, channel details, history, presence, presence history, service time, and each control-plane listing (apps, keys, namespaces, queues, rules) are clearly separated. The only potentially confusing pair is account stats vs app stats, but their descriptions explicitly differentiate account-wide vs API-key-scoped usage.

Naming Consistency5/5

All tools use a uniform 'ably_' prefix followed by a consistent verb_noun pattern: get_ for single resources, list_ for collections, publish_message for the write action, and whoami for token details. There are no mixed casing styles or inconsistent verb choices.

Tool Count5/5

Fifteen tools is within the ideal range and each one covers a meaningful Ably capability, from control-plane inspection to channel data retrieval and publishing. The count feels justified given the breadth of Ably's API surface, with no redundant or filler tools.

Completeness3/5

The read side is well covered: stats, channel details, history, presence, and control-plane listings all have dedicated tools, and message publishing provides one write path. However, there are no create/update/delete operations for apps, keys, namespaces, queues, or rules, so lifecycle management is largely absent and an agent could not perform common administrative workflows.