This page documents how MCI models services, how manifests and tools are stored and used, and how configuration and secrets flow through the system.Documentation Index
Fetch the complete documentation index at: https://modelcontrolinterface.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
What is a Service
A service is a named, discoverable integration that exposes one or more tools. Each service has a manifest describing its metadata, tools, configuration schema, and secrets schema. Services are registered with MCI and staged for use by environment modules.Service Manifest
A service manifest describes the service and its available tools. The manifest structure used by the runtime is defined inapp/api/src/models/manifest.model.ts and validated by AdapterModule.parseServiceManifest.
Typical manifest fields include:
name: service namedescription: human-friendly descriptionenabled: whether the service is activeconfigSchema: JSON Schema that defines valid configuration for this servicesecretsSchema: JSON Schema that defines required secret structuremetadata: arbitrary metadata consumed by adapters (e.g., adapter URL)tools: an array of tool definitions (name,description,inputSchema,outputSchema,metadata,enabled)
OpenAPI-derived manifest) and returning a validated ServiceManifestDefinition to the system.
Tools
Tools are the callable operations provided by a service. Each tool has:name: the tool identifierdescription: what the tool doesinputSchema: JSON Schema for expected parametersoutputSchema: JSON Schema for returned valuemetadata: adapter-level data such as route names or request kinds
discoverTools, listTools, getTool).
Configuration and Secrets
Service configuration and secrets are stored separately:- Configurations follow the
configSchemadeclared in the manifest. Stored configuration values are validated and defaults are applied when loading the adapter snapshot. - Secrets are stored encrypted in the database. The system decrypts secrets when hydrating adapter snapshots. The
AdapterPoolServicecallsdecryptSecretswhen building snapshots.
AdapterModule.setServiceConfigs and AdapterModule.setServiceSecrets.
Hydration and Staging
Hydration is the process of loading manifest, configuration, and secrets into runtime modules.- The
ManifestServicecomposes staged manifests for all services and theEnvironmentPoolServiceusesgetAllStagedServiceManifeststo build environment bindings. - When manifests or configurations change, the system requests a restage: pools mark
pendingRestageand will stage a fresh module when current leases allow.
How Services are Used at Execution Time
- Environment modules expose generated bindings for each service/tool so process code can call
tools.discover,tools.get, ortools.invokedirectly. - When an environment invokes a tool, the environment uses the manifest-driven binding to call the MCI manager, which allocates an adapter and forwards the invocation to
AdapterModule.invoke. AdapterModule.invokeresolves adapter URLs and route names from tool and service metadata, sets request headers with configuration and secrets snapshots, and issues the remote request.
Generation of Manifests from Adapter Definitions
Adapters can register services by parsing a given definition content (for example an OpenAPI document) viaAdapterModule.register. The ManifestService uses this to validate and persist the canonical manifest for a service. When a new manifest is published, tooling updates the database and triggers staging/hydration.
Administrative Actions
- Install a service:
POST /services/installwithtypeandsource(source URL or definition reference). - Update service configuration:
PATCH /services/:serviceName/configuration - Update service secrets:
PATCH /services/:serviceName/secrets - Enable/disable services or individual tools via dedicated endpoints.
Discovery
The runtime exposes discovery endpoints for service and tool lookup. These are implemented by theManifestService and surfaced through discover controllers.
Notes and Best Practices
- Use manifests to declare input/output schemas and metadata for reliable adapter invocation.
- Keep secrets minimal and scope them per-service.
- When updating manifests, expect a restage to occur; pools attempt to minimize disruption by retiring modules only after leases expire.