Skip to main content
Glama
thenavidm

Buffer MCP Server

by thenavidm

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BUFFER_API_KEYNoPrivate account-wide PAT or authorized OAuth access token.
BUFFER_ACCOUNTSNoPrivate named profile array (JSON array of objects with name, api_key/api_token, token_file, organization_id); no global credential/default inheritance.
BUFFER_API_TOKENNoLegacy alias for BUFFER_API_KEY; API_KEY wins if both exist.
BUFFER_AUDIT_LOGNoPrivate append-only guard decisions log, no input content.
BUFFER_READ_ONLYNo1/true hides and refuses mutations; default false.
BUFFER_TOKEN_FILENoRegular owner-only token-only file, max 64 KiB; overrides environment key.
BUFFER_DEFAULT_ACCOUNTNoExact configured label for the default account profile; defaults to the first entry.
BUFFER_ORGANIZATION_IDNoOptional input default for a single account; does not restrict provider permissions.
BUFFER_ALLOW_DESTRUCTIVENo0/false refuses even confirmed mutations; default true.
BUFFER_REQUEST_TIMEOUT_MSNoRequest timeout in milliseconds; default 30000, range 100-300000.
BUFFER_MIN_REQUEST_INTERVAL_MSNoMinimum request interval in milliseconds; default 200, range 0-10000; process/profile pacing only.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_accountA

Get your account information. Current Buffer GraphQL account. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

add_post_to_content_itemA

Add a post that already exists to a content item. The mutation creates no post. To add a new post, call createPost first.. Current Buffer GraphQL addPostToContentItem. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_aggregated_post_metricsA

Aggregate post performance for an organization across a date range, optionally filtered by channel or tag. Current Buffer GraphQL aggregatedPostMetrics. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_channelB

Get a channel by ID. Current Buffer GraphQL channel. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_channelsA

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.

get_configurationA

Global, per-organization configuration: the connected channels the actor can view (with per-feature authorization) plus the service-level capability catalog (services). One round trip for every capability domain; clients select only what they need.. Current Buffer GraphQL configuration. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_content_itemB

Fetch a single content item by id. Errors if no content item with that id exists.

This API is an early preview and can change without a deprecation period.. Current Buffer GraphQL contentItem. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_content_itemsA

Fetch an organization's content items in the requested order, newest first by default. Uses standard cursor pagination: pass the previous page's pageInfo.endCursor as after to fetch the next page. Requesting more than 100 items in a single page is rejected.

This API is an early preview and can change without a deprecation period.. Current Buffer GraphQL contentItems. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

create_content_itemA

Create a content item together with all of its channel-specific post variants in a single operation. Validation is all-or-nothing: if any variant fails validation, no content item and no variants are created. Variants that fail while being processed after creation are reported per channel in the failure payload; the content item and its variants are still created in that case.

This API is an early preview and can change without a deprecation period.. Current Buffer GraphQL createContentItem. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

create_content_item_draftA

Create a content item holding a channel-less draft, before any channels are selected. No network-specific validation applies to the draft content. The draft needs text or at least one asset.

This API is an early preview and can change without a deprecation period.. Current Buffer GraphQL createContentItemDraft. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

create_ideaA

Create a new idea with the given content and metadata. Current Buffer GraphQL createIdea. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

create_postA

Create a new post. Current Buffer GraphQL createPost. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

create_post_templateB

Create a post template visible only to the caller (private) or to the caller's organization (internal).. Current Buffer GraphQL createPostTemplate. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_daily_posting_limitsA

Returns daily posting limit status for the given channels on the specified date.. Current Buffer GraphQL dailyPostingLimits. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

delete_content_itemA

Delete a content item: the item itself and any posts created from it. Deletion is all-or-nothing. Every post must be deletable on its own, or nothing is deleted and every blocked post is reported at once. A post can only be deleted while it is a draft, awaiting approval, scheduled, or failed, so an item cannot be deleted while any of its posts is publishing or already published. An item still holding a channel-less draft has no posts, so nothing blocks it. An error can also be reported when a post could not be fully processed after the deletion already took effect; re-fetch before retrying.

This API is an early preview and can change without a deprecation period.. Current Buffer GraphQL deleteContentItem. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

delete_postB

Delete a post by id.. Current Buffer GraphQL deletePost. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

delete_post_templateA

Delete a post template owned by the caller (or an internal template in the caller's organization, if the caller is an org admin/owner).. Current Buffer GraphQL deletePostTemplate. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

edit_postB

Edit post for channel. Current Buffer GraphQL editPost. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_idea_groupsA

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

get_ideasA

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.

get_instagram_audioA

Refresh metadata and preview availability for one Instagram audio asset. Requires Facebook Login. Instagram Login channels return ChannelRefreshRequired.. Current Buffer GraphQL instagramAudio. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

move_post_in_queueA

Move a queued post to the top or bottom of its channel's queue. Unlike editPost, this is a scheduling-only operation that never re-validates the post's content.. Current Buffer GraphQL movePostInQueue. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_postA

Get a post by ID. Current Buffer GraphQL post. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_postsA

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

get_post_templateA

Fetch a single post template by ID. Returns null if not found.. Current Buffer GraphQL postTemplate. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_post_templatesA

Fetch the templates visible to the current actor for the template library: public templates, plus internal templates from the supplied organizationId, plus private templates owned by the actor's account. The visibility scope is always pinned to the actor and the supplied organization — the input filter can only narrow within that scope, never widen it.. Current Buffer GraphQL postTemplates. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

promote_content_item_draft_to_postsA

Promote a channel-less draft into channel-specific posts. One-way: once promoted, the content item can no longer be edited as a draft. If any post fails validation, none are created. A failure can also be reported when a post could not be fully processed after the promotion already took effect; re-fetch the content item to check its state before retrying.

This API is an early preview and can change without a deprecation period.. Current Buffer GraphQL promoteContentItemDraftToPosts. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

remove_post_from_content_itemA

Remove a post from a content item. The post survives on its own channel and keeps its schedule, text, status, and tags. Only the link to the content item goes away. To delete a post, call deletePost.

A second call with a post that belongs to no content item changes nothing, and the mutation reports success.. Current Buffer GraphQL removePostFromContentItem. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_search_instagram_audioA

Search Instagram audio for one channel. Requires Facebook Login. Instagram Login channels return ChannelRefreshRequired.. Current Buffer GraphQL searchInstagramAudio. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_tagA

Fetch a single tag by id.

Resolves to null with a NOT_FOUND error when no tag has that id, and with an UNAUTHORIZED error when the tag belongs to an organization the caller cannot read. Both are reported in the errors array.

This API is an early preview and can change without a deprecation period.. Current Buffer GraphQL tag. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_tags_v2A

Fetch a page of the organization's tags, sorted by name in ascending order. Uses standard cursor pagination: pass the previous page's pageInfo.endCursor as after to fetch the next page. Requesting more than 100 tags in a single page is rejected.

This API is an early preview and can change without a deprecation period.. Current Buffer GraphQL tagsV2. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

get_trending_instagram_audioA

Return Meta trending Instagram audio for one channel. Requires Facebook Login. Instagram Login channels return ChannelRefreshRequired.. Current Buffer GraphQL trendingInstagramAudio. One request, no automatic pagination. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

update_content_itemA

Update a content item's title or target date. Fields that are omitted keep their current value.

This API is an early preview and can change without a deprecation period.. Current Buffer GraphQL updateContentItem. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

update_content_item_draftA

Replace a channel-less draft's content in full, and optionally set the content item's target date in the same write. The draft needs text or at least one asset. Only valid while the content item is still a draft.

This API is an early preview and can change without a deprecation period.. Current Buffer GraphQL updateContentItemDraft. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

update_post_templateB

Update a post template owned by the caller (or an internal template in the caller's organization, if the caller is an org admin/owner).. Current Buffer GraphQL updatePostTemplate. Requires explicit confirmation. Use upstream fields to bound data; provider errors are failures even with HTTP 200.

list_accountsB

Local names, default marker and whether authentication is configured. No token, token path or organization ID.

graphql_queryA

One parsed GraphQL query; mutations and subscriptions are refused. Use explicit minimal selections. Current experimental APIs are accessible subject to provider availability.

graphql_mutationA

One parsed GraphQL mutation with one direct root field and explicit confirmation. Adds __typename and MutationError catch-all to detect HTTP 200 failures. No automatic retry.

preview_operationA

Validate a current named input and upstream field selection, then return document and variables without credentials or a request. Does not validate permissions, assets or platform rules remotely. Operation names use native GraphQL camelCase.

query_pagesA

Read one to five pages of a schema-generated query. No mutations. Automatically includes hasNextPage/endCursor, stops on repeated or missing cursors and returns continuation state. API errors abort the remaining pages; no retries.

get_operation_schemaC

Local current operation input schema, every selectable upstream field path and bounded default selections. No credentials or request.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 41 tools

Disambiguation4/5

Most tools target a clearly distinct resource+action (channels, posts, content items, templates, ideas, tags, metrics, Instagram audio), so selection is usually unambiguous. The main overlap is among the generic GraphQL escape hatches (graphql_query, query_pages, preview_operation, get_operation_schema) which can blur together, plus singular/plural pairs like get_post_template/get_post_templates.

Naming Consistency4/5

Overwhelmingly consistent snake_case verb_noun (get_, create_, delete_, update_, add_, remove_, move_, promote_). A few deviations break the pattern: edit_post uses a different verb than update_post_template/update_content_item, get_tags_v2 carries a version suffix, get_search_instagram_audio is awkwardly phrased, and list_accounts mixes 'list' with the 'get' used for other collections.

Tool Count3/5

41 tools is on the heavy side, and the five generic GraphQL helper tools (graphql_query, graphql_mutation, query_pages, preview_operation, get_operation_schema) substantially overlap with the specific tools, suggesting consolidation is possible. The breadth is partly justified by the genuinely large surface area (posts, content items, drafts, templates, ideas, tags, channels, metrics, audio).

Completeness4/5

CRUD coverage is strong for posts, content items/drafts, and post templates, with read coverage for channels, ideas, tags, metrics, and Instagram audio, plus generic query/mutation escape hatches for gaps. Ideas and tags expose only read/create (no update/delete) for ideas and read-only tags, so a few lifecycle operations are missing.

Maintenance

ActivityNo data
ResponsivenessNo issues