Application Actions
Application actions are selected plugin backend methods described in OpenAPI. Through MCP, AI can work with application data or prepare settings for its tool or step at the user's request. Users do not add these methods to an agent or workflow manually: they are available through MCP only in projects where the plugin is installed and active.
This is a separate plugin capability:
- an agent tool is called by the agent during a conversation;
- an application step runs inside an automation process;
- an MCP action is called by AI while it helps with the plugin's interface and settings;
- a report method supplies plugin data to a connected funnel.
Prepare the Integration
Prepare OpenAPI action definitions and implement backend authorization. NestJS projects can use SDK decorators.
Enable Actions In The Application
For a Plugin application, open Embedded page and find the Application actions section.
- Enable Publish actions to MCP.
- Enter a stable method prefix from 2 to 32 characters: lowercase Latin letters, digits, and
_, starting with a letter. For example, with themy_pluginprefix, thelist_ordersaction is namedmy_plugin__list_orders. - Enter the application backend's OpenAPI JSON schema URL.
- Click the separate Save button for this section.

Keep the prefix stable after publication: the full method name is used by AI and saved workflows. Two active installed applications in the same project must not produce the same full action name.
How MCP Finds And Calls An Action
Installed application actions do not expand the permanent MCP tool list. AI uses the shared discovery protocol:
- call
searchwith a short task description; - take the exact
method_namefrom the result; - call
describe_methodwhen the compact search result does not provide enough nested input, response schema, orapp_actionmetadata; - call
executewith the samemethod_nameand aparametersobject that follows the returned schema.
For example, searching for “get Prodamus accounts” can return prodamus__list_accounts, while “get referral campaigns” can return reflink__list_campaigns. AI must not guess these names.
Project scope depends on the MCP connection:
| Connection | How the project is determined | Is project_id needed? |
|---|---|---|
| Senler.io Project MCP | The project is embedded in the project OAuth token | No; a parameter cannot override it |
| User MCP inside a project agent or dialog | Senler supplies a signed execution context | No; AI must not request it |
| Direct personal User MCP connection | The selected project is not embedded in the connection | Yes; reuse the known project_id in search, describe_method, and execute |
For direct User MCP, project_id is a top-level service parameter of the MCP tool. It does not belong in the action's parameters and is not forwarded to the plugin backend. See Senler.io as an MCP server for the full AI-client flow.
Test In A Project
Install and activate the plugin in a test project. For a private application, first grant that project access. Connect Senler Project MCP or User MCP with permission to use applications, and give AI a task that matches a safe action marked read_only: true. Verify that:
- the method appears under
<namespace>__<name>; - AI sees the expected parameters and result description;
- the backend creates a management session only for a valid
launch_code; - the action receives the application's Bearer token and responds within 15 seconds;
- modifying and irreversible operations have the correct safety flags.
Do not put Client Secret, management token, or private data in OpenAPI, an action description, or its parameters.
If An Action Does Not Appear
- verify that the plugin is installed and its installation is active in the selected project;
- verify that publishing is enabled and the section was saved;
- open the OpenAPI URL from a server, not only from the developer's browser;
- run
senler-app validate-openapiand verify that the operation uses a supported HTTP method and the exact version 1x-senler-app-actionextension; - wait up to 30 seconds after changing the schema;
- check that
<namespace>__<name>is unique among installed applications; - for a management-session creation error, check
/api/embedded/management-session, thelaunch_codesignature and lifetime, and themanagement_tokenresponse field; - for an execution error, check the endpoint, Bearer token, backend response, and 15-second limit.