Kula Intelligence MCP Server | Kula
First month 50% off.
Kula Intelligence · MCP

One endpoint. Your whole business.

Kula Intelligence is an MCP server. Point Claude, ChatGPT, Gemini or any MCP capable agent at it and you get the entire studio, members, bookings, payments, payroll, staff, classes and documents, as a single coherent queryable model. Not a dozen APIs stitched together in a prompt. One substrate, one contract, one connection.

MCP server · read only
tools/list
graph.member_context · graph.staff_context
events.stream · payments.reconcile
catalogue.semantics · graph.entity_edges
analytics.retention · analytics.utilisation
ClaudeChatGPTGeminiClaude CodeYour own agent

One connection. Every client sees the same governed model of your business, with the same audit trail underneath.

The problemThe substrateThe ontologyConnectConnectorsAlready runningGovernanceBuild on it
The problem

Every tool has an API. None of them compose.

A member in the booking system, a customer in the payments system and a contact in the marketing system are three records with three ID schemes and no shared meaning. Hand that to an AI agent and it burns its context window guessing at joins, and guessing wrong. And composition is only where it starts.

One answer, many round trips

Assembling what was actually asked often means chaining several calls, each returning a single record, repeated across the whole set. A question that should resolve in two seconds becomes a long sequence of requests before anything can be said at all.

Quotas are shared, and sized for scheduled work

Rate limits are set for jobs that run on a timetable with a known call count. Every integration on the account draws from the same allowance, so a question asked live can be throttled because something else ran first. Nothing has gone wrong. The budget was never meant for this.

Each system is authoritative about itself

Where two systems describe the same person there is no shared key and no agreed tie-break, because neither was built to be the other one’s source of truth. Somebody has to decide. Left alone, that somebody is the agent, mid-answer.

Metered for syncs, priced against exploration

Per-call pricing is sensible for a nightly job with a predictable call count. An agent following a thread does not have a predictable call count, so the same rate card behaves very differently once questions are asked live.

None of this is a fault in anyone’s API. They were built to serve an application, on a schedule, one system at a time, and they do that well. It is simply not the shape a live question needs. That is a large part of why we built a model rather than a folder of connectors: the joins, the tie-breaks and the call budget are resolved once, in the substrate, before anyone asks anything. Our ontology documents cover a number of these cases directly, so an agent inherits the decision instead of working it out mid-answer.

Kula Intelligence does the composition work once, canonically, so agents never have to.

The substrate

What sits behind the endpoint.

Four layers, all speaking the same identities, all reachable through the same endpoint. The graph and the event stream are live today. The document store and the CSV plane are next, and land behind the same contract.

The relationship graph

Members, staff and locations as typed nodes. Five edge types, with weights and decay. Who actually connects with whom, not just who transacted.

The event stream

Every action from every connected system, validated against one canonical envelope. A booking is a booking regardless of which platform it came from.

Coming

The document store

SOPs, plans and operating knowledge, normalised and retrievable into large context windows.

Coming

The CSV plane

Structured templates plus conversational ingest, so a system with no API, or no connector yet, can still reach the model.

The ontology

Every field means exactly one thing.

The endpoint ships a machine readable semantic catalogue. When an agent asks which members are at risk, it is not pattern matching column names. It is reasoning against defined semantics: what an active member is, what an at risk signal means, how attendance and payment state relate.

catalogue.semantics
member.state.active
  def   attended >= 1 in trailing 28d
        AND plan.status in (current, paused<14d)
  from  events.stream + payments.plan_status

member.signal.at_risk
  def   visit cadence down >= 40% vs personal baseline
        OR payment failure unresolved > 7d
  from  graph.member_context + payments

Definitions travel with the data, so two agents asking the same question get the same answer.

This is what working at AI speed actually requires. Agents do not struggle because models are weak. They struggle because business data has no agreed meaning. We fixed the meaning.

Connect

Bring your own AI. Wire it in minutes.

Kula Intelligence works with the AI plan you already have. Add it as a connector in Claude, ChatGPT or Gemini, or wire it into your own stack: Claude Code, custom MCP clients, internal tooling. Your model choice, your inference costs, our substrate.

Add Kula Intelligence as a custom connector in your Claude settings, paste the endpoint, and authorise with your token. It is then available in every chat and project.

claude · custom connector
Server URL   https://mcp.kula.digital/mcp
Auth         <your MCP token>
Transport    HTTP (streamable)
Access       read only

Create a token in the Kula console under Settings, Integrations, MCP Tokens, scoped to the role you want the agent to have. The console shows your region's exact endpoint. Treat the token like a database password.

Then ask real questions

Named list, ranked by how recently they came in, with the instructor each one trains with and what they were sold.

graph.member_context · events.stream

Every slot against the true median class size for that time, not the room capacity, so a 6am that realistically holds twelve is judged against twelve.

analytics.utilisation

Concentration by staff member, with the revenue exposed if that person left and who else those members already know.

graph.staff_context

Line by line match, with the unmatched both ways: payments with no sale, sales with no payment, and the total gap.

payments.reconcile

No ETL. No warehouse project. No dashboard backlog.

Connectors

Reads your systems directly.

Historical backfill on onboarding covers 18 to 24 months, so the model is useful immediately, not a year from now. Everything outside the live set is on the connector roadmap, and the CSV plane is coming to cover the rest: structured templates plus conversational ingest, so a studio on a system we have not connected yet does not have to wait for a bespoke build.

Live today
MindbodyBooking
WixBooking
GymMasterBooking
ClassPassBooking
StripePayments
On the connector roadmap
GlofoxHapanaMomenceABC FitnessTrainerizeXero
Already running

Frameworks in production right now.

The substrate is not theoretical. Two frameworks are live against real studio data, and both are examples of what anyone can build on the same endpoint.

In production

Teacher bonus model

Instructor compensation calculated on retention and capacity together, where capacity is measured against the true median class size for that time slot, not how many bodies fit in the room. A 6am slot that realistically holds twelve is judged against twelve, not against a room built for twenty five. Compensation stops punishing teachers for the timetable and starts rewarding the thing that actually matters, which is whether members come back.

In production

Yield analysis on fixed plans

Reads each new member’s first thirty days against their plan and surfaces the moments where the relationship needs a person, not a message. It runs independently of any outbound automation: the prompts go to the team to act on directly, rather than adding to the SMS and messaging sequence already running elsewhere. Automation handles the sequence. This handles the drift automation cannot see.

Open source · built with Claude Code

Instructor Bonus Builder

The teacher bonus model above, built as a real tool and released in the open. A deterministic engine splits a fixed pool on retention and capacity, ranked across the team and reconciled to the cent, and every allocation opens a Why panel that explains the number line by line. The AI explains the maths and pulls context. It never decides who gets paid what.

It reads live studio data through this endpoint, so it never touches GymMaster, Mindbody or Wix directly. Clone it, read how it queries the substrate, or lift the pattern for your own build.

instructor-bonus-builder · the engine
score = 0.60 × retention_rank
      + 0.40 × capacity_rank

pool  = min( max(raw, floor), cap )

bonus = pool × (score − median)
            ÷ Σ(score − median)

Deterministic, hand-checked and golden-mastered in the repo's test suite. Same inputs, same settings, same result, every run.

Governance

Reads through safe views. Never raw access.

Every query, human or agent, first party or yours, passes through the same five layer policy engine. Every call declares a purpose. Every query is immutably logged: caller, purpose, entities queried, fields returned.

There is no relaxed external mode. An agent gets exactly what its key’s org and role permit, nothing more. Access is read only today. Write paths ship behind the same policy engine, with intent capture and authorisation flows, not before.

01
Tenant isolation

Your org, and only your org. Derived from the token, never from a parameter the caller sets.

02
Role based scope

What the key’s role is allowed to see, applied before anything is read.

03
Relationship scope

Whose members, whose classes, whose locations this caller stands in relation to.

04
Consent scope

What the member has agreed to, honoured at query time rather than at export time.

05
Purpose limitation

Every call declares a purpose. Prohibited purposes are rejected regardless of scope.

Beyond the studio

The API problem isn’t a fitness problem.

Every industry has this shape. APIs were built for developers reading one system at a time, not for agents reasoning across all of them: paginated, rate limited, no shared identity, no agreed meaning. And even where an API is perfectly AI friendly, it still only hands back its own slice. Somebody still has to do the pulling together, and today that somebody is your agent, mid answer, with no idea it is guessing.

Kula Intelligence solves it for fitness and wellness by doing that composition once, in the substrate, where it can be governed and audited. The same substrate is built to take your business’s own sources and your own definitions: extend the semantic catalogue and what your business means by active, at risk or converted becomes what every agent reasons with. Extend it and you are not maintaining another integration. You are adding meaning to a model that already knows how to join.

The integration work happens once, or it happens in every prompt, forever.

Build on it

The interfaces are yours. The substrate is constant.

Anything that speaks MCP can build on Kula Intelligence, and what you build can ship inside Kula Fitness so the team just finds it there. Every interface runs on the same governed model, with the same audit trail underneath. If you build tools or run services for studios, this is the substrate you build on instead of the integration work you would otherwise repeat.

A conversational view of the business

The whole studio, answered in plain English inside Claude, ChatGPT or Gemini. No interface to build at all.

A custom dashboard in hours

The joins are already done, so the front end is the only work left. Stand one up in an afternoon, not a quarter.

An acquisition agent

Target prospects who look like the members who actually stayed, using the retention signal rather than the demographic guess.

Portfolio reporting across a franchise

Every site on the same canonical model, so a group number means the same thing in every location.

Ship it where the team already works

Embed it inside Kula Fitness.

Anything built on the endpoint can run as a product inside Kula Fitness, the app your team is already in every day. You do not stand up accounts, invite anyone, or manage who can see what. That part is already solved, so the only thing you build is the thing itself.

No second login to hand out

Staff open it inside the app they already use. Nothing to roll out, nothing to explain, nothing for anyone to lose.

No separate user list to keep in step

Access follows the roles you already maintain in Kula Fitness. Someone leaves, and their access to your tool leaves with them.

Same governance underneath

An embedded tool reads through the same policy engine and the same audit trail as everything else. Nothing gets a private door.

Read the docs ↗·Get an API key·
Get started

Which booking system do you run on?

Kula Intelligence reads it directly. Pick yours and we’ll take you to setup.

See for yourself

Point your agent at your own studio.

Pick your booking system and connect in minutes, or book a 20-minute call and we'll walk your own numbers with you, no pitch.