{"record":{"id":"6ff4cdd5d688713b","repo":"koala73/worldmonitor","slug":"tools-list-error-listdata-error-message","errorCode":null,"errorMessage":"tools/list error: ${listData.error.message}","messagePattern":"tools/list error: (.+?)","errorType":"exception","errorClass":null,"httpStatus":422,"severity":"error","filePath":"api/mcp-proxy.ts","lineNumber":325,"sourceCode":"  if (!response.ok) {\n    throw new Error(`DNS ${recordType} lookup failed: HTTP ${response.status}`);\n  }\n  const data = await response.json();\n  if (data?.Status !== 0) {\n    throw new Error(`DNS ${recordType} lookup failed: status ${data?.Status}`);\n  }\n  const expectedType = recordType === 'A' ? 1 : 28;\n  return (Array.isArray(data?.Answer) ? data.Answer : [])\n    .filter(answer => answer?.type === expectedType && typeof answer?.data === 'string')\n    .map(answer => answer.data);\n}\n\nasync function defaultResolveHostname(hostname, signal) {\n  const resolveHostnameForTest = getResolveHostnameForTest();\n  if (resolveHostnameForTest) return resolveHostnameForTest(hostname, signal);\n  const records = await Promise.all([\n    resolveDnsJson(hostname, 'A', signal),\n    resolveDnsJson(hostname, 'AAAA', signal),\n  ]);\n  return records.flat();\n}\n\nasync function assertServerUrlSafe(url, signal) {\n  signal?.throwIfAborted();\n  const hostname = url.hostname.toLowerCase();\n  if (BLOCKED_HOSTNAMES.has(hostname)) {\n    throw new McpProxySsrfError('serverUrl hostname is blocked');\n  }\n  if (isBlockedResolvedAddress(hostname)) {\n    throwBlockedAddress(hostname);\n  }\n\n  let resolvedAddresses;\n  try {\n    resolvedAddresses = await defaultResolveHostname(hostname, signal);\n  } catch (error) {","sourceCodeStart":307,"sourceCodeEnd":343,"githubUrl":"https://github.com/koala73/worldmonitor/blob/e586b8b4b80f595aa7ece295eec10d76f2921240/api/mcp-proxy.ts#L307-L343","documentation":"Thrown by mcpListTools when the tools/list JSON-RPC call returned HTTP 2xx but the response payload contained a JSON-RPC error object. The MCP server explicitly reported a protocol-level error while enumerating tools (e.g. unknown method, internal server error in the handler).","triggerScenarios":"Thrown at api/mcp-proxy.ts:322 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the embedded error.message — it is the upstream server's JSON-RPC error text","Verify the server supports the tools/list method in its advertised capabilities","Restart or reconfigure the MCP server if it reports an internal tool listing failure"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e586b8b4b80f595aa7ece295eec10d76f2921240","analyzedAt":"2026-08-21T16:51:25.751Z","contentChangedAt":"2026-08-21T16:51:25.751Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}