koala73/worldmonitor · error · SafeWebMcpError

Dashboard unavailable: ${boundedText(error.message, 160)} Re

Error message

Dashboard unavailable: ${boundedText(error.message, 160)} Reason: ${error.reason}.

What it means

SafeWebMcpError thrown by the WebMCP tool wrapper when a dashboard dependency failed to initialize — the underlying DashboardBindingError's message (bounded to 160 chars) and reason are embedded. It signals the dashboard subsystem backing the tool is unavailable (e.g. bootstrap failure), not that the tool's arguments were wrong.

Source

Thrown at src/services/webmcp.ts:777

        tool: name,
        ...invocation,
        ...(hooks.successMetadata?.(args, result) ?? {}),
      });
      return result;
    } catch (error) {
      const reason = signal?.aborted
        ? 'cancelled'
        : classifyInvocationError(error);
      reportWebMcpEvent(trackEvent, 'webmcp-tool-invoked', {
        tool: name,
        outcome: 'failure',
        reason,
      });
      if (signal?.aborted) throwIfWebMcpAborted(signal);
      if (error instanceof SafeWebMcpError) throw error;
      if (isWebMcpAbortError(error)) throw error;
      if (error instanceof DashboardBindingError) {
        throw new SafeWebMcpError(
          `Dashboard unavailable: ${boundedText(error.message, 160)} Reason: ${error.reason}.`,
          'unavailable',
        );
      }
      if (error instanceof DashboardPanelCatalogError) {
        throw new SafeWebMcpError(error.message, 'validation');
      }
      if (error instanceof MissionPresetCatalogError) {
        throw new SafeWebMcpError(error.message, 'validation');
      }
      throw new SafeWebMcpError(TOOL_FAILURE_MESSAGES[name]);
    }
  };
}

function enforceOutputBudget(value: unknown): void {
  const serialized = JSON.stringify(value);
  if (typeof serialized !== 'string' || serialized.length > MAX_OUTPUT_CHARS) {

View on GitHub (pinned to 9361220cc0)

Solutions

  1. Check the embedded reason to identify which dashboard subsystem failed
  2. Reload the dashboard so the binding can re-initialize
  3. Retry after the underlying bootstrap/initialization issue is resolved
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at src/services/webmcp.ts:290 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of koala73/worldmonitor@9361220cc0 (2026-08-27). Data as JSON: /api/errors/0cc7a70afd1d1d15. Report an issue: GitHub.