Menu

Workspaces

The workspaces a key may use, and their members.

Who am I#

GET/mescope workspaces:readMCP get_me

The account behind the key, its plan, and the key's scopes. A cheap way to test a key.

Request#

Shell
curl "https://api.lifebutler.io/v1/me" \
  -H "Authorization: Bearer $LIFEBUTLER_KEY"

Response 200#

FieldTypeDescription
userIdstring
planstringpro or premium.
keyobject
key.idstring
key.scopesarray of string
key.expiresAtstring or null
sharedWorkspaceLimitnumberShared workspaces your plan allows for the API (the personal one is always included).
JSON
{
  "userId": "Ab3Cd5Ef7G",
  "plan": "string",
  "key": {
    "id": "Ab3Cd5Ef7G",
    "scopes": [
      "string"
    ],
    "expiresAt": "2026-11-20T19:30:00+01:00"
  },
  "sharedWorkspaceLimit": 1
}

List workspaces#

GET/workspacesscope workspaces:readMCP list_workspaces

The workspaces this key was granted, each with a status. Only workspaces where you are owner or admin can be used; the ids are what every other call takes as workspaceId.

Request#

Shell
curl "https://api.lifebutler.io/v1/workspaces" \
  -H "Authorization: Bearer $LIFEBUTLER_KEY"

Response 200#

FieldTypeDescription
dataarray of Workspace
data[].idstring
data[].namestringEmpty for the personal workspace.
data[].typestringpersonal, family, flat, friends, club, trip or company.
data[].personalboolean
data[].rolestring or nullYour role: owner or admin (null when not accessible).
data[].aiEnabledbooleanAI features (document analysis, smart search, butler) are turned on by the workspace admins.
data[].statusactive \admin_required \workspace_limit \not_foundactive, or why this key can't use the workspace right now.
JSON
{
  "data": [
    {
      "id": "Ab3Cd5Ef7G",
      "name": "Einkauf",
      "type": "string",
      "personal": false,
      "role": "string",
      "aiEnabled": false,
      "status": "active"
    }
  ]
}

Get a workspace#

GET/workspaces/{workspaceId}scope workspaces:readMCP get_workspace

Name, type and whether AI features are on.

Path#

FieldTypeDescription
workspaceIdstringWorkspace id (from list_workspaces).

Request#

Shell
curl "https://api.lifebutler.io/v1/workspaces/f8Hn3wQz0a" \
  -H "Authorization: Bearer $LIFEBUTLER_KEY"

Response 200#

FieldTypeDescription
idstring
namestringEmpty for the personal workspace.
typestringpersonal, family, flat, friends, club, trip or company.
personalboolean
rolestring or nullYour role: owner or admin (null when not accessible).
aiEnabledbooleanAI features (document analysis, smart search, butler) are turned on by the workspace admins.
statusactive \admin_required \workspace_limit \not_foundactive, or why this key can't use the workspace right now.
JSON
{
  "id": "Ab3Cd5Ef7G",
  "name": "Einkauf",
  "type": "string",
  "personal": false,
  "role": "string",
  "aiEnabled": false,
  "status": "active"
}

List members#

GET/workspaces/{workspaceId}/membersscope workspaces:readMCP list_members

Everyone in the workspace, including members without an account. Use the ids to assign tasks and invite to appointments.

Path#

FieldTypeDescription
workspaceIdstringWorkspace id (from list_workspaces).

Request#

Shell
curl "https://api.lifebutler.io/v1/workspaces/f8Hn3wQz0a/members" \
  -H "Authorization: Bearer $LIFEBUTLER_KEY"

Response 200#

FieldTypeDescription
dataarray of Member
data[].idstringUse in attendeeIds / assigneeIds.
data[].namestring
data[].rolestringowner, admin, adult, child or guest.
data[].hasAccountbooleanfalse for members without an account (kids, pets, grandparents).
JSON
{
  "data": [
    {
      "id": "Ab3Cd5Ef7G",
      "name": "Einkauf",
      "role": "string",
      "hasAccount": false
    }
  ]
}