{"record":{"id":"1411d9eb0be7f40a","repo":"koala73/worldmonitor","slug":"search-dashboard-accepts-only-query-scope-and-li","errorCode":null,"errorMessage":"search_dashboard accepts only query, scope, and limit.","messagePattern":"search_dashboard accepts only query, scope, and limit\\.","errorType":"validation","errorClass":"SafeWebMcpError","httpStatus":null,"severity":"error","filePath":"src/services/webmcp.ts","lineNumber":2456,"sourceCode":"            description: 'Optional dashboard surface to search.',\n            enum: [...DASHBOARD_SEARCH_SCOPES],\n            default: 'all',\n          },\n          limit: {\n            type: 'integer',\n            description: 'Maximum number of concise results to return.',\n            minimum: 1,\n            maximum: MAX_SEARCH_RESULTS,\n            default: DEFAULT_SEARCH_RESULTS,\n          },\n        },\n        required: ['query'],\n        additionalProperties: false,\n      },\n      annotations: { readOnlyHint: true, untrustedContentHint: true },\n      execute: withInvocationLogging(WEBMCP_SPA_TOOL.searchDashboard, async (args, extra) => {\n        if (!hasOnlyOwnKeys(args, ['query', 'scope', 'limit'])) {\n          throw new SafeWebMcpError(\n            '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)) {","sourceCodeStart":2438,"sourceCodeEnd":2474,"githubUrl":"https://github.com/koala73/worldmonitor/blob/9361220cc013571781071f0206e4d80fd14b2f7f/src/services/webmcp.ts#L2438-L2474","documentation":"Validation error text for the search_dashboard WebMCP tool's argument guard: the execute wrapper checks that args contains only the keys query, scope, and limit. Any additional property (or a misspelled key) is rejected up front with this message before per-field validation runs, mirroring the schema's additionalProperties: false.","triggerScenarios":"Thrown at src/services/webmcp.ts:753 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Send only the supported arguments: query (string), scope, and limit. Remove any extra properties from the tool arguments object.","If a new parameter seems necessary, extend the tool's schema and validation in src/services/webmcp.ts rather than bypassing the check."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9361220cc013571781071f0206e4d80fd14b2f7f","analyzedAt":"2026-08-27T19:53:08.521Z","contentChangedAt":"2026-08-27T19:53:08.521Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}