Menu

API reference · Organization

Modules

organizations · modules · 2 operations

GET/v1/modules

List the organization's modules and which are on

organizations.modules.list

ReadIdempotentSince 2026-11-01

Lists the modules this organization can use (Social Planner, CRM, Dashboards, SEO…) with id, name (the same one platform.me and platform.catalog use), description, category, billing_type (included, freemium, addon, premium), locked (base platform, always on), status (stable, beta, soon), enabled (on in this organization: its own or a base module), inherited (on only because the workspace has it), can_toggle_free (the caller can turn it on or off for free with organizations.modules.toggle_free) and blocked_reason when they cannot: paid (activated and charged from Settings → Modules in the app), locked, coming_soon, not_available, requires_paid_plan (a dormant Account managed by its workspace cannot turn it on until the Account is activated), own_switch (API & MCP has its own switch: an owner or admin of the workspace turns it on or off from Settings → API & MCP, with an active paid subscription), role_required (the module could be toggled, but only an owner or admin of the organization, or of the workspace that pays for this Account, can do it) or app_only (the caller could, but only from the app or MIA: API keys and apps cannot turn modules on or off yet). requires / requires_any name the modules a module depends on. Modules hidden by MB Suite for this organization are not listed. One page, no cursor. Any member can read it.

Scope
organizations:read
Permission
View the module
MCP tool
organizations_modules_listOn the full surface; on the compact one, mb_execute_operation with id: "organizations.modules.list".

Declared cost: up to 4 reads and 0 writes per call (they count against the daily quota).

Parameters

enabled_onlybooleanqueryoptional

Only the modules that are on in this organization (its own, the base ones and the inherited ones).

Default: false

Response

dataarray<object>
has_moreboolean
next_cursorstring

Errors

Example

curl "https://api.mb-suite.com/v1/modules" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl "https://api.mb-suite.com/v1/modules" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/modules/{module_id}/toggle-free

Turn a free module on or off

organizations.modules.toggle_free

WriteIdempotentSince 2026-11-01

Turns one of the organization's free (or freemium) modules on (enabled: true) or off (enabled: false), with no charge: the module appears in or disappears from the menu of everyone in the organization at once. Turning a module off keeps its data and keeps it from being turned back on automatically; turning it on again brings everything back. Email Marketing starts on its free plan. Idempotent: sending the state it already has changes nothing (changed: false). It does NOT activate paid modules (409 module_is_paid: those are bought from Settings → Modules in the app), nor the base platform modules (409 module_locked), nor modules not released yet (409 module_coming_soon), nor API & MCP, which has its own switch in Settings → API & MCP (409 module_has_own_switch, in both directions); a dormant Account (managed by its workspace) can only turn on the modules such an Account may have (409 module_requires_paid_plan). Check organizations.modules.list first and turn on the modules a module requires before it. Only an owner or admin of the organization (a direct member: the role inherited from the workspace does not count), or of the workspace that pays for this Account, can do it (403 role_required; details.scope says where the role is looked at: direct, or workspace in an Account the workspace pays for). Errors: 404 module_not_found, 404 module_not_available. Runs from the app and MIA; API keys and apps cannot change organization settings yet.

Instructions for agents

Tell the person which module was turned on or off and that it shows in (or disappears from) everyone's menu right away.

Scope
organizations:write
Permission
Edit in the module · Only owner, admin
MCP tool
organizations_modules_toggle_freeOn the full surface; on the compact one, mb_execute_operation with id: "organizations.modules.toggle_free".

Declared cost: up to 4 reads and 1 writes per call (they count against the daily quota).

Parameters

module_idstringpathrequired

The module id, as listed by organizations.modules.list (e.g. social_planner, crm, email_marketing).

enabledbooleanbodyrequired

true turns the module on, false turns it off. Sending the state it already has changes nothing.

Response

module_idstring

The module that was turned on or off.

enabledboolean

Its state now.

changedboolean

False when it already was in that state (nothing was written).

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/modules/{module_id}/toggle-free" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "enabled": true
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/modules/{module_id}/toggle-free" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "enabled": true
}'