Skip to content

Organization API

REST endpoints for the Organization area of Lepsto.

The Organization area publishes 91 REST endpoints. Paths are relative to https://api.lepsto.com; see Authentication for the required header.

GET/governance/api/v1/auth/me

Returns the current identity: identity ID, email, and identity type (e.g. "service" for a service token, which has no email)

MCP tool: organization_auth_me

Parameters

No parameters.

Response

Returns object.

FieldTypeAlwaysDescription
email
string
•
—
identityId
string
•
—
displayName
string
•
—
identityType
string
•
—
DELETE/governance/api/v1/billing/budgets

Removes the monthly limit for extra charges of the organization that owns the product in product_id. An open pause stays until organization_billing_budget_resume; nothing restarts on its own. Returns: the budget view, as organization_billing_budgets_get. Fails when: the caller does not own the organization.

MCP tool: organization_billing_budget_clear

Parameters

No parameters.

Response

Returns object.

GET/governance/api/v1/billing/budgets

Reads the monthly limit for extra charges of the organization that owns the product in product_id, this UTC month's counted extra charges, the 50/80/100% thresholds reached, and any open budget pause. To change the limit use organization_billing_budget_set; to remove it, organization_billing_budget_clear; to end a pause, organization_billing_budget_resume. Returns: { currency, budget: { amount_minor, action, updated_at } | null, month: { period, start, end }, counted_minor, lines: { resource, amount_minor }[], thresholds: { percent, reached_at }[], pause: { paused_at, period, amount_minor, counted_minor, resumable, blocked_by } | null, suspension, projection } suspension.reason "unusual_charges" means extra charges this month are unusually high: report it in those words, never as a limit and never with an amount; the remedy is organization_billing_budget_set or contacting support. Any other unknown reason is a billing restriction. Fails when: the caller does not own the organization.

MCP tool: organization_billing_budgets_get

Parameters

No parameters.

Response

Returns object.

PUT/governance/api/v1/billing/budgets

Sets the monthly limit for extra charges of the organization that owns the product in product_id, in integer minor units, and what happens at 100%. Replaces any existing limit. Does not end an open pause; organization_billing_budget_resume does. Returns: the budget view, as organization_billing_budgets_get. Typical sequence: organization_billing_budget_set → organization_billing_budget_resume. Fails when: the caller does not own the organization, or no currency is pinned for it yet (currency_not_pinned).

MCP tool: organization_billing_budget_set

Parameters

NameInTypeRequiredDescription
amount_minorbody
integer
•
Monthly limit for extra charges, in integer minor units of the organization currency. Example: 50000 = EUR 500.00.
actionbody
stringone of: pause, alerts_only
—
At 100%: "pause" stops chargeable compute and blocks new chargeable work until Resume; "alerts_only" only notifies. Default: "pause".

Response

Returns object.

POST/governance/api/v1/billing/budgets/resume

Ends the open budget pause of the organization that owns the product in product_id, so paused services restart and new chargeable work is allowed again. Possible only when pause.resumable is true in organization_billing_budgets_get. Returns: the budget view, as organization_billing_budgets_get. Typical sequence: organization_billing_budgets_get → organization_billing_budget_set → organization_billing_budget_resume. Fails when: the caller does not own the organization, no pause is open (409 not_paused), or the pause is still blocked (409 resume_blocked, blocked_by: budget_reached | billing_paused | measure_unavailable).

MCP tool: organization_billing_budget_resume

Parameters

No parameters.

Response

Returns object.

DELETE/governance/api/v1/connectors/:id

Detaches the product in product_id from a connector. For a github-token connector this revokes it (product owner or admin): the stored token and webhook secret are deleted and the revocation is audited.

MCP tool: organization_connectors_remove

Parameters

NameInTypeRequiredDescription
idpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
success
boolean
•
—
GET/governance/api/v1/connectors/:id/attachments

Lists the products a connector is attached to (org owner/admin)

MCP tool: organization_connectors_list-attachments

Parameters

NameInTypeRequiredDescription
idpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
attachments
object[]
•
—
connectorId
string
•
—
POST/governance/api/v1/connectors/:id/attachments

Attaches products to a connector (batch, idempotent; org owner/admin)

MCP tool: organization_connectors_attach

Parameters

NameInTypeRequiredDescription
idpath
string
•
—
productIdsbody
string[]
•
—

Response

Returns object.

FieldTypeAlwaysDescription
attachments
object[]
•
—
connectorId
string
•
—
DELETE/governance/api/v1/connectors/:id/attachments/:productId

Detaches one product from a connector (org owner/admin). Last detach → dormant.

MCP tool: organization_connectors_detach

Parameters

NameInTypeRequiredDescription
idpath
string
•
—
productIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
success
boolean
•
—
DELETE/governance/api/v1/connectors/:id/org

Deletes a connector org-wide: soft-delete, remove all attachments, tear down routing (org owner/admin)

MCP tool: organization_connectors_delete

Parameters

NameInTypeRequiredDescription
idpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
success
boolean
•
—
POST/governance/api/v1/connectors/:id/requests

Requests access to an org connector for a product (any product member)

MCP tool: organization_connectors_request

Parameters

NameInTypeRequiredDescription
productIdquery
string
•
—
idpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
status
string
•
—
POST/governance/api/v1/connectors/:id/requests/:requestId/approve

Approves a connector access request, attaching the product (org owner/admin)

MCP tool: organization_connectors_approve-request

Parameters

NameInTypeRequiredDescription
idpath
string
•
—
requestIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
success
boolean
•
—
POST/governance/api/v1/connectors/:id/requests/:requestId/deny

Denies a connector access request (org owner/admin)

MCP tool: organization_connectors_deny-request

Parameters

NameInTypeRequiredDescription
idpath
string
•
—
requestIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
success
boolean
•
—
GET/governance/api/v1/connectors/available

Lists org connectors not yet attached to a product, with this product's request status

MCP tool: organization_connectors_list-available

Parameters

NameInTypeRequiredDescription
productIdquery
string
•
—

Response

Returns object[].

Item fieldTypeAlwaysDescription
id
string
•
—
status
string
•
—
provider
string
•
—
reauthAt
string | null
•
—
externalId
string
•
—
displayName
string
•
—
needsReauth
boolean
•
—
reauthReason
string | null
•
—
requestStatus
string | nullone of: pending, denied
•
—
organizationId
string
•
—
GET/governance/api/v1/connectors/clickup/install

Starts the ClickUp OAuth connect flow for a product and returns the install URL

MCP tool: organization_clickup_install

Parameters

NameInTypeRequiredDescription
sharequery
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
url
string
•
—
GET/governance/api/v1/connectors/clickup/installations

Lists the ClickUp installations connected to a product

MCP tool: organization_clickup_list-installations

Parameters

No parameters.

Response

Returns object[].

Item fieldTypeAlwaysDescription
status
string
•
—
teamId
string
•
—
teamName
string
•
—
GET/governance/api/v1/connectors/cloudflare/install

Starts the Cloudflare OAuth connect flow for a product and returns the consent URL

MCP tool: organization_cloudflare_install

Parameters

NameInTypeRequiredDescription
sharequery
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
url
string
•
—
GET/governance/api/v1/connectors/gdrive/install

Starts the Google Drive OAuth connect flow for a product and returns the consent URL

MCP tool: organization_gdrive_install

Parameters

NameInTypeRequiredDescription
sharequery
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
url
string
•
—
GET/governance/api/v1/connectors/github/install

Starts the GitHub app installation flow for a product. When the product's organization already has GitHub connections, returns them so one can be reused (attached) instead of dead-ending on GitHub's already-installed settings page. `url` is always returned — connecting an additional, different GitHub org stays possible.

MCP tool: organization_github_install

Parameters

NameInTypeRequiredDescription
sharequery
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
url
string
•
—
status
stringone of: install_required, already_connected
•
—
canAttach
boolean
•
—
connectors
object[]
•
—
GET/governance/api/v1/connectors/github/installations

Lists the GitHub app installations connected to a product

MCP tool: organization_github_list-installations

Parameters

No parameters.

Response

Returns object[].

Item fieldTypeAlwaysDescription
status
string
•
—
accountType
string
•
—
accountLogin
string
•
—
installationId
number
•
—
GET/governance/api/v1/connectors/googleads/install

Starts the Google Ads OAuth connect flow for an organization and returns the consent URL

MCP tool: organization_googleads_install

Parameters

NameInTypeRequiredDescription
organizationIdquery
string (uuid)
•
—

Response

Returns object.

FieldTypeAlwaysDescription
url
string
•
—
GET/governance/api/v1/connectors/linkedin-member/install

Starts the LinkedIn member (personal profile) OAuth connect flow for a product and returns the consent URL

MCP tool: organization_linkedin_member_install

Parameters

NameInTypeRequiredDescription
sharequery
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
url
string
•
—
GET/governance/api/v1/connectors/list

Lists active connectors in a product. A github-token row is a fine-grained GitHub token the product connected in the console: config carries repos, tokenLast4, expiresAt, permissions and autoDeploy; lastUsedAt and reauthReason (expiring, expired, revoked) are on the row. The token itself is never returned, and it is added or replaced in the console only.

MCP tool: organization_connectors_list

Parameters

NameInTypeRequiredDescription
productIdquery
string
•
—

Response

Returns object[].

Item fieldTypeAlwaysDescription
id
string
•
—
config
object
•
—
origin
stringone of: product, org
•
—
status
string
•
—
provider
string
•
—
reauthAt
string | null
•
—
createdAt
string
•
—
customerId
string | null
•
—
externalId
string
•
—
lastUsedAt
string | null
•
—
displayName
string
•
—
needsReauth
boolean
•
—
reauthReason
string | null
•
—
GET/governance/api/v1/connectors/reddit/install

Starts the Reddit OAuth connect flow for a product and returns the consent URL

MCP tool: organization_reddit_install

Parameters

NameInTypeRequiredDescription
sharequery
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
url
string
•
—
GET/governance/api/v1/connectors/x/install

Starts the X (Twitter) OAuth connect flow for a product and returns the consent URL

MCP tool: organization_x_install

Parameters

NameInTypeRequiredDescription
sharequery
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
url
string
•
—
GET/governance/api/v1/connectors/youtube/install

Starts the YouTube OAuth connect flow for a product and returns the consent URL

MCP tool: organization_youtube_install

Parameters

NameInTypeRequiredDescription
sharequery
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
url
string
•
—
POST/governance/api/v1/feedback

Submit product feedback — opens a GitHub issue in the Lessly feedback repo. Use when the user wants to report a bug, request a feature, or leave feedback about the platform.

MCP tool: organization_feedback_submit

Parameters

NameInTypeRequiredDescription
titlebody
string
•
—
detailsbody
string
•
—
pagebody
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
url
string | null
•
—
number
number | null
•
—
supportThreadId
string
—
—
GET/governance/api/v1/organizations

Lists the organizations the current user belongs to (owned or via membership).

MCP tool: organization_list

Parameters

No parameters.

Response

Returns object.

FieldTypeAlwaysDescription
organizations
object[]
•
—
POST/governance/api/v1/organizations

Creates a new organization owned by the current user and sets it as the active organization for the session.

MCP tool: organization_create

Parameters

NameInTypeRequiredDescription
namebody
string
•
—
legalNamebody
string
•
—
ownerNamebody
string
•
—
countryOfIncorporationbody
string
•
—
residencyCountrybody
string
•
—
beneficialOwnersbody
object[]
—
—
ownershipConfirmedbody
boolean
—
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
name
string
•
—
GET/governance/api/v1/organizations/:organizationId/connectors

Lists an organization's connectors with their product attachments (org owner/admin)

MCP tool: organization_connectors_list-org

Parameters

NameInTypeRequiredDescription
organizationIdpath
string
•
—

Response

Returns object[].

Item fieldTypeAlwaysDescription
id
string
•
—
config
object
•
—
status
string
•
—
provider
string
•
—
reauthAt
string | null
•
—
createdAt
string
•
—
externalId
string
•
—
lastUsedAt
string | null
•
—
displayName
string
•
—
needsReauth
boolean
•
—
reauthReason
string | null
•
—
organizationId
string
•
—
attachedProducts
object[]
•
—
GET/governance/api/v1/organizations/:organizationId/connectors/requests

Lists connector access requests for an organization (org owner/admin)

MCP tool: organization_connectors_list-requests

Parameters

NameInTypeRequiredDescription
organizationIdpath
string
•
—
statusquery
stringone of: pending, approved, denied
—
—

Response

Returns object[].

Item fieldTypeAlwaysDescription
id
string
•
—
status
string
•
—
provider
string
•
—
createdAt
string
•
—
productId
string
•
—
connectorId
string
•
—
productName
string
•
—
requestedBy
string
•
—
connectorDisplayName
string
•
—
GET/governance/api/v1/organizations/:organizationId/invitations

Lists invitations for an organization

MCP tool: organization_member_list-invitations

Parameters

NameInTypeRequiredDescription
organizationIdpath
string (uuid)
•
—

Response

Returns object.

FieldTypeAlwaysDescription
invitations
object[]
•
—
POST/governance/api/v1/organizations/:organizationId/invitations

Invite a user to an organization by email. Share the products listed in productShares when supplied.

MCP tool: organization_member_invite

Parameters

NameInTypeRequiredDescription
organizationIdpath
string (uuid)
•
—
emailbody
string (email)
•
—
rolebody
stringone of: owner, admin, member
•
—
productSharesbody
object[]
—
—

Response

Returns object.

DELETE/governance/api/v1/organizations/:organizationId/invitations/:invitationId

Revokes a pending organization invitation

MCP tool: organization_member_revoke-invitation

Parameters

NameInTypeRequiredDescription
organizationIdpath
string (uuid)
•
—
invitationIdpath
string (uuid)
•
—
GET/governance/api/v1/organizations/:organizationId/members

Lists the stored members of an organization with their roles and product grants. email is filled for org owners and admins only; it is null for plain members and when Identity has none.

MCP tool: organization_member_list

Parameters

NameInTypeRequiredDescription
organizationIdpath
string (uuid)
•
—

Response

Returns object.

FieldTypeAlwaysDescription
members
object[]
•
—
DELETE/governance/api/v1/organizations/:organizationId/members/:userId

Removes a member from an organization

MCP tool: organization_member_remove

Parameters

NameInTypeRequiredDescription
organizationIdpath
string (uuid)
•
—
userIdpath
string (uuid)
•
—
GET/governance/api/v1/organizations/:organizationId/members/:userId/products

Lists the products in an organization a member can access, with role, grant source, and expiry (management view; expired grants are shown with expiresAt).

MCP tool: organization_member_list-product-access

Parameters

NameInTypeRequiredDescription
organizationIdpath
string (uuid)
•
—
userIdpath
string (uuid)
•
—

Response

Returns object.

FieldTypeAlwaysDescription
products
object[]
•
—
POST/governance/api/v1/organizations/:organizationId/members/:userId/products

Grants an organization member explicit access to a product

MCP tool: organization_member_share-product

Parameters

NameInTypeRequiredDescription
organizationIdpath
string (uuid)
•
—
userIdpath
string (uuid)
•
—
productIdbody
string (uuid)
•
—
rolebody
string
—
—
expiresAtbody
string (date-time) | null
—
—
permissionsbody
object
—
—
roleIdbody
string (uuid)
—
—

Response

Returns object.

FieldTypeAlwaysDescription
role
string
•
—
userId
string
•
—
expiresAt
string | null
•
—
productId
string
•
—
DELETE/governance/api/v1/organizations/:organizationId/members/:userId/products/:productId

Revokes an explicit product share from an organization member

MCP tool: organization_member_unshare-product

Parameters

NameInTypeRequiredDescription
organizationIdpath
string (uuid)
•
—
userIdpath
string (uuid)
•
—
productIdpath
string (uuid)
•
—
PATCH/governance/api/v1/organizations/:organizationId/members/:userId/role

Changes an organization member's role (owner only)

MCP tool: organization_member_set-role

Parameters

NameInTypeRequiredDescription
organizationIdpath
string (uuid)
•
—
userIdpath
string (uuid)
•
—
rolebody
stringone of: admin, member
•
—

Response

Returns object.

FieldTypeAlwaysDescription
role
string
•
—
userId
string
•
—
POST/governance/api/v1/organizations/:organizationId/security/mfa/enable

Turns ON organization-wide multi-factor authentication (2FA) enforcement for an organization. Owner-only: only the owner of the organization may call it. This is deliberately one-way — disabling MFA enforcement is not available over MCP; use the organization security settings in the Product App instead. The policy is strictest-wins across all of a member’s organizations, so enabling it here forces MFA enrollment for every member of this organization at their next sign-in or token refresh.

MCP tool: organization_security_mfa_enable

Parameters

NameInTypeRequiredDescription
organizationIdpath
string (uuid)
•
—

Response

Returns object.

FieldTypeAlwaysDescription
mfaRequired
booleanone of: true
•
—
trustedDeviceAllowed
boolean
•
—
GET/governance/api/v1/organizations/:orgId/groups

Lists the groups of an organization with their members and product grants

MCP tool: organization_groups_list

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—

Response

Returns object.

FieldTypeAlwaysDescription
groups
object[]
•
—
POST/governance/api/v1/organizations/:orgId/groups

Creates an organization group (owner/admin)

MCP tool: organization_groups_create

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
namebody
string
•
—
descriptionbody
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
name
string
•
—
grants
object[]
•
—
members
object[]
•
—
createdAt
string
•
—
updatedAt
string
•
—
description
string | null
•
—
organizationId
string
•
—
DELETE/governance/api/v1/organizations/:orgId/groups/:groupId

Deletes an organization group; the access it carried is withdrawn (owner/admin)

MCP tool: organization_groups_delete

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
groupIdpath
string (uuid)
•
—
GET/governance/api/v1/organizations/:orgId/groups/:groupId

Gets a single organization group with its members and product grants

MCP tool: organization_groups_get

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
groupIdpath
string (uuid)
•
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
name
string
•
—
grants
object[]
•
—
members
object[]
•
—
createdAt
string
•
—
updatedAt
string
•
—
description
string | null
•
—
organizationId
string
•
—
PATCH/governance/api/v1/organizations/:orgId/groups/:groupId

Renames an organization group or changes its description (owner/admin)

MCP tool: organization_groups_update

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
groupIdpath
string (uuid)
•
—
namebody
string
—
—
descriptionbody
string | null
—
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
name
string
•
—
grants
object[]
•
—
members
object[]
•
—
createdAt
string
•
—
updatedAt
string
•
—
description
string | null
•
—
organizationId
string
•
—
DELETE/governance/api/v1/organizations/:orgId/groups/:groupId/grants/:productId

Removes a group's grant on a product (owner/admin)

MCP tool: organization_groups_grant-remove

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
groupIdpath
string (uuid)
•
—
productIdpath
string (uuid)
•
—
PUT/governance/api/v1/organizations/:orgId/groups/:groupId/grants/:productId

Grants a product to every member of a group at an organization role (owner/admin)

MCP tool: organization_groups_grant-set

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
groupIdpath
string (uuid)
•
—
productIdpath
string (uuid)
•
—
roleIdbody
string (uuid)
•
—
POST/governance/api/v1/organizations/:orgId/groups/:groupId/members

Adds an organization member to a group (owner/admin)

MCP tool: organization_groups_member-add

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
groupIdpath
string (uuid)
•
—
userIdbody
string (uuid)
•
—
DELETE/governance/api/v1/organizations/:orgId/groups/:groupId/members/:userId

Removes a member from a group; the access the group carried is withdrawn (owner/admin)

MCP tool: organization_groups_member-remove

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
groupIdpath
string (uuid)
•
—
userIdpath
string (uuid)
•
—
GET/governance/api/v1/organizations/:orgId/roles

Lists the reusable custom roles defined in an organization

MCP tool: organization_roles_list

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—

Response

Returns object.

FieldTypeAlwaysDescription
roles
object[]
•
—
POST/governance/api/v1/organizations/:orgId/roles

Creates a reusable organization role with allow/deny permission patterns (owner/admin)

MCP tool: organization_roles_create

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
namebody
string
•
—
allowbody
string[]
—
—
denybody
string[]
—
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
deny
string[]
•
—
name
string
•
—
type
stringone of: system, custom
•
—
allow
string[]
•
—
createdAt
string
•
—
updatedAt
string
•
—
organizationId
string
•
—
DELETE/governance/api/v1/organizations/:orgId/roles/:roleId

Deletes an organization role (owner/admin). Already-materialized product grants are unaffected.

MCP tool: organization_roles_delete

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
roleIdpath
string (uuid)
•
—
GET/governance/api/v1/organizations/:orgId/roles/:roleId

Gets a single organization role by id

MCP tool: organization_roles_get

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
roleIdpath
string (uuid)
•
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
deny
string[]
•
—
name
string
•
—
type
stringone of: system, custom
•
—
allow
string[]
•
—
createdAt
string
•
—
updatedAt
string
•
—
organizationId
string
•
—
PATCH/governance/api/v1/organizations/:orgId/roles/:roleId

Updates an organization role's name or allow/deny patterns (owner/admin)

MCP tool: organization_roles_update

Parameters

NameInTypeRequiredDescription
orgIdpath
string (uuid)
•
—
roleIdpath
string (uuid)
•
—
namebody
string
—
—
allowbody
string[]
—
—
denybody
string[]
—
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
deny
string[]
•
—
name
string
•
—
type
stringone of: system, custom
•
—
allow
string[]
•
—
createdAt
string
•
—
updatedAt
string
•
—
organizationId
string
•
—
POST/governance/api/v1/organizations/invitations/accept

Accepts an organization invitation using the invitation token

MCP tool: organization_member_accept-invite

Parameters

NameInTypeRequiredDescription
tokenbody
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
name
string
•
—
role
string
•
—
products
object[]
•
—
organizationId
string
•
—
GET/governance/api/v1/organizations/permission-catalog

Lists the full permission catalog (key, display_name, group, level, scope) derived from @McpTool handlers. Only scope="product" entries are grantable in role/point-rights pickers; scope="user" entries are informational.

MCP tool: organization_permission_catalog

Parameters

No parameters.

Response

Returns object.

FieldTypeAlwaysDescription
catalog
object[]
•
—
POST/governance/api/v1/organizations/select

Sets the active organization for the current session. Product-scoped tools are not affected: they take product_id; list products with organization_product_list. An archived organization cannot be selected: 409 organization_archived, and nothing changes.

MCP tool: organization_select

Parameters

NameInTypeRequiredDescription
organizationIdbody
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
organization
object
•
—
activeProductId
string | null
•
—
GET/governance/api/v1/products

Lists all products the current user has access to

MCP tool: organization_product_list

Parameters

NameInTypeRequiredDescription
organizationIdquery
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
products
object[]
•
—
POST/governance/api/v1/products

Creates a new product with the given name. Returns the new product; pass its id as product_id to product-scoped tools.

MCP tool: organization_product_create

Parameters

NameInTypeRequiredDescription
namebody
string
•
—
organizationIdbody
string (uuid)
—
—
regionbody
stringone of: eu
—
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
name
string
•
—
role
string
•
—
slug
string
•
—
demoAt
string | null
•
—
region
string
•
—
status
string
•
—
logoUrl
string | null
•
—
blockedAt
string | null
•
—
createdAt
string
•
—
archivedAt
string | null
•
—
description
string | null
•
—
organizationId
string
•
—
effectiveBlockedAt
string | null
•
—
effectiveArchivedAt
string | null
•
—
PATCH/governance/api/v1/products/:productId

Updates an existing product's name and/or description

MCP tool: organization_product_update

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
namebody
string
—
—
descriptionbody
string | null
—
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
name
string
•
—
role
string
•
—
slug
string
•
—
demoAt
string | null
•
—
region
string
•
—
status
string
•
—
logoUrl
string | null
•
—
blockedAt
string | null
•
—
createdAt
string
•
—
archivedAt
string | null
•
—
description
string | null
•
—
organizationId
string
•
—
effectiveBlockedAt
string | null
•
—
effectiveArchivedAt
string | null
•
—
GET/governance/api/v1/products/:productId/access

Lists who can work in a product: the explicit grants and their roles, the organization owners and admins who inherit full access (read-only here), the organization members holding no access yet, and the organization's named roles a grant can be handed at. `canManage` states whether the caller may change any of it.

MCP tool: organization_product_list-access

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
members
object[]
•
—
orgRoles
object[]
•
—
canManage
boolean
•
—
inherited
object[]
•
—
candidates
object[]
•
—
DELETE/governance/api/v1/products/:productId/access/:userId

Revokes a product grant from an organization member. Access inherited from an organization role is lifted in the organization, and the product owner is removed by transferring ownership.

MCP tool: organization_product_revoke-access

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
userIdpath
string
•
—
PUT/governance/api/v1/products/:productId/access/:userId

Grants an organization member access to a product, or changes the role they already hold, at a standard role (admin, member, viewer) or one of the organization's named roles. The target must already be an active member of the product's organization; owner is transfer-only, and access inherited from an organization role is changed in the organization.

MCP tool: organization_product_set-access

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
userIdpath
string
•
—
rolebody
stringone of: admin, member, viewer
—
—
roleIdbody
string (uuid)
—
—

Response

Returns object.

FieldTypeAlwaysDescription
role
string
•
—
userId
string
•
—
productId
string
•
—
GET/governance/api/v1/products/:productId/domains

Lists the custom domains configured in a product

MCP tool: organization_domains_list

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
domains
object[]
•
—
POST/governance/api/v1/products/:productId/domains

Adds a custom domain to a product. The domain always starts in external (self-managed DNS) mode; when the product has an active Cloudflare connector that can write DNS, the response carries a managedDns hint naming the connector and the tool that switches the domain to managed mode.

MCP tool: organization_domains_add

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
domainbody
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
mode
stringone of: external, managed
•
—
domain
string
•
—
createdAt
string
•
—
createdBy
string
•
—
productId
string
•
—
managedDns
object | null
•
—
providerConnectorId
string | null
•
—
DELETE/governance/api/v1/products/:productId/domains/:domainId

Removes a custom domain from a product

MCP tool: organization_domains_remove

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
domainIdpath
string
•
—
GET/governance/api/v1/products/:productId/domains/:domainId

Gets a single custom domain in a product by id

MCP tool: organization_domains_get

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
domainIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
mode
stringone of: external, managed
•
—
domain
string
•
—
createdAt
string
•
—
createdBy
string
•
—
productId
string
•
—
providerConnectorId
string | null
•
—
GET/governance/api/v1/products/:productId/domains/:domainId/bindings

Lists the extension bindings attached to a domain in a product

MCP tool: organization_bindings_list

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
domainIdpath
string
•
—

Response

Returns object[].

Item fieldTypeAlwaysDescription
host
string
•
—
status
stringone of: pending, active, failed
•
—
records
object[]
•
—
domainId
string
•
—
bindingId
string
•
—
instruction
string | null
•
—
statusDetail
string | null
•
—
ownerExtension
string
•
—
PUT/governance/api/v1/products/:productId/domains/:domainId/mode

Switches a custom domain between external (self-managed DNS) and managed mode. Managed mode requires providerConnectorId — the id of an active Cloudflare connector attached to the product — and hands the domain's records to the platform reconciler.

MCP tool: organization_domains_set-mode

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
domainIdpath
string
•
—
modebody
stringone of: managed, external
•
—
providerConnectorIdbody
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
mode
stringone of: external, managed
•
—
domain
string
•
—
createdAt
string
•
—
createdBy
string
•
—
productId
string
•
—
providerConnectorId
string | null
•
—
GET/governance/api/v1/products/:productId/erasure

List the erasure requests raised for this product's own end users, newest first. `organization_product_erasure_get` reads one by id. Returns: { requests: [{ id, subjectId, status, requestedAt, dueAt, acks }], next }. Page with `after` set to the previous answer's `next`; `next` is null on the last page. Requests raised by another product are never listed. Fails when: the caller is not a member of the product.

MCP tool: organization_product_erasure_list

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
Product uuid, e.g. "3f6c1e2a-9c1e-4b1a-8f0e-2a7d5c9b1e34".
statusquery
stringone of: scheduled, running, completed, partial, cancelled
—
Request status filter, e.g. "scheduled".
afterquery
string
—
Cursor from the previous page's `next`, e.g. "0192f3c1-...".
limitquery
integer
—
Page size, 1-500, default 50.

Response

Returns object.

FieldTypeAlwaysDescription
next
string | null
•
—
requests
object[]
•
—
POST/governance/api/v1/products/:productId/erasure

Erase one end user of this product, named by email address, phone number, your own user id and display name. Identifiers are hashed on arrival and no tool on this surface returns one. `organization_product_erasure_list` reads the requests back. Returns: { id, subjectType, subjectId, controller, productId, subjectRefs, requestedBy, requestedAt, dueAt, status, acks }. Typical sequence: organization_product_erasure_request → organization_product_erasure_get. Fails when: no email, phone and external id is given, or the caller does not hold owner or admin on the product. Irreversible.

MCP tool: organization_product_erasure_request

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
Product uuid, e.g. "3f6c1e2a-9c1e-4b1a-8f0e-2a7d5c9b1e34".
emailsbody
string (email)[]
—
Email addresses of the end user, 0-10, e.g. ["oleg@example.com"]. Hashed on arrival; never stored.
phonesbody
string[]
—
Phone numbers as the product stores them, 0-10, e.g. ["+7 999 123-45-67"]. Digits and a leading plus are kept; no country is inferred. Hashed on arrival; never stored.
externalIdsbody
string[]
—
Your own ids for the end user, 0-10, e.g. ["Cust-00417"]. Case is preserved; enough on their own to name the person. Hashed on arrival; never stored.
namebody
string
—
Display name of the end user, e.g. "Oleg Pravdikov". A weak match on its own; hashed on arrival.

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
acks
object[]
•
—
dueAt
string
•
—
status
stringone of: scheduled, running, completed, partial, cancelled
•
—
productId
string | null
•
—
startedAt
string
—
—
subjectId
string
•
—
controller
string
•
—
finishedAt
string
—
—
cancelledBy
object
—
—
requestedAt
string
•
—
requestedBy
object
•
—
subjectRefs
object
—
—
subjectType
stringone of: end_user
•
—
cancelReason
string
—
—
GET/governance/api/v1/products/:productId/erasure/:requestId

Read one erasure request raised for this product's own end users, with the acknowledgement each participating service has filed. `organization_product_erasure_list` enumerates them. Returns: { id, subjectType, subjectId, controller, productId, subjectRefs, requestedBy, requestedAt, dueAt, status, startedAt, finishedAt, acks }. Fails when: the request id is unknown or belongs to another product — both answer 404.

MCP tool: organization_product_erasure_get

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
Product uuid, e.g. "3f6c1e2a-9c1e-4b1a-8f0e-2a7d5c9b1e34".
requestIdpath
string
•
Erasure request uuid, e.g. "0192f3c1-4a55-7c3e-9a11-6f0b2d7e8c90".

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
acks
object[]
•
—
dueAt
string
•
—
status
stringone of: scheduled, running, completed, partial, cancelled
•
—
productId
string | null
•
—
startedAt
string
—
—
subjectId
string
•
—
controller
string
•
—
finishedAt
string
—
—
cancelledBy
object
—
—
requestedAt
string
•
—
requestedBy
object
•
—
subjectRefs
object
—
—
subjectType
stringone of: end_user
•
—
cancelReason
string
—
—
GET/governance/api/v1/products/:productId/extensions

Lists extensions available to the given product

MCP tool: organization_extensions_list-installed

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
extensions
object[]
•
—
GET/governance/api/v1/products/:productId/me

Returns the caller's own role on a product and the allow/deny grants it carries

MCP tool: organization_product_me

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
deny
string[]
•
—
role
string
•
—
allow
string[]
•
—
roleId
string | null
•
—
roleName
string | null
•
—
roleType
string | nullone of: system, custom
•
—
GET/governance/api/v1/products/:productId/members

Lists all active members of a product with their roles

MCP tool: organization_product_list-members

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
members
object[]
•
—
PUT/governance/api/v1/products/:productId/members/:memberId/role

Assigns a role to a member of a product

MCP tool: organization_members_assign-role

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
memberIdpath
string
•
—
roleIdbody
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
role
string
•
—
roleId
string | null
•
—
status
string
•
—
userId
string | null
•
—
agentId
string | null
•
—
joinedAt
string | null
•
—
expiresAt
string | null
•
—
invitedAt
string
•
—
invitedBy
string | null
•
—
productId
string
•
—
grantSource
string
•
—
permissions
object
•
—
GET/governance/api/v1/products/:productId/principal-grants

Lists the delegated principals of a product with the tools they hold, are waiting on, and have lost a sponsor for (product owner/admin)

MCP tool: organization_principal-grants_list

Parameters

NameInTypeRequiredDescription
productIdpath
string (uuid)
•
—
principalKindquery
stringone of: workflow
—
—

Response

Returns object.

FieldTypeAlwaysDescription
principals
object[]
•
—
POST/governance/api/v1/products/:productId/principal-grants/approve

Sponsors tools for a delegated principal; the approver becomes the sponsor and may only approve what their own role covers, the rest come back in notSponsorable (product owner/admin)

MCP tool: organization_principal-grants_approve

Parameters

NameInTypeRequiredDescription
productIdpath
string (uuid)
•
—
principalKindbody
stringone of: workflow
•
—
principalIdbody
string
•
—
toolsbody
string[]
•
—

Response

Returns object.

FieldTypeAlwaysDescription
grants
object[]
•
—
pending
string[]
•
—
effective
string[]
•
—
productId
string
•
—
principalId
string
•
—
needsSponsor
string[]
•
—
principalKind
stringone of: workflow
•
—
notSponsorable
string[]
•
—
POST/governance/api/v1/products/:productId/principal-grants/revoke

Takes tools away from a delegated principal; omit tools to take away everything it holds (product owner/admin)

MCP tool: organization_principal-grants_revoke

Parameters

NameInTypeRequiredDescription
productIdpath
string (uuid)
•
—
principalKindbody
stringone of: workflow
•
—
principalIdbody
string
•
—
toolsbody
string[]
—
—
reasonbody
string
—
—

Response

Returns object.

FieldTypeAlwaysDescription
grants
object[]
•
—
pending
string[]
•
—
effective
string[]
•
—
productId
string
•
—
principalId
string
•
—
needsSponsor
string[]
•
—
principalKind
stringone of: workflow
•
—
GET/governance/api/v1/products/:productId/public-keys

Lists a product's public keys. Never returns key material.

MCP tool: organization_public-keys_list

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
keys
object[]
•
—
POST/governance/api/v1/products/:productId/public-keys

Creates a public key for a product. The plaintext key is returned only in this response and cannot be retrieved again.

MCP tool: organization_public-keys_create

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
namebody
string
•
—
scopebody
string | object[]one of: *
•
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
key
string
•
—
name
string
•
—
scope
string | object[]one of: *
•
—
imported
boolean
•
—
createdAt
string
•
—
createdBy
string
•
—
keyPrefix
string
•
—
revokedAt
string | null
•
—
POST/governance/api/v1/products/:productId/public-keys/:id/revoke

Revokes a public key. Idempotent; revocation is permanent.

MCP tool: organization_public-keys_revoke

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
idpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
name
string
•
—
scope
string | object[]one of: *
•
—
imported
boolean
•
—
createdAt
string
•
—
createdBy
string
•
—
keyPrefix
string
•
—
revokedAt
string | null
•
—
PUT/governance/api/v1/products/:productId/public-keys/:id/scope

Replaces the scope of an active public key.

MCP tool: organization_public-keys_update-scope

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—
idpath
string
•
—
scopebody
string | object[]one of: *
•
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
name
string
•
—
scope
string | object[]one of: *
•
—
imported
boolean
•
—
createdAt
string
•
—
createdBy
string
•
—
keyPrefix
string
•
—
revokedAt
string | null
•
—
GET/governance/api/v1/products/:productId/public-routes

Lists the public routes declared by the product's toolkits, with each route's access mode and public URL.

MCP tool: organization_public-routes_list

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
routes
object[]
•
—
GET/governance/api/v1/products/:productId/roles

Lists the roles assignable to a product member (system templates + product custom roles)

MCP tool: organization_product_list-roles

Parameters

NameInTypeRequiredDescription
productIdpath
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
roles
object[]
•
—
POST/governance/api/v1/products/select

Sets the active product of the Workspace console session and reconciles the active organization to that product's organization. Console only: agents do not need it. Product-scoped tools take product_id; list products with organization_product_list.

MCP tool: organization_product_select

Parameters

NameInTypeRequiredDescription
productIdbody
string
•
—

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
—
name
string
•
—
slug
string
•
—
GET/governance/api/v1/support/threads

List the support threads of the caller's organization, most recently updated first — every member sees every one of them. Threads the caller opened personally before support became organization-wide are included and flagged `legacy`. Use when the user asks about their organization's support requests or tickets.

MCP tool: organization_support_threads_list

Parameters

No parameters.

Response

Returns object.

FieldTypeAlwaysDescription
threads
object[]
•
The threads, most recently updated first.
POST/governance/api/v1/support/threads

Open a support thread owned by the caller's organization — the body becomes the first message, authored by the caller. Every colleague can then read and answer it. Use when the user wants to contact Lessly support. Attach screenshots or logs by passing them in `attachments` as base64 — up to 10 files, each up to 25 MiB decoded; they travel in this same call and need no upload step of their own. If any file is refused the thread is opened but the message is not written, and the error names the file. A first message of files and no text is legal — omit `body` entirely; the title is always required.

MCP tool: organization_support_thread_create

Parameters

NameInTypeRequiredDescription
titlebody
string
•
Subject of the request, 1-500 characters.
bodybody
string
—
The first message, 1-50000 characters. May be OMITTED only on a message that carries at least one attachment — a thread opened on screenshots alone is a support request. Omit the field entirely; an empty string is refused. The title is never optional.
attachmentsbody
object[]
—
Files to attach, base64-encoded. Up to 10 per message, each up to 26214400 bytes (25 MiB) decoded, and at most 26214400 bytes decoded across all of them in one call. Screenshots and logs are the intended use; the whole call travels as one request.

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
Thread uuid.
title
string
•
Subject of the request, e.g. "Billing export fails".
legacy
boolean
•
True for a PERSONAL thread opened before support became organization-owned. Such threads stay visible to their own author alone and cannot be migrated.
status
string
•
The status NAME the product chose, e.g. "In progress" — display text, not an id.
category
stringone of: open, pending, resolved, closed
•
The lifecycle bucket behind that status.
messages
object[]
•
The whole conversation, oldest message first.
createdAt
string
•
When the thread was opened, ISO 8601 UTC.
openedByName
string
•
Name of the colleague who opened the thread. Never null — an unresolvable opener falls back to a placeholder.
lastMessageAt
string
•
When the thread last moved, ISO 8601 UTC. A thread with no replies reports its own creation.
lastMessagePreview
string | null
•
First 140 characters of the last message, or null when the thread has none.
GET/governance/api/v1/support/threads/:id

Read one support thread of the caller's organization with its full conversation, each message named after its own author. A thread of another organization — or another person's legacy personal thread — is reported as not found.

MCP tool: organization_support_thread_get

Parameters

NameInTypeRequiredDescription
idpath
string
•
Thread uuid, from `organization_support_threads_list`.

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
Thread uuid.
title
string
•
Subject of the request, e.g. "Billing export fails".
legacy
boolean
•
True for a PERSONAL thread opened before support became organization-owned. Such threads stay visible to their own author alone and cannot be migrated.
status
string
•
The status NAME the product chose, e.g. "In progress" — display text, not an id.
category
stringone of: open, pending, resolved, closed
•
The lifecycle bucket behind that status.
messages
object[]
•
The whole conversation, oldest message first.
createdAt
string
•
When the thread was opened, ISO 8601 UTC.
openedByName
string
•
Name of the colleague who opened the thread. Never null — an unresolvable opener falls back to a placeholder.
lastMessageAt
string
•
When the thread last moved, ISO 8601 UTC. A thread with no replies reports its own creation.
lastMessagePreview
string | null
•
First 140 characters of the last message, or null when the thread has none.
POST/governance/api/v1/support/threads/:id/messages

Reply in any support thread of the caller's organization, as the caller. A thread of another organization is reported as not found. Attach screenshots or logs by passing them in `attachments` as base64 — up to 10 files, each up to 25 MiB decoded; they travel in this same call and need no upload step of their own. If any file is refused the reply is not posted at all, and the error names the file and what went wrong with it. A reply of files and no text is legal — omit `body` entirely.

MCP tool: organization_support_thread_reply

Parameters

NameInTypeRequiredDescription
idpath
string
•
Thread uuid to reply in.
bodybody
string
—
The reply text, 1-50000 characters. May be OMITTED only on a message that carries at least one attachment — a reply of files alone is a reply. Omit the field entirely; an empty string is refused.
attachmentsbody
object[]
—
Files to attach, base64-encoded. Up to 10 per message, each up to 26214400 bytes (25 MiB) decoded, and at most 26214400 bytes decoded across all of them in one call. Screenshots and logs are the intended use; the whole call travels as one request.

Response

Returns object.

FieldTypeAlwaysDescription
id
string
•
Thread uuid.
title
string
•
Subject of the request, e.g. "Billing export fails".
legacy
boolean
•
True for a PERSONAL thread opened before support became organization-owned. Such threads stay visible to their own author alone and cannot be migrated.
status
string
•
The status NAME the product chose, e.g. "In progress" — display text, not an id.
category
stringone of: open, pending, resolved, closed
•
The lifecycle bucket behind that status.
messages
object[]
•
The whole conversation, oldest message first.
createdAt
string
•
When the thread was opened, ISO 8601 UTC.
openedByName
string
•
Name of the colleague who opened the thread. Never null — an unresolvable opener falls back to a placeholder.
lastMessageAt
string
•
When the thread last moved, ISO 8601 UTC. A thread with no replies reports its own creation.
lastMessagePreview
string | null
•
First 140 characters of the last message, or null when the thread has none.
Was this page helpful?
Esc

Start typing to search the docs.

↑↓navigate↵select