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.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
amount_minor | body | integer
| • | Monthly limit for extra charges, in integer minor units of the organization currency. Example: 50000 = EUR 500.00. |
action | body | 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
| Name | In | Type | Required | Description |
|---|
id | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
id | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
id | path | string
| • | — |
productIds | body | string[]
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
id | path | string
| • | — |
productId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
id | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | query | string
| • | — |
id | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
id | path | string
| • | — |
requestId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
id | path | string
| • | — |
requestId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | query | string
| • | — |
Response
Returns object[].
| Item field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
share | query | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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 field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
share | query | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
share | query | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
share | query | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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 field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
organizationId | query | string (uuid)
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
share | query | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | query | string
| • | — |
Response
Returns object[].
| Item field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
share | query | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
share | query | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
share | query | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
title | body | string
| • | — |
details | body | string
| • | — |
page | body | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
name | body | string
| • | — |
legalName | body | string
| • | — |
ownerName | body | string
| • | — |
countryOfIncorporation | body | string
| • | — |
residencyCountry | body | string
| • | — |
beneficialOwners | body | object[]
| — | — |
ownershipConfirmed | body | boolean
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
organizationId | path | string
| • | — |
Response
Returns object[].
| Item field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
organizationId | path | string
| • | — |
status | query | stringone of: pending, approved, denied
| — | — |
Response
Returns object[].
| Item field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
organizationId | path | string (uuid)
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
organizationId | path | string (uuid)
| • | — |
email | body | string (email)
| • | — |
role | body | stringone of: owner, admin, member
| • | — |
productShares | body | object[]
| — | — |
Response
Returns object.
DELETE/governance/api/v1/organizations/:organizationId/invitations/:invitationId
Revokes a pending organization invitation
MCP tool: organization_member_revoke-invitation
Parameters
| Name | In | Type | Required | Description |
|---|
organizationId | path | string (uuid)
| • | — |
invitationId | path | 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
| Name | In | Type | Required | Description |
|---|
organizationId | path | string (uuid)
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
members | object[]
| • | — |
DELETE/governance/api/v1/organizations/:organizationId/members/:userId
Removes a member from an organization
MCP tool: organization_member_remove
Parameters
| Name | In | Type | Required | Description |
|---|
organizationId | path | string (uuid)
| • | — |
userId | path | 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
| Name | In | Type | Required | Description |
|---|
organizationId | path | string (uuid)
| • | — |
userId | path | string (uuid)
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
organizationId | path | string (uuid)
| • | — |
userId | path | string (uuid)
| • | — |
productId | body | string (uuid)
| • | — |
role | body | string
| — | — |
expiresAt | body | string (date-time) | null
| — | — |
permissions | body | object
| — | — |
roleId | body | string (uuid)
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
organizationId | path | string (uuid)
| • | — |
userId | path | string (uuid)
| • | — |
productId | path | 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
| Name | In | Type | Required | Description |
|---|
organizationId | path | string (uuid)
| • | — |
userId | path | string (uuid)
| • | — |
role | body | stringone of: admin, member
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
organizationId | path | string (uuid)
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
groups | object[]
| • | — |
POST/governance/api/v1/organizations/:orgId/groups
Creates an organization group (owner/admin)
MCP tool: organization_groups_create
Parameters
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
name | body | string
| • | — |
description | body | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
groupId | path | 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
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
groupId | path | string (uuid)
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
groupId | path | string (uuid)
| • | — |
name | body | string
| — | — |
description | body | string | null
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
groupId | path | string (uuid)
| • | — |
productId | path | 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
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
groupId | path | string (uuid)
| • | — |
productId | path | string (uuid)
| • | — |
roleId | body | 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
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
groupId | path | string (uuid)
| • | — |
userId | body | 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
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
groupId | path | string (uuid)
| • | — |
userId | path | string (uuid)
| • | — |
GET/governance/api/v1/organizations/:orgId/roles
Lists the reusable custom roles defined in an organization
MCP tool: organization_roles_list
Parameters
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
name | body | string
| • | — |
allow | body | string[]
| — | — |
deny | body | string[]
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
roleId | path | string (uuid)
| • | — |
GET/governance/api/v1/organizations/:orgId/roles/:roleId
Gets a single organization role by id
MCP tool: organization_roles_get
Parameters
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
roleId | path | string (uuid)
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
orgId | path | string (uuid)
| • | — |
roleId | path | string (uuid)
| • | — |
name | body | string
| — | — |
allow | body | string[]
| — | — |
deny | body | string[]
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
token | body | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
organizationId | body | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
organizationId | query | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
name | body | string
| • | — |
organizationId | body | string (uuid)
| — | — |
region | body | stringone of: eu
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
name | body | string
| — | — |
description | body | string | null
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
userId | path | 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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
userId | path | string
| • | — |
role | body | stringone of: admin, member, viewer
| — | — |
roleId | body | string (uuid)
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
domain | body | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
domainId | path | 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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
domainId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
domainId | path | string
| • | — |
Response
Returns object[].
| Item field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
domainId | path | string
| • | — |
mode | body | stringone of: managed, external
| • | — |
providerConnectorId | body | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | Product uuid, e.g. "3f6c1e2a-9c1e-4b1a-8f0e-2a7d5c9b1e34". |
status | query | stringone of: scheduled, running, completed, partial, cancelled
| — | Request status filter, e.g. "scheduled". |
after | query | string
| — | Cursor from the previous page's `next`, e.g. "0192f3c1-...". |
limit | query | integer
| — | Page size, 1-500, default 50. |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | Product uuid, e.g. "3f6c1e2a-9c1e-4b1a-8f0e-2a7d5c9b1e34". |
emails | body | string (email)[]
| — | Email addresses of the end user, 0-10, e.g. ["oleg@example.com"]. Hashed on arrival; never stored. |
phones | body | 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. |
externalIds | body | 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. |
name | body | string
| — | Display name of the end user, e.g. "Oleg Pravdikov". A weak match on its own; hashed on arrival. |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | Product uuid, e.g. "3f6c1e2a-9c1e-4b1a-8f0e-2a7d5c9b1e34". |
requestId | path | string
| • | Erasure request uuid, e.g. "0192f3c1-4a55-7c3e-9a11-6f0b2d7e8c90". |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
memberId | path | string
| • | — |
roleId | body | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string (uuid)
| • | — |
principalKind | query | stringone of: workflow
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string (uuid)
| • | — |
principalKind | body | stringone of: workflow
| • | — |
principalId | body | string
| • | — |
tools | body | string[]
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string (uuid)
| • | — |
principalKind | body | stringone of: workflow
| • | — |
principalId | body | string
| • | — |
tools | body | string[]
| — | — |
reason | body | string
| — | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
name | body | string
| • | — |
scope | body | string | object[]one of: *
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
id | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
id | path | string
| • | — |
scope | body | string | object[]one of: *
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | path | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
productId | body | string
| • | — |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
title | body | string
| • | Subject of the request, 1-500 characters. |
body | body | 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. |
attachments | body | 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.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
id | path | string
| • | Thread uuid, from `organization_support_threads_list`. |
Response
Returns object.
| Field | Type | Always | Description |
|---|
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
| Name | In | Type | Required | Description |
|---|
id | path | string
| • | Thread uuid to reply in. |
body | body | 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. |
attachments | body | 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.
| Field | Type | Always | Description |
|---|
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?Thanks for your feedback!