Skip to content

Capabilities

Fluent's capability system provides runtime discovery of what the server supports. The fluent_get_capabilities tool and the fluent://core/capabilities resource are the primary entry points.

Contract Version

The current contract version is:

2026-04-05.fluent-core-v1.31

Clients and packages declare the minimum contract version they support. Capability discovery is the source of truth for the active version.

Required Fields

Every fluent_get_capabilities response includes:

FieldPurpose
contractVersionThe active contract version string
backendModeRuntime mode (hosted, local, etc.)
availableDomainsDomains that can be enabled
enabledDomainsDomains currently enabled
readyDomainsDomains that are enabled and onboarded
onboarding.coreCore onboarding state
onboarding.domainsPer-domain onboarding state
profile.displayNameUser's display name
profile.timezoneUser's timezone

Additive Fields

FieldPurpose
deploymentTrackcloud or oss
storageBackendd1-r2, sqlite-fs, or postgres-s3
toolDiscoveryWorkflow-oriented tool groupings and starter hints

Domain Lifecycle

Each domain passes through these states:

available  -->  enabled  -->  ready
                  |
                  v
              disabled
  • available: The domain exists but has not been turned on
  • enabled: The domain is active but onboarding may not be complete
  • ready: The domain is enabled, onboarded, and fully usable
  • disabled: The domain was enabled but has been turned off

Use fluent_enable_domain to move from available to enabled. The assistant should not auto-enable a disabled domain.

Onboarding

Onboarding is separate from lifecycle state. A domain can be enabled but not yet ready if onboarding is incomplete.

The onboarding flow:

  1. fluent_enable_domain -- turn the domain on
  2. fluent_begin_domain_onboarding -- start the onboarding questionnaire
  3. Collect and save domain-specific preferences
  4. fluent_complete_domain_onboarding -- mark onboarding done

Once complete, the domain appears in readyDomains.

Tool Discovery

The toolDiscovery section in capabilities provides:

json
{
  "canonicalRegistry": "tools/list",
  "note": "Use toolDiscovery groups as workflow hints, but tools/list is authoritative",
  "groups": {
    "meals_planning": ["meals_generate_plan", "meals_accept_plan_candidate", ...],
    "meals_shopping": ["meals_generate_grocery_plan", "meals_prepare_order", ...],
    "health_fitness": ["health_get_context", "health_upsert_block", ...],
    "style": ["style_get_context", "style_analyze_purchase", ...]
  }
}

These groups are guidance only. The MCP tools/list endpoint remains the authoritative registry.

Optional Capabilities

Fluent tracks feature flags as optional capabilities. These indicate what the server supports beyond the base contract:

CapabilityDomainPurpose
structured_contentCoreStructured content support
grocery_intentsMealsGrocery intent tracking
domain_eventsCoreAudit event logging
profile_resourcesCoreProfile as MCP resource
meal_preferencesMealsDietary preferences
plan_historyMealsHistorical plan access
grocery_planMealsGrocery plan generation
plan_generationMealsAI plan generation
calendar_aware_planningMealsCalendar-integrated planning
grocery_plan_actionsMealsGrocery plan action state
inventory_batch_updatesMealsBulk inventory updates
inventory_hard_deleteMealsPermanent inventory item removal
grocery_order_preflightMealsOrder reconciliation
grocery_pantry_sufficiency_confirmationMealsPantry-first order confirmation
grocery_purchase_carry_forwardMealsDurable purchase coverage
confirmed_order_syncMealsRetailer order sync
tool_discovery_hintsCoreWorkflow tool groupings
tool_list_fallbackMealsEager fallback directory
ingredient_form_groupsMealsIngredient grouping
style_profileStyleStyle profile reads
style_contextStyleStyle context reads
style_purchase_analysisStylePurchase analysis
style_onboarding_summaryStyleOnboarding state
style_media_rolesStyleTyped media roles
style_media_deliveryStyleImage delivery
style_visual_bundleStyleVisual bundle retrieval
style_item_statusStyleItem lifecycle status
style_item_profile_writesStyleDescriptor writes
style_item_provenanceStyleProvenance reads
style_evidence_gapsStyleEvidence gap detection
style_descriptor_backlogStyleEnrichment queue
style_wardrobe_analysisStyleWardrobe gap analysis
style_descriptor_enrichmentStyleDescriptor enrichment
style_comparator_identityStyleComparator key model
style_comparator_coverageStyleCoverage-aware analysis
health_preferencesHealthTraining preferences
health_block_programmingHealthBlock-based programming
health_today_resolutionHealthToday's workout resolution
health_block_reviewsHealthWeekly block reviews
health_workout_loggingHealthWorkout logging
health_body_metricsHealthBody metric tracking

Version Policy

  • Changes after the freeze point must be additive only
  • Breaking changes require package updates before release
  • Clients must verify contractVersion against their minimum supported version
  • fluent_get_capabilities is always the first tool to call

Apache 2.0 Licensed (Self-Host) | Fluent Cloud coming soon