GET https://worldmonitor.app/.
The one URL to remember
Link: header with rel values pointing at every machine-readable surface below. An agent that follows the links resolves the full picture without hardcoding a single path.
Discovery endpoints
| Endpoint | Standard | What it returns |
|---|---|---|
/.well-known/api-catalog | RFC 9727 | JSON linkset bundling every other discovery URL — start here if you want one fetch and a map |
/openapi.yaml | OpenAPI 3.1 | Single bundled spec covering every REST service (Conflict, Resilience, Market, Economic, Maritime, Aviation, Climate, …) — feed it to any code-generator |
/.well-known/mcp/server-card.json | MCP | Transport (streamableHttp), endpoint, OAuth resource, scopes, capability flags |
/.well-known/oauth-authorization-server | RFC 8414 | OAuth 2.1 authorization-server metadata (PKCE, DCR, token endpoints) |
/.well-known/oauth-protected-resource | RFC 9728 | Resource metadata for https://worldmonitor.app/mcp |
/.well-known/agent-skills/index.json | (custom) | Index of pre-packaged agent skills (fetch-country-brief, fetch-resilience-score, …) — each skill is a self-contained recipe |
/llms.txt | llmstxt.org | LLM-friendly markdown briefing — overview, capabilities, links |
/llms-full.txt | (extension) | Long-form variant covering all data layers, panels, and data sources |
/api/health | (custom) | Per-key seed status, freshness, record counts — agents can gate fetches on this |
Access-Control-Allow-Origin: *. The static discovery assets (.well-known/*, /openapi.yaml, /llms*.txt) are cached public, max-age=3600 — safe to memoize. /api/health is not cached (private, no-store) because it reflects real-time seed freshness; agents should hit it fresh whenever they need to gate on data availability.
Agent walkthroughs
Codegen a REST client for every service
Connect an MCP client to live data
/.well-known/oauth-protected-resource is also available, but its authorization_servers field is derived from the request Host header so each origin (apex, www, api) reports itself — same-origin metadata that satisfies strict MCP scanners. Use the MCP server card for the cross-origin auth-server URL the actual MCP endpoint expects.
Or skip the manual flow entirely — most clients (Claude Desktop, claude.ai, Cursor, MCP Inspector, Claude Code) accept the MCP URL directly and run discovery + OAuth automatically:
Server-side with a direct API key
If you don’t want OAuth, every REST endpoint and the MCP endpoint acceptX-WorldMonitor-Key: wm_live_...:
Drop-in agent skills
/.well-known/agent-skills/index.json lists pre-packaged skills — each is a self-contained recipe an agent can ingest without reading the OpenAPI. Useful for narrow tasks where you’d rather hand the agent “fetch a country brief” than “read 30 OpenAPI specs and figure it out.” Today’s catalog includes fetch-country-brief and fetch-resilience-score; more land over time.
Why this matters
The point isn’t novelty — RFCs 8414, 8288, 9727, 9728 are old. The point is that every WorldMonitor surface (REST, MCP, OAuth, skills, LLM briefings) is reachable from one root URL via well-known conventions, with no out-of-band setup. An agent can:- Discover the API without reading our docs.
- Authenticate without us telling it which OAuth flow we use.
- Pick the right transport (REST vs MCP) based on its own preferences.
- Stay current — when we ship a new service, the bundled
/openapi.yamland the api-catalog reflect it on the next deploy. No version pinning, no client SDK release cycle.
Related
- MCP Server — full client setup (Claude Desktop, Cursor, claude.ai, MCP Inspector, Claude Code)
- API Reference — human-readable service catalog and MCP→REST tool mapping
- Authentication — browser, API key, and OAuth modes
- Quickstart — first call in under a minute
