Skip to main content
Glama
thenavidm

Buffer MCP Server

by thenavidm

List channels for an organization

get_channels
Read-onlyIdempotent

Retrieve channels for an organization to manage content across products. Filter by product or locked status and specify fields to limit results.

Instructions

List channels for an organization. Current Buffer GraphQL channels. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

Input Schema

NameRequiredDescriptionDefault
fieldsNoUpstream field paths relative to the result, as in official CLI --fields. Default fields are bounded. Use items.id for connection nodes; pageInfo.endCursor for cursors.
filterNo
accountNoPrivate account profile name. Selects credentials only; an organization default does not restrict provider token permissions.
payloadNoComplete native input object instead of individual input fields.
payload_fileNoRegular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields.
organizationIdNoThe Organization id to fetch channels for

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changedv3.0.1
    • addedInput schema / $defs
      Added value: +{
      +  "filter": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "isLocked": {
      +        "description": "If not defined, it returns all channels\nElse,\n  if true, it only returns locked channels\n  if false, it only returns not locked channels",
      +        "type": "boolean"
      +      },
      +      "product": {
      +        "description": "If not passed, it return all channels\nElse, it filters the channels based on what the product supports.",
      +        "enum": [
      +          "analyze",
      +          "buffer",
      +          "comments",
      +          "engage",
      +          "publish",
      +          "startPage"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [],
      +    "type": "object"
      +  }
      +}
    • addedInput schema / properties / filter / $ref
      Added value: +"#/$defs/filter"
    • removedInput schema / properties / filter / additionalProperties
      Removed value: -false
    • removedInput schema / properties / filter / properties
      Removed value: -{
      -  "isLocked": {
      -    "description": "If not defined, it returns all channels\nElse,\n  if true, it only returns locked channels\n  if false, it only returns not locked channels",
      -    "type": "boolean"
      -  },
      -  "product": {
      -    "description": "If not passed, it return all channels\nElse, it filters the channels based on what the product supports.",
      -    "enum": [
      -      "analyze",
      -      "buffer",
      -      "comments",
      -      "engage",
      -      "publish",
      -      "startPage"
      -    ],
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / filter / required
      Removed value: -[]
    • removedInput schema / properties / filter / type
      Removed value: -"object"
    • addedInput schema / properties / payload / properties / filter / $ref
      Added value: +"#/$defs/filter"
    • removedInput schema / properties / payload / properties / filter / additionalProperties
      Removed value: -false
    • removedInput schema / properties / payload / properties / filter / properties
      Removed value: -{
      -  "isLocked": {
      -    "description": "If not defined, it returns all channels\nElse,\n  if true, it only returns locked channels\n  if false, it only returns not locked channels",
      -    "type": "boolean"
      -  },
      -  "product": {
      -    "description": "If not passed, it return all channels\nElse, it filters the channels based on what the product supports.",
      -    "enum": [
      -      "analyze",
      -      "buffer",
      -      "comments",
      -      "engage",
      -      "publish",
      -      "startPage"
      -    ],
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / payload / properties / filter / required
      Removed value: -[]
    • removedInput schema / properties / payload / properties / filter / type
      Removed value: -"object"
  2. First observedv2.0.0

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld/destructive=false, so safety is covered. The description adds real operational context beyond them: no automatic pagination, one request only, and that provider errors surface as failures even with HTTP 200 — useful behavior an agent cannot infer from annotations or schema.

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?

Four short sentences, purpose front-loaded, no filler. Slightly telegraphic — the pagination and error sentences could be clearer — but every sentence carries information.

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

Completeness3/5

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

For a 6-parameter tool with nested objects and no output schema, the description covers pagination and error semantics but omits how filter/account/payload relate and what the returned channel structure looks like. Adequate but leaves gaps an agent must resolve from the 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?

Schema description coverage is 83%, so the schema already documents fields, filter, account, and payload. The description reinforces 'upstream fields' bounding but adds no syntax or interaction rules (e.g. payload vs individual fields exclusivity is only in the schema). Baseline 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?

States a specific verb+resource ('List channels for an organization') and scopes it to 'Current Buffer GraphQL channels', which distinguishes it from the singular sibling get_channel. It does not explicitly name sibling alternatives, but the resource is unambiguous.

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?

Gives a usage hint ('Use upstream fields to bound data') and an error-handling rule, but never states when to prefer this over get_channel or list_accounts, nor any prerequisites for organizationId/account. Usage is implied rather than directed.

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