Capability & Tools plane¶
Target
This page describes intended behaviour or structure. No implementation is claimed unless a section is explicitly marked Current implementation or Evidence.
Three concepts stay distinct. A skill is reusable expertise: instructions, workflow guidance, examples, references, scripts, templates, tool/model/knowledge requirements, compatibility metadata, tests and evaluations. A tool is an executable capability with identifier, version, schema, authorization requirements, secret dependencies, timeout, retry policy, rate limits, side-effect classification, audit requirements and health. A connector binds a tool category to an external system under a tenant-scoped connection.
Responsibilities¶
| Area | Target behaviour |
|---|---|
| Skill platform | Lifecycle create → develop → test → evaluate → package → sign → publish → deploy → monitor → update → deprecate; owners, versions, dependencies, compatibility, evaluation results, trust metadata; taxonomy (engineering, Azure, database, business, company standards); reusable across agents |
| Tool and MCP platform | Categories (repository, files, Git, shell, database, browser, HTTP, cloud, Azure DevOps, GitHub, observability, messaging, email, documents, enterprise systems); risk classes READ_ONLY, REVERSIBLE_WRITE, IRREVERSIBLE_WRITE, PRODUCTION, FINANCIAL, SECURITY_SENSITIVE; policy decides execute / confirm / approve / prohibit |
| Tool gateway (GW-05) | All MCP, in-process function, REST and queue tool paths converge on one governed executor: scope, policy decision, approval binding, idempotency key, side-effect receipt, reconciliation hooks; shell execution is a separate sandbox boundary (Execution plane) |
| Connections (BC-16) | Tenant-scoped connections, endpoint policy, credential references, grants and rotation metadata; secrets never in prompts, events or release manifests; secret broker issues short-lived scoped credentials |
| Connectors and webhooks (BC-17) | Connector capability descriptors, subscriptions, verified inbound delivery (GW-06: signature, replay protection, deduplication), delivery receipts; vendor API client libraries are adapters, not services |
| Untrusted content | Tool results and external content are untrusted; trust boundaries: system policy > agent instructions > skill instructions > user instructions > trusted enterprise knowledge > tool results > untrusted external content |
| Marketplace (later) | Agent, skill, MCP, tool, knowledge, workflow and model-profile packages with provenance, compatibility, licensing and revocation; only qualified releases are distributed |
Current implementation¶
- No Factory skill, tool registry or policy exists. AgentKit (84 skills, 100 agent definitions) and OpenClaw (48 skills) are earlier, non-Factory experiments (user decision D19, 2026-10-09); reference input only.
ConnectSoft.Extensions.ModelContextProtocol: MCP hosting, optional endpoint authorization, Microsoft.AgentGovernance integration (policy paths, fail-closed, sanitization, audit). In the agent host the MCP endpoint is unauthenticated by default and anonymous callers are governed underdid:mcp:server.ConnectSoft.AISkillsLibraryTemplate: typedAIFunctiontools and helpers; generation is simulated.- File-skill script runner in the agents framework throws
NotSupportedException. - Vendor client libraries exist (
ConnectSoft.Sms.*,ConnectSoft.*.ApiClientfor Bill, Braze, CallRail, ClickUp, Deputy, Meta, Google Analytics); none is a Factory connector. - Legacy
ConnectSoft.SemanticKernel.Plugins.ProductManagementruns Git and dotnet processes without a sandbox; it is a source of behaviour to re-home behind governed tools, not a path to keep.
Existing pages that belong to this plane¶
- Integration Platform and its context, service, API, event, worker, storage, workflow, security, observability and deployment pages
- Marketplace and its pages
- Skill registry concepts from skill registry (publication is Control; skill semantics live here)
- Archived MCP servers catalog (to be revived as the MCP page)
- Canonical: ConnectSoft.Documentation
agent-skills.md,model-context-protocol.md
New pages to be written: skills, tool registry, tool policies, MCP.
Later capabilities¶
Folded from the former Integration Platform and Marketplace extension roadmaps (no dates, no commitments). Principles retained: provider, not code (a vendor is registered, not hand-built); adapters over forks; events stay canonical; governed by default (credential custody, rate limiting, signature verification, audit are platform properties); asset-type as a plugin; autonomy-ready APIs.
| Candidate | Purpose | Owner today |
|---|---|---|
| Object-storage, data-warehouse, identity-provider (SCIM/SSO), messaging-channel (push, WhatsApp, chat), analytics and observability-vendor connectors | Broaden reach behind capability interfaces | BC-17 |
| Provider certification (conformance suite before a client is Active), rate-limit tuning from observed limits, webhook replay after vendor incidents, vendor cost attribution, secret-expiry forecasting | Connector operations | BC-17 / BC-16 |
| Integration packs (provider definition + versioned clients + capabilities + retry and rate-limit profiles + webhook schemes + configuration forms), seeded by the existing first-party clients (Deputy, Braze, Bill, Twilio, Israel019, ACS, GA Measurement Protocol, Meta Conversions, Azure DevOps, GitHub, OpenAI, Azure OpenAI, Ollama, MCP) | Turnkey vendors as marketplace assets | BC-27 with BC-17 |
| Any registered provider capability exposed automatically as a governed MCP tool; agent-drafted integration packs from OpenAPI/SDK specs for human review | Agent-operable integration | BC-08 / BC-17 |
| Asset recommendations, bundles and curated solutions, certification tiers, usage telemetry feeding ranking and deprecation, marketplace federation, publisher payouts, new commerce models, additional asset types, multi-region catalog | Marketplace growth | BC-27 / BC-28 (Q-14, Q-15) |
| Continuous vulnerability rescans of released packages, auto-proposed deprecation, license renewal, bundle resolution | Marketplace operations | BC-27 |
| Autonomous asset selection with compatibility checks, self-curating catalog, publisher copilots, compatibility autopilot, governance agents recommending trust-tier changes | Agents over the catalog | Software Factory pack with Trust & Operations |
Signed skill packages and capability-based agent discovery remain directions from the Oct-2026 target.
Open questions¶
Q-17 (which capabilities become packages). Q-07 was decided on 2026-10-09 (D21, approvals and tool policies). R-01 and R-02 were closed on 2026-10-09 (D19: the earlier repositories are not Factory assets).
Platform design pages (2026-10-09, design plan P5)¶
- Tools & MCP narrative: overview · workflows · UI surfaces · security · observability · deployment · later capabilities
- Service design pages: ToolExecutorHost (host) · ToolAdapterService · McpServerRegistryService
- Tool descriptors: tools catalog (22 seeded descriptors with side-effect classes)
- Integration narrative (design plan P6): overview · workflows · UI surfaces · security · observability · deployment · later capabilities
-
Integration service design pages: IntegrationHost (host) · IntegrationService · ConnectorRegistryService · WebhookGatewayService (GW-06)
-
Marketplace narrative (P14): overview · workflows · UI surfaces · security · observability · deployment · later capabilities
- Marketplace service design pages: MarketplaceHost (host) · MarketplaceCatalogService · LicenseService
Modernization (2026-10-09, design plan M1)¶
Horizon now to next, per the technology radar: MCP as the tool protocol with registered, authenticated servers (ADR-0022); computer-use and browser agents as sandboxed tools; microVM sandboxes with egress policy; agent marketplaces and A2A discovery (later). Exists in ConnectSoft today: MCP library and governance toolkit exist; no executor. Each platform page of this plane states its horizon in its overview and later-capabilities pages.
Platforms in this plane¶
| Platform | Bounded contexts | Services | Modelled | Pages |
|---|---|---|---|---|
| Tools & MCP Platform (PF-05) | BC-08 | 4 | 3 | overview · services · APIs · events |
| Integration Platform (PF-06) | BC-16, BC-17 | 15 | 4 | overview · services · APIs · events |
| Marketplace (PF-07) | BC-27, BC-28 | 12 | 3 | overview · services · APIs · events |
Bounded contexts¶
| Context | Platform | Authoritative state |
|---|---|---|
| BC-08 Tool Execution | Tools & MCP Platform | Tool descriptors, invocation requests, side-effect receipts, idempotency |
| BC-16 Connections | Integration Platform | Tenant-scoped connections, credential references, grants |
| BC-17 Connectors & Webhooks | Integration Platform | Connector descriptors, subscriptions, delivery receipts |
| BC-27 Marketplace Catalog & Distribution | Marketplace | Offerings, provenance, compatible releases |
| BC-28 Marketplace Acquisition & Licensing | Marketplace | Entitlements, acquisition, licensing records |
Services¶
| Service | Platform | Context | Granularity | Status | Page |
|---|---|---|---|---|---|
| McpConnectorService | Tools & MCP Platform | BC-08 | external / canonical | unmodelled | — |
| McpServerRegistryService | Tools & MCP Platform | BC-08 | module of host | target | design |
| ToolAdapterService | Tools & MCP Platform | BC-08 | module of host | target | design |
| ToolExecutorHost | Tools & MCP Platform | BC-08 | standalone host | target | design |
| AzureDevOpsIntegrationService | Integration Platform | BC-17 | module of host | unmodelled | — |
| CloudProviderAdapterService | Integration Platform | BC-17 | module of host | unmodelled | — |
| CrmIntegrationService | Integration Platform | BC-17 | external / canonical | unmodelled | — |
| EmailIntegrationService | Integration Platform | BC-17 | external / canonical | unmodelled | — |
| GitHubIntegrationService | Integration Platform | BC-17 | module of host | unmodelled | — |
| ConnectorRegistryService | Integration Platform | BC-17 | module of host | target | design |
| IntegrationHost | Integration Platform | BC-16 | standalone host | target | design |
| IntegrationService | Integration Platform | BC-16 | module of host | target | design |
| PaymentIntegrationService | Integration Platform | BC-17 | external / canonical | unmodelled | — |
| SecretBindingService | Integration Platform | BC-16 | module of host | unmodelled | — |
| SecretGovernanceService | Integration Platform | BC-16 | module of host | unmodelled | — |
| SmsIntegrationService | Integration Platform | BC-17 | external / canonical | unmodelled | — |
| SupportIntegrationService | Integration Platform | BC-17 | external / canonical | unmodelled | — |
| VendorApiClientRegistryService | Integration Platform | BC-17 | module of host | unmodelled | — |
| WebhookGatewayService | Integration Platform | BC-17 | standalone host | target | design |
| AssetCompatibilityService | Marketplace | BC-27 | module of host | unmodelled | — |
| AssetInstallationService | Marketplace | BC-27 | module of host | unmodelled | — |
| AssetPublishingService | Marketplace | BC-27 | module of host | unmodelled | — |
| AssetVersionService | Marketplace | BC-27 | module of host | unmodelled | — |
| DependencyResolutionService | Marketplace | BC-27 | module of host | unmodelled | — |
| LicenseService | Marketplace | BC-28 | module of host | target | design |
| MarketplaceCatalogService | Marketplace | BC-27 | module of host | target | design |
| MarketplaceHost | Marketplace | BC-27 | standalone host | target | design |
| MarketplaceSearchService | Marketplace | BC-27 | module of host | unmodelled | — |
| PricingService | Marketplace | BC-28 | module of host | unmodelled | — |
| PublisherPortalService | Marketplace | BC-28 | module of host | unmodelled | — |
| ReviewRatingService | Marketplace | BC-28 | module of host | unmodelled | — |
Events crossing the plane boundary¶
| Direction | Event | Producer | Consumer | Topic |
|---|---|---|---|---|
| out | McpServerRegistered | McpServerRegistryService | StudioBff | tool-execution.mcp-servers.v1.mcp-server-registered |
| out | McpServerRegistered | McpServerRegistryService | AuditService | tool-execution.mcp-servers.v1.mcp-server-registered |
| out | McpServerStateChanged | McpServerRegistryService | StudioBff | tool-execution.mcp-servers.v1.mcp-server-state-changed |
| out | McpServerStateChanged | McpServerRegistryService | DashboardService | tool-execution.mcp-servers.v1.mcp-server-state-changed |
| out | McpServerStateChanged | McpServerRegistryService | AuditService | tool-execution.mcp-servers.v1.mcp-server-state-changed |
| out | McpCapabilitiesDiscovered | McpServerRegistryService | StudioBff | tool-execution.mcp-servers.v1.mcp-capabilities-discovered |
| out | McpCapabilitiesDiscovered | McpServerRegistryService | DashboardService | tool-execution.mcp-servers.v1.mcp-capabilities-discovered |
| out | ToolDescriptorActivated | ToolAdapterService | StudioBff | tool-execution.descriptors.v1.tool-descriptor-activated |
| out | ToolDescriptorActivated | ToolAdapterService | DashboardService | tool-execution.descriptors.v1.tool-descriptor-activated |
| out | ToolDescriptorActivated | ToolAdapterService | AuditService | tool-execution.descriptors.v1.tool-descriptor-activated |
| out | ToolDescriptorRetired | ToolAdapterService | StudioBff | tool-execution.descriptors.v1.tool-descriptor-retired |
| out | ToolDescriptorRetired | ToolAdapterService | AuditService | tool-execution.descriptors.v1.tool-descriptor-retired |
| out | ToolInvoked | ToolAdapterService | CostUsageService | tool-execution.invocations.v1.tool-invoked |
| out | ToolInvoked | ToolAdapterService | AuditService | tool-execution.invocations.v1.tool-invoked |
| out | ToolInvoked | ToolAdapterService | DashboardService | tool-execution.invocations.v1.tool-invoked |
| out | ToolInvoked | ToolAdapterService | QualityScoreService | tool-execution.invocations.v1.tool-invoked |
| out | ToolInvoked | ToolAdapterService | AgentTelemetryService | tool-execution.invocations.v1.tool-invoked |
| out | ToolInvocationDenied | ToolAdapterService | AuditService | tool-execution.invocations.v1.tool-invocation-denied |
| out | ToolInvocationDenied | ToolAdapterService | DashboardService | tool-execution.invocations.v1.tool-invocation-denied |
| out | ToolInvocationDenied | ToolAdapterService | StudioBff | tool-execution.invocations.v1.tool-invocation-denied |
| out | ToolEffectUncertain | ToolAdapterService | AlertRuleService | tool-execution.invocations.v1.tool-effect-uncertain |
| out | ToolEffectUncertain | ToolAdapterService | AgentRuntimeService | tool-execution.invocations.v1.tool-effect-uncertain |
| out | ToolEffectUncertain | ToolAdapterService | StudioBff | tool-execution.invocations.v1.tool-effect-uncertain |
| out | ToolEffectUncertain | ToolAdapterService | StudioNotificationService | tool-execution.invocations.v1.tool-effect-uncertain |
| out | ToolEffectUncertain | ToolAdapterService | AuditService | tool-execution.invocations.v1.tool-effect-uncertain |
| out | ToolEffectUncertain | ToolAdapterService | DashboardService | tool-execution.invocations.v1.tool-effect-uncertain |
| out | SandboxLeased | ToolAdapterService | DashboardService | tool-execution.sandboxes.v1.sandbox-leased |
| out | SandboxReleased | ToolAdapterService | ExecutionCapacityService | tool-execution.sandboxes.v1.sandbox-released |
| out | SandboxReleased | ToolAdapterService | SecretBrokerService | tool-execution.sandboxes.v1.sandbox-released |
| out | SandboxReleased | ToolAdapterService | DashboardService | tool-execution.sandboxes.v1.sandbox-released |
| out | ConnectorActivated | ConnectorRegistryService | StudioBff | connectors.connectors.v1.connector-activated |
| out | ConnectorActivated | ConnectorRegistryService | AuditService | connectors.connectors.v1.connector-activated |
| out | ConnectorDeprecated | ConnectorRegistryService | StudioBff | connectors.connectors.v1.connector-deprecated |
| out | ConnectorSubscriptionChanged | ConnectorRegistryService | StudioBff | connectors.subscriptions.v1.connector-subscription-changed |
| out | ConnectorSubscriptionChanged | ConnectorRegistryService | AuditService | connectors.subscriptions.v1.connector-subscription-changed |
| out | DeliveryReceived | ConnectorRegistryService | PipelineExecutionService | connectors.deliveries.v1.delivery-received |
| out | DeliveryReceived | ConnectorRegistryService | WorkflowEngineService | connectors.deliveries.v1.delivery-received |
| out | DeliveryReceived | ConnectorRegistryService | KnowledgeIngestionService | connectors.deliveries.v1.delivery-received |
| out | DeliveryReceived | ConnectorRegistryService | DashboardService | connectors.deliveries.v1.delivery-received |
| out | DeliveryDispatched | ConnectorRegistryService | DashboardService | connectors.deliveries.v1.delivery-dispatched |
| out | DeliveryDispatched | ConnectorRegistryService | AuditService | connectors.deliveries.v1.delivery-dispatched |
| out | DeliveryFailed | ConnectorRegistryService | AlertRuleService | connectors.deliveries.v1.delivery-failed |
| out | DeliveryFailed | ConnectorRegistryService | StudioBff | connectors.deliveries.v1.delivery-failed |
| out | DeliveryFailed | ConnectorRegistryService | StudioNotificationService | connectors.deliveries.v1.delivery-failed |
| out | DeliveryFailed | ConnectorRegistryService | DashboardService | connectors.deliveries.v1.delivery-failed |
| out | DeliveryFailed | ConnectorRegistryService | AuditService | connectors.deliveries.v1.delivery-failed |
| out | DeliveryReplayed | ConnectorRegistryService | AuditService | connectors.deliveries.v1.delivery-replayed |
| out | ConnectionRegistered | IntegrationService | StudioBff | connections.connections.v1.connection-registered |
| out | ConnectionRegistered | IntegrationService | AuditService | connections.connections.v1.connection-registered |
| out | ConnectionStateChanged | IntegrationService | KnowledgeIngestionService | connections.connections.v1.connection-state-changed |
| out | ConnectionStateChanged | IntegrationService | StudioBff | connections.connections.v1.connection-state-changed |
| out | ConnectionStateChanged | IntegrationService | DashboardService | connections.connections.v1.connection-state-changed |
| out | ConnectionStateChanged | IntegrationService | AuditService | connections.connections.v1.connection-state-changed |
| out | ConnectionGrantChanged | IntegrationService | StudioBff | connections.grants.v1.connection-grant-changed |
| out | ConnectionGrantChanged | IntegrationService | AuditService | connections.grants.v1.connection-grant-changed |
| out | CredentialRotated | IntegrationService | AuditService | connections.connections.v1.credential-rotated |
| out | CredentialRotated | IntegrationService | DashboardService | connections.connections.v1.credential-rotated |
| out | InboundDeliveryVerified | WebhookGatewayService | DashboardService | connectors.ingress.v1.inbound-delivery-verified |
| out | InboundDeliveryRejected | WebhookGatewayService | AuditService | connectors.ingress.v1.inbound-delivery-rejected |
| out | InboundDeliveryRejected | WebhookGatewayService | DashboardService | connectors.ingress.v1.inbound-delivery-rejected |
| out | PricingPlanChanged | LicenseService | StudioBff | licensing.pricing.v1.pricing-plan-changed |
| out | PricingPlanChanged | LicenseService | AuditService | licensing.pricing.v1.pricing-plan-changed |
| out | EntitlementGranted | LicenseService | FactoryCommercialService | licensing.entitlements.v1.entitlement-granted |
| out | EntitlementGranted | LicenseService | StudioBff | licensing.entitlements.v1.entitlement-granted |
| out | EntitlementGranted | LicenseService | AuditService | licensing.entitlements.v1.entitlement-granted |
| out | EntitlementStateChanged | LicenseService | AgentRegistryService | licensing.entitlements.v1.entitlement-state-changed |
| out | EntitlementStateChanged | LicenseService | StudioBff | licensing.entitlements.v1.entitlement-state-changed |
| out | EntitlementStateChanged | LicenseService | AuditService | licensing.entitlements.v1.entitlement-state-changed |
| out | PublisherCertified | LicenseService | StudioBff | licensing.publishers.v1.publisher-certified |
| out | PublisherCertified | LicenseService | AuditService | licensing.publishers.v1.publisher-certified |
| out | ListingPublished | MarketplaceCatalogService | StudioBff | marketplace.listings.v1.listing-published |
| out | ListingPublished | MarketplaceCatalogService | AuditService | marketplace.listings.v1.listing-published |
| out | ListingPublished | MarketplaceCatalogService | AgentCardService | marketplace.listings.v1.listing-published |
| out | ListingStateChanged | MarketplaceCatalogService | StudioBff | marketplace.listings.v1.listing-state-changed |
| out | ListingStateChanged | MarketplaceCatalogService | AuditService | marketplace.listings.v1.listing-state-changed |
| out | ListingInstalled | MarketplaceCatalogService | AgentRegistryService | marketplace.installations.v1.listing-installed |
| out | ListingInstalled | MarketplaceCatalogService | StudioBff | marketplace.installations.v1.listing-installed |
| out | ListingInstalled | MarketplaceCatalogService | AuditService | marketplace.installations.v1.listing-installed |
| out | ListingRemoved | MarketplaceCatalogService | AgentRegistryService | marketplace.installations.v1.listing-removed |
| out | ListingRemoved | MarketplaceCatalogService | StudioBff | marketplace.installations.v1.listing-removed |
| out | ListingRemoved | MarketplaceCatalogService | AuditService | marketplace.installations.v1.listing-removed |
| in | AgentCardPublished | AgentCardService | MarketplaceCatalogService | asset-publication.agent-cards.v1.agent-card-published |
| in | AgentCardWithdrawn | AgentCardService | MarketplaceCatalogService | asset-publication.agent-cards.v1.agent-card-withdrawn |
| in | AssetReleasePublished | AgentRegistryService | McpServerRegistryService | asset-publication.releases.v1.asset-release-published |
| in | AssetReleasePublished | AgentRegistryService | ToolAdapterService | asset-publication.releases.v1.asset-release-published |
| in | AssetReleasePublished | AgentRegistryService | MarketplaceCatalogService | asset-publication.releases.v1.asset-release-published |
| in | AssetReleaseDeprecated | AgentRegistryService | MarketplaceCatalogService | asset-publication.releases.v1.asset-release-deprecated |
| in | AssetReleaseDeprecated | AgentRegistryService | ToolAdapterService | asset-publication.releases.v1.asset-release-deprecated |
| in | AssetReleaseRevoked | AgentRegistryService | MarketplaceCatalogService | asset-publication.releases.v1.asset-release-revoked |
| in | AssetReleaseRevoked | AgentRegistryService | McpServerRegistryService | asset-publication.releases.v1.asset-release-revoked |
| in | AssetReleaseRevoked | AgentRegistryService | ToolAdapterService | asset-publication.releases.v1.asset-release-revoked |
| in | EnvironmentStateChanged | EnvironmentService | ToolAdapterService | projects.environments.v1.environment-state-changed |
| in | SubscriptionChanged | FactoryCommercialService | LicenseService | factory-commercial.subscriptions.v1.subscription-changed |
| in | ProjectStateChanged | ProjectService | IntegrationService | projects.projects.v1.project-state-changed |
| in | ApprovalDecided | RunControlService | LicenseService | run-control.approvals.v1.approval-decided |
| in | ApprovalDecided | RunControlService | MarketplaceCatalogService | run-control.approvals.v1.approval-decided |
| in | DeletionOrderIssued | RetentionResidencyService | ToolExecutorHost | data-foundations.orders.v1.deletion-order-issued |
| in | DeletionOrderIssued | RetentionResidencyService | IntegrationHost | data-foundations.orders.v1.deletion-order-issued |
| in | SecretRotated | SecretBrokerService | IntegrationService | secret-broker.references.v1.secret-rotated |
| in | SecretReferenceRevoked | SecretBrokerService | IntegrationService | secret-broker.references.v1.secret-reference-revoked |
| in | SecretReferenceRevoked | SecretBrokerService | ToolAdapterService | secret-broker.references.v1.secret-reference-revoked |
Gateways¶
| Gateway | Role | Fronts |
|---|---|---|
| GW-05 Tool / MCP gateway | All tool paths converge on one governed executor; separate shell sandbox | ToolExecutorHost |
| GW-06 Integration / webhook ingress | Inbound webhooks with signature, replay and deduplication; conditional | IntegrationHost |
Model coverage¶
| Count | |
|---|---|
| Services in the registry | 31 |
| Modelled (YAML exists) | 10 |
| With a design page | 10 |
| Unmodelled | 21 |