Skip to main content
Not every memory provider supports the same features. One backend may offer full vector search and temporal queries; another may support only basic keyword lookup. OMP solves this with a capabilities system: every provider declares exactly what it supports, and your application can inspect that declaration at runtime to decide how to behave.

What are capabilities?

Capabilities are a structured declaration of the features, verbs, and limits a provider exposes. They are returned by the GET /capabilities endpoint on any OMP server, and surfaced through mem.capabilities() in the SDK. Rather than hardcoding assumptions about what a provider can do, you query capabilities once and let that answer drive your code path.

Querying capabilities

The SDK caches the capabilities response per session. Subsequent calls to mem.capabilities() return the cached result without any additional network round-trip.

Capabilities response structure

The raw JSON response from GET /capabilities looks like this:

Field reference

Top-level fields features object limits object

Capability-aware code

The recommended pattern is to query capabilities once at startup and then branch on the features you need:
You can apply the same pattern to guard any feature-dependent code path:
Because capabilities are cached per session, it is safe to call mem.capabilities() inside a helper function without worrying about repeated network overhead.