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; get_sources is the sole credential-free, daily-quota-free data tool; every other data-bearing tools/call needs a subscription API key), and a small REST escape hatch rounds each SDK out for host-relative and self-hosted use.

Find and verify the official packages

Use the exact package names in the table. npm, PyPI, and RubyGems link to worldmonitor.app in their project metadata; compare those links with the source repositories listed here. The Python package is worldmonitor-sdk. The PyPI package named worldmonitor is an unrelated project. The Go SDK is the module github.com/koala73/worldmonitor/sdk/go, with package name worldmonitor. Go modules have no registry homepage field. Verify its module path against the official repository linked above and its product links on pkg.go.dev. Go publishes versions through repository tags (sdk/go/vX.Y.Z) and the module proxy. A successful proxy lookup confirms release availability; pkg.go.dev search confirms search visibility. See how pkg.go.dev adds packages.

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

get_sources is the sole tools/call data tool that needs no credentials and consumes no daily quota; anonymous calls use a separate fail-closed ceiling of 10/minute/IP. Every other data tool needs a subscription 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 independently. npm, Python, and Ruby use OIDC trusted publishing; Go uses repository tags and the public module proxy. No long-lived registry tokens are needed (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 checks package identity, version declarations, registry metadata, and release workflow wiring.