Skip to main content
Glama
thenavidm

Buffer MCP Server

by thenavidm

Fetch a paginated list of ideas with optional filtering

get_ideas
Read-onlyIdempotent

Fetch one page of Buffer ideas for an organization, with optional tag or group filters and cursor-based paging. Select fields to bound results; no automatic pagination.

Instructions

Fetch a paginated list of ideas with optional filtering. Current Buffer GraphQL ideas. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

Input Schema

NameRequiredDescriptionDefault
afterNoOpaque cursor from pageInfo.endCursor. One page per ordinary call.
firstNoLocal page-size cap 100, default 25; provider may impose additional query limits.
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.
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.
tagsFilterNo
groupFilterNo
payload_fileNoRegular local JSON input file, no symlink, at most 1 MiB; cannot mix with payload or individual input fields.
organizationIdNoThe organization to fetch ideas from.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed21 schema fields changedv3.0.1
    • addedInput schema / $defs
      Added value: +{
      +  "groupFilter": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "groups": {
      +        "description": "Return only ideas that belong to these specific groups (union/OR).",
      +        "items": {
      +          "description": "Return only ideas that belong to these specific groups (union/OR).",
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "membership": {
      +        "description": "Return ideas by a group-membership bucket rather than by specific group IDs.",
      +        "enum": [
      +          "grouped",
      +          "ungrouped"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [],
      +    "type": "object"
      +  },
      +  "tagsFilter": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "in": {
      +        "description": "Include results that have any of the specified tags (union/OR).",
      +        "items": {
      +          "description": "Include results that have any of the specified tags (union/OR).",
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "isEmpty": {
      +        "description": "When true, include results that have no tags assigned.\nCan be combined with 'in' for union filtering.\nDefaults to false if not specified.",
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "in"
      +    ],
      +    "type": "object"
      +  }
      +}
    • addedInput schema / properties / groupFilter / $ref
      Added value: +"#/$defs/groupFilter"
    • removedInput schema / properties / groupFilter / additionalProperties
      Removed value: -false
    • removedInput schema / properties / groupFilter / properties
      Removed value: -{
      -  "groups": {
      -    "description": "Return only ideas that belong to these specific groups (union/OR).",
      -    "items": {
      -      "description": "Return only ideas that belong to these specific groups (union/OR).",
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "membership": {
      -    "description": "Return ideas by a group-membership bucket rather than by specific group IDs.",
      -    "enum": [
      -      "grouped",
      -      "ungrouped"
      -    ],
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / groupFilter / required
      Removed value: -[]
    • removedInput schema / properties / groupFilter / type
      Removed value: -"object"
    • addedInput schema / properties / payload / properties / groupFilter / $ref
      Added value: +"#/$defs/groupFilter"
    • removedInput schema / properties / payload / properties / groupFilter / additionalProperties
      Removed value: -false
    • removedInput schema / properties / payload / properties / groupFilter / properties
      Removed value: -{
      -  "groups": {
      -    "description": "Return only ideas that belong to these specific groups (union/OR).",
      -    "items": {
      -      "description": "Return only ideas that belong to these specific groups (union/OR).",
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "membership": {
      -    "description": "Return ideas by a group-membership bucket rather than by specific group IDs.",
      -    "enum": [
      -      "grouped",
      -      "ungrouped"
      -    ],
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / payload / properties / groupFilter / required
      Removed value: -[]
    • removedInput schema / properties / payload / properties / groupFilter / type
      Removed value: -"object"
    • addedInput schema / properties / payload / properties / tagsFilter / $ref
      Added value: +"#/$defs/tagsFilter"
    • removedInput schema / properties / payload / properties / tagsFilter / additionalProperties
      Removed value: -false
    • removedInput schema / properties / payload / properties / tagsFilter / properties
      Removed value: -{
      -  "in": {
      -    "description": "Include results that have any of the specified tags (union/OR).",
      -    "items": {
      -      "description": "Include results that have any of the specified tags (union/OR).",
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "isEmpty": {
      -    "description": "When true, include results that have no tags assigned.\nCan be combined with 'in' for union filtering.\nDefaults to false if not specified.",
      -    "type": "boolean"
      -  }
      -}
    • removedInput schema / properties / payload / properties / tagsFilter / required
      Removed value: -[
      -  "in"
      -]
    • removedInput schema / properties / payload / properties / tagsFilter / type
      Removed value: -"object"
    • addedInput schema / properties / tagsFilter / $ref
      Added value: +"#/$defs/tagsFilter"
    • removedInput schema / properties / tagsFilter / additionalProperties
      Removed value: -false
    • removedInput schema / properties / tagsFilter / properties
      Removed value: -{
      -  "in": {
      -    "description": "Include results that have any of the specified tags (union/OR).",
      -    "items": {
      -      "description": "Include results that have any of the specified tags (union/OR).",
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "isEmpty": {
      -    "description": "When true, include results that have no tags assigned.\nCan be combined with 'in' for union filtering.\nDefaults to false if not specified.",
      -    "type": "boolean"
      -  }
      -}
    • removedInput schema / properties / tagsFilter / required
      Removed value: -[
      -  "in"
      -]
    • removedInput schema / properties / tagsFilter / 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/non-destructive, so safety is covered. The description nonetheless adds real behavioral value beyond that: single-page-per-call semantics ('no automatic pagination') and an important error contract ('provider errors are failures even with HTTP 200'). It stops short of describing rate limits or result shape.

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?

Three short sentences, front-loaded with the core purpose and no wasted filler. The middle fragment 'Current Buffer GraphQL ideas' is ambiguous and slightly muddies the otherwise tight structure.

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 9-parameter tool with nested filter objects and no output schema, the description covers pagination and error behavior but says nothing about the mutual exclusivity of payload/payload_file/individual fields or the account credential selection nuance. Adequate but with clear gaps given the tool's complexity.

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 78%, near the high band, so the schema already carries most parameter meaning (cursor, first, fields, payload, tagsFilter, groupFilter). The description only gestures at the fields parameter ('Use upstream fields to bound data') without adding syntax or precedence rules for the account/payload/payload_file alternatives, so it neither compensates nor detracts.

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 and resource ('Fetch a paginated list of ideas') with the filtering scope, which cleanly separates it from siblings like create_idea and get_idea_groups. It does not, however, explicitly contrast itself with the closest read sibling get_idea_groups, so the differentiation is implicit rather than stated.

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?

'One request, no automatic pagination' and 'Use upstream fields to bound data' give operational context for how to call it, and the cursor param supports that. But there is no explicit when-to-use versus get_idea_groups, nor any stated exclusions, so guidance is implied rather than directive.

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