Skip to main content

Overview

KaireonAI exposes 172 tools via the Model Context Protocol (MCP) — 162 primitive tools registered across src/mcp/tools/*.ts plus 10 composable Agent Playbooks registered from src/lib/mcp/playbooks/. Together they let AI agents in Claude Code, Cursor, VS Code Copilot, and other MCP-compatible IDEs fully manage your decisioning platform — including the V2 composable pipeline with 14 node types, 4 ranking algorithms, channel overrides, and sub-flow invocation. KaireonAI offers two MCP integrations:
  1. Documentation MCP — Lets any AI client search your KaireonAI docs for answers, powered by Mintlify.
  2. Platform MCP — Exposes 172 platform tools (162 primitives + 10 playbooks) so AI assistants can manage your KaireonAI instance directly.
Four tool categories:
  • CRUD Tools — Create, read, update, delete every entity (schemas, offers, decision flows, pipelines, etc.)
  • Decisioning Tools — Run recommendations, record outcomes, query traces
  • Intelligence Tools — Analyze performance, explain decisions, simulate changes, detect drift
  • Agent Playbooks — Higher-level composable workflows (playbook_*) that chain 5-10 primitive tools into a single named operation. See Agent Playbooks for the full list.
MCP is an open protocol that standardizes how AI applications connect to external data sources and tools. Any MCP-compatible client — Claude Code, Cursor, VS Code, ChatGPT, and others — can connect to these servers.

Documentation MCP (Mintlify)

Mintlify automatically generates an MCP server from your published documentation. When an AI client connects, it can search your docs directly instead of relying on generic web searches — meaning answers are always accurate and up to date. Your documentation MCP server is hosted at:
https://docs.kaireonai.com/mcp

Connecting to AI Clients

Run this command in your terminal:
claude mcp add --transport http kaireonai-docs https://docs.kaireonai.com/mcp
Once added, Claude Code can search KaireonAI docs when answering your questions.

Rate Limits

ScopeLimit
Per user (IP)5,000 requests/hour
Per documentation site1,000 requests/hour
The Documentation MCP is available on all Mintlify plans, including free. No additional setup is needed — Mintlify generates and hosts the server automatically when your docs are deployed.

Platform MCP Setup

Environment Variables

VariableDescription
KAIREON_API_URLBase URL of your KaireonAI instance (e.g. http://localhost:3000)
KAIREON_API_KEYAPI key for authentication
KAIREON_TENANT_IDTenant id (default default)
MCP_ALLOW_WRITESSet to true to allow write tools (POST/PUT/DELETE/PATCH) in production. In NODE_ENV=production the server is read-only by default; with the override unset, every write tool is rejected before the underlying API call is issued.

Quick Setup

claude mcp add kaireonai -- npm --prefix platform run mcp
Set environment variables in your Claude Code config or shell profile:
export KAIREON_API_URL=http://localhost:3000
export KAIREON_API_KEY=your-api-key

MCP Resources

The server also exposes one MCP resource:
ResourceURIDescription
platform-overviewkaireonai://overviewReturns counts of schemas, decision flows, and models

Tool Reference

All 162 primitive tools organized by category. The 10 playbook_* tools are documented separately at Agent Playbooks. Parameters marked with ? are optional.

Data — Read (5 tools)

ToolDescriptionParameters
listSchemasList all data schemas with field names and types
getSchemaFieldsGet a single schema with its fields by IDschemaId: string
listPipelinesList all data pipelines with names and statuses
listConnectorsList all data connectors with types and statuses
listTransformTypesReturn the list of 14 supported pipeline transform types

Data — Write (12 tools)

ToolDescriptionParameters
createSchemaCreate a new data schema (creates a real PostgreSQL table)name: string, displayName: string, entityType?: string, description?: string, schemaType?: "customer" | "collection" | "proposition", customPrimaryKey?: { name, dataType }, fields?: Array<{name, dataType, isPrimaryKey?, isNullable?, isUnique?, length?, precision?, scale?, defaultValue?, ordinal?, description?}> (use for composite PKs or initial multi-column schemas), linkedSchemaId?: string, autoEnrich?: boolean
deleteSchemaDelete a schema, its field metadata, and the backing ds_* table (irreversible)schemaId: string
addSchemaFieldAdd a new field (column) to a schema (runs ALTER TABLE). Duplicate names return 409 unless upsert: true is set.schemaId: string, name: string, dataType: string (varchar, text, integer, bigint, smallint, numeric, decimal, float, real, double, boolean, date, timestamp, timestamptz, json, uuid), isNullable?: boolean, isPrimaryKey?: boolean, isUnique?: boolean, isPredictor?: boolean, length?: number, precision?: number, scale?: number, defaultValue?: string, description?: string, displayName?: string, upsert?: boolean
updateSchemaFieldAlter an existing column — rename, change type/length/nullable/description. Runs ALTER TABLE. Cannot alter PK columns. Cast errors return 422.fieldId: string, newName?: string, dataType?: string, length?: number, precision?: number, scale?: number, isNullable?: boolean, displayName?: string, description?: string
removeSchemaFieldDrop a column from a schema (irreversible — data lost)fieldId: string
createConnectorCreate a data connector (18 types supported)name: string, type: string, description?: string, authMethod?: string, connectorConfig?: object (connection params), authConfig?: object (credentials, encrypted at rest)
updateConnectorUpdate a connector’s name, description, config, or credentials. Omit authConfig to preserve existing credentials; sending an empty object overwrites them.connectorId: string, name?: string, description?: string, connectorConfig?: object, authMethod?: string, authConfig?: object, status?: string
deleteConnectorDelete a connector (irreversible; pipelines referencing it will fail)connectorId: string
createPipelineCreate a data pipeline with connector and target schema (legacy metadata-only)name: string, connectorId: string, schemaId: string, description?: string
createFlowPipelineCreate an IR-native pipeline with full Pipeline IR document (auto-injects irVersion: "1.0")name: string, connectorId: string, schemaId: string, ir: object, description?: string
updateFlowPipelineSave a new IR version against an existing pipeline (validated server-side via parsePipelineIR)pipelineId: string, ir: object, comment?: string

Data — Utility (1 tool)

ToolDescriptionParameters
testConnectorTest connectivity for an existing data connector. Returns {success, message, warning, latencyMs} — note warning is transient and not persisted to lastError.connectorId: string

Studio — Read (8 tools)

ToolDescriptionParameters
listDecisionFlowsList all decision flows with names, statuses, and scoring methods
listOffersList all offers with names, statuses, and categories
listChannelsList all delivery channels with types and modes
listContactPoliciesList all contact policies (frequency caps, cooldowns, etc.)
listTreatmentsList all treatments (creatives — content variants tied to offers and channels). Closes BUG-MCP-STUDIO-018.
listGuardrailsList all guardrail rules (business-constraint filters that block/warn on candidates). Closes BUG-MCP-STUDIO-019.
listTriggersList all event-driven trigger rules. Closes BUG-MCP-STUDIO-020.
listOutcomeTypesList all outcome types (impression / response classifications — e.g. clicked, purchased, dismissed). Closes BUG-MCP-STUDIO-021.

Studio — Write

ToolDescriptionParameters
createOfferCreate a new offer/action (rich field surface — matches the /api/v1/offers POST body)name: string, categoryId?: string, subCategoryId?: string, category?: string, group?: string, productType?: string, priority?: number, businessValue?: number, margin?: number, revenueValue?: number, description?: string, shortDesc?: string, eligibility?: object, budget?: object ({ maxSpend, costPerAction, maxImpressions }), schedule?: object ({ startDate, endDate, daysOfWeek, timeWindows }), tags?: string[], metadata?: object, status?: string
createDecisionFlowCreate a new decision flowkey: string, name: string, description?: string, status?: string
createChannelCreate a delivery channelname: string, channelType?: string (email, sms, push, in_app, web, api), deliveryMode?: string (api, file, manual, integration), couplingMode?: string (partial, atomic), providerConfig?: object, description?: string, status?: string
deleteChannelSoft-delete a channel by IDchannelId: string
createTreatmentCreate a creative content variant for an offer on a channel. Closes BUG-MCP-STUDIO-022 — rich surface: placementId, personalization, constraints, abTestVariant, weight, metrics.name: string, offerId: string, channelId: string, placementId?: string, templateType?: string, content?: object, personalization?: array, constraints?: object, abTestVariant?: string, weight?: number, metrics?: object, status?: string
createCategoryCreate an offer category (top-level offer grouping)name: string, description?: string, icon?: string, color?: string, status?: string, ordinal?: number, customFields?: array
updateCategoryUpdate an offer category (name, description, icon, color, status, ordinal, customFields)categoryId: string, name?: string, description?: string, icon?: string, color?: string, status?: string, ordinal?: number, customFields?: array
deleteCategorySoft-delete a category (sub-categories cascade, offers unlinked)categoryId: string
createSubCategoryCreate a sub-category under a parent categorycategoryId: string, name: string, description?: string, icon?: string, status?: string, ordinal?: number, customFields?: array
updateSubCategoryUpdate an existing sub-category (name, description, icon, status, ordinal, customFields)subCategoryId: string, name?: string, description?: string, icon?: string, status?: string, ordinal?: number, customFields?: array
deleteSubCategorySoft-delete a sub-category (offers in it are unlinked)subCategoryId: string
createGuardrailCreate a guardrail rule to enforce business constraints. Closes BUG-MCP-STUDIO-025 — expressionAst (the actual filter expression) is now exposable; previously it was hard-coded to {} so every MCP-created guardrail was a no-op.key: string, name: string, description?: string, severity?: string (hard, soft), expressionAst?: object, status?: string
createContactPolicyCreate a contact policy (frequency cap, cooldown, etc.)name: string, ruleType: string, description?: string, scope?: string, config?: object, priority?: number
createTriggerCreate an event-driven trigger rule. Closes BUG-MCP-STUDIO-027 — condition and actionConfig are now exposable; previously hard-coded to {} so triggers had no filter and no action payload.name: string, eventType: string, actionType: string, condition?: object ({ all?: rules[], any?: rules[] }), actionConfig?: object, description?: string, priority?: number, cooldownMs?: number
createOutcomeTypeCreate an outcome type for tracking responses. Closes BUG-MCP-STUDIO-029 — ordinal and status are now exposable.key: string, name: string, classification?: string, category?: string, description?: string, ordinal?: number, status?: string
createQualificationRuleCreate a real qualification rule (was preview-only — Closes BUG-MCP-STUDIO-036). Posts to /api/v1/qualification-rules with the discriminated union for ruleType.name: string, ruleType: string (segment_required | attribute_condition | propensity_threshold | recency_check | metric_condition), config: object (shape depends on ruleType), description?: string, scope?: string, scopeId?: string, scopes?: array, stage?: string (eligibility default), priority?: number, status?: string
draftQualificationRuleDraft a qualification rule from natural-language (returns preview only — was previously the createQualificationRule tool). Pair with createQualificationRule to actually save.description: string, scope: string, scopeId?: string

Studio — Draft Rules (1 tool)

ToolDescriptionParameters
createContactPolicyRuleDraft a contact policy rule from natural-language (returns preview)description: string

Studio — Mutations (16 tools)

Update/delete tools accept the entity’s UUID or name as identifier — the API’s resolveEntityId helper resolves either. For entities that also carry a key field (decisionFlow, guardrail, outcomeType), the key works too.
ToolDescriptionParameters
updateOfferUpdate an existing offer (action) by ID or name. Full update surface — pass budget/schedule as JSON blobs, not the legacy dailyBudget/schedulingStart/schedulingEnd (those were silently dropped before — fixed in BUG-MCP-STUDIO-010).offer: string, plus any of: name, categoryId, subCategoryId, category, group, productType, priority, businessValue, margin, revenueValue, description, shortDesc, eligibility, budget, schedule, tags, metadata, status
updateDecisionFlowUpdate an existing decision flow by key or UUID. Closes BUG-MCP-STUDIO-037 — previously sent body.key but /api/v1/decision-flows PUT requires body.id (UUID), so every update returned 400 "id is required" even with a valid key. Now resolves key→id client-side. Full surface.flowKey: string, plus any of: name, description, status, autoAssembly, isProtected, couplingOverride, rankingProfileId, skipContactPolicy, draftConfig
updateChannelUpdate an existing channel by ID or name (BUG-MCP-STUDIO-011 — Channel has no key, the old channelKey lookup always 404’d)channel: string, plus any of: name, channelType, deliveryMode, impressionMode, couplingMode, providerConfig, fileConfig, description, status
updateContactPolicyUpdate an existing contact policy by ID or name (BUG-MCP-STUDIO-012)policy: string, plus any of: name, priority, status, ruleType, scope, config
updateQualificationRuleUpdate an existing qualification rule by ID or name (BUG-MCP-STUDIO-013)rule: string, plus any of: name, status, scope, conditions
updateTreatmentUpdate an existing treatment (creative) by ID or name. Closes BUG-MCP-STUDIO-023.treatment: string, plus any of: name, offerId, channelId, placementId, templateType, content, personalization, constraints, abTestVariant, weight, metrics, status
updateGuardrailUpdate an existing guardrail rule by key. Closes BUG-MCP-STUDIO-026.key: string, plus any of: name, description, severity, expressionAst, status
updateTriggerUpdate an existing trigger rule by ID or name (resolved by the trigger route’s resolvePathId). Closes BUG-MCP-STUDIO-028. Also note: BUG-MCP-STUDIO-032 — the platform middleware previously bypassed all of /api/v1/triggers/, dropping admin role-injection for the CRUD route; that bypass is now narrowed to only the webhook endpoints.trigger: string, plus any of: name, description, eventType, actionType, condition, actionConfig, priority, cooldownMs, status
updateOutcomeTypeUpdate an existing outcome type by ID. Closes BUG-MCP-STUDIO-030.outcomeTypeId: string, plus any of: key, name, description, classification, category, ordinal, status
deleteOfferSoft-delete an offer by ID or name (BUG-MCP-STUDIO-014 — dedicated delete; the old generic deleteEntity(offer, key) did key-lookup against keyless Offer)offer: string
deleteContactPolicySoft-delete a contact policy by ID or name (BUG-MCP-STUDIO-015)policy: string
deleteQualificationRuleSoft-delete a qualification rule by ID or name (BUG-MCP-STUDIO-016)rule: string
deleteTreatmentSoft-delete a treatment (creative) by ID or name. Closes BUG-MCP-STUDIO-024 — deleteEntity didn’t cover creatives.treatment: string
deleteOutcomeTypeSoft-delete an outcome type by ID (system outcome types are protected at the API). Closes BUG-MCP-STUDIO-031.outcomeTypeId: string
deleteEntityDelete an entity by type and identifier (BUG-MCP-STUDIO-017 — now passes identifier straight to the API for UUID/key/name resolution; previously did broken key-lookup on keyless models). Supports: offer, decisionFlow, channel, contactPolicy, qualificationRule, experiment, guardrail, trigger.entityType: string, entityKey: string (UUID or name; key for keyed entities)
publishDecisionFlowPublish a decision flow for production decisioning. Closes BUG-MCP-STUDIO-038 — same key vs id mismatch as updateDecisionFlow. Now resolves key→id client-side and accepts optional publish notes.flowKey: string, notes?: string

Qualification Rules — Read (1 tool)

ToolDescriptionParameters
listQualificationRulesList all qualification rules with conditions and assigned offers

Algorithm — Read (3 tools)

ToolDescriptionParameters
listModelsList all algorithm models with types and statuses
listExperimentsList all A/B experiments with statuses and traffic splits
listModelTypesList the 9 supported algorithm-model types (scorecard, bayesian, logistic_regression, gradient_boosted, thompson_bandit, epsilon_greedy, neural_cf, online_learner, external_endpoint) with descriptions. Closes BUG-MCP-ALGO-001.

Algorithm — Write (6 tools)

ToolDescriptionParameters
createModelCreate a new algorithm model (any of 9 modelTypes). Closes BUG-MCP-ALGO-002 — no createModel tool existed; the entire model surface was unreachable from MCP.key: string, name: string, modelType: string, description?: string, status?: string, config?: object, targetField?: string, targetSchemaKey?: string, predictors?: array, learningConfig?: object, autoLearn?: boolean, learnMode?: string (none/incremental/scheduled/both), learnSchedule?: string
deleteModelSoft-delete a model by ID. Closes BUG-MCP-ALGO-003.modelId: string
trainModelTrigger training for an algorithm modelmodelId: string
createExperimentCreate a new A/B experiment. Closes BUG-MCP-ALGO-005 — surface expanded from 5 → 11 fields (trafficSplit, autoPromote, promoteThreshold, promoteAfterDays, holdoutPercent, challengers).key: string, name: string, championModelId?: string, trafficSplit?: object ({ championPct: N }), challengers?: array ([{modelId, trafficPct}]), autoPromote?: boolean, promoteThreshold?: number, promoteAfterDays?: number, holdoutPercent?: number, description?: string, status?: string
updateExperimentUpdate an existing experiment by ID or name. Closes BUG-MCP-ALGO-006.experimentId: string, plus any of: name, description, status, championModelId, trafficSplit, challengers, autoPromote, promoteThreshold, promoteAfterDays, holdoutPercent, results
deleteExperimentDelete an experiment by ID or name. Closes BUG-MCP-ALGO-007.experimentId: string

Model Management (6 tools)

ToolDescriptionParameters
getModelDetailsGet full details of a model including predictors, config, and metricsmodelId: string
addPredictorAdd a predictor property to a modelmodelId: string, field: string, schemaKey: string
removePredictorRemove a predictor property from a model by field namemodelId: string, field: string
updateModelConfigNarrow legacy wrapper — only targetField/targetSchemaKey. Prefer updateModel for the full surface.modelId: string, targetField?: string, targetSchemaKey?: string
updateModelUpdate an algorithm model — full 16-field surface (name, description, status, config, predictors, learningConfig, autoLearn, learnMode, learnSchedule, outcomeWeights, interactionFeatures, evolutionConfig, metrics, modelState, targetField, targetSchemaKey). Accepts UUID or name via resolvePathId. Closes BUG-MCP-ALGO-004.modelId: string, plus any of the 16 fields above
getExperimentResultsGet computed experiment results: uplift, p-value, sample sizes, per-variant rates. Closes BUG-MCP-ALGO-008.experimentId: string

Ranking Profiles (4 tools — entirely new)

Multi-objective scoring strategies — weighted blends over revenue, margin, propensity, engagement, diversity, recency that the ranking engine uses to compute composite PRIE scores.
ToolDescriptionParameters
listRankingProfilesList all ranking profiles. Closes BUG-MCP-ALGO-011…014 — these were entirely missing from MCP before.
createRankingProfileCreate a new ranking profile (weights map).name: string, key?: string (auto-generated from name if omitted), description?: string, weights?: object ({ revenue: 0.4, propensity: 0.3, … })
updateRankingProfileUpdate a ranking profile by UUID or name.profile: string, name?: string, description?: string, weights?: object
deleteRankingProfileSoft-delete a ranking profile by UUID or name.profile: string

Behavioral Metrics — Read (2 tools)

ToolDescriptionParameters
listBehavioralMetricsList all behavioral metric definitions
previewMetricValuesPreview top 20 computed values for a metricmetricId: string, customerId?: string

Behavioral Metrics — Write (5 tools)

ToolDescriptionParameters
createBehavioralMetricCreate a behavioral metric definitionname: string, aggregateFunction: string (count, sum, avg, min, max, ratio), sourceField: string, windowDays?: number, groupByDimensions?: string[], filterConditions?: object, computeMode?: string, description?: string
updateBehavioralMetricUpdate an existing metric by ID. Closes BUG-MCP-ALGO-009.metricId: string, plus any of: name, description, aggregateFunction, sourceField, windowDays, groupByDimensions, filterConditions, sqlFilter, computeMode, status
deleteBehavioralMetricHard-delete a behavioral metric by ID. Closes BUG-MCP-ALGO-010.metricId: string
computeMetricNowTrigger immediate batch computation for a metricmetricId: string
createMetricRuleCreate a contact policy or qualification rule using a metrictype: string (contactPolicy or qualification), name: string, metricId: string, operator: string (gt, gte, lt, lte, eq), threshold: number, dimensionMapping?: object, scope?: string, scopeEntityId?: string

Dashboard & Reporting (2 tools)

ToolDescriptionParameters
queryMetricQuery an aggregated metric (e.g. conversion_rate, decision_count)metric: string, period?: string (1d, 7d, 30d, 90d)
listAlertsList active alerts and anomalies

Decisioning (2 tools)

ToolDescriptionParameters
recommendRun the decision engine for a customer (core NBA API)customerId: string, channel?: string, limit?: number, decisionFlowKey?: string, attributes?: object
recordOutcomeRecord a customer response/outcome for attribution and feedbackcustomerId: string, offerId: string, creativeId: string, outcome: string, channelId?: string, conversionValue?: number, metadata?: object

Decision Traces (2 tools)

ToolDescriptionParameters
listDecisionTracesList recent decision traces (forensic audit trail)customerId?: string, offerId?: string, decisionFlowId?: string, limit?: number
getDecisionTraceGet full details of a single decision tracerecommendationId: string

Customer Data (2 tools)

ToolDescriptionParameters
queryCustomerDataQuery customer data from a schema table with filtersschemaId: string, filters?: object, limit?: number, offset?: number
getCustomerProfileGet a customer’s 360 profile across all schemascustomerId: string

Journeys (5 tools)

ToolDescriptionParameters
listJourneysList all customer journeys with names and statuses
getJourneyGet a journey by ID with full configurationjourneyId: string
createJourneyCreate a new customer journey. Closes BUG-MCP-STUDIO-033 — phantom triggerType/status removed (not in API schema); real fields definition, entryCondition, maxDurationDays added.name: string, description?: string, definition?: object ({ nodes, edges }), entryCondition?: object, maxDurationDays?: number (1-365, default 30)
updateJourneyUpdate an existing journey by ID or name. Closes BUG-MCP-STUDIO-034.journey: string, plus any of: name, description, status, definition, entryCondition, maxDurationDays
deleteJourneyDelete a journey by ID or name. Closes BUG-MCP-STUDIO-035.journey: string

Interactions & History (1 tool)

ToolDescriptionParameters
listInteractionsList interaction history with filterscustomerId?: string, offerId?: string, channel?: string, since?: string (ISO date), limit?: number

Segments (5 tools)

ToolDescriptionParameters
listSegmentsList all customer segments with member counts
getSegmentMembersGet members of a specific segmentsegmentId: string, limit?: number, offset?: number
createSegmentCreate a customer segment (base schema + joins + filters). Closes BUG-MCP-DATA-101.name: string, baseSchemaId: string, description?: string, status?: string, entityType?: string, joins?: array, filters?: array
updateSegmentUpdate an existing segment’s joins or filters by ID or name (name/description are intentionally immutable post-create). Closes BUG-MCP-DATA-102.segment: string, joins?: array, filters?: array
deleteSegmentSoft-delete a segment by ID or name. Closes BUG-MCP-DATA-103.segment: string

Approval Workflow (3 tools)

ToolDescriptionParameters
listApprovalRequestsList approval requests (optionally filter by status)status?: string (pending, approved, rejected)
approveRequestApprove a pending approval requestrequestId: string, comment?: string
rejectRequestReject a pending approval requestrequestId: string, reason: string

Tenant Settings (2 tools)

ToolDescriptionParameters
getTenantSettingsGet current tenant settings and feature toggles
updateTenantSettingsUpdate tenant settings (feature toggles, trace config, etc.)settings: object

Pipeline Runs (2 tools)

ToolDescriptionParameters
triggerPipelineRunTrigger an execution run for a pipelinepipelineId: string
getPipelineRunStatusGet the status of a specific pipeline runpipelineId: string, runId: string

Audit Logs (1 tool)

ToolDescriptionParameters
listAuditLogsList audit log entries with filtersaction?: string, entityType?: string, userId?: string, since?: string (ISO 8601), limit?: number

Docs Search (1 tool)

ToolDescriptionParameters
searchDocsSearch KaireonAI platform documentationquery: string

AI Content Generation (2 tools)

ToolDescriptionParameters
generateCreativeCopyAI-generate marketing copy for an offerofferName: string, channelType: string, tone?: string, maxLength?: number
generateSubjectLinesAI-generate email subject line variants for A/B testingofferName: string, count?: number

CMS Content Management (7 tools)

ToolDescriptionParameters
listContentItemsList content items with optional filtersstatus?: string, channelType?: string, isTemplate?: boolean, sourceType?: string
getContentItemGet a content item by ID with version historyid: string
createContentItemCreate a new content item (starts as draft)name: string, channelType: string, content?: object, isTemplate?: boolean
updateContentItemUpdate a content item’s fieldsid: string, name?: string, content?: object, blocks?: array, personalization?: array
publishContentItemPublish a content item (must be in approved status)id: string
generateContentVariantsAI-generate content variants for A/B testingofferName: string, channelType: string, variantCount?: number, tone?: string
listContentSourcesList connected external CMS sources

CMS Sync (1 tool)

ToolDescriptionParameters
syncContentSourceTrigger a manual sync from an external CMS sourceid: string

Intelligence & Analytics (12 tools)

These tools provide deep analysis, simulation, and explainability for your decisioning platform.
ToolDescriptionParameters
explainDecisionExplain why a customer received (or didn’t receive) an offer. Shows the full funnel: inventory, qualification, contact policy, scoring, ranking.customerId: string, offerId?: string, decisionFlowKey?: string
traceCustomerJourneyTrace a customer’s activity timeline: interactions, journey enrollments, experiment assignmentscustomerId: string, limit?: number
compareOfferEligibilityCompare 2-5 offers side-by-side for a customer: qualification pass/fail, policy blocks, scorescustomerId: string, offerIds: string[] (2-5 items)
listCustomerSuppressionsList all active contact policy suppressions for a customercustomerId: string
analyzeQualificationFunnelAnalyze the decision funnel to find where candidates are filtered outdecisionFlowKey?: string
analyzeContactPolicySuppressionAnalyze suppression rates by rule type and channelchannel?: string, period?: string (day, week, month)
analyzePolicyConflictsDetect conflicts between offers, rules, policies, and experiments
analyzeOfferPerformanceAnalyze offer impressions, conversions, revenue, and trendsperiod?: string (day, week, month), limit?: number
simulateRuleChangeSimulate the impact of a qualification rule or policy changeruleId: string, proposedChange: object (field: string, oldValue: any, newValue: any)
simulateFrequencyCapChangeSimulate the impact of changing a frequency capchannel: string, currentCap: number, newCap: number, period: string (day, week, month)
analyzeModelHealthAnalyze ML model health: AUC, precision, recall, trends, data freshnessmodelId: string
runHealthCheckComprehensive tenant health check: models, policies, budgets, experiments
Every invocation of these tools updates the kaireon_ai_intelligence_calls_total Counter and kaireon_ai_intelligence_duration_seconds Histogram. See Metrics Reference for alert guidance.

Model Intelligence (3 tools)

ToolDescriptionParameters
explainModelScoringExplain how a model scores a customer: raw score, percentile, top contributing featuresmodelId: string, customerId: string
suggestModelImprovementsSuggest improvements: missing predictors, model type, training frequencymodelId: string
detectModelDriftDetect model drift: scoring distribution vs training metrics, calibration checkmodelId: string

V2 Pipeline (9 tools)

The V2 composable pipeline introduces a 3-phase, 13-node-type architecture for decision flows.
ToolDescriptionParameters
listV2NodeTypesList all 13 V2 node types organized by phase
listScoringMethodsList scoring methods: priority_weighted, propensity (ML), formula (weighted composite)
listRankMethodsList the 4 ranking methods: topN, diversity, round_robin, explore_exploit
listGroupAllocationStrategiesList placement allocation strategies: optimal (Hungarian), greedy
getDecisionFlowConfigGet the full V2 pipeline config for a decision flowflowKey: string
addV2PipelineNodeAdd a node to a V2 pipeline at the correct phase positionflowKey: string, nodeType: string (one of 13 types), nodeConfig: object
removeV2PipelineNodeRemove a node from a V2 pipeline by node IDflowKey: string, nodeId: string
updateV2PipelineNodeConfigUpdate configuration of a specific V2 pipeline nodeflowKey: string, nodeId: string, nodeConfig: object
createV2DecisionFlowCreate a new V2 decision flow with a default 4-node pipelinekey: string, name: string, description?: string, scoringMethod?: string, rankMethod?: string, maxCandidates?: number

V2 Decision-Flow Transforms (5 tools)

Transforms attach to an enrich or compute node inside a V2 decision flow and run per-candidate at decision time — orthogonal to the Pipeline IR transforms used by the Flow data plane. The 11 in-memory transform types listed below operate on the in-flight candidate record and feed into the next node’s input. The five MCP tools below cover listing, adding, removing, and inspecting these per-node transforms.
ToolRead/WriteDescriptionParameters
listFlowTransformTypesReadList all 11 in-memory transform types with their config schemas (orthogonal to Flow IR transforms).
addEnrichTransformWriteAppend a transform to the enrich node of a V2 decision flow. Runs after customer data is loaded from schema tables. Returns 4xx if the flow is not V2 or no enrich node exists.flowId: string, transform: { type, config }
addComputeTransformWriteAppend a transform to the compute node of a V2 decision flow. Runs after formula-based computed fields are evaluated.flowId: string, transform: { type, config }
removeNodeTransformWriteRemove a transform from an enrich or compute node by zero-based index.flowId: string, nodeType: enrich | compute, index: number
listNodeTransformsReadEnumerate all transforms configured on an enrich or compute node, with their indices.flowId: string, nodeType: enrich | compute
The 11 transform types (type field):
typeConfig
rename_field{ from, to }
cast_type{ field, targetType: number | string | boolean }
expression{ targetField, formula } — supports customer.*, attributes.*, arithmetic
map_values{ field, mapping, defaultValue? }
hash{ field, algorithm: sha256 | md5, targetField? }
mask_pii{ field, maskType: first_n | last_n | all, chars? }
split_field{ field, delimiter, targetFields }
merge_fields{ fields, delimiter, targetField }
drop_field{ field }
add_field{ field, type, defaultValue }
filter_condition{ formula } (boolean)
The three write tools (addEnrichTransform, addComputeTransform, removeNodeTransform) issue an HTTP PUT /api/v1/decision-flows to persist the change. In production they require MCP_ALLOW_WRITES=true; without the override the server rejects the call with MCP write operation blocked before any HTTP request leaves the process. The two read tools (listFlowTransformTypes, listNodeTransforms) execute in any mode.

V2 Pipeline Node Types

The V2 pipeline organizes nodes into three sequential phases:

Phase 1 — Narrow

Filter and enrich the candidate pool.
Node TypeDescription
inventoryLoad candidate offers (all, by category, or manual selection)
match_creativesMatch offers to creatives/placements
enrichLoad customer data from schema tables with caching
qualifyApply qualification rules with AND/OR logic trees
contact_policyApply contact policies (frequency caps, cooldowns)
filterCustom filter conditions (13 operators: eq, neq, gt, gte, lt, lte, in, not_in, contains, starts_with, regex, is_null, is_not_null)
call_flowSub-invoke another decision flow (max depth 2, circular reference guard)

Phase 2 — Score & Rank

Score candidates and select the best ones.
Node TypeDescription
scoreScore using priority_weighted, propensity (ML), or formula. Supports per-channel overrides and champion/challenger.
rankRank using topN, diversity, round_robin, or explore_exploit methods
groupAllocate candidates to named placements using optimal (Hungarian) or greedy strategy

Phase 3 — Output

Compute personalized values and format the response.
Node TypeDescription
computeEvaluate computed fields with formula overrides and extras
set_propertiesAttach key-value properties or formula-derived values to candidates
responseConfigure response format (standard or grouped) and debug trace toggle

Scoring Methods

MethodML RequiredDescription
priority_weightedNoScore based on offer priority (0-100)
propensityYesScore using an ML model’s propensity prediction
formulaNoWeighted composite (PRIE): propensityWeight * modelScore + relevanceWeight * (priority/100) + impactWeight * (creativeWeight/100) + emphasisWeight * fitMultiplier. Weights must sum to 1.0.
Channel overrides allow per-channel scoring configuration. Each override specifies a channelId and an alternative method/model/formula. Falls back to the default if no override matches. Champion/Challenger enables A/B testing of scoring models. The champion gets majority traffic; challengers get the rest based on weight split.

Ranking Methods

MethodDescriptionKey Config
topNSort by score descending, return top NmaxCandidates
diversityRound-robin by category with backfillmaxCandidates, maxPerCategory
round_robinStrict equal representation per categorymaxCandidates, maxPerCategory
explore_exploitEpsilon-greedy: exploit top scores, explore the restmaxCandidates, explorationRate (0.0-1.0)

Supported Connector Types

The createConnector tool supports the following connector types:
TypeAuth Methods
aws_s3iam_role, access_key
gcsservice_account_json
azure_blobconnection_string, access_key
sftpusername_password
kafkausername_password, none
snowflakeusername_password, oauth2
databricksaccess_key, oauth2
bigqueryservice_account_json
redshiftusername_password
postgresqlconnection_string, username_password
mysqlconnection_string, username_password
mongodbconnection_string
salesforceoauth2
hubspotapi_key, oauth2
segmentapi_key
brazeapi_key
rest_apiapi_key, oauth2, none
webhooknone, api_key

Contact Policy Rule Types

The createContactPolicy tool supports these rule types:
Rule TypeDescription
frequency_capLimit number of contacts per time period
cooldownEnforce minimum time between contacts
budget_exhaustedBlock when budget is depleted
outcome_basedRules triggered by customer outcomes
segment_exclusionExclude specific customer segments
time_windowRestrict to specific time windows
mutual_exclusionPrevent conflicting offers from being shown together
cross_channel_capCap across multiple channels
allow_overrideOverride other policies for priority offers

Example Workflows

Create an Offer and Get Recommendations

1. createSchema       → Create a "customers" schema
2. addSchemaField     → Add fields (name, segment, tenure)
3. createCategory     → Create "Retention" category
4. createOffer        → Create "Loyalty Upgrade" offer
5. createChannel      → Create "email" channel
6. createTreatment    → Create email creative for the offer
7. createV2DecisionFlow → Create a V2 pipeline
8. recommend          → Get recommendations for a customer
9. recordOutcome      → Record the customer's response

Analyze Decision Performance

1. analyzeOfferPerformance     → See top/bottom performing offers
2. analyzeQualificationFunnel  → Find where candidates are being filtered out
3. explainDecision             → Understand why a specific customer got specific offers
4. simulateRuleChange          → Test impact of loosening a qualification rule
5. runHealthCheck              → Full platform health assessment

Build a V2 Pipeline from Scratch

1. createV2DecisionFlow       → Start with default 4-node pipeline
2. addV2PipelineNode          → Add "enrich" node to load customer data
3. addV2PipelineNode          → Add "qualify" node with rules
4. addV2PipelineNode          → Add "contact_policy" node
5. updateV2PipelineNodeConfig → Configure scoring method
6. updateV2PipelineNodeConfig → Set rank method to "diversity"
7. publishDecisionFlow        → Make it live

Tool Count Summary

Counted per source area to match the live registration count exposed by the running MCP server:
Source areaCount
AI tools26
Algorithm tools26
Data tools24
Flow tools11
Operations tools8
Studio tools67
Primitive tools subtotal162
Agent Playbooks (playbook_*) — see Agent Playbooks10
Total172