Sasha MCP reference

App opener tools (open_app__<app>)

Tool names: open_app__<app>

Scopes: apps:invoke

When to use

A Sasha App is a small internal application that an organisation keeps in Sasha, for example a timesheet. Each app that this person can use has an opener tool named open_app__<app>. <app> is the app id with each - changed to _. For example, the app timesheet opens with open_app__timesheet, and the app expense-claims with open_app__expense_claims.

An opener tool is in the tool list only when all of these are true:

  • The connection holds apps:invoke. Admin, staff and member connections can all hold it.
  • The person has use or manage access on that app. apps:invoke never gives access to an app by itself. When Sasha first finds an app, it gives manage to each admin and staff user who exists at that moment. A user added later, and every member, needs a grant.
  • The app package validates. An app that does not validate has no opener tool and no data tools until someone fixes it. An admin or staff user with manage access, on a connection that also holds apps:write, can repair it with the app source tools, such as listAppFiles and checkApp.

The tool takes no arguments. The call changes nothing. The tool's description is the app's own description. When the app's view saves data, uses chat or uploads files, the description also says that those calls inside the view work only in the Sasha web interface. The app's app__<app>__… tools work in every client.

The result:

  • The text says Opened <name>.
  • structuredContent has appId and revision, the live revision of the app.
  • _meta.ui.resourceUri names the app's view, in the form ui://sasha/apps/<app>/revisions/<revision>. A client that shows MCP Apps uses it to show the view. Other clients can ignore it.

To read or change the app's records without the view, use the app's app-table and app-action tools.

Example

Call open_app__timesheet:

{}

The structured result (structuredContent):

{
  "appId": "timesheet",
  "revision": "62c66a7a5dd70c3146618063c344e531e6d4b59e379808443ce962b3abd63c5a"
}

Refusals and what to do

  • If the connection does not hold apps:invoke, or the person has no access to the app, or the app does not validate, the tool is not in your tool list. A call returns MCP error -32602: Tool open_app__timesheet not found (with the name you called). Read the permissions section of getDocs. For a missing scope, the person must reconnect, or mint a new token, with apps:invoke. For a missing app grant, ask an admin.
  • Error in open_app__timesheet: invalid_input:arguments_invalid (unexpected_field): you sent an argument. Send an empty object.

Related

  • The app-table family reads and changes rows in the app's tables.
  • The app-action family runs the actions that the app exposes.
  • listAppFiles lists the app's source, for admin and staff users who manage it.
  • getDocs has the permissions section.
made with bernard

Cookie settings