Skip to main content
Glama

Read collection

get_collection
Read-onlyIdempotent

Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full configuration that update_collection replaces; get_collection_posts returns the posts.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesCollection ID from list_collections
streamDeckIdYesDeck ID from list_stream_decks

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesID of this item for the tools that take it
nameYesDisplay name
filtersYes
sourcesYes
aiFilterIdNoAttached AI filter ID for get_ai_filter; null when none
highlightsNo
columnWidthNoColumn width in pixels from set_collection_column_width; null when unset
matchingSourcesOnlyNoWhether the Synoptic app source picker shows only streams with market matching

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedOutput schema / properties / highlights / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "isEnabled": {
      -        "description": "Whether the highlight rules apply",
      -        "type": "boolean"
      -      },
      -      "values": {
      -        "description": "Rules that mark matching post text with a color",
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "color": {
      -              "description": "Synoptic app color for matching text, such as lightYellow, green or red",
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "regex": {
      -              "description": "Regular expression, either bare (case-insensitive) or /pattern/flags",
      -              "maxLength": 4000,
      -              "minLength": 1,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "regex",
      -            "color"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 15,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "isEnabled",
      -      "values"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "isEnabled": {
      +        "description": "Whether the highlight rules apply",
      +        "type": "boolean"
      +      },
      +      "values": {
      +        "description": "Rules that mark matching post text with a color",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "color": {
      +              "description": "Synoptic app color for matching text: one of lightYellow, lightOrange, lightTeal, lightBlue, yellow, green, blue, red, orange, purple",
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "regex": {
      +              "description": "Regular expression, either bare (case-insensitive) or /pattern/flags",
      +              "maxLength": 4000,
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "regex",
      +            "color"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 15,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "isEnabled",
      +      "values"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / id / description
      Previous value: -"ID to pass to this item’s get, update, delete or reorder tools"New value: +"ID of this item for the tools that take it"
  2. Changed15 schema fields changed
    • removedInput schema / properties / id / $ref
      Removed value: -"#/properties/streamDeckId"
    • addedInput schema / properties / id / description
      Added value: +"Collection ID from list_collections"
    • addedInput schema / properties / id / maxLength
      Added value: +128
    • addedInput schema / properties / id / minLength
      Added value: +1
    • addedInput schema / properties / id / type
      Added value: +"string"
    • addedInput schema / properties / streamDeckId / description
      Added value: +"Deck ID from list_stream_decks"
    • addedOutput schema / properties / aiFilterId / description
      Added value: +"Attached AI filter ID for get_ai_filter; null when none"
    • addedOutput schema / properties / columnWidth / description
      Added value: +"Column width in pixels from set_collection_column_width; null when unset"
    • changedOutput schema / properties / filters / properties / excludeKeywords / anyOf
      Previous value: -[
      -  {
      -    "$ref": "#/properties/filters/properties/includeKeywords/anyOf/0"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "all": {
      +        "anyOf": [
      +          {
      +            "maxLength": 4000,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Space-separated words; a post matches when its text contains every word"
      +      },
      +      "any": {
      +        "anyOf": [
      +          {
      +            "maxLength": 4000,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Space-separated words; a post matches when its text contains at least one word"
      +      },
      +      "phrase": {
      +        "anyOf": [
      +          {
      +            "maxLength": 4000,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Exact phrase; a post matches when its text contains it"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / filters / properties / includeKeywords / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "all": {
      -        "anyOf": [
      -          {
      -            "maxLength": 4000,
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "any": {
      -        "anyOf": [
      -          {
      -            "maxLength": 4000,
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "phrase": {
      -        "anyOf": [
      -          {
      -            "maxLength": 4000,
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "all": {
      +        "anyOf": [
      +          {
      +            "maxLength": 4000,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Space-separated words; a post matches when its text contains every word"
      +      },
      +      "any": {
      +        "anyOf": [
      +          {
      +            "maxLength": 4000,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Space-separated words; a post matches when its text contains at least one word"
      +      },
      +      "phrase": {
      +        "anyOf": [
      +          {
      +            "maxLength": 4000,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Exact phrase; a post matches when its text contains it"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / highlights / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "isEnabled": {
      -        "type": "boolean"
      -      },
      -      "values": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "color": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "regex": {
      -              "maxLength": 4000,
      -              "minLength": 1,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "regex",
      -            "color"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 15,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "isEnabled",
      -      "values"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "isEnabled": {
      +        "description": "Whether the highlight rules apply",
      +        "type": "boolean"
      +      },
      +      "values": {
      +        "description": "Rules that mark matching post text with a color",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "color": {
      +              "description": "Synoptic app color for matching text, such as lightYellow, green or red",
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "regex": {
      +              "description": "Regular expression, either bare (case-insensitive) or /pattern/flags",
      +              "maxLength": 4000,
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "regex",
      +            "color"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 15,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "isEnabled",
      +      "values"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / id / description
      Added value: +"ID to pass to this item’s get, update, delete or reorder tools"
    • addedOutput schema / properties / matchingSourcesOnly / description
      Added value: +"Whether the Synoptic app source picker shows only streams with market matching"
    • addedOutput schema / properties / name / description
      Added value: +"Display name"
    • addedOutput schema / properties / sources / items / properties / usesAllTargets / description
      Added value: +"True when no targets are selected, so every target available to the user is included and customTargets is empty"
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful context: the ownership scoping ('owned by the signed-in user') and the granular contents of the returned configuration, clarifying this is a full-config read versus a posts read.

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 tight sentences: the first front-loads purpose and returned fields, the second handles sibling routing. No redundant or filler content.

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?

An output schema exists, so return structure need not be fully explained, and annotations carry the safety profile. The description still adds the ownership scope and config-vs-posts distinction, leaving nothing an agent needs to invoke it 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%, with both required parameters documented in the schema ('Collection ID from list_collections', 'Deck ID from list_stream_decks'). The description adds no syntax or format detail beyond the schema, so the baseline 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 (Read) and resource (custom collection), scoped to the signed-in user, and enumerates what it contains (keyword filters, AI filter ID, source streams, custom targets). It explicitly distinguishes itself from update_collection and get_collection_posts, so an agent can separate it from siblings without opening their 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?

It routes the agent by naming alternatives and what each returns: this tool returns the full configuration that update_collection replaces, while get_collection_posts returns the posts. That is clear selection context, though it stops short of stating explicit when-not-to-use conditions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources