Kajabi MCP is a Model Context Protocol server that connects your Kajabi account to AI tools like Claude and ChatGPT. Once connected, you can ask the AI to list Courses, draft Email Broadcasts, search Contacts, create Offers, and more, all from a single conversation.
How it works
Using Kajabi MCP follows three steps:
Ask: Describe what you want in plain language.
Build: Kajabi MCP constructs pages, emails, Offers, or other content based on your request, usually in under a minute.
Review: Open the draft in the Kajabi admin UI to make final edits and publish.
For example, instead of building pricing variations, drafting an announcement email, and updating a landing page across three separate tools, you can ask:
"Create a 30% off Offer for my Photography Fundamentals Course running next Tuesday, draft an email broadcast announcing the sale, and update the Course landing page to mention the discount."
Kajabi MCP creates the draft Offer, broadcast, and landing page edits in seconds. Open each in the Kajabi admin UI to fine-tune the copy and publish when ready.
What's possible
Browse and inspect: List and fetch Sites, Courses, Products, Offers, Contacts, Forms, Landing Pages, Blog posts, Email Broadcasts and Sequences, Coaching products, and themes. Search Contacts and Products by text.
Create drafts: New Blog posts, Courses (with modules and lessons), Coaching products, Offers with pricing, Landing Pages, Email Broadcasts, and Email Sequences with scheduled emails.
Edit existing content: Update Course structure, Coaching metadata, Blog post body, SEO, tags, Form fields and settings, and theme content.
Wire up Automations: Read the Automations already on a site to see what starts them and which Forms, Offers, Tags, and Sequences they touch, then draft a new Automation with a trigger and an ordered chain of steps.
See who's who: Contact profiles with tags, purchases, and access; tag and segment lists.
Work with your Media Library: Browse and search library assets, inspect where an asset is used, add new media through Kajabi's uploader, place an asset onto a supported page, crop an asset to fit a slot, and replace one asset with another everywhere it appears.
What it won't do: Take actions on behalf of customers, process payments, send email blasts, surface analytics, or touch account settings.
Before you begin
Server URL: https://mcp.kajabi.com/mcp
Before you start: log into the correct Kajabi account in your browser. The OAuth approval uses that session.
Choose what your AI tool can do
When you authorize access to Kajabi, you choose which actions your AI tool can take on your behalf. Each permission can be turned on or off independently, so you can grant only what you need.
Permission | What it allows |
Read your Kajabi data | View contacts, products, content, and analytics. |
Create and edit blog posts, landing pages, newsletters, forms, and courses | Draft and update these content types. |
Create and edit offers, products, coaching, and events | Draft and update commerce and coaching items. |
Create and edit contact tags and segments | Organize contacts with tags and saved segments. |
Send DMs, post in community channels, and edit community settings | Take community actions on your behalf. |
Create and edit broadcasts, sequences, and newsletter posts | Draft and update email content. |
Create and edit automations (workflows), their triggers, actions, and steps | Draft and update Automations, including their triggers, actions, and steps. |
Publish or unpublish content | Change the publish state of content. Only takes effect when paired with a Create and edit permission above. |
Edit theme content, custom JavaScript, and custom CSS | Update theme code and styling. Changes take effect immediately on published pages. |
List and add account users | View the users on your account and add new ones. Turned off by default. |
Warning: Editing theme code and adding account users can make changes that are hard to undo. Only grant these to an AI tool you trust.
Claude on the web (claude.ai)
Requires a paid Claude plan (Pro, Max, Team, or Enterprise).
Go to claude.ai and sign in.
Click your profile → Settings → Connectors.
Click the Add custom connector button at the bottom of the page.
Enter Kajabi as the Name.
Enter
https://mcp.kajabi.com/mcpas the URL.Click Add, then approve the Kajabi consent screen in your browser.
In a new chat, enable the Kajabi connector via the tools/attachments menu.
Verify: Ask "List my Kajabi sites."
Claude Desktop
Open Claude Desktop.
Go to Settings → Connectors → Add custom Connector.
Enter Kajabi as the Name.
Enter
https://mcp.kajabi.com/mcpas the URL.Click Add and approve the consent screen in your browser.
Verify: Start a new conversation and ask "List my Kajabi sites."
Claude Code (CLI)
claude mcp add kajabi --transport http https://mcp.kajabi.com/mcp
Claude Code opens your browser for OAuth automatically. Approve the consent screen and you're connected.
Verify:
> List my Kajabi sites
ChatGPT
Custom MCP connectors require Developer Mode, which exposes the full MCP tool surface (read + write). Only enable it for servers you trust — Kajabi is yours.
Note: On Business, Enterprise, or Edu workspaces, an admin may need to enable custom connectors first, before any team member can add one. If you do not see the option to create a custom connector, check with your workspace admin.
To enable custom connectors as an admin: go to Workspace Settings → Permissions & Roles → Connected Data, and turn on Create custom MCP connectors.
Enable Developer Mode (one-time)
Open ChatGPT → Settings → Connectors → Advanced.
Toggle Developer mode on.
Read and accept the warning about write-enabled tools.
Note: Developer Mode is available on ChatGPT Plus and Pro plans, but those plans grant read and fetch permissions only. To use write and modify actions, including creating Pages, Offers, Email Sequences, and similar content, you need a ChatGPT Business, Enterprise, or Edu plan. If you do not see Settings > Connectors > Advanced in your ChatGPT account, your current plan may not include Developer Mode access.
Add the Kajabi connector
Open Settings → Plugins→ Browse plugins, and click the + button.
Enter Kajabi as the Name.
Enter
https://mcp.kajabi.com/mcpas the MCP Server URL.Set Authentication to OAuth.
Click Create, then approve the Kajabi consent screen in your browser.
Note: ChatGPT's connector menu has changed names in the past and may do so again. If you do not see Plugins under Settings, check under Connectors or Apps & connectors instead.
Cursor
Open Cursor and go to Settings → MCP → Add new MCP server.
Set the Type to Remote (HTTP)
Enter Kajabi as the Name.
Enter
https://mcp.kajabi.com/mcpas the URL.Approve the consent screen in your browser.
Draft an Automation with your AI tool
Automations are the workflows that connect the rest of your business: a Form submission adds a Tag, a purchase starts a follow-up Email Sequence. Your AI tool can read the Automations already on your site and draft new ones for you to review.
Describe what you want in plain language, for example: "When someone submits my Webinar Signup form, tag them Webinar Lead and send my 3-email nurture sequence." Your AI tool looks up the triggers and actions available on your account, builds the Automation, and returns a link to open it in Kajabi.
An AI tool can build:
A trigger, such as a Form submission, a purchase, or a Tag being added
An ordered chain of actions after the trigger, with optional wait steps in between
One set of branch paths at the end of the chain, routing contacts down different steps based on a contact filter such as a Tag, a submitted Form, or Offer ownership
Exit conditions that remove a contact from the Automation when they convert, so a nurture sequence stops once someone buys
Email content written straight into a send email step, including Designed drag-and-drop emails
Note: Automation support is rolling out gradually, and individual capabilities, such as editing an existing Automation or setting exit conditions, reach accounts on their own schedule. If your AI tool reports that a capability is not enabled for your account, it has not reached your account yet.
Review and publish an AI-drafted Automation
Your AI tool never publishes an Automation. Everything it creates arrives as a draft, so nothing sends and no contact is enrolled until you open the Automation in Kajabi and publish it yourself.
A draft can arrive with something still to fix. Your AI tool reports whether the Automation is ready to publish and what is blocking it, and Kajabi shows the same detail on the Automation itself.
Editing works on drafts and on Automations you have already published. A published Automation stays live through an edit, and an edit that would break it is refused rather than taking it offline. Contacts already moving through the Automation carry over to the edited version, though removing a step in the middle can move the contacts waiting on it to the step that follows.
Two limits apply once you ask for something more complex. Branch paths require advanced Automations on your plan, and a branch holds up to 10 paths including a required catch-all path so no contact dead-ends. Branch paths and Designed emails can also be built into a new Automation but not added to an existing one: if an Automation already has branches, an AI tool can still rename it or change its trigger, but its steps are edited in Kajabi.
Tips
Always start with kjb_list_sites: Most tools need a site_id.
Writes may create drafts or publish content: If drafting the content is an option in Kajabi, the MCP can create a draft for you. This is true for content such as Offers, Pages, and Emails. If it is not possible to create a draft in Kajabi, then the MCP will publish the content you request. This is true for content like Community Posts and Forms.
Tokens refresh automatically: If you hit "Unauthorized," remove the connector and re-add it.
Troubleshooting
Issue | Fix |
"I don't see any Kajabi tools" | Confirm MCP is enabled on your account. Reply to this article and we will check. |
ChatGPT: "Custom connectors not available" | Enable Developer Mode in Settings → Connectors → Advanced. |
Consent screen won't load / auth fails | Log into the right Kajabi account in your browser first, then retry. |
Full list of tools
Category | Tool | What it does |
Core | list_sites | Lists all Kajabi sites the authenticated user can access. Call this first to discover site IDs. Each site row includes a community sub-object when the site has a Kajabi Community. |
Core | get_site_summary | Returns a detailed summary of a site including settings, locale, contact info, and the site theme's active_theme_id. |
Core | ping | Smoke test that confirms the MCP server is running and reachable. |
Blog | create_blog | Create the blog on a site. Required once before any blog posts can be created. Each site can have at most one blog. |
Blog | list_blog_posts | List blog posts with optional filtering by status (draft/published/scheduled) and tags. Paginated. |
Blog | get_blog_post | Get full HTML content, SEO metadata, tags, and timestamps. |
Blog | create_blog_post | Create a draft blog post. Always created as a draft. |
Blog | update_blog_post | Update content, tags, SEO metadata, or publish state. Pass published_at to publish now or schedule; pass null to unpublish. |
Courses | create_course | Create a course. Supports evergreen (self-paced) and cohort (scheduled). |
Courses | get_course | Get the full module/lesson tree with publishing states. |
Courses | get_lesson | Get full detail for a single lesson, including title, body HTML, publishing state, position, and parent module/submodule context. |
Courses | search_course_content | Search lesson bodies for matching text. Useful for locating template markers, legacy formatting, or broken embeds during course migrations. |
Courses | update_course | Update title, description, or thumbnail. Cannot change publish status. |
Courses | update_course_content | Add or update modules, submodules, and lessons. Supports reordering, publish/unpublish, drip scheduling, and prerequisite gating. |
Coaching | create_coaching | Create a coaching product. Supports 1:1 and group coaching. |
Coaching | get_coaching | Get program details including outline sessions or groups, client count, and scheduling config. |
Coaching | update_coaching | Update title, description, coach info, and scheduling settings. |
Coaching | list_coaching_sessions | List sessions for a coaching program (1:1) or coaching group. Paginated. |
Coaching | get_coaching_session | Get details for a single 1:1 or group session. |
Coaching | create_coaching_session | Create an ad-hoc 1:1 or group session, including scheduled time, duration, timezone, and location. |
Coaching | update_coaching_session | Update an existing session's title, description, or scheduling fields. |
Communities | list_members | List community members with filters (role, joined-after, at-risk, onboarding status) and sort options. |
Communities | get_member | Full dossier on a single member — points, engagement, onboarding progress, recent RSVPs and challenge entries. |
Communities | list_channels | List community channels with filters for access group, privacy, and type (feed/chat). |
Communities | list_access_groups | List access groups (the gating layer above channels) with member, post, and last-post-at rollups. |
Communities | list_posts | List posts across one or all channels with thread-aware filters. Use parent_post_id or root_post_id to navigate comment/reply threads. |
Communities | get_post | Full post body, rich-text data, author, reactions, engagement counts, and inline poll detail. |
Communities | create_post | Create a root post, comment, reply, or poll in a channel. Authored as the connected user. |
Communities | update_post | Edit an existing post's body. |
Communities | get_community | Show a community's title, description, and owner. |
Communities | get_metrics | High-level engagement metrics (active users, new members, messages, RSVPs, challenges joined) over a date window. |
Communities | list_announcements | List a community's announcements with filters by channel and date window. |
Communities | create_announcement | Publish a pinned banner, home-sidebar, or channel-scoped announcement. |
Communities | update_announcement | Edit an existing announcement's name, text, subtitle, or placement. |
Communities | list_challenges | List community challenges with filters by time (scheduled/active/expired), series, access group, and free-text search. |
Communities | get_challenge | Full challenge detail including scheduling, prize, status, engagement counts, series, and gating. |
Communities | list_challenge_series | List a community's challenge series (curator groupings of related challenges). |
Communities | list_challenge_entries | List submissions to a single challenge, or check whether a specific user submitted. |
Communities | list_challenge_entry_comments | List comments on a single challenge entry. |
Communities | list_meetups | List community meetups (events) with time, channel, creator, access group, and date-range filters. |
Communities | get_meetup | Full meetup detail including scheduling, location, channel scoping, creator, gating, and RSVP counts. |
Communities | list_meetup_rsvps | List the RSVP roster for a single meetup, or check whether a specific user RSVPed. |
Communities | send_dm | Send a one-off direct message to a single community member, authored as the connected user. |
Newsletters | get_newsletter | Get newsletter details including its 10 most recent posts. |
Newsletters | get_newsletter_post | Get a newsletter post's draft content, publish status, and email subject. |
Newsletters | create_newsletter | Create a newsletter product (also creates its paired opt-in form). |
Newsletters | create_newsletter_post | Create a draft newsletter post. |
Newsletters | update_newsletter_post | Update draft content. |
Email broadcasts | list_broadcasts | List broadcasts with optional filtering by status (draft/scheduled/delivering/delivered). |
Email broadcasts | get_broadcast | Get subject, body, recipient filters, and engagement stats (opens, clicks, bounces, rates). |
Email broadcasts | create_broadcast | Create a draft broadcast in either the new drag-and-drop builder or the classic HTML editor. Sending happens in the admin UI. |
Email sequences | list_sequences | List active sequences with email count and subscriber count. |
Email sequences | get_sequence | Get the sequence's emails with drip timing, publication status, and engagement stats. |
Email sequences | create_sequence | Create a sequence with title and default send timing. Add emails with add_sequence_email. |
Email sequences | add_sequence_email | Add an email to an existing sequence with a day offset and optional send time. |
Automations | list_automations | List a site's Automations with status (draft or published), trigger summary, flow count, and admin URL. Paginated. |
Automations | get_automation | Get one Automation's full structure: nodes, edges, per-node and workflow-level errors, whether it can be published, and enrollment count. |
Automations | list_automation_triggers | List the trigger types available on the account, with each trigger's category, required resource type, options, and the actions it can pair with. |
Automations | list_automation_actions | List the action types available on the account, plus the wait and branch step types where the plan allows. |
Automations | create_automation | Create an Automation as a draft: one trigger followed by an ordered chain of action and wait steps. Never published. |
Automations | update_automation | Rename an Automation, change its trigger, replace its steps, or set its exit conditions. Works on drafts and published Automations. |
Events | list_events | List events with optional filter by type. Paginated. |
Events | get_event | Get event details including upcoming occurrences. |
Events | create_event | Create an event. Returns the event and a link to the admin editor. |
Forms | list_forms | List forms with submission counts. Paginated. |
Forms | get_form | Get current fields, available site fields that can be added, and submission count. |
Forms | create_form | Create a form with default name and email fields. Optionally attach existing site fields or create new custom fields. |
Forms | update_form | Update settings, attach existing site fields, or create-and-attach new custom fields. |
Forms | remove_form_field | Remove a field from a form. The site field is preserved and can be re-added later. |
Forms | list_form_submissions | List submissions for a specific form. Submitted data is in the custom_fields JSONB column. |
Pages | list_landing_pages | List standalone landing pages with optional filtering by status. Excludes funnel/pipeline step pages. |
Pages | get_landing_page | Get SEO metadata, publish status, form count, URLs, and the page's active_theme_id (page content lives entirely in the theme). |
Pages | create_landing_page | Create a draft landing page. Optionally specify a theme preset slug. |
Pages | update_landing_page | Update title, slug, SEO metadata, or publish state. Pass publish_at to publish or schedule; null to unpublish. |
Pages | list_website_pages | List website pages with optional filtering by status. Paginated from the active theme. |
Pages | get_website_page | Get SEO metadata, publish status, and URLs for a website page. |
Navigation | list_navbars | List navigation menus, categorized as default (main-menu, footer, member-menu, about-menu) or custom. |
Navigation | get_navbar | Get a menu and its ordered list of links, including each link's type and target. |
Navigation | create_navbar | Create a new custom navigation menu. Populate it via create_navbar_link. |
Navigation | update_navbar | Rename an existing navigation menu (default or custom). |
Navigation | create_navbar_link | Add a new link to a navigation menu. |
Navigation | update_navbar_link | Update an existing navigation menu link. |
Navigation | delete_navbar_link | Remove a single link from a navigation menu. |
Navigation | reorder_navbar_links | Reorder all links inside a menu in a single call. |
Commerce | list_offers | List offers with optional filtering by status. Includes pricing summary and product count. |
Commerce | get_offer | Get pricing breakdown, variants, linked products, and the offer's checkout-page active_theme_id. |
Commerce | create_offer | Create a draft offer. Supports free, one-time, subscription, and payment plan pricing. |
Commerce | update_offer | Update an offer's details, pricing, or publish state. Pass publish_at to publish or schedule; null to unpublish. |
Commerce | list_offer_purchases | List purchases with optional filtering by member, offer, or date range. |
Commerce | get_offer_purchase | Get pricing breakdown, billing status, member details, product access, and subscription info. |
Products | search_products | Search products by title with optional filtering by product type and sellable status. |
Products | get_product | Get product type, description, linked offers, and the product's consumption-side active_theme_id. |
Contacts | search_contacts | Search and filter contacts by name/email plus tags and segments. |
Contacts | get_contact | Get contact profile including tags, custom fields, purchases, product access, and admin notes. |
Contacts | list_tags | List contact tags with contact count per tag. |
Contacts | create_tag | Create a new contact tag. |
Contacts | tag_contact | Add a tag to a contact. Idempotent. |
Contacts | untag_contact | Remove a tag from a contact. Idempotent. |
Contacts | list_segments | List dynamic contact segments (filter queries, not static lists). |
Contacts | create_segment | Create a saved segment with a title and filter map. Use to target broadcasts or search contacts. |
Contacts | update_segment | Update a segment's title and/or filters. Filters are a full replacement when provided. |
Themes | get_theme_content | Get theme settings and section types for any themed page (site, course, landing page, offer, email, coaching). |
Themes | update_theme_content | Update theme settings on any themed page. Changes take effect immediately on published pages; there is no draft layer. |
Media Library | list_media | List and filter Media Library assets by name, tag, recency, and in-use status. Sort by newest, name, size, or usage. Covers all media types. |
Media Library | get_media | Get an asset's name, type, dimensions, file size, tags, a viewable link, alt text, and everywhere it is used. Covers all media types. |
Media Library | place_media | Place a library asset into a slot on a themed or fixed-slot surface. Covers images today, with file, video, and audio support on select surfaces. Aspect-locked slots auto-crop to fit. |
Media Library | crop_media | Crop an image to a target size, saved as a new asset. Images only. The original is untouched. |
Media Library | add_media | Open Kajabi's uploader, pre-set to the right media type, so you can add new media. Covers all media types. |
Media Library | replace_media | Swap one asset for another everywhere the original is used, in a single action. Neither asset is deleted. Covers all media types. |
Downloads | create_download | Create a draft digital download collection. Files and an offer are added in the admin UI. |
Account users | list_account_users | List non-owner users on the account. Admins/owners only. |
Account users | add_account_user | Add a Support Specialist or Assistant. Admins/owners only. |
Analytics | get_contacts_analytics | Contacts analytics for a site over a date window. |
Analytics | get_revenue_analytics | Revenue analytics for a site over a date window. |
Analytics | get_revenue_by_offer | Revenue broken down by offer, showing which products and offers are generating the most revenue. |
Analytics | get_subscriptions_mrr | Monthly recurring revenue for a site's subscriptions. |
Analytics | get_subscription_analytics | Subscription analytics for a site over a date window. |
FAQs
Which Kajabi plans include MCP?
MCP is currently included with all Kajabi plans. Future limits may apply.
Do I still have access to Cofounder if I connect Claude or ChatGPT?
Yes, you continue to have access to Cofounder alongside other connected AI tools.
Can I connect Claude or ChatGPT to multiple Kajabi accounts?
A single Claude or ChatGPT connection links to one Kajabi account at a time. To switch accounts, disconnect your existing connection in Kajabi, log into the Kajabi account you want to use, and then reconnect from your AI tool.
Can my team members use Claude or ChatGPT with our Kajabi account?
Yes. Each team member connects their own AI tool to Kajabi using their own Kajabi login. What they can do through the AI is limited by their Kajabi user role — for example, only Admin and Owner users can manage account users.
Why do I have to keep reconnecting Claude or ChatGPT to Kajabi?
A few different things can cause repeat reconnects:
For security, connections that go unused for a period of time will expire on their own
The authorization link you click during the connect flow expires after a short window, so long pauses mid-flow will require you to start over
Your Claude or ChatGPT desktop app may need a restart after a Kajabi update before it can reconnect cleanly
The connect flow uses whichever Kajabi account is the active browser session. If another Kajabi tab is the active one (such as a partner site you help manage), the connection can fail or attach to the wrong account
If reconnects keep happening, sign into the correct Kajabi account in your browser, restart your AI tool, and try once more. If the issue continues, contact Kajabi Support.
Can Claude or ChatGPT publish an Automation for me?
No. Your AI tool drafts an Automation and hands it back for you to review. Publishing, which is what arms an Automation to run on your contacts, stays a manual step you take in Kajabi.
Why does my AI tool say an Automation is published when I paused it?
Pausing an Automation stops it from running, but it does not change its status. A paused Automation is still a published one, and your AI tool reads the status rather than the pause, so a paused Automation looks live to it. Open the Automation in Kajabi when you need to confirm whether it is actually running.
Why can't my AI tool branch on whether someone opened an email?
Branch paths use a set list of contact filters, covering what a contact is or has rather than what they did recently. Your AI tool can branch on Tags, whether a contact submitted a specific Form, subscription status, contact field values, and which Products or Offers a contact owns.
Filters based on recent activity are not available on a branch. That includes email opens and clicks, how recently a contact was created or last active, Assessment results, Event registrations, coupons used, and Email Sequence membership.
Why don't I see all of my Kajabi tools in Claude or ChatGPT?
Not every Kajabi feature is available through the connection yet. The connection currently supports the most common workflows: managing contacts, courses, products, offers, pages, emails, and forms. We are adding coverage to more features over time.
Some capabilities also roll out gradually, so a tool can exist without having reached your account yet. Automations is rolling out this way.
You may also see fewer tools than another user on your account because what you can do through the AI is limited by your Kajabi user role.
If a Kajabi feature you rely on is missing, let us know. Your feedback shapes what we build next: https://feedback.kajabi.com/feature-request?selectedCategory=mcp
Why don't reports from Claude or ChatGPT match my Kajabi dashboard?
Small differences usually come from one of three things:
The connection returns data in UTC, while your dashboard may use your local time zone
The connection may include all billing statuses, while your dashboard filters some out by default
Different definitions of "this week", such as Sunday-start vs. Monday-start, for example
For an exact match, ask your AI tool to re-run the query with a specific date range, such as "show me completed purchases from May 1st, 2026 through May 7th, 2026."
Where do I see or remove the AI tools connected to my account?
In Kajabi, go to Settings → Integrations & Webhooks → AI Assistants . You will see each connected AI tool along with the date it was authorized. Use the Disconnect option next to any tool to revoke its access.
Why can't Claude or ChatGPT upload my media files directly?
The connection has no way to move a file off your device on its own, so your AI tool cannot upload media for you. Instead, when you ask it to add an image, video, audio file, or PDF, it hands back a link to Kajabi's uploader, already set to the right type of media. Open that link, choose your file, and the upload finishes inside Kajabi, the same way you would add media in your Media Library normally. This applies to every media type the connection supports: images, videos, audio, and files like PDFs.
