{"record":{"id":"9e78354d370e4323","repo":"koala73/worldmonitor","slug":"scope-must-be-one-of-all-signals-map-panels-a","errorCode":null,"errorMessage":"scope must be one of: all, signals, map, panels, actions.","messagePattern":"scope must be one of: all, signals, map, panels, actions\\.","errorType":"validation","errorClass":"SafeWebMcpError","httpStatus":null,"severity":"error","filePath":"src/services/webmcp.ts","lineNumber":2475,"sourceCode":"            'search_dashboard accepts only query, scope, and limit.',\n            'validation',\n          );\n        }\n        if (typeof args.query !== 'string') {\n          throw new SafeWebMcpError('query must be a string.', 'validation');\n        }\n        if (args.query.length > MAX_SEARCH_QUERY_CHARS) {\n          throw new SafeWebMcpError(\n            `query must be at most ${MAX_SEARCH_QUERY_CHARS} characters.`,\n            'validation',\n          );\n        }\n        const query = args.query.trim();\n        if (!query) throw new SafeWebMcpError('query must not be empty.', 'validation');\n\n        const scope = args.scope === undefined ? 'all' : args.scope;\n        if (typeof scope !== 'string' || !DASHBOARD_SEARCH_SCOPES.has(scope as DashboardSearchScope)) {\n          throw new SafeWebMcpError(\n            'scope must be one of: all, signals, map, panels, actions.',\n            'validation',\n          );\n        }\n        const limit = args.limit === undefined ? DEFAULT_SEARCH_RESULTS : args.limit;\n        if (!Number.isInteger(limit) || Number(limit) < 1 || Number(limit) > MAX_SEARCH_RESULTS) {\n          throw new SafeWebMcpError(\n            `limit must be an integer from 1 to ${MAX_SEARCH_RESULTS}.`,\n            'validation',\n          );\n        }\n\n        return boundDashboardSearchResult(await app.searchDashboard(\n          query,\n          scope as DashboardSearchScope,\n          Number(limit),\n          extra,\n        ));","sourceCodeStart":2457,"sourceCodeEnd":2493,"githubUrl":"https://github.com/koala73/worldmonitor/blob/9361220cc013571781071f0206e4d80fd14b2f7f/src/services/webmcp.ts#L2457-L2493","documentation":"SafeWebMcpError thrown by search_dashboard when the optional scope argument is present but not one of the allowed dashboard surfaces (all, signals, map, panels, actions). The enum guard protects the downstream search router from unknown scopes.","triggerScenarios":"Thrown at src/services/webmcp.ts:772 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use one of the enumerated scopes or omit scope entirely to default to all","Update the calling client to the current scope list"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9361220cc013571781071f0206e4d80fd14b2f7f","analyzedAt":"2026-08-21T16:51:25.751Z","contentChangedAt":"2026-08-21T16:51:25.751Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}