{"record":{"id":"5e21a505ac3439fc","repo":"rohitg00/ai-engineering-from-scratch","slug":"runtime-discovery-failed","errorCode":null,"errorMessage":"runtime discovery failed","messagePattern":"runtime discovery failed","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"phases/19-capstone-projects/13-mcp-server-with-registry/code/main.py","lineNumber":431,"sourceCode":"        issues.append(\"runtime serverInfo.version does not match server.json version\")\n    return issues\n\n\n@dataclass\nclass Registry:\n    publisher_domain: str = PUBLISHER_DOMAIN\n    entries: dict[str, dict] = field(default_factory=dict)\n    runtime_discovery: dict[str, dict] = field(default_factory=dict)\n\n    def register(self, server: MCPServer) -> None:\n        document = server.registry_document()\n        issues = validate_registry_document(document)\n        issues.extend(validate_publisher_namespace(document, self.publisher_domain))\n        if issues:\n            raise ValueError(\"; \".join(issues))\n        discovery = server.discover(request_meta())\n        if \"error\" in discovery:\n            raise ValueError(\"runtime discovery failed\")\n        alignment_issues = validate_runtime_alignment(document, discovery)\n        if alignment_issues:\n            raise ValueError(\"; \".join(alignment_issues))\n        self.entries[server.name] = deepcopy(document)\n        self.runtime_discovery[server.name] = deepcopy(discovery)\n\n    def search(self, query: str) -> list[str]:\n        needle = query.casefold()\n        return sorted(\n            name\n            for name, entry in self.entries.items()\n            if needle in name.casefold()\n            or needle in entry[\"title\"].casefold()\n            or needle in entry[\"description\"].casefold()\n        )\n\n\ndef build_readonly_server() -> MCPServer:","sourceCodeStart":413,"sourceCodeEnd":449,"githubUrl":"https://github.com/rohitg00/ai-engineering-from-scratch/blob/39ea8a1c6d0b61f071226eff7ede4d4105fed820/phases/19-capstone-projects/13-mcp-server-with-registry/code/main.py#L413-L449","documentation":"Runtime verification failure in Registry.register: after static document validation passes, the registry probes the live server's discovery endpoints and the probe failed (endpoints unreachable, response mismatch, or serverInfo.version drift). The entry is rejected because the registry only lists servers it could verify at runtime.","triggerScenarios":"Thrown at phases/19-capstone-projects/13-mcp-server-with-registry/code/main.py:431 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Start the MCP server and confirm its discovery endpoint is reachable before registering","Align serverInfo.version with the version in server.json","Retry registration once transient network failures clear","Inspect the collected runtime_discovery report for the specific failing check"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"39ea8a1c6d0b61f071226eff7ede4d4105fed820","analyzedAt":"2026-08-26T03:13:46.626Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}