Buffer's MCP server demonstrates strong tool design with 11 well-curated tools covering a cohesive domain (social media management). Tools feature typed parameters with regex validation, clear naming conventions, and descriptive text that explains prerequisites and workflows. The inclusion of escape hatches (introspect_schema, execute_query, execute_mutation) is appropriate for a GraphQL API. Main limitations: some descriptions are truncated in the schema (indicated by ellipsis), and the escape hatch tools add complexity that most workflows shouldn't require. Tool count is ideal (11 tools), suggesting intentional curation rather than auto-generation.
Create a new content idea in a Buffer organization. Ideas are drafts for future social media posts — use them to capture concepts, attach media, and tag with categories. Call get_account first to obtain your organization ID. Returns the created idea record. Do not use this tool to publish or schedule posts.
Create and schedule a social media post to a Buffer channel. Supports all platforms: Instagram, Facebook, Twitter, LinkedIn, Pinterest, YouTube, Google Business, Mastodon, TikTok, Threads, Bluesky, and Start Page. Before calling create_post, call get_account to choose an organization, then call list_channels for that organization and use an exact returned channel ID. Minimum requirements by service: - Twitter/Mastodon/Threads/Bluesky: text only - Instagram/TikTok: requires image or video asset - Pinterest: requires image + metadata.pinterest.boardServiceId (get from get_channel) - YouTube: requires video + metadata.youtube.title + metadata.youtube.categoryId Threaded posts (platforms with metadata.{platform}.thread support): You must provide BOTH the outer text field AND the thread array. The outer text should match your first thread item's text (required for backend validation). Include ALL thread items in the array. Returns the created post with id, status, and scheduling details.
Permanently delete a post from Buffer. This action is irreversible. Not all posts can be deleted. Check that deletePost is in the allowedActions array (returned by list_posts and get_post) before attempting deletion. Use list_posts or get_post to find the post ID before deleting.
Executes a GraphQL mutation to modify data in Buffer. PREREQUISITE: Call introspect_schema first to learn available mutations and fields. Use this only for operations not covered by domain tools. Do not guess mutation or field names — use only names from the schema.
Truncated descriptions in schema output indicate descriptions are cut off mid-sentence (e.g., list_channels, list_posts, create_idea). This suggests either schema validation display issues or descriptions exceed reasonable length.
Escape hatch tools (introspect_schema, execute_query, execute_mutation) reduce discoverability and may encourage bypassing domain-specific tools. These add 27% overhead to tool count.
Complex prerequisite chains required for most operations (get_account → list_channels → create_post) are documented but still introduce friction. No single-call equivalents provided.
Input schema for list_posts appears truncated in the provided definition (channelIds array type incomplete). This prevents full validation assessment.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-04-14 | C | 65 | 2025-11-25 | v1 |
Executes a read-only GraphQL query to fetch data from Buffer. PREREQUISITE: Call introspect_schema first to learn available queries and fields. Use this only for operations not covered by domain tools (get_account, list_channels, get_channel). Do not guess query or field names — use only names from the schema.
Retrieves the authenticated user account and organization details. Call this FIRST in any workflow to obtain your organization ID, which is required by most other tools. Returns account info (email, name, timezone) and organizations (id, name, plan limits, member count). If the user has multiple organizations, list them by name and confirm which one to use before proceeding with other operations.
Retrieves detailed information for a specific social media channel. Returns posting schedule, posting goals, queue status, timezone, link shortening config, and service-specific metadata (e.g., Pinterest boards, Mastodon server URL, Instagram reminder settings). Use list_channels first to discover available channel IDs.
Retrieves detailed information about a specific post by ID. Returns comprehensive post data including status, content, author, channel references, tags, notes, assets (images, videos, documents), and allowed actions. The metadata field contains service-specific data (e.g., Instagram geolocation, Twitter threads, YouTube privacy settings, Pinterest boards). Posts with status "error" include an error field with the failure message. Use list_posts to discover post IDs.
Returns the complete GraphQL schema for Buffer API including all queries, mutations, types, and arguments. Call this ONLY when you need to use execute_query or execute_mutation for operations not covered by domain-specific tools (get_account, list_channels, get_channel). Do not call this for common operations — use the domain tools instead.
Lists all social media channels connected to a Buffer organization. Returns summary info (id, name, displayName, service, type, avatar, connection status). Use get_channel for detailed information about a specific channel, including posting schedule. Call get_account first to obtain your organization ID.
Lists posts from a Buffer organization with filters for channels, status, tags, and dates. Returns post details including id, status, via, text, scheduled/sent times, channel info, tags, and errors. Supports pagination using Relay-style cursors. Call get_account first to obtain your organization ID, and list_channels to discover channel IDs.