Skip to main content
Glama
kuklaph
by kuklaph

List Asset Relationships & Subscribers

cascade_list_subscribers
Read-onlyIdempotent

Retrieve the assets that reference a specified asset and the users subscribed to its notifications. Identify incoming relationships and subscribers by providing the asset identifier.

Instructions

List the relationships an asset has — the other assets that reference it ("what is using this?") and the users subscribed to its notifications.

Cascade exposes two related discovery questions through this single endpoint:

  1. "What relationships does this asset have?" — i.e. what references it: "which pages use this block?", "which pages link to this file?", "which content-types use this data definition?". The referenced asset is the query target; the assets that point at it show up in the response.

  2. "Who gets notified when this asset changes?" — user/group subscribers, both auto (ownership/workflow/group) and manual (opt-in).

Directionality matters: the lookup runs against the asset being referenced, NOT the asset doing the referencing. If a page embeds a block, query the BLOCK to find the page. Querying the page will NOT list its embedded blocks — it will list the assets that reference the page.

Args:

  • identifier (object, required): The asset whose relationships/subscribers to list

    • id (string, optional): Asset ID. Prefer id when known; Cascade auto-resolves path→id server-side when only path is given.

    • path (object, optional): { path, siteId OR siteName } — valid fallback when id is unknown.

    • type (string, required): Entity type of the asset. Use the EntityType string (e.g. "page", "block_XHTML_DATADEFINITION", "contenttype") — NOT the camelCase envelope key ("xhtmlDataDefinitionBlock", "contentType"). Most asset kinds differ between the two schemes; see IdentifierSchema.type / cascade://entity-types.

Returns: Cascade OperationResult: { success: true, subscribers: [ { id, type, path: { path, siteId, siteName } }, ... ], manualSubscribers: [ { id, type, path: { path, siteId, siteName } }, ... ] } Entries may be related assets (pages, content-types, ...) that reference this one, users subscribed to notifications, or both — distinguish by type. On failure: { success: false, message: "" }

Examples:

  • Use when: "What relationships does this block have?" / "Which pages use this block?" -> { identifier: { type: "block_XHTML_DATADEFINITION", id: "" } } then inspect response entries.

  • Use when: "Which assets link to this file?" -> { identifier: { type: "file", id: "" } }.

  • Use when: "Who gets notified when /about changes?" -> { identifier: { type: "folder", path: { path: "/about", siteName: "www" } } }.

  • Don't use when: You want outbound relationships — i.e. "which blocks does this page embed?". That direction isn't queryable; read the page and inspect its body.

  • Don't use when: You want to read messages sent — use cascade_list_messages.

Error Handling:

  • "Asset not found" when the identifier doesn't resolve

  • "Permission denied" when credentials lack read access. Responses are JSON text; structuredContent is authoritative when the response fits. Oversized responses return bounded _cache metadata for cascade_read_response. For cascade_read, read_mode controls preview versus raw Cascade payload shape.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
identifierNoThe asset whose subscribers to list.
Behavior5/5

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

Annotations declare readOnlyHint=true, consistent with listing. Description adds directionality constraints, error handling cases, and response structure. No contradictions.

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?

Well-structured with sections and examples, but slightly verbose. Every sentence adds value, but could be slightly tighter. Front-loaded with purpose.

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?

Despite no output schema, description provides full return structure and error scenarios. Covers all key behaviors for a complex tool.

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

Parameters5/5

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

Schema has one parameter with minimal description, but the tool description extensively documents identifier properties (id, path, type), including valid type strings and fallback behavior. Greatly enriches 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?

The description explicitly states it lists relationships (assets referencing this one) and subscribers. It distinguishes two discovery questions and contrasts with sibling tools like cascade_list_messages and cascade_search. Clear verb+resource.

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

Usage Guidelines5/5

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

Provides explicit 'Use when' and 'Don't use when' examples, explains directionality, and names alternative tools (cascade_list_messages). Excellent guidance.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kuklaph/cascade-cms-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server