{"service":"MCP Server Shell","transport":"MCP Streamable HTTP","mcpEndpoint":"/mcp","status":"running","environment":"UAT","modules":[{"catalogOrder":2,"name":"mcp_test_tools","displayName":"MCP Test Tools","domain":"MCP Integration Testing","description":"Authenticated, harmless tools for validating Foundry streaming, MCP progress, approval handling, tenant propagation, and role authorization. All tools require a valid MCP bearer token; individual role requirements are published per tool.","tools":["run_forbidden_role_test","run_read_role_test","run_read_role_test_approval","run_streaming_progress_test","execute_approval_test_action","get_current_tenant_context"],"safeForAutoUse":["run_forbidden_role_test","run_read_role_test","run_streaming_progress_test","get_current_tenant_context"],"requiresApproval":["run_read_role_test_approval","execute_approval_test_action"],"toolDescriptors":[{"name":"run_forbidden_role_test","title":"Run forbidden-role authorization test","description":"Validates the authorization failure path using the intentionally unprovisioned mcp_test_forbidden role.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["mcp_test_forbidden"],"whenToUse":"Use only when confirming that MCP rejects an authenticated caller that lacks a required role.","whenNotToUse":"Do not use for business or diagnostic work, and do not provision or assign its test role.","typicalPreviousTools":[],"typicalNextTools":[],"stopConditions":["The user did not request a forbidden-role authorization test."]},{"name":"run_read_role_test","title":"Run read-role authorization test","description":"Runs a harmless read-only operation protected by the mcp_test_read realm role.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["mcp_test_read"],"whenToUse":"Use only when validating MCP bearer-token role authorization.","whenNotToUse":"Do not use for business or diagnostic work.","typicalPreviousTools":[],"typicalNextTools":[],"stopConditions":["The user did not request an authorization test."]},{"name":"run_read_role_test_approval","title":"Run approval-protected read-role authorization test","description":"Runs a harmless operation that requires Foundry approval and the mcp_test_read realm role.","safeForAutoUse":false,"requiresApproval":true,"requiredRoles":["mcp_test_read"],"whenToUse":"Use only when validating that Foundry approval and MCP bearer-token role authorization both succeed for one operation.","whenNotToUse":"Do not use for business or diagnostic work.","typicalPreviousTools":[],"typicalNextTools":[],"stopConditions":["Approval was denied or the authenticated token does not contain mcp_test_read."]},{"name":"run_streaming_progress_test","title":"Run streaming progress test","description":"Runs a delayed operation and emits MCP progress notifications at each step.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":[],"whenToUse":"Use only when validating end-to-end streaming and MCP progress handling.","whenNotToUse":"Do not use for business or diagnostic work.","typicalPreviousTools":[],"typicalNextTools":[],"stopConditions":["The user did not request an integration test."]},{"name":"execute_approval_test_action","title":"Execute approval test action","description":"Executes a harmless simulated action after Foundry approval has been granted.","safeForAutoUse":false,"requiresApproval":true,"requiredRoles":[],"whenToUse":"Use only when validating the Foundry MCP approval flow.","whenNotToUse":"Do not use for real business actions.","typicalPreviousTools":[],"typicalNextTools":[],"stopConditions":["Approval was denied or has not been granted."]},{"name":"get_current_tenant_context","title":"Get current tenant context","description":"Returns the tenant context resolved by MCP for the current request without requiring a business or test role.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":[],"whenToUse":"Use only when validating MCP connectivity or whether the tenant ID/header reaches MCP.","whenNotToUse":"Do not use for business or diagnostic work.","typicalPreviousTools":[],"typicalNextTools":[],"stopConditions":["The user did not request a tenant propagation test."]}],"includeInModuleDiscovery":true},{"catalogOrder":1,"name":"network_diagnostics","displayName":"Network Diagnostics","domain":"Network Diagnostics","description":"Reusable Network Diagnostics MCP tools for the supported FNO fault-class runbooks: FC-002 ONT Not Discovered, FC-003 Device On Another Service, and FC-020 No Available Ports On OLT.","tools":["get_fault_class_guidance","get_service_context","get_service","get_workorder_history","get_service_workorders","search_services_by_fsan","check_ont_status","check_device_readiness","get_network_status_full","detect_latest_workorder_fault","prepare_retrigger_workorder","execute_approved_retrigger_workorder","prepare_olt_discovery_sequence","execute_approved_olt_discovery_sequence","validate_fault_action","get_action_approval_status"],"safeForAutoUse":["get_fault_class_guidance","get_service_context","get_service","get_workorder_history","get_service_workorders","search_services_by_fsan","check_ont_status","check_device_readiness","get_network_status_full","detect_latest_workorder_fault","validate_fault_action","get_action_approval_status"],"requiresApproval":["prepare_retrigger_workorder","execute_approved_retrigger_workorder","prepare_olt_discovery_sequence","execute_approved_olt_discovery_sequence"],"toolDescriptors":[{"name":"get_fault_class_guidance","title":"Get fault-class guidance","description":"Retrieves the supported diagnostic runbook guidance for FC-002 ONT Not Discovered, FC-003 Device On Another Service, or FC-020 No Available Ports On OLT.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":[],"whenToUse":"Use when the active fault class code or fault name is known and the agent needs the supported runbook guidance before choosing diagnostic or guarded-action tools.","whenNotToUse":"Do not use to discover MCP modules, list tools, answer unrelated domain questions, or invent guidance for unsupported fault classes.","typicalPreviousTools":["detect_latest_workorder_fault"],"typicalNextTools":["get_service_context","get_workorder_history","get_service_workorders","check_ont_status","search_services_by_fsan","get_network_status_full","check_device_readiness"],"stopConditions":["The request is about module/tool discovery rather than a fault class.","The fault class is unknown and cannot be inferred from context.","The fault class is outside the currently supported detailed runbooks: FC-002, FC-003, and FC-020."]},{"name":"get_service_context","title":"Get service context","description":"Loads normalized service context from the real FNO service lookup. Fields not present in the FNO service response are returned as null rather than guessed.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use early in a network diagnostic when a service ID is known and the runbook needs consolidated real service context.","whenNotToUse":"Do not use for billing, invoice, or payment questions.","typicalPreviousTools":[],"typicalNextTools":["get_workorder_history","get_service_workorders","get_fault_class_guidance","check_device_readiness","search_services_by_fsan"],"stopConditions":["The service ID is missing.","The task is outside network diagnostics.","A downstream tool requires FSAN, serial number, workorder ID, customer name, or address and this service context returned that field as null."]},{"name":"get_service","title":"Get service","description":"Loads a single real service record from the FNO interface using Swagger operation getService: GET /services/{serviceId}, described as 'Get a single Service by id.' Returns mapped fields plus a redacted backend response body.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use when a real FNO service record is needed by service ID, especially to obtain customer, product, premise, provider, ISP reference, or provisioning status fields available in the backend response.","whenNotToUse":"Do not use when the service ID is missing or the request is unrelated to network diagnostics.","typicalPreviousTools":[],"typicalNextTools":["get_workorder_history","get_service_workorders","check_device_readiness"],"stopConditions":["The service ID is missing.","The service ID is not a UUID."]},{"name":"get_workorder_history","title":"Get workorder history","description":"Loads a real FNO workorder snapshot using Swagger operation getWorkOrder: GET /work-orders/{workOrderId}. The current FNO Swagger exposes workorder detail, not a separate chronological history route.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use when a workorder ID is known and the runbook needs fault evidence, latest meaningful error detection, elapsed-time checks, or post-action verification.","whenNotToUse":"Do not use if no workorder ID is available. If only a service ID is available, use get_service_workorders first.","typicalPreviousTools":["get_service_context","get_service_workorders"],"typicalNextTools":["detect_latest_workorder_fault","get_fault_class_guidance"],"stopConditions":["The workorder ID is missing.","The FNO workorder detail response does not contain enough evidence to identify a meaningful diagnostic fault.","The workorder history does not contain a meaningful diagnostic fault.","A newer meaningful fault supersedes the fault class currently being investigated."]},{"name":"get_service_workorders","title":"Get service workorders","description":"Loads real FNO workorders for a service using Swagger operation getWorkOrders: GET /work-orders?service={serviceId}. Use this when a service ID is known but the workorder ID is not.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use when the diagnostic flow has a service ID and needs to find related workorders before selecting a specific workorder.","whenNotToUse":"Do not use without a service ID, or when the user has already supplied the exact workorder ID to inspect.","typicalPreviousTools":["get_service","get_service_context"],"typicalNextTools":["get_workorder_history","detect_latest_workorder_fault","get_fault_class_guidance"],"stopConditions":["The service ID is missing.","No related workorders are returned.","The returned workorders do not identify a relevant provisioning or fault workflow."]},{"name":"search_services_by_fsan","title":"Search services by FSAN","description":"Finds real FNO services associated with a device FSAN or asset reference using Swagger operation getPremiseServices: GET /premises/{premiseId}/services, where premiseId may be a UUID or FSAN / Asset Reference.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use for FC-003 Device On Another Service, serial/device conflict checks, or any runbook where an FSAN may already be attached to another service.","whenNotToUse":"Do not use if the FSAN is unknown or if the issue is unrelated to device/service association.","typicalPreviousTools":["get_service_context","get_fault_class_guidance"],"typicalNextTools":["prepare_retrigger_workorder","validate_fault_action"],"stopConditions":["The FSAN is missing.","The FNO backend rejects the premise service search for the supplied FSAN or asset reference.","The physical FSAN has not been confirmed when human confirmation is required.","The conflicting service belongs to a different client and must be escalated instead of automated."]},{"name":"check_ont_status","title":"Check ONT status","description":"Checks real ONT/device operational status using Swagger operation getDeviceStatus: GET /network/status/{serialNumber}/status, described as returning operational status of a device.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use for FC-002 before device readiness to distinguish a wider GPON/ONT service outage from a device-level discovery issue. Also reusable for ONT offline or optical/physical runbooks when added.","whenNotToUse":"Do not use when the serial number or FSAN is missing, or when GPON/ONT status is irrelevant.","typicalPreviousTools":["get_fault_class_guidance","get_service_context"],"typicalNextTools":["check_device_readiness"],"stopConditions":["The serial number or FSAN is missing.","The FNO backend rejects the ONT status request.","ONT status indicates a wider GPON or network outage; stop device-level actions and escalate."]},{"name":"check_device_readiness","title":"Check device readiness","description":"Checks whether a device is ready for provisioning by calling Swagger operation checkSerialNumber: POST /devices/{serial_number}/check, described as 'Check the status of the specified device.' The deprecated GET variant must not be used.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use when a provisioning flow depends on device readiness, especially FC-002 after GPON/ONT status has been considered.","whenNotToUse":"Do not use when the device serial number is unknown.","typicalPreviousTools":["get_service_context","check_ont_status"],"typicalNextTools":["prepare_retrigger_workorder"],"stopConditions":["The device serial number is missing.","The tenant token is not configured for the current tenant.","Device is not found or not ready; guide FSAN verification or field investigation instead of preparing a retrigger."]},{"name":"get_network_status_full","title":"Get full network status","description":"Aggregates confirmed real FNO network-status calls for a device serial number: device status, status history, service status, full status, and optical power. It does not include OLT inventory, AMS, or license data unless those fields are returned by the FNO endpoints.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use when a device serial number is known and the runbook needs broader network-status, history, service-status, full-status, or optical-power context.","whenNotToUse":"Do not use when the device serial number is missing, or when the fault does not require network-status context.","typicalPreviousTools":["get_service_context","get_fault_class_guidance"],"typicalNextTools":["prepare_olt_discovery_sequence","validate_fault_action"],"stopConditions":["The device serial number is missing.","One or more FNO network-status calls returns a non-success response.","Network identity or inventory state is ambiguous."]},{"name":"detect_latest_workorder_fault","title":"Detect latest workorder fault","description":"Reusable read-only capability that loads real FNO workorder detail, identifies the latest exposed fault-class or failure-reason metadata, and reports when no fault metadata is present instead of guessing.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use after workorder history is loaded and the agent must identify the active fault class, especially before applying FC-020 or elapsed-time runbook logic.","whenNotToUse":"Do not use without workorder history context.","typicalPreviousTools":["get_workorder_history"],"typicalNextTools":["get_fault_class_guidance"],"stopConditions":["The workorder ID is missing.","Workorder history is unavailable.","The returned workorder detail contains no fault-class or failure-reason metadata."]},{"name":"prepare_retrigger_workorder","title":"Prepare retrigger workorder","description":"Reserved guarded-action capability that validates whether a workorder retrigger may be proposed and creates an approval request when required. Target backend execution is expected to use Swagger operation updateWorkOrder: PUT /work-orders/{workOrderId}, described as 'Update a single Work Order by id.'","safeForAutoUse":false,"requiresApproval":true,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use only after diagnostics indicate a retrigger is valid, the correct target workorder is known, stop conditions are clear, and approval is required before execution.","whenNotToUse":"Do not use for read-only diagnostics, before confirming fault guidance and service/workorder context, or for FC-003 when the target is the new installation workorder instead of the outstanding cancellation workorder.","typicalPreviousTools":["get_fault_class_guidance","get_workorder_history","check_device_readiness","search_services_by_fsan","validate_fault_action"],"typicalNextTools":["execute_approved_retrigger_workorder"],"stopConditions":["The workorder ID is missing.","The reason is missing.","The correct target workorder cannot be confirmed.","Persistent approval audit storage or backend retrigger contract are not implemented."]},{"name":"execute_approved_retrigger_workorder","title":"Execute approved retrigger workorder","description":"Reserved mutating capability that executes a previously approved workorder retrigger through Swagger operation updateWorkOrder: PUT /work-orders/{workOrderId}.","safeForAutoUse":false,"requiresApproval":true,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use only after a valid approval ID exists for the retrigger action and the backend retrigger execution contract has been enabled.","whenNotToUse":"Do not use without explicit approval or for exploratory diagnostics.","typicalPreviousTools":["prepare_retrigger_workorder","get_action_approval_status"],"typicalNextTools":[],"stopConditions":["The approval ID is missing or not valid.","The workorder ID is missing.","Persistent approval audit storage or backend retrigger execution is not implemented."]},{"name":"prepare_olt_discovery_sequence","title":"Prepare OLT discovery sequence","description":"Reserved guarded-action capability for FC-020 that validates OLT discovery preconditions and creates an approval request for the ordered discovery sequence.","safeForAutoUse":false,"requiresApproval":true,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use for FC-020 No Available Ports after Network Engineer confirmation is available.","whenNotToUse":"Do not use before confirming the active fault, OLT identity, inventory state, and Network Engineer confirmation.","typicalPreviousTools":["get_fault_class_guidance","get_network_status_full","validate_fault_action"],"typicalNextTools":["execute_approved_olt_discovery_sequence"],"stopConditions":["Network Engineer confirmation is missing.","OLT identity is ambiguous.","The active fault is no longer FC-020 or equivalent.","Persistent approval audit storage or OLT discovery precondition validation is not implemented."]},{"name":"execute_approved_olt_discovery_sequence","title":"Execute approved OLT discovery sequence","description":"Reserved mutating capability that executes the approved FC-020 sequence. The current FNO Swagger confirms the workorder update portion as PUT /work-orders/{workOrderId}; the unassigned/assigned discovery worker endpoints are not present in the current Swagger and need backend confirmation.","safeForAutoUse":false,"requiresApproval":true,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use only after a valid approval exists for the OLT discovery sequence and the backend discovery execution contract has been enabled.","whenNotToUse":"Do not use for investigation, without approval, or without confirmed OLT/workorder context.","typicalPreviousTools":["prepare_olt_discovery_sequence","get_action_approval_status"],"typicalNextTools":[],"stopConditions":["The approval ID is missing or invalid.","The OLT ID or workorder ID is missing.","Persistent approval audit storage or backend OLT discovery contracts are not implemented."]},{"name":"validate_fault_action","title":"Validate fault action","description":"Reusable conservative policy check for whether a proposed action may be prepared for the supported fault class, context, target ID, role, and stop conditions.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":[],"whenToUse":"Use before preparing any guarded or mutating action, especially workorder retrigger or OLT discovery.","whenNotToUse":"Do not use as a substitute for actual approval.","typicalPreviousTools":["get_fault_class_guidance","get_service_context"],"typicalNextTools":["prepare_retrigger_workorder","prepare_olt_discovery_sequence"],"stopConditions":["The fault class, proposed action, or target ID is missing.","The fault class is unsupported.","The proposed action is not a guarded-action category."]},{"name":"get_action_approval_status","title":"Get action approval status","description":"Returns the current in-memory MCP approval context for a previously prepared guarded or mutating action. Execution remains disabled until persistent approval audit storage and backend mutation contracts are implemented.","safeForAutoUse":true,"requiresApproval":false,"requiredRoles":["network_diagnostics_read"],"whenToUse":"Use when an approval ID exists and the agent needs to confirm whether execution is allowed.","whenNotToUse":"Do not use to create approval or bypass approval.","typicalPreviousTools":["prepare_retrigger_workorder","prepare_olt_discovery_sequence"],"typicalNextTools":["execute_approved_retrigger_workorder","execute_approved_olt_discovery_sequence"],"stopConditions":["The approval ID is missing.","The approval context is not found in the current MCP server process.","Execution must remain disabled until persistent approval validation and audit storage exist."]}],"includeInModuleDiscovery":true}]}