Skip to content

Software Requirements Specification (SRS) & Test Verification Catalog

Automated Verification Document: Generated via dotnet run --project scripts/CatalogGenerator Catalog Statistics: 181 Requirements Verified across 823 Test Proofs (152 Functional Capabilities, 29 Safety Guardrails).


1. System Taxonomy & Verification Summary

Category Domain Total Requirements Positive Features Guardrails / Fail-Closed Verification Proofs
AUTH Authentication, RBAC & Identity 41 39 2 209 proofs
CORE CORE 1 1 0 2 proofs
DB Multi-Database Persistence & Migrations 3 3 0 31 proofs
DOC DOC 4 4 0 4 proofs
GUARD Universal Safety & Fail-Closed Guardrails 16 0 16 134 proofs
MCP Model Context Protocol Engine & Tool Routing 49 49 0 156 proofs
SEC Secrets Providers & Encryption 38 30 8 127 proofs
TRANS Transports (SSE, HTTP, STDIO, Proxy) 3 3 0 28 proofs
UI Dashboard, Test Bench & Settings UI 26 23 3 132 proofs

2. Functional Requirements ("What the Application DOES")

[AUTH-001] Verify DatabaseUserSecretStore encrypts and decrypts secret correctly.

[AUTH-002] Verify UserCredentialsController returns configured server IDs.

[AUTH-02] AppKey scopes restrict access precisely across all MCP capabilities and backend targets

[AUTH-03] Auth middleware allows bypass routes and extracts SSO headers in a case-insensitive manner.

[AUTH-04] ActiveDirectoryIdentityProvider extracts Windows caller SIDs and security groups via IWindowsIdentityAccessor and augments with LDAP

[AUTH-05] McpServer supports AllowPassThroughAuth flag

[AUTH-06] Transports use passThroughToken when AllowPassThroughAuth is true

[AUTH-101] HTTP transport injects X-Forwarded-User header based on connected user identity.

[AUTH-110] CreateAppKey allows creating unlimited AppKeys when UserMaxKeys is set to 0.

[AUTH-118] FindDcrClientAsync resolves existing DCR client matching client name and type.

[AUTH-119] CleanupDcrClientsAsync prunes duplicate and expired dynamic client registrations across all database providers.

[AUTH-14] Tool execution catches 401 Unauthorized from downstream target servers and returns interactive auth remediation.

[AUTH-15] OpenIddict initializes ephemeral development signing certificates in Development environment.

[AUTH-35] Single-user homelab startup initializes SQLite, auto-generates Admin and Client AppKeys without PFX certificate requirements

[AUTH-36] Pre-configured MCG_CLIENT_APP_KEYS seeds functional individualized client keys with custom scopes

[AUTH-37] AppKeys with server and category scopes enforce precise tool execution boundaries

[AUTH-38] LAN CIDR network configuration allows standalone web dashboard access from local subnet

[AUTH-39] Zero-config startup defaults enterprise auth providers and secret providers to disabled

[AUTH-APPKEY-ADMIN-SCOPE-ALLOW] AppKeys with admin scope grant Administrator role and pass AdminPolicy.

[AUTH-APPKEY-ITEMS-SCOPE-ALLOW] SecurityValidationHelper recognizes admin scopes in HttpContext.Items.

[AUTH-APPKEY-WILDCARD-SCOPE-ALLOW] AppKeys with wildcard scope '*' grant Administrator role and pass AdminPolicy.

[AUTH-COMPACT-APPKEY-TAXONOMY] Generates compact ~32-character Base62 AppKeys with semantic prefixes.

[AUTH-CUSTOM-ADMIN-KEY-SEEDING] Seeds custom MCG_ADMIN_AUTH_KEY when provided in configuration.

[AUTH-PERSONAL-APPKEY-LIST] Non-admin users can view their personal App Keys

[AUTH-PERSONAL-APPKEY-QUOTA-OVERRIDE] Custom user quotas override default limit

[AUTH-PREFIX-EXTRACTION] ExtractKeyPrefix parses semantic prefixes, Base62 selectors, and legacy tokens accurately.

[AUTH-QUERY-TOKEN-EXTRACTION] Query string token middleware extracts access_token or token query parameter to Authorization header.

[AUTH-STANDALONE-ADMINPOLICY-LOOPBACK-ALLOW] AdminPolicy succeeds in standalone mode for unauthenticated loopback requests.

[AUTH-STANDALONE-CUSTOM-CIDR-ALLOW] Standalone mode grants admin access to client IPs matching Admin:StandaloneAllowedNetworks CIDR ranges.

[AUTH-STANDALONE-LOOPBACK-ALLOW] Standalone mode without external IDP grants admin access to loopback IP addresses.

[AUTH-SYSTEM-APPKEY-SEPARATION] System keys are distinct and require admin permissions

[UI-100] initializes with empty providers

[UI-101] should initialize with default values

[UI-114] renders nothing when isPolicyModalOpen is false

[UI-120] RBAC and SID mapping administration UI allows configuring role policies and SID associations

[UI-123] should open App Keys & Security view and display client setup controls

[UI-125] Admin role renders full administrative dashboard and server management controls

[UI-127] should navigate to settings permissions tab and open policy configuration modal

[UI-129] should create client application and generate AppKey with scope constraints

[CORE-101] Auto-added requirement tracking

[DB-01] SQLite auto-migration seamlessly upgrades legacy schema, encrypts plaintext secrets, and preserves data

[DB-02] MSSQL stored procedure scripts declare all required procedures and parameter contracts correctly

[DB-07] SQLite upgrade migration automatically provisions OAuthClients table on legacy database

[DOC-SETUP-SKILL-FRONTMATTER] mcg-setup skill frontmatter is valid YAML, specifies name, description starting with 'Use when...', and length is under 1024 characters

[DOC-SETUP-SKILL-MIRROR] The mcg-setup skill and templates are mirrored 1:1 in .agents/skills/mcg-setup/

[DOC-SETUP-SKILL-TEMPLATES] All scaffold templates exist, are non-empty, and contain required directives such as responseBufferLimit, MCG_MASTER_KEY, and ghcr.io/spelech/model-context-gateway

[DOC-SETUP-SKILL-WORKFLOW] mcg-setup skill contains all 6 required setup phases including environment probing, hosting platforms, env vs UI trade-offs, identity/network topology, artifact generation, and health/client configuration

[MCP-01] RewriteRequestJson accurately parses JSON batches, comments, and trailing commas using System.Text.Json JsonNode.

[MCP-02] All MCP protocol capabilities enforce caller role authorizations consistently

[MCP-05] ResourceRoutingManager returns all registered resources when search query is empty.

[MCP-06] prompts/list aggregates, namespaces, and routes prompts to target backends.

[MCP-08] completion/complete forwards prompt completions to backend when caller is authorized.

[MCP-10] DockerAutoDiscoveryService handles missing Docker socket gracefully without throwing unhandled exceptions.

[MCP-12] DynamicEmbeddingService retrieves and persists embedding provider configurations in Settings table.

[MCP-15] All JSON-RPC results return a resultType discriminator (complete or input_required) per MCP 2026-07-28 spec.

[MCP-21] Admin endpoint handles direct Streamable HTTP POST tools/list request returning JSON even with Accept text/event-stream header.

[MCP-ADMIN-ENDPOINT-CALL-TOOL] Admin endpoint /admin/message executes tools/call for manage_system diagnostics.

[MCP-ADMIN-ENDPOINT-HEAD-REQUEST] Admin endpoint /admin handles HEAD request returning text/event-stream headers.

[MCP-ADMIN-ENDPOINT-LIST-TOOLS] Admin endpoint /admin/message executes tools/list over active SSE session and returns 10 admin tools.

[MCP-ADMIN-ENDPOINT-ROUTER-ADMIN-TARGET] Target proxy endpoint /router-admin routes directly to the Admin MCP server.

[MCP-ADMIN-ENDPOINT-SSE-HANDSHAKE] Admin endpoint /admin/sse performs initialize handshake with 2026-07-28 protocol version.

[MCP-ADMIN-INITIALIZE-HANDSHAKE] AdminMcpServer initialize handles protocol negotiation for 2026-07-28 and 2024-11-05.

[MCP-ADMIN-PARITY-APPKEYS] manage_appkeys supports full parity for list, get_limits, create, and revoke actions.

[MCP-ADMIN-PARITY-CLIENTS] manage_clients supports full parity for register, list, and delete actions.

[MCP-ADMIN-PARITY-CUSTOM-FILES] manage_custom_files supports full parity for list, get, save, and delete prompt and resource files.

[MCP-ADMIN-PARITY-GROUP-MAPPINGS] manage_group_mappings supports full parity for list, save, and delete external-to-internal group mappings.

[MCP-ADMIN-PARITY-JSONRPC-DISPATCH] AdminMcpServer processes standard JSON-RPC 2.0 requests (tools/list, tools/call, ping).

[MCP-ADMIN-PARITY-POLICIES] manage_policies supports full parity for list, save, and delete access control policies.

[MCP-ADMIN-PARITY-PROVIDERS] manage_providers supports full parity for list, save_secret, test_vault, save_auth, and test_ldap actions.

[MCP-ADMIN-PARITY-SERVERS] Validates that the manage_servers tool provides comprehensive administrative capabilities including listing, retrieving, creating, updating, toggling, deleting, and reconnecting servers.

[MCP-ADMIN-PARITY-SETTINGS] manage_settings supports full parity for get and update global router configurations.

[MCP-ADMIN-PARITY-SYSTEM] manage_system supports full parity for diagnostics, get_logs, clear_logs, and query_audit actions.

[MCP-ADMIN-PARITY-TEST-TOOL-CALL] test_tool_call executes test bench backend tool calls and formats responses.

[MCP-ADMIN-PARITY-TOOLS-COVERAGE] Ensures every UI management workflow is backed by a verified, equivalent action within the consolidated Admin MCP tools.

[MCP-ADMIN-SKILL-E2E-PROVISIONING] Admin automation templates and JSON-RPC tool calls successfully provision a blank-slate gateway instance end-to-end via HTTP /admin/message.

[MCP-ADMIN-SKILL-FRONTMATTER] mcg-admin skill frontmatter is valid YAML, specifies name, description starting with 'Use when...', and length is under 1024 characters

[MCP-ADMIN-SKILL-MIRROR] mcg-admin skill files and templates are identically mirrored between skills/ and .agents/skills/ directories

[MCP-ADMIN-SKILL-TEMPLATES] All mcg-admin scaffold templates exist, are non-empty, and contain valid JSON or scripts for Authentik, Keycloak, Entra, ActiveDirectory, Cloudflare, Vault, Embeddings, Docker, and shell automation

[MCP-ADMIN-SKILL-WORKFLOW] mcg-admin skill contains all 7 administration phases including diagnostics, secrets, auth providers, RBAC/group mappings, settings/embeddings, servers/clients, and live tool verification

[MCP-ADMIN-TOOL-AUDIT-LOG] AdminMcpServer tool calls record audit log entries with caller and tool name.

[MCP-ADMIN-TOOL-MANAGE-APPKEYS] AdminMcpServer executes manage_appkeys create, list, limits, and revoke actions.

[MCP-ADMIN-TOOL-MANAGE-CLIENTS] AdminMcpServer executes manage_clients register, list, and delete actions.

[MCP-ADMIN-TOOL-MANAGE-CUSTOM-FILES] AdminMcpServer executes manage_custom_files save, get, list, and delete actions.

[MCP-ADMIN-TOOL-MANAGE-GROUP-MAPPINGS] AdminMcpServer executes manage_group_mappings save, list, and delete actions.

[MCP-ADMIN-TOOL-MANAGE-POLICIES] AdminMcpServer executes manage_policies save, list, and delete actions.

[MCP-ADMIN-TOOL-MANAGE-PROVIDERS] AdminMcpServer executes manage_providers list, save_secret, and save_auth actions.

[MCP-ADMIN-TOOL-MANAGE-SERVERS] AdminMcpServer executes manage_servers list, get, create, update, toggle, and delete actions.

[MCP-ADMIN-TOOL-MANAGE-SETTINGS] AdminMcpServer executes manage_settings get and update actions.

[MCP-ADMIN-TOOL-MANAGE-SYSTEM] AdminMcpServer executes manage_system diagnostics, get_logs, clear_logs, and query_audit actions.

[MCP-ADMIN-TOOLS-LIST-COUNT] AdminMcpServer tools/list returns all 10 consolidated tools with complete JSON schemas.

[UI-104] renders resource tester with servers and resources

[UI-106] renders connected server details with badges and triggers actions

[UI-107] renders prompt dropdown and filters by selected server

[UI-112] renders nothing when isAddEditOpen is false

[UI-121] should open Add Server modal and switch secret provider types

[UI-126] should open Server Inspect Modal if servers are present on dashboard

[AUTH-107] RegisterClient successfully handles DCR requests when open DCR is enabled.

[AUTH-109] RegisterClient uses IOAuthClientRepository when IOpenIddictApplicationManager is null.

[AUTH-113] RegisterClient supports public clients with PKCE (token_endpoint_auth_method: none) and omits client secret.

[AUTH-115] RegisterClient dynamically binds requested scopes to OpenIddict application descriptor permissions.

[SEC-01] SQLite database is encrypted at rest using SQLCipher with DB_ENCRYPTION_KEY.

[SEC-02] VaultSecretRetriever dynamically loads, applies, and reloads Vault configurations from database repository.

[SEC-03] EnvironmentSecretRetriever retrieves configured environment variable value.

[SEC-04] WindowsRegistrySecretRetriever handles non-Windows platforms gracefully and returns null.

[SEC-ADMIN-AUDIT-REDACTION] AdminMcpServer redacts sensitive secrets from argument payloads before recording audit logs.

[SEC-GATEWAY-ZERO-CONFIG-BOOT] Gateway boots from a blank slate with zero master key environment variables, auto-generates .master.key, and serves health and admin endpoints.

[SEC-KEY-PROVIDER-AUTOGEN] EncryptionKeyProvider delegates to DbKeyHelper to auto-generate master key when unconfigured.

[SEC-KEY-PROVIDER-CONFIG] EncryptionKeyProvider returns configured DB_ENCRYPTION_KEY or MCG_SECRET.

[SEC-KEY-PROVIDER-FALLBACK] EncryptionKeyProvider falls back to DB_ENCRYPTION_KEY when MCG_SECRET is unconfigured.

[SEC-KEY-PROVIDER-SECRET] EncryptionKeyProvider returns configured MCG_SECRET.

[SEC-KEYFILE-AUTOGEN] Blank-slate initialization auto-generates a 256-bit base64 master key and persists it to .master.key.

[SEC-KEYFILE-ENV-PRECEDENCE] Explicit environment variables MCG_MASTER_KEY or MCG_SECRET take precedence over keyfiles.

[SEC-KEYFILE-FILE-OVER-KEYFILE] Explicit file secrets take precedence over persistent .master.key files.

[SEC-KEYFILE-FILE-SECRET] File-based secrets configured via MCG_MASTER_KEY_FILE or standard Docker secrets paths are resolved.

[SEC-KEYFILE-HIERARCHY-PRECEDENCE] Explicit environment variables take precedence over file secrets and keyfiles.

[SEC-KEYFILE-RELOAD] Existing .master.key file is loaded across gateway restarts without key mutation.

[SEC-KEYSOURCE-DETECTION] Correctly identifies KeySource origin for environment, file, and auto-generated keys.

[SEC-KEYSOURCE-SETCACHEDKEY] SetCachedKey sets in-memory encryption key and updates ActiveKeySource.

[SEC-MASTERKEY-ATOMIC-REENCRYPTION] Atomically re-encrypts database credentials when setting a custom master key.

[SEC-MASTERKEY-CONFIGURED-STATUS-BADGE] Displays configured badge and rotate button when custom master key is configured.

[SEC-MASTERKEY-CUSTOM-MODAL-REENCRYPTION] Validates master key inputs (length, match) and triggers atomic re-encryption.

[SEC-MASTERKEY-EXTERNAL-LOCKED-BADGE] Displays locked badge when master key is externally managed via Vault or Environment.

[SEC-MASTERKEY-UI-STATUS-BANNER] Displays warning banner when keySource is AutoGenerated and opens custom master key modal.

[SEC-VAULT-BOOTSTRAPPING] Bootstraps master encryption key directly from HashiCorp Vault when VAULT_ADDR is configured.

[SEC-VAULT-CUSTOM-PATH] Bootstraps master key from Vault using custom mount path and secret key name.

[UI-105] renders system logs and handles level filter

[TRANS-01] SendRequestAsync times out cleanly and removes pending completion handlers without leaking memory.

[TRANS-02] BackendConnection multiplexes 100+ concurrent asynchronous polymorphic RPC requests without deadlocking.

[TRANS-03] STDIO transport spawns subprocess, handles JSON-RPC initialization and executes tool calls

[UI-01] opens confirmation modal and resolves true when confirmed

[UI-02] Inspect modal displays spinner loading state while querying server capabilities

[UI-03] Grouped server view renders category sections and supports collapsible groups

[UI-04] Tool selector filters available tools by selected backend server

[UI-05] Router allows customized branding parameters (DashboardTitle, DashboardIcon) to be saved and retrieved via the API.

[UI-06] Router supports uploading and retrieving custom branding logo images via dedicated endpoints.

[UI-07] Audits desktop viewport layout for zero horizontal overflow and high UX score.

[UI-102] Dashboard renders stats card, connected server list, and setup instructions

[UI-103] Interactive tool tester renders server and tool selection dropdowns

[UI-108] renders nothing when isMappingModalOpen is false

[UI-109] Renders ClientSetupGuide below the user credentials card.

[UI-110] renders title, MCG badge, subtitle, and version badge

[UI-111] renders GeneralTab and triggers save

[UI-113] renders tab navigation and switches active subviews

[UI-115] renders test bench cards and switches tabs

[UI-116] Modal remains hidden when isInspectOpen is false

[UI-117] returns null when isOpen is false

[UI-119] calls server endpoints correctly

[UI-122] should navigate to Settings view and configure vector embedding options

[UI-124] Renders main dashboard navigation tabs and layout headers

[UI-128] should navigate to Test Bench view and render tester cards

[UI-30] Renders client registration form with inputs for name, client type, redirect URIs, grant types, scopes, and expiration.

[UI-32] Registers OAuth client with extended metadata (redirect URIs, grant types, client type, expiration) and captures one-time credentials.


3. Boundary & Guardrail Invariants ("What the Application DOES NOT DO")

[!IMPORTANT] The following guardrails define strict security boundaries, fail-closed fault invariants, and forbidden application states.

[AUTH-01] AdminPolicy allows principal with configured Admin Group Name (e.g., full_admin)

[AUTH-PERSONAL-APPKEY-CREATE] Non-admin users can create personal App Keys up to quota

[AUTH-EXTERNAL-IDP-DENIES-ANONYMOUS-LOOPBACK] When an external IDP is configured, anonymous loopback requests do not bypass authentication.

[AUTH-STANDALONE-ADMINPOLICY-EXTERNAL-DENY] AdminPolicy rejects unauthenticated requests from non-whitelisted external IPs in standalone mode.

[AUTH-STANDALONE-EXTERNAL-DENY] Standalone mode denies admin access to non-whitelisted external IPs without an Admin AppKey.

[GUARD-01] ResourceRoutingManager throws KeyNotFoundException when reading an unregistered resource URI.

[GUARD-02] SSE transport fails closed with SecurityException when secret provider resolution fails

[GUARD-03] CompositeSecretRetriever throws InvalidOperationException when an unregistered secret provider is requested.

[GUARD-04] Malformed completion payloads or unmapped backends must fail closed safely

[GUARD-05] Socket-level SSRF protection blocks private and loopback IP connections unless explicitly allowlisted.

[GUARD-06] Auth middleware enforces case-insensitive route matching preventing path bypass.

[GUARD-ADMIN-CUSTOM-FILES-VALIDATION] manage_custom_files rejects invalid prompt JSON syntax and unsupported file categories.

[GUARD-ADMIN-ENDPOINT-UNAUTHORIZED] Unauthenticated / non-admin client request to /admin receives 403 Forbidden.

[GUARD-ADMIN-POLICIES-WILDCARD-DENY] manage_policies rejects wildcard deny policies to prevent global lockout.

[GUARD-ADMIN-PROVIDERS-LDAP-PLAINTEXT] manage_providers rejects unencrypted LDAP connections on port 389.

[GUARD-ADMIN-SERVERS-VALIDATION] Verifies that the manage_servers tool accurately enforces validation by rejecting malformed transport types, missing required parameters, and requests for non-existent servers.

[GUARD-ADMIN-UNKNOWN-TOOL] AdminMcpServer returns an error response for unknown tool or action invocations.

[MCP-ADMIN-TOOL-TEST-CALL-ERROR] AdminMcpServer test_tool_call propagates downstream backend errors with visibility.

[AUTH-106] Exchange throws InvalidOperationException when request is null.

[AUTH-108] Authorize throws InvalidOperationException when OIDC request is null.

[AUTH-111] Pipeline exposes RFC 9728 OAuth Protected Resource discovery endpoints with dynamic resource identifiers.

[AUTH-114] RegisterClient rejects invalid or non-absolute redirect URIs with standard RFC 7591 invalid_redirect_uri error.

[AUTH-116] Exchange rejects client_credentials grant attempts by public clients with UnauthorizedClient error.

[AUTH-117] RegisterClient returns 403 Forbidden with access_denied when open client registration is disabled and caller is unauthorized.

[SEC-05] Audit queries support filtering by user, server, and pagination while recording query access in audit log.

[UI-31] Fetches registered OAuth clients and updates store state.

[UI-CONFIRM-MODAL] Centralized promise-based confirmation store resolves true on confirmation and false on cancellation.

[UI-TOAST-TRANSITION] Displays error toast notification when saving invalid JSON credentials for user-provided server.


4. Complete Verification Traceability Matrix

Requirement ID Type Category Description Primary Proof Suite
AUTH-001 Positive AUTH Verify DatabaseUserSecretStore encrypts and decrypts secret correctly. UserSecretStoreTests.cs:L8 Backend xUnit
AUTH-002 Positive AUTH Verify UserCredentialsController returns configured server IDs. UserCredentialsControllerTests.cs:L11 Backend xUnit
AUTH-01 Guardrail AUTH AdminPolicy allows principal with configured Admin Group Name (e.g., full_admin) AdminPolicyHybridAuthTests.cs:L13 Backend xUnit
AUTH-02 Positive AUTH AppKey scopes restrict access precisely across all MCP capabilities and backend targets PairwiseIntegrationMatrixTests.cs:L242 Backend xUnit
AUTH-03 Positive AUTH Auth middleware allows bypass routes and extracts SSO headers in a case-insensitive manner. ChallengerTests.cs:L603 Backend xUnit
AUTH-04 Positive AUTH ActiveDirectoryIdentityProvider extracts Windows caller SIDs and security groups via IWindowsIdentityAccessor and augments with LDAP ActiveDirectoryWindowsIdentityTests.cs:L12 Backend xUnit
AUTH-05 Positive AUTH McpServer supports AllowPassThroughAuth flag McpServerTests.cs:L5 Backend xUnit
AUTH-06 Positive AUTH Transports use passThroughToken when AllowPassThroughAuth is true TransportsAuthShapeTests.cs:L208 Backend xUnit
AUTH-101 Positive AUTH HTTP transport injects X-Forwarded-User header based on connected user identity. IdentityHeaderTests.cs:L9 Backend xUnit
AUTH-110 Positive AUTH CreateAppKey allows creating unlimited AppKeys when UserMaxKeys is set to 0. AppKeysControllerTests.cs:L343 Backend xUnit
AUTH-118 Positive AUTH FindDcrClientAsync resolves existing DCR client matching client name and type. OAuthClientRepositoryTests.cs:L214 Backend xUnit
AUTH-119 Positive AUTH CleanupDcrClientsAsync prunes duplicate and expired dynamic client registrations across all database providers. OAuthClientRepositoryTests.cs:L237 Backend xUnit
AUTH-14 Positive AUTH Tool execution catches 401 Unauthorized from downstream target servers and returns interactive auth remediation. ToolRoutingManagerTests.cs:L173 Backend xUnit
AUTH-15 Positive AUTH OpenIddict initializes ephemeral development signing certificates in Development environment. OpenIddictProductionTests.cs:L30 Backend xUnit
AUTH-35 Positive AUTH Single-user homelab startup initializes SQLite, auto-generates Admin and Client AppKeys without PFX certificate requirements SingleUserHomelabTests.cs:L30 Backend xUnit
AUTH-36 Positive AUTH Pre-configured MCG_CLIENT_APP_KEYS seeds functional individualized client keys with custom scopes SingleUserHomelabTests.cs:L98 Backend xUnit
AUTH-37 Positive AUTH AppKeys with server and category scopes enforce precise tool execution boundaries SingleUserHomelabTests.cs:L168 Backend xUnit
AUTH-38 Positive AUTH LAN CIDR network configuration allows standalone web dashboard access from local subnet SingleUserHomelabTests.cs:L183 Backend xUnit
AUTH-39 Positive AUTH Zero-config startup defaults enterprise auth providers and secret providers to disabled SingleUserHomelabTests.cs:L211 Backend xUnit
AUTH-APPKEY-ADMIN-SCOPE-ALLOW Positive AUTH AppKeys with admin scope grant Administrator role and pass AdminPolicy. StandaloneAdminAuthTests.cs:L79 Backend xUnit
AUTH-APPKEY-ITEMS-SCOPE-ALLOW Positive AUTH SecurityValidationHelper recognizes admin scopes in HttpContext.Items. StandaloneAdminAuthTests.cs:L255 Backend xUnit
AUTH-APPKEY-WILDCARD-SCOPE-ALLOW Positive AUTH AppKeys with wildcard scope '*' grant Administrator role and pass AdminPolicy. StandaloneAdminAuthTests.cs:L140 Backend xUnit
AUTH-COMPACT-APPKEY-TAXONOMY Positive AUTH Generates compact ~32-character Base62 AppKeys with semantic prefixes. AppKeyAuthenticationTests.cs:L417 Backend xUnit
AUTH-CUSTOM-ADMIN-KEY-SEEDING Positive AUTH Seeds custom MCG_ADMIN_AUTH_KEY when provided in configuration. DatabaseSeederServiceTests.cs:L189 Backend xUnit
AUTH-PERSONAL-APPKEY-CREATE Guardrail AUTH Non-admin users can create personal App Keys up to quota AppKeysControllerTests.cs:L191 Backend xUnit
AUTH-PERSONAL-APPKEY-LIST Positive AUTH Non-admin users can view their personal App Keys AppKeysControllerTests.cs:L125 Backend xUnit
AUTH-PERSONAL-APPKEY-QUOTA-OVERRIDE Positive AUTH Custom user quotas override default limit AppKeysControllerTests.cs:L223 Backend xUnit
AUTH-PREFIX-EXTRACTION Positive AUTH ExtractKeyPrefix parses semantic prefixes, Base62 selectors, and legacy tokens accurately. AppKeyAuthenticationTests.cs:L451 Backend xUnit
AUTH-QUERY-TOKEN-EXTRACTION Positive AUTH Query string token middleware extracts access_token or token query parameter to Authorization header. EndpointAuthorizationTests.cs:L7 Backend xUnit
AUTH-STANDALONE-ADMINPOLICY-LOOPBACK-ALLOW Positive AUTH AdminPolicy succeeds in standalone mode for unauthenticated loopback requests. StandaloneAdminAuthTests.cs:L176 Backend xUnit
AUTH-STANDALONE-CUSTOM-CIDR-ALLOW Positive AUTH Standalone mode grants admin access to client IPs matching Admin:StandaloneAllowedNetworks CIDR ranges. StandaloneAdminAuthTests.cs:L35 Backend xUnit
AUTH-STANDALONE-LOOPBACK-ALLOW Positive AUTH Standalone mode without external IDP grants admin access to loopback IP addresses. StandaloneAdminAuthTests.cs:L14 Backend xUnit
AUTH-SYSTEM-APPKEY-SEPARATION Positive AUTH System keys are distinct and require admin permissions AppKeysControllerTests.cs:L151 Backend xUnit
UI-100 Positive AUTH initializes with empty providers useProviderStore.test.ts:L1 Frontend Vitest
UI-101 Positive AUTH should initialize with default values useUserStore.test.ts:L1 Frontend Vitest
UI-114 Positive AUTH renders nothing when isPolicyModalOpen is false PolicyModal.test.tsx:L1 Frontend Vitest
UI-120 Positive AUTH RBAC and SID mapping administration UI allows configuring role policies and SID associations rbac-enforcement-flow.spec.ts:L1 Playwright E2E
UI-123 Positive AUTH should open App Keys & Security view and display client setup controls client-setup-and-appkeys.spec.ts:L1 Playwright E2E
UI-125 Positive AUTH Admin role renders full administrative dashboard and server management controls multi-user-matrix.spec.ts:L1 Playwright E2E
UI-127 Positive AUTH should navigate to settings permissions tab and open policy configuration modal rbac-and-permissions.spec.ts:L1 Playwright E2E
UI-129 Positive AUTH should create client application and generate AppKey with scope constraints appkey-and-client-lifecycle.spec.ts:L1 Playwright E2E
CORE-101 Positive CORE Auto-added requirement tracking SessionManagerTests.cs:L9 Backend xUnit
DB-01 Positive DB SQLite auto-migration seamlessly upgrades legacy schema, encrypts plaintext secrets, and preserves data DatabaseSchemaUpgradeAndContractTests.cs:L29 Backend xUnit
DB-02 Positive DB MSSQL stored procedure scripts declare all required procedures and parameter contracts correctly DatabaseSchemaUpgradeAndContractTests.cs:L311 Backend xUnit
DB-07 Positive DB SQLite upgrade migration automatically provisions OAuthClients table on legacy database DatabaseSchemaUpgradeAndContractTests.cs:L433 Backend xUnit
DOC-SETUP-SKILL-FRONTMATTER Positive DOC mcg-setup skill frontmatter is valid YAML, specifies name, description starting with 'Use when...', and length is under 1024 characters SetupSkillTests.cs:L18 Backend xUnit
DOC-SETUP-SKILL-MIRROR Positive DOC The mcg-setup skill and templates are mirrored 1:1 in .agents/skills/mcg-setup/ SetupSkillTests.cs:L152 Backend xUnit
DOC-SETUP-SKILL-TEMPLATES Positive DOC All scaffold templates exist, are non-empty, and contain required directives such as responseBufferLimit, MCG_MASTER_KEY, and ghcr.io/spelech/model-context-gateway SetupSkillTests.cs:L98 Backend xUnit
DOC-SETUP-SKILL-WORKFLOW Positive DOC mcg-setup skill contains all 6 required setup phases including environment probing, hosting platforms, env vs UI trade-offs, identity/network topology, artifact generation, and health/client configuration SetupSkillTests.cs:L44 Backend xUnit
AUTH-EXTERNAL-IDP-DENIES-ANONYMOUS-LOOPBACK Guardrail GUARD When an external IDP is configured, anonymous loopback requests do not bypass authentication. StandaloneAdminAuthTests.cs:L224 Backend xUnit
AUTH-STANDALONE-ADMINPOLICY-EXTERNAL-DENY Guardrail GUARD AdminPolicy rejects unauthenticated requests from non-whitelisted external IPs in standalone mode. StandaloneAdminAuthTests.cs:L200 Backend xUnit
AUTH-STANDALONE-EXTERNAL-DENY Guardrail GUARD Standalone mode denies admin access to non-whitelisted external IPs without an Admin AppKey. StandaloneAdminAuthTests.cs:L57 Backend xUnit
GUARD-01 Guardrail GUARD ResourceRoutingManager throws KeyNotFoundException when reading an unregistered resource URI. ResourceRoutingManagerTests.cs:L67 Backend xUnit
GUARD-02 Guardrail GUARD SSE transport fails closed with SecurityException when secret provider resolution fails SseTransportTests.cs:L32 Backend xUnit
GUARD-03 Guardrail GUARD CompositeSecretRetriever throws InvalidOperationException when an unregistered secret provider is requested. CompositeSecretRetrieverTests.cs:L17 Backend xUnit
GUARD-04 Guardrail GUARD Malformed completion payloads or unmapped backends must fail closed safely PairwiseIntegrationMatrixTests.cs:L508 Backend xUnit
GUARD-05 Guardrail GUARD Socket-level SSRF protection blocks private and loopback IP connections unless explicitly allowlisted. ChallengerTests.cs:L712 Backend xUnit
GUARD-06 Guardrail GUARD Auth middleware enforces case-insensitive route matching preventing path bypass. ChallengerTests.cs:L216 Backend xUnit
GUARD-ADMIN-CUSTOM-FILES-VALIDATION Guardrail GUARD manage_custom_files rejects invalid prompt JSON syntax and unsupported file categories. AdminToolsParityTests.cs:L779 Backend xUnit
GUARD-ADMIN-ENDPOINT-UNAUTHORIZED Guardrail GUARD Unauthenticated / non-admin client request to /admin receives 403 Forbidden. AdminEndpointsTests.cs:L193 Backend xUnit
GUARD-ADMIN-POLICIES-WILDCARD-DENY Guardrail GUARD manage_policies rejects wildcard deny policies to prevent global lockout. AdminToolsParityTests.cs:L513 Backend xUnit
GUARD-ADMIN-PROVIDERS-LDAP-PLAINTEXT Guardrail GUARD manage_providers rejects unencrypted LDAP connections on port 389. AdminToolsParityTests.cs:L650 Backend xUnit
GUARD-ADMIN-SERVERS-VALIDATION Guardrail GUARD Verifies that the manage_servers tool accurately enforces validation by rejecting malformed transport types, missing required parameters, and requests for non-existent servers. AdminToolsParityTests.cs:L324 Backend xUnit
GUARD-ADMIN-UNKNOWN-TOOL Guardrail GUARD AdminMcpServer returns an error response for unknown tool or action invocations. AdminMcpServerTests.cs:L592 Backend xUnit
MCP-ADMIN-TOOL-TEST-CALL-ERROR Guardrail GUARD AdminMcpServer test_tool_call propagates downstream backend errors with visibility. AdminMcpServerTests.cs:L633 Backend xUnit
MCP-01 Positive MCP RewriteRequestJson accurately parses JSON batches, comments, and trailing commas using System.Text.Json JsonNode. ChallengerTests.cs:L191 Backend xUnit
MCP-02 Positive MCP All MCP protocol capabilities enforce caller role authorizations consistently PairwiseIntegrationMatrixTests.cs:L385 Backend xUnit
MCP-05 Positive MCP ResourceRoutingManager returns all registered resources when search query is empty. ResourceRoutingManagerTests.cs:L8 Backend xUnit
MCP-06 Positive MCP prompts/list aggregates, namespaces, and routes prompts to target backends. McpIntegrationTests.cs:L514 Backend xUnit
MCP-08 Positive MCP completion/complete forwards prompt completions to backend when caller is authorized. UnifiedMcpAuthorizationTests.cs:L439 Backend xUnit
MCP-10 Positive MCP DockerAutoDiscoveryService handles missing Docker socket gracefully without throwing unhandled exceptions. SeederAndDiscoveryTests.cs:L83 Backend xUnit
MCP-12 Positive MCP DynamicEmbeddingService retrieves and persists embedding provider configurations in Settings table. DynamicEmbeddingServiceTests.cs:L62 Backend xUnit
MCP-15 Positive MCP All JSON-RPC results return a resultType discriminator (complete or input_required) per MCP 2026-07-28 spec. ProtocolResultTypeTests.cs:L7 Backend xUnit
MCP-21 Positive MCP Admin endpoint handles direct Streamable HTTP POST tools/list request returning JSON even with Accept text/event-stream header. AdminEndpointsTests.cs:L370 Backend xUnit
MCP-ADMIN-ENDPOINT-CALL-TOOL Positive MCP Admin endpoint /admin/message executes tools/call for manage_system diagnostics. AdminEndpointsTests.cs:L294 Backend xUnit
MCP-ADMIN-ENDPOINT-HEAD-REQUEST Positive MCP Admin endpoint /admin handles HEAD request returning text/event-stream headers. AdminEndpointsTests.cs:L212 Backend xUnit
MCP-ADMIN-ENDPOINT-LIST-TOOLS Positive MCP Admin endpoint /admin/message executes tools/list over active SSE session and returns 10 admin tools. AdminEndpointsTests.cs:L224 Backend xUnit
MCP-ADMIN-ENDPOINT-ROUTER-ADMIN-TARGET Positive MCP Target proxy endpoint /router-admin routes directly to the Admin MCP server. AdminEndpointsTests.cs:L149 Backend xUnit
MCP-ADMIN-ENDPOINT-SSE-HANDSHAKE Positive MCP Admin endpoint /admin/sse performs initialize handshake with 2026-07-28 protocol version. AdminEndpointsTests.cs:L62 Backend xUnit
MCP-ADMIN-INITIALIZE-HANDSHAKE Positive MCP AdminMcpServer initialize handles protocol negotiation for 2026-07-28 and 2024-11-05. AdminMcpServerTests.cs:L195 Backend xUnit
MCP-ADMIN-PARITY-APPKEYS Positive MCP manage_appkeys supports full parity for list, get_limits, create, and revoke actions. AdminToolsParityTests.cs:L370 Backend xUnit
MCP-ADMIN-PARITY-CLIENTS Positive MCP manage_clients supports full parity for register, list, and delete actions. AdminToolsParityTests.cs:L423 Backend xUnit
MCP-ADMIN-PARITY-CUSTOM-FILES Positive MCP manage_custom_files supports full parity for list, get, save, and delete prompt and resource files. AdminToolsParityTests.cs:L716 Backend xUnit
MCP-ADMIN-PARITY-GROUP-MAPPINGS Positive MCP manage_group_mappings supports full parity for list, save, and delete external-to-internal group mappings. AdminToolsParityTests.cs:L530 Backend xUnit
MCP-ADMIN-PARITY-JSONRPC-DISPATCH Positive MCP AdminMcpServer processes standard JSON-RPC 2.0 requests (tools/list, tools/call, ping). AdminToolsParityTests.cs:L873 Backend xUnit
MCP-ADMIN-PARITY-POLICIES Positive MCP manage_policies supports full parity for list, save, and delete access control policies. AdminToolsParityTests.cs:L464 Backend xUnit
MCP-ADMIN-PARITY-PROVIDERS Positive MCP manage_providers supports full parity for list, save_secret, test_vault, save_auth, and test_ldap actions. AdminToolsParityTests.cs:L577 Backend xUnit
MCP-ADMIN-PARITY-SERVERS Positive MCP Validates that the manage_servers tool provides comprehensive administrative capabilities including listing, retrieving, creating, updating, toggling, deleting, and reconnecting servers. AdminToolsParityTests.cs:L234 Backend xUnit
MCP-ADMIN-PARITY-SETTINGS Positive MCP manage_settings supports full parity for get and update global router configurations. AdminToolsParityTests.cs:L667 Backend xUnit
MCP-ADMIN-PARITY-SYSTEM Positive MCP manage_system supports full parity for diagnostics, get_logs, clear_logs, and query_audit actions. AdminToolsParityTests.cs:L816 Backend xUnit
MCP-ADMIN-PARITY-TEST-TOOL-CALL Positive MCP test_tool_call executes test bench backend tool calls and formats responses. AdminToolsParityTests.cs:L846 Backend xUnit
MCP-ADMIN-PARITY-TOOLS-COVERAGE Positive MCP Ensures every UI management workflow is backed by a verified, equivalent action within the consolidated Admin MCP tools. AdminToolsParityTests.cs:L191 Backend xUnit
MCP-ADMIN-SKILL-E2E-PROVISIONING Positive MCP Admin automation templates and JSON-RPC tool calls successfully provision a blank-slate gateway instance end-to-end via HTTP /admin/message. AdminAutomationSkillTests.cs:L176 Backend xUnit
MCP-ADMIN-SKILL-FRONTMATTER Positive MCP mcg-admin skill frontmatter is valid YAML, specifies name, description starting with 'Use when...', and length is under 1024 characters AdminAutomationSkillTests.cs:L21 Backend xUnit
MCP-ADMIN-SKILL-MIRROR Positive MCP mcg-admin skill files and templates are identically mirrored between skills/ and .agents/skills/ directories AdminAutomationSkillTests.cs:L147 Backend xUnit
MCP-ADMIN-SKILL-TEMPLATES Positive MCP All mcg-admin scaffold templates exist, are non-empty, and contain valid JSON or scripts for Authentik, Keycloak, Entra, ActiveDirectory, Cloudflare, Vault, Embeddings, Docker, and shell automation AdminAutomationSkillTests.cs:L103 Backend xUnit
MCP-ADMIN-SKILL-WORKFLOW Positive MCP mcg-admin skill contains all 7 administration phases including diagnostics, secrets, auth providers, RBAC/group mappings, settings/embeddings, servers/clients, and live tool verification AdminAutomationSkillTests.cs:L47 Backend xUnit
MCP-ADMIN-TOOL-AUDIT-LOG Positive MCP AdminMcpServer tool calls record audit log entries with caller and tool name. AdminMcpServerTests.cs:L266 Backend xUnit
MCP-ADMIN-TOOL-MANAGE-APPKEYS Positive MCP AdminMcpServer executes manage_appkeys create, list, limits, and revoke actions. AdminMcpServerTests.cs:L283 Backend xUnit
MCP-ADMIN-TOOL-MANAGE-CLIENTS Positive MCP AdminMcpServer executes manage_clients register, list, and delete actions. AdminMcpServerTests.cs:L330 Backend xUnit
MCP-ADMIN-TOOL-MANAGE-CUSTOM-FILES Positive MCP AdminMcpServer executes manage_custom_files save, get, list, and delete actions. AdminMcpServerTests.cs:L504 Backend xUnit
MCP-ADMIN-TOOL-MANAGE-GROUP-MAPPINGS Positive MCP AdminMcpServer executes manage_group_mappings save, list, and delete actions. AdminMcpServerTests.cs:L402 Backend xUnit
MCP-ADMIN-TOOL-MANAGE-POLICIES Positive MCP AdminMcpServer executes manage_policies save, list, and delete actions. AdminMcpServerTests.cs:L368 Backend xUnit
MCP-ADMIN-TOOL-MANAGE-PROVIDERS Positive MCP AdminMcpServer executes manage_providers list, save_secret, and save_auth actions. AdminMcpServerTests.cs:L435 Backend xUnit
MCP-ADMIN-TOOL-MANAGE-SERVERS Positive MCP AdminMcpServer executes manage_servers list, get, create, update, toggle, and delete actions. AdminMcpServerTests.cs:L214 Backend xUnit
MCP-ADMIN-TOOL-MANAGE-SETTINGS Positive MCP AdminMcpServer executes manage_settings get and update actions. AdminMcpServerTests.cs:L478 Backend xUnit
MCP-ADMIN-TOOL-MANAGE-SYSTEM Positive MCP AdminMcpServer executes manage_system diagnostics, get_logs, clear_logs, and query_audit actions. AdminMcpServerTests.cs:L558 Backend xUnit
MCP-ADMIN-TOOLS-LIST-COUNT Positive MCP AdminMcpServer tools/list returns all 10 consolidated tools with complete JSON schemas. AdminMcpServerTests.cs:L147 Backend xUnit
UI-104 Positive MCP renders resource tester with servers and resources ResourceTesterCard.test.tsx:L1 Frontend Vitest
UI-106 Positive MCP renders connected server details with badges and triggers actions ServerCard.test.tsx:L1 Frontend Vitest
UI-107 Positive MCP renders prompt dropdown and filters by selected server PromptTesterCard.test.tsx:L1 Frontend Vitest
UI-112 Positive MCP renders nothing when isAddEditOpen is false ServerModal.test.tsx:L1 Frontend Vitest
UI-121 Positive MCP should open Add Server modal and switch secret provider types server-management.spec.ts:L1 Playwright E2E
UI-126 Positive MCP should open Server Inspect Modal if servers are present on dashboard server-inspector.spec.ts:L1 Playwright E2E
AUTH-106 Guardrail SEC Exchange throws InvalidOperationException when request is null. AuthorizationControllerTests.cs:L19 Backend xUnit
AUTH-107 Positive SEC RegisterClient successfully handles DCR requests when open DCR is enabled. AuthorizationControllerTests.cs:L36 Backend xUnit
AUTH-108 Guardrail SEC Authorize throws InvalidOperationException when OIDC request is null. AuthorizationControllerTests.cs:L77 Backend xUnit
AUTH-109 Positive SEC RegisterClient uses IOAuthClientRepository when IOpenIddictApplicationManager is null. AuthorizationControllerTests.cs:L94 Backend xUnit
AUTH-111 Guardrail SEC Pipeline exposes RFC 9728 OAuth Protected Resource discovery endpoints with dynamic resource identifiers. PipelineIntegrationTests.cs:L62 Backend xUnit
AUTH-112 Guardrail SEC Authorize resolves client application from IOAuthClientRepository and redirects to consent. AuthorizationControllerTests.cs:L297 Backend xUnit
AUTH-113 Positive SEC RegisterClient supports public clients with PKCE (token_endpoint_auth_method: none) and omits client secret. AuthorizationControllerTests.cs:L351 Backend xUnit
AUTH-114 Guardrail SEC RegisterClient rejects invalid or non-absolute redirect URIs with standard RFC 7591 invalid_redirect_uri error. AuthorizationControllerTests.cs:L400 Backend xUnit
AUTH-115 Positive SEC RegisterClient dynamically binds requested scopes to OpenIddict application descriptor permissions. AuthorizationControllerTests.cs:L435 Backend xUnit
AUTH-116 Guardrail SEC Exchange rejects client_credentials grant attempts by public clients with UnauthorizedClient error. AuthorizationControllerTests.cs:L475 Backend xUnit
AUTH-117 Guardrail SEC RegisterClient returns 403 Forbidden with access_denied when open client registration is disabled and caller is unauthorized. AuthorizationControllerTests.cs:L516 Backend xUnit
SEC-01 Positive SEC SQLite database is encrypted at rest using SQLCipher with DB_ENCRYPTION_KEY. DatabaseEncryptionTests.cs:L8 Backend xUnit
SEC-02 Positive SEC VaultSecretRetriever dynamically loads, applies, and reloads Vault configurations from database repository. ProviderSettingsEncryptionTests.cs:L294 Backend xUnit
SEC-03 Positive SEC EnvironmentSecretRetriever retrieves configured environment variable value. SecretRetrieverTests.cs:L5 Backend xUnit
SEC-04 Positive SEC WindowsRegistrySecretRetriever handles non-Windows platforms gracefully and returns null. SecretRetrieverTests.cs:L34 Backend xUnit
SEC-05 Guardrail SEC Audit queries support filtering by user, server, and pagination while recording query access in audit log. AuditQueryApiTests.cs:L60 Backend xUnit
SEC-ADMIN-AUDIT-REDACTION Positive SEC AdminMcpServer redacts sensitive secrets from argument payloads before recording audit logs. AdminMcpServerTests.cs:L609 Backend xUnit
SEC-GATEWAY-ZERO-CONFIG-BOOT Positive SEC Gateway boots from a blank slate with zero master key environment variables, auto-generates .master.key, and serves health and admin endpoints. AdminAutomationSkillTests.cs:L352 Backend xUnit
SEC-KEY-PROVIDER-AUTOGEN Positive SEC EncryptionKeyProvider delegates to DbKeyHelper to auto-generate master key when unconfigured. EncryptionKeyProviderTests.cs:L42 Backend xUnit
SEC-KEY-PROVIDER-CONFIG Positive SEC EncryptionKeyProvider returns configured DB_ENCRYPTION_KEY or MCG_SECRET. EncryptionKeyProviderTests.cs:L28 Backend xUnit
SEC-KEY-PROVIDER-FALLBACK Positive SEC EncryptionKeyProvider falls back to DB_ENCRYPTION_KEY when MCG_SECRET is unconfigured. EncryptionKeyProviderTests.cs:L70 Backend xUnit
SEC-KEY-PROVIDER-SECRET Positive SEC EncryptionKeyProvider returns configured MCG_SECRET. EncryptionKeyProviderTests.cs:L56 Backend xUnit
SEC-KEYFILE-AUTOGEN Positive SEC Blank-slate initialization auto-generates a 256-bit base64 master key and persists it to .master.key. DbKeyHelperTests.cs:L63 Backend xUnit
SEC-KEYFILE-ENV-PRECEDENCE Positive SEC Explicit environment variables MCG_MASTER_KEY or MCG_SECRET take precedence over keyfiles. DbKeyHelperTests.cs:L28 Backend xUnit
SEC-KEYFILE-FILE-OVER-KEYFILE Positive SEC Explicit file secrets take precedence over persistent .master.key files. DbKeyHelperTests.cs:L123 Backend xUnit
SEC-KEYFILE-FILE-SECRET Positive SEC File-based secrets configured via MCG_MASTER_KEY_FILE or standard Docker secrets paths are resolved. DbKeyHelperTests.cs:L45 Backend xUnit
SEC-KEYFILE-HIERARCHY-PRECEDENCE Positive SEC Explicit environment variables take precedence over file secrets and keyfiles. DbKeyHelperTests.cs:L101 Backend xUnit
SEC-KEYFILE-RELOAD Positive SEC Existing .master.key file is loaded across gateway restarts without key mutation. DbKeyHelperTests.cs:L83 Backend xUnit
SEC-KEYSOURCE-DETECTION Positive SEC Correctly identifies KeySource origin for environment, file, and auto-generated keys. DbKeyHelperTests.cs:L144 Backend xUnit
SEC-KEYSOURCE-SETCACHEDKEY Positive SEC SetCachedKey sets in-memory encryption key and updates ActiveKeySource. DbKeyHelperTests.cs:L314 Backend xUnit
SEC-MASTERKEY-ATOMIC-REENCRYPTION Positive SEC Atomically re-encrypts database credentials when setting a custom master key. MasterKeyReEncryptionTests.cs:L142 Backend xUnit
SEC-MASTERKEY-CONFIGURED-STATUS-BADGE Positive SEC Displays configured badge and rotate button when custom master key is configured. GeneralTab.test.tsx:L192 Frontend Vitest
SEC-MASTERKEY-CUSTOM-MODAL-REENCRYPTION Positive SEC Validates master key inputs (length, match) and triggers atomic re-encryption. MasterKeyModal.test.tsx:L6 Frontend Vitest
SEC-MASTERKEY-EXTERNAL-LOCKED-BADGE Positive SEC Displays locked badge when master key is externally managed via Vault or Environment. GeneralTab.test.tsx:L149 Frontend Vitest
SEC-MASTERKEY-UI-STATUS-BANNER Positive SEC Displays warning banner when keySource is AutoGenerated and opens custom master key modal. GeneralTab.test.tsx:L115 Frontend Vitest
SEC-VAULT-BOOTSTRAPPING Positive SEC Bootstraps master encryption key directly from HashiCorp Vault when VAULT_ADDR is configured. DbKeyHelperTests.cs:L191 Backend xUnit
SEC-VAULT-CUSTOM-PATH Positive SEC Bootstraps master key from Vault using custom mount path and secret key name. DbKeyHelperTests.cs:L236 Backend xUnit
UI-105 Positive SEC renders system logs and handles level filter LogsTerminalCard.test.tsx:L1 Frontend Vitest
TRANS-01 Positive TRANS SendRequestAsync times out cleanly and removes pending completion handlers without leaking memory. ChallengerTests.cs:L276 Backend xUnit
TRANS-02 Positive TRANS BackendConnection multiplexes 100+ concurrent asynchronous polymorphic RPC requests without deadlocking. ChallengerTests.cs:L494 Backend xUnit
TRANS-03 Positive TRANS STDIO transport spawns subprocess, handles JSON-RPC initialization and executes tool calls StdioTransportTests.cs:L49 Backend xUnit
UI-01 Positive UI opens confirmation modal and resolves true when confirmed useConfirmStore.test.ts:L31 Frontend Vitest
UI-02 Positive UI Inspect modal displays spinner loading state while querying server capabilities ServerInspectModal.test.tsx:L61 Frontend Vitest
UI-03 Positive UI Grouped server view renders category sections and supports collapsible groups DashboardView.test.tsx:L63 Frontend Vitest
UI-04 Positive UI Tool selector filters available tools by selected backend server ToolTesterCard.test.tsx:L77 Frontend Vitest
UI-05 Positive UI Router allows customized branding parameters (DashboardTitle, DashboardIcon) to be saved and retrieved via the API. PipelineIntegrationTests.cs:L253 Backend xUnit
UI-06 Positive UI Router supports uploading and retrieving custom branding logo images via dedicated endpoints. PipelineIntegrationTests.cs:L447 Backend xUnit
UI-07 Positive UI Audits desktop viewport layout for zero horizontal overflow and high UX score. layout-inspector.spec.ts:L38 Playwright E2E
UI-102 Positive UI Dashboard renders stats card, connected server list, and setup instructions DashboardView.test.tsx:L1 Frontend Vitest
UI-103 Positive UI Interactive tool tester renders server and tool selection dropdowns ToolTesterCard.test.tsx:L1 Frontend Vitest
UI-108 Positive UI renders nothing when isMappingModalOpen is false MappingModal.test.tsx:L1 Frontend Vitest
UI-109 Positive UI Renders ClientSetupGuide below the user credentials card. MyMcpServers.test.tsx:L102 Frontend Vitest
UI-110 Positive UI renders title, MCG badge, subtitle, and version badge Header.test.tsx:L1 Frontend Vitest
UI-111 Positive UI renders GeneralTab and triggers save SettingsTabs.test.tsx:L1 Frontend Vitest
UI-113 Positive UI renders tab navigation and switches active subviews SettingsView.test.tsx:L1 Frontend Vitest
UI-115 Positive UI renders test bench cards and switches tabs TestBenchView.test.tsx:L1 Frontend Vitest
UI-116 Positive UI Modal remains hidden when isInspectOpen is false ServerInspectModal.test.tsx:L1 Frontend Vitest
UI-117 Positive UI returns null when isOpen is false SharedComponents.test.tsx:L1 Frontend Vitest
UI-119 Positive UI calls server endpoints correctly typedApi.test.ts:L1 Frontend Vitest
UI-122 Positive UI should navigate to Settings view and configure vector embedding options settings.spec.ts:L1 Playwright E2E
UI-124 Positive UI Renders main dashboard navigation tabs and layout headers dashboard.spec.ts:L1 Playwright E2E
UI-128 Positive UI should navigate to Test Bench view and render tester cards testbench.spec.ts:L1 Playwright E2E
UI-30 Positive UI Renders client registration form with inputs for name, client type, redirect URIs, grant types, scopes, and expiration. ClientModal.test.tsx:L27 Frontend Vitest
UI-31 Guardrail UI Fetches registered OAuth clients and updates store state. useClientStore.test.ts:L37 Frontend Vitest
UI-32 Positive UI Registers OAuth client with extended metadata (redirect URIs, grant types, client type, expiration) and captures one-time credentials. useClientStore.test.ts:L76 Frontend Vitest
UI-CONFIRM-MODAL Guardrail UI Centralized promise-based confirmation store resolves true on confirmation and false on cancellation. useConfirmStore.test.ts:L4 Frontend Vitest
UI-TOAST-TRANSITION Guardrail UI Displays error toast notification when saving invalid JSON credentials for user-provided server. MyMcpServers.test.tsx:L23 Frontend Vitest