Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for World Monitor

Pod holds 13 of 13 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to World Monitor.

Most discussed

get_conflict_events: limit=0 returns nothing (docs say "no cap"), and large limit silently empties on output-budget overflow

Summary

get_conflict_events documents its limit parameter as:

limit: Cap each event list to at most this many items (default 30, pass 0 for no cap).

limit: 0 does not mean "no cap" — it returns zero events. And separately, a large limit returns zero events too, silently, once _outputBudgetBytes is exceeded.

Both failure modes return a well-formed, successful-looking response with empty lists, so a caller cannot distinguish "no conflicts matched" from "your reques

Read the thread · 2026-07-29 · closed · outside contributor · 0 comments

/api/mcp is unauthenticatable in the Docker self-host: the sidecar forwards its own LOCAL_API_TOKEN as the caller's Authorization header

Summary

On a self-hosted Docker install, every request to /api/mcp is rejected with -32001 Invalid or expired OAuth token, including requests carrying a valid OAuth token minted seconds earlier by /api/oauth/token. The X-WorldMonitor-Key fallback cannot be reached either. As far as I can tell the MCP endpoint has no working authentication path in this deployment mode.

The MCP implementation itself is fine. The token never reaches it.

Environment

  • `docker compose up -d --buil

Read the thread · 2026-07-23 · closed · external user · 0 comments

docs(agent): published MCP inventory alternates between 39, 40, and 41 tools

Summary

Published first-party surfaces simultaneously advertise 39, 40, and 41 MCP tools. The executable registry and its exact-count tests currently establish 41 as the source-of-truth value.

Evidence at 396efb905fadda74c4ae77080a1e72658c37aa0e

Read the thread · 2026-07-20 · closed · external user · 1 comment

Cloudflare "Block AI training bots" policy breaks core worldmonitor.app/mcp initialization

Image

Variant

worldmonitor.app (Full / Geopolitical)

Affected area

Map / Globe

Bug description

The WorldMonitor MCP server is completely failing to run, initialize, or register tools generally because requests to https://worldmonitor.app/mcp are being intercepted by Cloudflare.

Instead of completing the standard MCP handshake, server capability exchan

Read the thread · 2026-06-19 · closed · external user · 2 comments

feat: dashboard tabs — named, persistent panel workspaces

Summary

This proposes adding a tab system to the dashboard, letting users maintain multiple named panel workspaces without losing their configurations when switching between them.

Motivation

Power users often want to monitor very different data sets simultaneously — for example, a macro economics view alongside a commodities view. Today, switching panel layouts means losing the previous one. Tabs solve this cleanly within the existing panel/storage model.

What it does

  • **Multi

Read the thread · 2026-06-13 · closed · outside contributor · 2 comments

contributor-trust.yml uses pull_request_target with write permissions and an unvalidated outbound call to api.brin.sh

Summary

.github/workflows/contributor-trust.yml uses the pull_request_target trigger — which runs with write permissions to the repository — and makes an unauthenticated outbound HTTP call to api.brin.sh with the contributor's GitHub username interpolated into the URL path. The workflow's security posture depends on the availability, integrity, and continued trustworthiness of a third-party external API with no pinned endpoint, no SLA, and no response integrity verification.

Eviden

Read the thread · 2026-05-18 · closed · external user · 1 comment

MCP proxy forwards user-supplied Authorization headers to arbitrary external servers — credential relay via WorldMonitor infrastructure

Summary

The MCP proxy (api/mcp-proxy.ts) forwards user-supplied customHeaders — including arbitrary Authorization headers — to any external MCP server that passes SSRF validation. A Pro subscriber can use WorldMonitor's outbound IP reputation to make authenticated requests to third-party systems using credentials they supply, with no logging or restriction on which credential types are forwarded.

Evidence

api/mcp-proxy.ts:

let customHeaders = {};
if (rawHeaders

[Read the thread](https://github.com/koala73/worldmonitor/issues/3805) · 2026-05-18 · closed · external user · 1 comment

### Real-time streaming: SSE/WebSocket push for breaking news and alerts

## Summary

Upgrade from HTTP polling to Server-Sent Events (SSE) for real-time push of breaking news, alerts, and data updates to the browser.

## Current State

All browser-to-backend communication uses HTTP polling via SmartPollLoop:
- Telegram Intel: 60s polling
- OREF Alerts: 120s polling  
- RSS News: 15min polling
- AIS Vessels: 5min polling (WebSocket upstream exists on Railway relay, but frontend polls HTTP)

## Proposed Architecture

Railway relay ──SSE──→ Browser

  • Breaking news

Read the thread · 2026-03-07 · open · external user · 3 comments

Most recent

fix(local-api): get_world_brief's internal fetch to get-bootstrap-data lacks X-WorldMonitor-Local-Token and is rejected by the sidecar's own auth gate

Variant

worldmonitor.app (Full / Geopolitical)

Affected area

AI Insights / World Brief

Bug description

Summary

On a self-hosted install, the get_world_brief MCP tool fails with an auth error the operator cannot fix from outside. The tool makes an internal, in-process fetch to the sidecar's own bootstrap endpoint (/api/infrastructure/v1/get-bootstrap-data). That endpoint sits behind local-api-server.mjs's global auth gate, which expects X-WorldMonitor-Local-Token — a

Read the thread · 2026-08-13 · closed · external user · 0 comments

fix(compose): RELAY_SHARED_SECRET is never plumbed into the app or relay containers — fresh self-host installs crash-loop

Variant

worldmonitor.app (Full / Geopolitical)

Affected area

Other

Bug description

Summary

The self-host docs require RELAY_SHARED_SECRET in .env, but docker-compose.yml does not pass it into the environment of any service — not worldmonitor, not ais-relay. As of main HEAD, no environment: entry, env_file, or ${RELAY_SHARED_SECRET} reference exists anywhere in the compose file.

Before #3815 this failed open (the vulnerability that issue fixed). Since #381

Read the thread · 2026-08-13 · closed · external user · 0 comments

feat(economic): CII confidence scoring + anomaly detection panel

Feature area

AI / Intelligence analysis

Description

Add a CII Confidence & Anomaly Alert panel that surfaces two signals per country:

  1. Confidence score (0–100) — based on data freshness, source diversity, and country-type variance — displayed as 🟢 High / 🟡 Medium / 🔴 Low badge.

  2. Anomaly alerts — triggered when CII deviates beyond rolling 30-day statistical thresholds (±2σ):

    • 🔥 Thermal Spike — CII up 15+ pts in 24h
    • 📉 Rapid Cooling — CII down 10+ pts in 24h
    • 📈

Read the thread · 2026-06-02 · open · external user · 0 comments

Unauthenticated /health endpoint exposes auth configuration, rate-limit parameters, and heap memory to any caller

Summary

The relay's /health endpoint is declared as a public route and returns auth configuration state, Telegram polling status, OREF alert history counts, WebSocket connection state, rate-limit parameters, and heap memory — without requiring any credential. This provides free reconnaissance to anyone probing the relay.

Evidence

scripts/ais-relay.cjs lines ~9041–9095:

const isPublicRoute = pathname === '/health' || pathname === '/' || isRssRoute || ...

// Respons

[Read the thread](https://github.com/koala73/worldmonitor/issues/3802) · 2026-05-18 · closed · external user · 0 comments

### security: MCP proxy endpoint has no authentication — CORS check passes on requests with no Origin header, allowing unauthenticated callers to proxy arbitrary external MCP servers with custom headers

## Location

`api/mcp-proxy.js`, handler entry point:

```javascript
export default async function handler(req) {
  if (isDisallowedOrigin(req))
    return new Response('Forbidden', { status: 403 });
  // ... accepts GET/POST with no further auth check

api/_cors.js:

export function isDisallowedOrigin(req) {
  const origin = req.headers.get('origin');
  if (!origin) return false;  // ← no Origin = not disallowed
  return !isAllowedOrigin(origin);
}

Impact

A curl r

Read the thread · 2026-05-16 · closed · external user · 0 comments

The remaining reports are on the project's issue tracker.