Skip to main content
World Monitor ships official client libraries in four language ecosystems. All of them are zero-dependency, MCP-first mirrors of the worldmonitor npm CLI: the MCP server is the live, documented agent surface (tools/list is public; tools/call needs a user API key), and a small REST escape hatch rounds each SDK out for host-relative and self-hosted use. Every package sets its homepage to worldmonitor.app — that is how you (or your agent) verify it is the official SDK and not a look-alike.

Shared design

All four clients expose the same surface with language-native naming:
  • Any MCP toolcall_tool / CallTool with named arguments; the result is the unwrapped JSON-RPC result.
  • Curated helpers for the highest-traffic tools: world brief, country brief/risk, markets, conflicts, cyber, news, disasters, sanctions, forecasts, maritime.
  • Public listingslist_tools, list_prompts, list_resources need no key.
  • REST escape hatchget("/api/…") and health() against api.worldmonitor.app.
  • Configuration via constructor arguments or the WORLDMONITOR_API_KEY (alias WM_API_KEY), WORLDMONITOR_BASE_URL, and WORLDMONITOR_MCP_URL environment variables.
  • Errors split into an MCP error (JSON-RPC error object, auth failures carry a key hint) and an API error (non-2xx transport).
  • A descriptive User-Agent (worldmonitor-<lang>/<version>) — the API edge challenges generic library agents, so keep it if you fork.
Every tool accepts an optional jmespath argument for server-side projection — typically an 80–95% response-size cut.

Python

Ruby

Go

JavaScript

The npm package doubles as the command-line client and a library:

Get a key

Data calls (tools/call) need a user API key — issue one at worldmonitor.app/pro. See Authentication for how keys, OAuth, and browser sessions differ, and Rate Limits for per-plan allowances.

Releasing (maintainers)

Each SDK versions and publishes independently via OIDC trusted publishing — no long-lived registry tokens (see the CLI release runbook for the npm flow):
  • Python: bump version in sdk/python/pyproject.toml and __version__ in sdk/python/src/worldmonitor_sdk/__init__.py, then tag py-vX.Y.Z (workflow publish-python.yml).
  • Ruby: bump WorldMonitor::VERSION in sdk/ruby/lib/worldmonitor/version.rb, then tag gem-vX.Y.Z (workflow publish-ruby.yml).
  • Go: bump Version in sdk/go/worldmonitor.go, then tag sdk/go/vX.Y.Z (workflow publish-go.yml validates and warms the module proxy).
tests/sdk-packages.test.mjs guards the version sync and the worldmonitor.app homepage metadata on every package.