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
useormanageaccess on that app.apps:invokenever gives access to an app by itself. When Sasha first finds an app, it givesmanageto 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
manageaccess, on a connection that also holdsapps:write, can repair it with the app source tools, such aslistAppFilesandcheckApp.
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>. structuredContenthasappIdandrevision, the live revision of the app._meta.ui.resourceUrinames the app's view, in the formui://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 returnsMCP error -32602: Tool open_app__timesheet not found(with the name you called). Read thepermissionssection ofgetDocs. For a missing scope, the person must reconnect, or mint a new token, withapps: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-tablefamily reads and changes rows in the app's tables. - The
app-actionfamily runs the actions that the app exposes. listAppFileslists the app's source, for admin and staff users who manage it.getDocshas thepermissionssection.