Skip to the documentation
MCP server

Your account

The workspaces, email, photo, username, apps and invitations of the person.

Your account tools

ToolWhat it does
listAccountWorkspacesEvery workspace your account can open, owned or joined, with the one the app opens for you and the one these tools act on.
switchAppWorkspaceChoose the workspace the app opens for you. These tools keep acting on the workspace they act on now.
createWorkspaceCreate a workspace you own, on the Free plan, which the app opens for you from then on. An account can own one Free workspace.
deleteWorkspaceDelete the workspace these tools act on, with everything in it, once confirm names it. Only its owner may, and never the first workspace an account made. In the app’s chat it always asks first.
getNotificationSettingsWhich kinds of email OpenEmail sends you, and the workspaces muted on your phone.
setEmailNotificationTurn activity or product email on or off. account and billing email are always on.
setWorkspacePushMutedMute or unmute the phone notifications of one workspace.
setProfilePhotoSet your profile photo from an image in base64.
removeProfilePhotoRemove your profile photo. In the app’s chat it always asks first.
getUsernameYour username, whether you chose it, and the free address it gives you.
checkUsernameWhether you could choose a username, and why not when you could not.
chooseUsernameChoose your username for good, since it never changes once chosen. In the app’s chat it always asks first.
listConnectedAppsThe apps you connected, with what each may reach and until when.
revokeConnectedAppRemove a connected app, so it has to ask again. In the app’s chat it always asks first.
listReceivedInvitationsThe invitations to join a workspace that wait for you. listInvitations is the one for the invitations a workspace sent.
acceptInvitationJoin the workspace of an invitation, and with activate make it the one the app opens.
declineInvitationTurn an invitation down, for good. In the app’s chat it always asks first.

These tools act on the person who connected the client, never on anyone else, and in the app’s chat on you. Reading needs account:read and every change needs account:write, which no role limits, so a client a member connected reaches that member’s own account too.

Three things stay in the app: changing what a connected app may reach, letting one make changes without a verification code, and deleting the whole account.

The workspace tools never move the other tools: switchAppWorkspace changes what the app opens, and setActiveConnection what the tools act on.

Some tools on this server make a change the REST API guards with a verification code, and ask for the same code. Until the client has verified a code in the last 60 minutes, or the person has chosen Allow changes for 60 minutes on it in Account → Connected apps, such a tool answers with a result that starts Refused (step_up_required): and changes nothing. emptyAudience never asks for a code. The API Authentication page lists every tool that asks, and shows how to ask for a code and verify it.

Reference

listAccountWorkspaces

Scopesaccount:readThe app's assistant runs it without askingToolkitaccount

Every workspace your OpenEmail account can open, the ones you own and the ones you joined, as the workspace switcher of the app lists them, with the one the app opens for you. It is about your account, not this connection: getConnections lists what these tools can act on, and switchAppWorkspace changes only what the app opens, never what these tools act on.

Inputs

Takes no input.

Also available in

API
GET /workspacesGET /workspaces/active
SDK
workspaces.list()workspaces.getActive()

switchAppWorkspace

Scopesaccount:writeThe app's assistant asks first unless you asked for itToolkitaccount

Choose which workspace the OpenEmail app opens for you, as the workspace switcher does. Pass a workspace id from listAccountWorkspaces. It changes the app only: these tools keep acting on the workspace they act on now.

Inputs

workspaceIdstringRequired
1 to 128 characters

Also available in

API
PUT /workspaces/active
SDK
workspaces.setActive()

createWorkspace

Scopesaccount:writeThe app's assistant asks first unless you asked for itToolkitaccount

Create a new workspace that you own, on the Free plan, and make it the one the app opens for you, as creating one in the app does. An account can own one Free workspace, so while you own one this is refused until you upgrade it.

Inputs

namestringRequired
1 to 64 characters

Also available in

API
POST /workspaces
SDK
workspaces.create()

deleteWorkspace

Scopesaccount:writeThe app's assistant always asks firstToolkitaccount

Delete the workspace these tools act on, with its domains, addresses, mail and members, and cancel its plan. It cannot be undone. Only its owner may do it, never through an app limited to some addresses, and your first workspace can never be deleted. confirm has to be the name of the workspace, as listAccountWorkspaces shows it.

Inputs

confirmstringRequired

The name of the workspace being deleted, typed out.

1 to 256 characters

Also available in

API
DELETE /workspaces/{id}
SDK
workspaces.delete()

getNotificationSettings

Scopesaccount:readThe app's assistant runs it without askingToolkitaccount

Which kinds of email OpenEmail sends you, as Account, Notifications shows them, and the workspaces whose notifications are muted on your phone. Account and billing email are always on.

Inputs

Takes no input.

Also available in

API
GET /account/notifications
SDK
account.getNotifications()

setEmailNotification

Scopesaccount:writeThe app's assistant asks first unless you asked for itToolkitaccount

Turn one kind of email from OpenEmail on or off for you. activity and product can be turned off; account and billing cannot.

Inputs

categorystringRequired
One of"account""billing""activity""product"
enabledbooleanRequired

Also available in

API
PUT /account/notifications/email/{category}
SDK
account.setEmailNotification()

setWorkspacePushMuted

Scopesaccount:writeThe app's assistant asks first unless you asked for itToolkitaccount

Mute or unmute the notifications of one workspace on your phone, on every phone you signed in on. Pass a workspace id from listAccountWorkspaces.

Inputs

workspaceIdstringRequired
1 to 128 characters
mutedbooleanRequired

Also available in

API
PUT /account/notifications/push/{workspaceId}
SDK
account.setPushMuted()

setProfilePhoto

Scopesaccount:writeThe app's assistant asks first unless you asked for itToolkitaccount

Set your profile photo, replacing any there was, as Account, Profile does. Pass the picture in base64 as image, with its type as contentType: image/png, image/jpeg, image/webp, image/gif, up to 5 MB. It is fitted into a 512 pixel square.

Inputs

imagestringRequired

The image in base64, or as a data: URL.

1 to 7340032 characters
contentTypestringRequired

The type of the image: image/png, image/jpeg, image/webp, image/gif.

1 to 100 characters

Also available in

API
PUT /account/photo
SDK
account.setPhoto()

removeProfilePhoto

Scopesaccount:writeThe app's assistant always asks firstToolkitaccount

Remove your profile photo and delete the stored image, so the app shows your initials again. Removing it when there is none changes nothing.

Inputs

Takes no input.

Also available in

API
DELETE /account/photo
SDK
account.removePhoto()

getUsername

Scopesaccount:readThe app's assistant runs it without askingToolkitaccount

Your OpenEmail username, whether you chose it or it was made for you, and the free address it gives you. A username you chose never changes.

Inputs

Takes no input.

Also available in

API
GET /account/username
SDK
account.getUsername()

checkUsername

Scopesaccount:readThe app's assistant runs it without askingToolkitaccount

Whether you could choose a username, without choosing it, and why not when you could not. It is lowercased and its spaces become dots before it is checked.

Inputs

usernamestringRequired
1 to 60 characters

Also available in

API
GET /account/username/availability
SDK
account.checkUsername()

chooseUsername

Scopesaccount:writeThe app's assistant always asks firstToolkitaccount

Choose your username, and with it your free address, for good. Once chosen it never changes, so check it with checkUsername first and make sure it is the one you want.

Inputs

usernamestringRequired
1 to 60 characters

Also available in

API
PUT /account/username
SDK
account.setUsername()

listConnectedApps

Scopesaccount:readThe app's assistant runs it without askingToolkitaccount

Every app you connected to your account with OAuth, as Account, Connected apps lists them: what each may reach, until when, and its client id, which revokeConnectedApp takes. What an app may reach is changed in the app, never from here.

Inputs

Takes no input.

Also available in

API
GET /account/connected-apps
SDK
account.listConnectedApps()

revokeConnectedApp

Scopesaccount:writeThe app's assistant always asks firstToolkitaccount

Remove an app you connected: every token it holds and the access you gave it are deleted, so its next call is refused and it has to ask again. Pass its client id from listConnectedApps. Removing the app you are talking through disconnects it.

Inputs

clientIdstringRequired
1 to 128 characters

Also available in

API
DELETE /account/connected-apps/{clientId}
SDK
account.revokeConnectedApp()

listReceivedInvitations

Scopesaccount:readThe app's assistant runs it without askingToolkitaccount

The invitations to join a workspace that are waiting for you, oldest first, each with the id acceptInvitation and declineInvitation take. It is not listInvitations, which lists the invitations this workspace sent.

Inputs

Takes no input.

Also available in

API
GET /account/invitations
SDK
account.listInvitations()

acceptInvitation

Scopesaccount:writeThe app's assistant asks first unless you asked for itToolkitaccount

Accept an invitation that is waiting for you and join its workspace with the role and the addresses it gives. activate also makes it the workspace the app opens for you. A workspace that asks for two-factor sign-in is refused until you turn it on.

Inputs

invitationIdstringRequired
1 to 128 characters
activateboolean

Also available in

API
POST /account/invitations/{invitationId}/accept
SDK
account.acceptInvitation()

declineInvitation

Scopesaccount:writeThe app's assistant always asks firstToolkitaccount

Decline an invitation that is waiting for you. Its link stops working and whoever sent it is told. It cannot be taken back: they would have to invite you again.

Inputs

invitationIdstringRequired
1 to 128 characters

Also available in

API
POST /account/invitations/{invitationId}/decline
SDK
account.declineInvitation()