# Butter CMS MCP connector

The Butter CMS connector lets Claude, ChatGPT, Cursor and other AI clients read and write your Butter CMS pages, blog posts, collections, authors, categories and tags, with each person signed in as themselves and every change logged.

Source: https://elaichi.ai/connectors/buttercms/

## Facts

| | |
| --- | --- |
| Application | Butter CMS |
| Category | Knowledge Management |
| AI tools | 25 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | Yes |

## What you can ask once Butter CMS is connected

- List Butter CMS pages updated in the last week.
- Draft a blog post about our new pricing page.
- Which Butter CMS posts are still unpublished?

## Connect Butter CMS in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Butter CMS.
2. Optionally set Share with, then press Connect.
3. Paste a Butter CMS API key. One person generates a token in Butter CMS and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Butter CMS tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Butter CMS to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Butter CMS to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Butter CMS to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Butter CMS to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Butter CMS tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Butter CMS through Elaichi

### Draft a blog post from an outline

Content. Hand the agent a brief and let it create the post in Butter CMS with the right author, category and tags already set. Review it in Butter CMS before it goes anywhere.

### Refresh a landing page after a launch

Marketing. Ask for the pricing or product page by name and have the new copy applied to it in place, so the page reflects what shipped this week.

### Find posts missing categories or tags

SEO. Pull every post in Butter CMS, spot the ones with no category or a thin set of tags, and fix them in a single pass.

### Update release notes stored as content

Product. Keep changelog entries, feature descriptions and FAQ items in Butter CMS collections current by changing only the fields that moved.

### Check what the help page actually says

Support. Before answering a customer, ask what the published page or post in Butter CMS says on a topic, and flag it for a rewrite if it is out of date.

### Summarize what published this month

Marketing. Read the Butter CMS blog feed and turn it into a plain list of what went live, who wrote it and which topics it covered, ready for the newsletter.

## Frequently asked questions

### How do I connect Butter CMS to Claude?

Connect Butter CMS in Elaichi first, which means pasting the read and write API key from your Butter CMS account settings. There is no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. Sign in with your Elaichi account and your Butter CMS pages and posts are available in the conversation.

### Does Butter CMS work with ChatGPT and Cursor as well as Claude?

Yes. Once Butter CMS is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect Butter CMS once and every client picks it up.

### What can an AI agent actually do with my Butter CMS data?

An agent can list and read your Butter CMS pages, blog posts, collection items, authors, categories, tags and RSS or Atom feeds, and search across pages and posts. It can create new pages, posts and collection items, update existing ones, and delete posts or collection items if you allow it. In practice that means drafting a post, updating a landing page, tidying tags or reporting on what has published, all from a chat window.

### Does connecting Butter CMS give the AI access to everything in my workspace?

The AI works within whatever the Butter CMS API key you connected can reach, so a read-only key means the agent can only read. Elaichi can narrow that further by turning off individual actions for a team or a person, but it can never grant more than the key itself allows. Everything the agent does in Butter CMS is recorded against the person who asked.

### Can my team share one Butter CMS connection?

Yes. One person connects Butter CMS with the API key and shares that connection with a team in Elaichi, and nobody else ever sees or handles the key. Each teammate still signs in to Elaichi as themselves, so the audit log shows exactly who created or changed each page or post.

### Can I stop an agent from deleting or changing things in Butter CMS?

Yes. In Elaichi you can block specific actions for the Butter CMS connector, such as deleting posts or collection items, or updating pages, while leaving reading and drafting on. A blocked action is never shown to Claude, ChatGPT or any other client, so no prompt, accidental or deliberate, can reach it.

### What happens to a Butter CMS connection when someone leaves?

When you offboard a person in Elaichi their access to Butter CMS through every AI client ends at once, without touching the Butter CMS account itself. A shared Butter CMS connection keeps working for everyone else on the team. If you ever want to remove Butter CMS entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client together.

## All 25 Butter CMS tools

Every tool below is callable through https://api.elaichi.ai/mcp once Butter CMS is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Butter CMS pages** (List). Retrieve a paginated list of ButterCMS pages for a given page type, or all Single Pages when page_type is `*`. Returns: slug, name, page_type, published, updated, fields. Field filtering and ordering apply to Page Type endpoints, not Single Pages. Required: page_type.
- **Create a Butter CMS page** (Create). Create a new ButterCMS page via the Write API with support for multiple locales and automatic media uploads. The page type schema must already exist in your account; pages are created as draft by default and processing is asynchronous. Returns: status. Required: title, slug, page_type, fields.
- **Update a Butter CMS page by ID** (Update). Update an existing ButterCMS page via the Write API using a partial PATCH (PUT is supported for backwards compatibility). Only included fields are modified; title and slug are immutable. Page updates are asynchronous; scheduling is not supported. Returns: status, examples, name. Required: id, page_type.
- **Get single Butter CMS page by ID** (Get). Retrieve a specific ButterCMS page by page type and slug (id). Use `*` as page_type to look up a Single Page when the type is unknown. Returns: slug, name, page_type, published, updated, fields. Required: page_type, id.
- **List all Butter CMS pages searches** (List). Search ButterCMS pages by text query, returning matching pages sorted by relevancy. Only direct page content is searched; references are excluded from search but still included in the response based on levels. Returns: slug, name, page_type, published, updated, fields. Required: query.
- **List all Butter CMS contents** (List). Retrieve items from a ButterCMS Collection with filtering, pagination, and relationship serialization. Collection fields are user-defined in the dashboard and vary by collection. Returns: meta. Required: collection_key.
- **Create a Butter CMS content** (Create). Create a new item in a ButterCMS Collection via the Write API. Field structure must match the collection schema configured in the dashboard. Processing is asynchronous (202 Accepted). Returns: status. Required: key, fields.
- **Update a Butter CMS content by ID** (Update). Fully update (PUT) a ButterCMS Collection item, replacing the item with the provided data. Use PUT when you need complete field synchronization; processing is asynchronous (202 Accepted). Returns: status. Required: id, collection_key, fields.
- **Delete a Butter CMS content by ID** (Delete). Soft-delete a ButterCMS Collection item by id, marking it deleted while preserving data for potential recovery. The item no longer appears in collection listings or standard API responses. Returns an empty 204 response on success. Required: id, collection_key.
- **Butter CMS contents partial update** (Update). Partially update (PATCH) a ButterCMS Collection item, modifying only the specified fields while preserving all other content. Processing is asynchronous (202 Accepted). Returns: status. Required: id, collection_key.
- **List all Butter CMS posts** (List). Retrieve a paginated list of published ButterCMS blog posts sorted by publication date (newest first). Use exclude_body to reduce payload size on listing pages; filter by author_slug, category_slug, or tag_slug. Returns: url, id, _id.
- **Create a Butter CMS post** (Create). Create a new ButterCMS blog post via the Write API with support for author assignment, categories, tags, and media integration. Posts default to draft; processing is asynchronous (202 Accepted). Scheduling is not supported on create. Returns: status, example. Required: title.
- **Update a Butter CMS post by ID** (Update). Partially update an existing ButterCMS blog post by id, modifying only the provided fields while preserving omitted ones. Use locale to update or create a specific locale variant. Scheduling parameters may be ignored with warning fields in the response. Returns: status, example. Required: id.
- **Delete a Butter CMS post by ID** (Delete). Soft-delete a ButterCMS blog post by id, removing it from public listings, search, and feeds while preserving content for potential recovery. Use locale to target a specific locale variant. Returns an empty 204 response on success. Required: id.
- **Get single Butter CMS post by ID** (Get). Retrieve a specific ButterCMS blog post by slug (id), including content regardless of publication status (published, draft, or scheduled). Ideal for individual post pages and preview workflows. Returns: url, id, _id. Required: id.
- **List all Butter CMS authors** (List). Retrieve all ButterCMS blog post authors with profile information. Pass include=recent_posts to enrich each author with recent posts; use locale to filter those posts. Returns: slug, first_name, last_name, email, bio, title, profile_image.
- **Get single Butter CMS author by ID** (Get). Retrieve a ButterCMS author by slug (id), including profile details and optional recent posts. Returns: slug, first_name, last_name, email, bio, title, profile_image. Required: id.
- **List all Butter CMS categories** (List). Retrieve all ButterCMS blog post categories that contain published posts. Pass include=recent_posts to attach recent posts per category; use locale to filter those posts. Returns: name, slug, recent_posts.
- **Get single Butter CMS category by ID** (Get). Retrieve a ButterCMS blog post category by slug (id), optionally including recent posts. Returns: name, slug, recent_posts. Required: id.
- **List all Butter CMS tags** (List). Retrieve all ButterCMS blog post tags that contain published posts. Pass include=recent_posts to attach recent posts per tag; use locale to filter those posts. Returns: name, slug, recent_posts.
- **Get single Butter CMS tag by ID** (Get). Retrieve a ButterCMS blog post tag by slug (id), optionally including recent posts. Returns: name, slug, recent_posts. Required: id.
- **List all Butter CMS posts searches** (List). Search ButterCMS blog posts with full-text search across titles and body content, ranked by relevance. An empty query returns no results; use exclude_body to omit the body field and reduce response size. Returns: url, id, _id.
- **List all Butter CMS feeds rses** (List). Generate a standards-compliant RSS 2.0 XML feed of ButterCMS blog posts for syndication and feed readers. Filter with category_slug, tag_slug, or locale. Returns the complete RSS 2.0 XML feed string.
- **List all Butter CMS feeds atoms** (List). Generate a standards-compliant Atom 1.0 XML feed of ButterCMS blog posts for syndication, with richer metadata than RSS. Filter with category_slug, tag_slug, or locale. Returns the complete Atom 1.0 XML feed string.
- **List all Butter CMS feeds sitemaps** (List). Generate a standards-compliant XML sitemap of ButterCMS blog posts for search engine discovery (sitemaps.org protocol). Filter with category_slug, tag_slug, or locale. Returns the complete XML sitemap string with loc and lastmod entries.
