Skip to main content
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:
  1. Ask: Describe what you want in plain language.
  2. Build: Kajabi MCP constructs pages, emails, Offers, or other content based on your request, usually in under a minute.
  3. 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. See who’s who — Contact profiles with tags, purchases, and access; tag and segment lists. 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.
PermissionWhat it allows
Read your Kajabi dataView contacts, products, content, and analytics.
Create and edit blog posts, landing pages, newsletters, forms, and coursesDraft and update these content types.
Create and edit offers, products, coaching, and eventsDraft and update commerce and coaching items.
Create and edit contact tags and segmentsOrganize contacts with tags and saved segments.
Send DMs, post in community channels, and edit community settingsTake community actions on your behalf.
Create and edit broadcasts, sequences, and newsletter postsDraft and update email content.
Publish or unpublish contentChange the publish state of content. Only takes effect when paired with a Create and edit permission above.
Edit theme content, custom JavaScript, and custom CSSUpdate theme code and styling. Changes take effect immediately on published pages.
List and add account usersView the users on your account and add new ones. Turned off by default.
Important: 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 (Web — claude.ai)

Requires a paid Claude plan (Pro, Max, Team, or Enterprise).
  1. Go to claude.ai and sign in.
  2. Click your profile → Settings → Connectors.
  3. Click the Add custom connector button at the bottom of the page.
  4. Enter:
  1. Click Add, then approve the Kajabi consent screen in your browser.
  2. In a new chat, enable the Kajabi connector via the tools/attachments menu.
Verify: Ask “List my Kajabi sites.”

Claude Desktop

  1. Open Claude Desktop.
  2. Go to Settings → Connectors → Add custom Connector.
  3. Enter:
  1. 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.

Enable Developer Mode (one-time)

  1. Open ChatGPT → Settings → Connectors → Advanced.
  2. Toggle Developer mode on.
  3. Read and accept the warning about write-enabled tools.

Add the Kajabi connector

  1. Open Settings → Apps → Advanced settings, click Create app.
  2. Enter:
  1. Save, then approve the Kajabi consent screen in your browser.

Use it in a chat

  1. Start a new conversation.
  2. Click the + icon (or Tools) → Developer mode → enable Kajabi.
  3. Ask your question.
Verify: “List my Kajabi sites.”

Cursor

  1. Open Cursor → Settings → MCP → Add new MCP server.
  2. Type: Remote (HTTP) • Name: Kajabi • URL: https://mcp.kajabi.com/mcp
  3. Approve in browser.

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, then the MCP can create a draft for you. This is true for content like Offers, Pages, Emails, etc. 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

IssueFix
”I don’t see any Kajabi tools”Confirm MCP is enabled on your account — reply and we’ll check.
ChatGPT: “Custom connectors not available”Enable Developer Mode in Settings Connectors Advanced.
Consent screen won’t load / auth failsLog into the right Kajabi account in your browser first, then retry.

Full list of tools

CategoryToolWhat it does
Corelist_sitesLists 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.
Coreget_site_summaryReturns a detailed summary of a site including settings, locale, contact info, and the site theme’s active_theme_id.
CorepingSmoke test — confirms the MCP server is running and reachable.
Blogcreate_blogCreate the blog on a site. Required once before any blog posts can be created. Each site can have at most one blog.
Bloglist_blog_postsList blog posts with optional filtering by status (draft/published/scheduled) and tags. Paginated.
Blogget_blog_postGet full HTML content, SEO metadata, tags, and timestamps.
Blogcreate_blog_postCreate a draft blog post. Always created as a draft.
Blogupdate_blog_postUpdate content, tags, SEO metadata, or publish state. Pass published_at to publish now or schedule; pass null to unpublish.
Coursescreate_courseCreate a course. Supports evergreen (self-paced) and cohort (scheduled).
Coursesget_courseGet the full module/lesson tree with publishing states.
Coursesget_lessonGet full detail for a single lesson — title, body HTML, publishing state, position, and parent module/submodule context.
Coursessearch_course_contentSearch lesson bodies for matching text — useful for locating template markers, legacy formatting, or broken embeds during course migrations.
Coursesupdate_courseUpdate title, description, or thumbnail. Cannot change publish status.
Coursesupdate_course_contentAdd or update modules, submodules, and lessons. Supports reordering, publish/unpublish, drip scheduling, and prerequisite gating.
Coachingcreate_coachingCreate a coaching product. Supports 1:1 and group coaching.
Coachingget_coachingGet program details including outline sessions or groups, client count, and scheduling config.
Coachingupdate_coachingUpdate title, description, coach info, and scheduling settings.
Coachinglist_coaching_sessionsList sessions for a coaching program (1:1) or coaching group. Paginated.
Coachingget_coaching_sessionGet details for a single 1:1 or group session.
Coachingcreate_coaching_sessionCreate an ad-hoc 1:1 or group session, including scheduled time, duration, timezone, and location.
Coachingupdate_coaching_sessionUpdate an existing session’s title, description, or scheduling fields.
Communitieslist_membersList community members with filters (role, joined-after, at-risk, onboarding status) and sort options.
Communitiesget_memberFull dossier on a single member — points, engagement, onboarding progress, recent RSVPs and challenge entries.
Communitieslist_channelsList community channels with filters for access group, privacy, and type (feed/chat).
Communitieslist_access_groupsList access groups (the gating layer above channels) with member, post, and last-post-at rollups.
Communitieslist_postsList posts across one or all channels with thread-aware filters. Use parent_post_id or root_post_id to navigate comment/reply threads.
Communitiesget_postFull post body, rich-text data, author, reactions, engagement counts, and inline poll detail.
Communitiescreate_postCreate a root post, comment, reply, or poll in a channel. Authored as the connected user.
Communitiesupdate_postEdit an existing post’s body.
Communitiesget_communityShow a community’s title, description, and owner.
Communitiesget_metricsHigh-level engagement metrics (active users, new members, messages, RSVPs, challenges joined) over a date window.
Communitieslist_announcementsList a community’s announcements with filters by channel and date window.
Communitiescreate_announcementPublish a pinned banner, home-sidebar, or channel-scoped announcement.
Communitiesupdate_announcementEdit an existing announcement’s name, text, subtitle, or placement.
Communitieslist_challengesList community challenges with filters by time (scheduled/active/expired), series, access group, and free-text search.
Communitiesget_challengeFull challenge detail including scheduling, prize, status, engagement counts, series, and gating.
Communitieslist_challenge_seriesList a community’s challenge series (curator groupings of related challenges).
Communitieslist_challenge_entriesList submissions to a single challenge, or check whether a specific user submitted.
Communitieslist_challenge_entry_commentsList comments on a single challenge entry.
Communitieslist_meetupsList community meetups (events) with time, channel, creator, access group, and date-range filters.
Communitiesget_meetupFull meetup detail including scheduling, location, channel scoping, creator, gating, and RSVP counts.
Communitieslist_meetup_rsvpsList the RSVP roster for a single meetup, or check whether a specific user RSVPed.
Communitiessend_dmSend a one-off direct message to a single community member, authored as the connected user.
Newslettersget_newsletterGet newsletter details including its 10 most recent posts.
Newslettersget_newsletter_postGet a newsletter post’s draft content, publish status, and email subject.
Newsletterscreate_newsletterCreate a newsletter product (also creates its paired opt-in form).
Newsletterscreate_newsletter_postCreate a draft newsletter post.
Newslettersupdate_newsletter_postUpdate draft content.
Email broadcastslist_broadcastsList broadcasts with optional filtering by status (draft/scheduled/delivering/delivered).
Email broadcastsget_broadcastGet subject, body, recipient filters, and engagement stats (opens, clicks, bounces, rates).
Email broadcastscreate_broadcastCreate a draft broadcast in either the new drag-and-drop builder or the classic HTML editor. Sending happens in the admin UI.
Email sequenceslist_sequencesList active sequences with email count and subscriber count.
Email sequencesget_sequenceGet the sequence’s emails with drip timing, publication status, and engagement stats.
Email sequencescreate_sequenceCreate a sequence with title and default send timing. Add emails with add_sequence_email.
Email sequencesadd_sequence_emailAdd an email to an existing sequence with a day offset and optional send time.
Eventslist_eventsList events with optional filter by type. Paginated.
Eventsget_eventGet event details including upcoming occurrences.
Eventscreate_eventCreate an event. Returns the event and a link to the admin editor.
Formslist_formsList forms with submission counts. Paginated.
Formsget_formGet current fields, available site fields that can be added, and submission count.
Formscreate_formCreate a form with default name and email fields. Optionally attach existing site fields or create new custom fields.
Formsupdate_formUpdate settings, attach existing site fields, or create-and-attach new custom fields.
Formsremove_form_fieldRemove a field from a form. The site field is preserved and can be re-added later.
Formslist_form_submissionsList submissions for a specific form. Submitted data is in the custom_fields JSONB column.
Pageslist_landing_pagesList standalone landing pages with optional filtering by status. Excludes funnel/pipeline step pages.
Pagesget_landing_pageGet SEO metadata, publish status, form count, URLs, and the page’s active_theme_id (page content lives entirely in the theme).
Pagescreate_landing_pageCreate a draft landing page. Optionally specify a theme preset slug.
Pagesupdate_landing_pageUpdate title, slug, SEO metadata, or publish state. Pass publish_at to publish or schedule; null to unpublish.
Pageslist_website_pagesList website pages with optional filtering by status. Paginated from the active theme.
Pagesget_website_pageGet SEO metadata, publish status, and URLs for a website page.
Navigationlist_navbarsList navigation menus, categorized as default (main-menu, footer, member-menu, about-menu) or custom.
Navigationget_navbarGet a menu and its ordered list of links, including each link’s type and target.
Navigationcreate_navbarCreate a new custom navigation menu. Populate it via create_navbar_link.
Navigationupdate_navbarRename an existing navigation menu (default or custom).
Navigationcreate_navbar_linkAdd a new link to a navigation menu.
Navigationupdate_navbar_linkUpdate an existing navigation menu link.
Navigationdelete_navbar_linkRemove a single link from a navigation menu.
Navigationreorder_navbar_linksReorder all links inside a menu in a single call.
Commercelist_offersList offers with optional filtering by status. Includes pricing summary and product count.
Commerceget_offerGet pricing breakdown, variants, linked products, and the offer’s checkout-page active_theme_id.
Commercecreate_offerCreate a draft offer. Supports free, one-time, subscription, and payment plan pricing.
Commerceupdate_offerUpdate an offer’s details, pricing, or publish state. Pass publish_at to publish or schedule; null to unpublish.
Commercelist_offer_purchasesList purchases with optional filtering by member, offer, or date range.
Commerceget_offer_purchaseGet pricing breakdown, billing status, member details, product access, and subscription info.
Productssearch_productsSearch products by title with optional filtering by product type and sellable status.
Productsget_productGet product type, description, linked offers, and the product’s consumption-side active_theme_id.
Contactssearch_contactsSearch and filter contacts by name/email plus tags and segments.
Contactsget_contactGet contact profile including tags, custom fields, purchases, product access, and admin notes.
Contactslist_tagsList contact tags with contact count per tag.
Contactscreate_tagCreate a new contact tag.
Contactstag_contactAdd a tag to a contact. Idempotent.
Contactsuntag_contactRemove a tag from a contact. Idempotent.
Contactslist_segmentsList dynamic contact segments (filter queries, not static lists).
Contactscreate_segmentCreate a saved segment with a title and filter map. Use to target broadcasts or search contacts.
Contactsupdate_segmentUpdate a segment’s title and/or filters. Filters are a full replacement when provided.
Themesget_theme_contentGet theme settings and section types for any themed page (site, course, landing page, offer, email, coaching).
Themesupdate_theme_contentUpdate theme settings on any themed page. Changes take effect immediately on published pages — no draft layer.
Downloadscreate_downloadCreate a draft digital download collection. Files and an offer are added in the admin UI.
Account userslist_account_usersList non-owner users on the account. Admins/owners only.
Account usersadd_account_userAdd a Support Specialist or Assistant. Admins/owners only.
Analyticsget_contacts_analyticsContacts analytics for a site over a date window.
Analyticsget_revenue_analyticsRevenue analytics for a site over a date window.
Analyticsget_revenue_by_offerRevenue broken down by offer — shows which products and offers are generating the most revenue.
Analyticsget_subscriptions_mrrMonthly recurring revenue for a site’s subscriptions.
Analyticsget_subscription_analyticsSubscription analytics for a site over a date window.

FAQ

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.

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 — and we are adding coverage to more features over time. 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” — 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.