Appmixer MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TOOLS | No | Set to 'api,mcpgateway' by default meaning both the Appmixer API tools such as 'get-flows' and 'MCP Gateway' entry points are enabled. | api,mcpgateway |
| APPMIXER_BASE_URL | Yes | Your Appmixer tenant API url. For example: https://api.YOUR_TENANT.appmixer.cloud | |
| APPMIXER_PASSWORD | No | Your Appmixer password. Required if APPMIXER_ACCESS_TOKEN is not provided. | |
| APPMIXER_USERNAME | No | Your Appmixer username. Required if APPMIXER_ACCESS_TOKEN is not provided. | |
| APPMIXER_ACCESS_TOKEN | No | Your Appmixer access token. Preferred over username/password for security. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_flowsA | List Appmixer flows of the authenticated user, sorted by last modification. Returns flow IDs, names, stages and modification times. Use |
| get_flowA | Get a single Appmixer flow by ID: metadata and, optionally, the full flow descriptor (the JSON definition of components and their wiring). Set include_descriptor=true when you need component IDs, e.g. for trigger_component. |
| get_flow_statusA | Get the current stage of an Appmixer flow: "running" or "stopped". |
| get_flow_logsA | Get execution logs of an Appmixer flow. Optionally filter with an Apache Lucene query over fields such as "msg", "@timestamp", "portType", "port", "correlationId", "senderType", "senderId" and "inputMessages". |
| list_unprocessed_messagesA | List messages that failed processing and were parked instead of being dropped. This is where a component sends its failures under the default error handling ("Stop execution" / onError: storeUnprocessed) — the flow keeps running and the failed message waits here. Use it to find out what broke and, after the flow is fixed, replay it with retry_unprocessed_message. |
| get_unprocessed_messageA | Read one parked message in full: |
| retry_unprocessed_messageA | Replay a parked message through its component. Fix the flow first — a replay repeats the original input, so an unfixed cause fails again. |
| delete_unprocessed_messageA | Discard a parked message without replaying it. This cannot be undone. |
| start_flowA | Start an Appmixer flow by ID. The flow must be valid and complete to start. |
| stop_flowB | Stop a running Appmixer flow by ID. |
| delete_flowA | Permanently delete an Appmixer flow by ID. This cannot be undone. |
| trigger_componentA | Send a webhook request that submits data to a trigger component of a running flow, using POST (default), PUT, PATCH or DELETE — match the method the flow's webhook trigger expects. Find the component ID with get_flow (include_descriptor=false lists components with their IDs). For triggers that expect GET, use read_component_trigger. |
| read_component_triggerA | Send a GET request to a trigger component of a running flow, for webhook triggers that listen on GET, and return the component's response. |
| send_app_eventA | Send a named App Event to Appmixer. All running flows of this user that contain an OnAppEvent trigger for this event name will receive it. |
| get_flow_authoring_guideA | Get the complete guide to writing Appmixer flow descriptor JSON: structure, wiring (source), input mapping (config.transform, modifiers, variables), error handling and common validation failures. Read this before calling create_flow or update_flow. |
| list_appsA | List apps (connectors) available on this Appmixer tenant, e.g. "appmixer.utils", "appmixer.slack". Use get_components to inspect an app's components. |
| get_componentsA | Inspect components of an Appmixer app. Without |
| list_accountsA | List third-party accounts (Slack, Google, …) connected by the authenticated Appmixer user. Components of connected apps need an account; accounts are connected by the user in the Appmixer UI, not through this server. |
| create_flowA | Create a new Appmixer flow from a flow descriptor JSON and validate it. Read get_flow_authoring_guide first and discover exact component types, ports and fields with get_components. Component keys may be readable placeholders ("trigger", "send_email") — real UUIDs are minted for them and every reference is rewritten, so you never need to generate IDs yourself; the mapping comes back as |
| update_flowA | Update an existing Appmixer flow (descriptor and/or name) and re-validate it. Send the COMPLETE flow descriptor — it replaces the stored one, so start from the current descriptor (get_flow with include_descriptor=true), keep the existing component IDs and the configuration of everything you were not asked to change. A running flow is rejected unless force is set. |
| get_flow_variablesA | Get the output variables available to each component of a flow — the exact "$..." paths (with schemas) usable in config.transform modifiers. Call this after create_flow/update_flow to fix or build variable references instead of guessing paths. |
| test_flowA | Test-run a single component (and its downstream graph) of a flow without starting the flow. Provide the input data the component should receive; returns the outputs each component produced. The flow does not need to be running. Use this to verify a flow works before start_flow. |
| get_component_optionsA | Resolve a field's dynamic options at runtime — the values behind inspector fields and output ports whose manifest declares a |
| get_trigger_urlA | Get the public webhook URL of a trigger component (e.g. WebhookTrigger) in one of your flows. Use it to chain flows: another flow POSTs to this URL via appmixer.utils.http.Post — no credentials needed, the endpoint is public. The flow must be running for the webhook to actually accept requests. |
| get_flow_accountsA | List which components of a flow require a connected third-party account and which account (if any) is assigned to them. |
| assign_accountA | Assign a connected third-party account (see list_accounts) to a component of a flow, so the component can authenticate against its service. The account must belong to the authenticated user and match the component's service. |
| validate_flowA | Validate an Appmixer flow server-side. Returns per-component errors (wrong port names, missing required fields, invalid variables). A flow must be valid to start. |
| list_storesA | List the user's Appmixer data stores. Flows read and write these through the appmixer.utils.storage components, which need the store's ID — look it up here rather than guessing it. |
| create_storeC | Create a data store the flows of this user can read and write. |
| get_store_recordsA | Read records of a data store: their keys, values and timestamps. Use it to see what a flow has stored, or to check the data a flow is about to read. |
| set_store_recordA | Create or overwrite one record of a data store. |
| delete_store_recordB | Delete one record from a data store. This cannot be undone. |
| list_flow_versionsB | List saved versions of a flow, newest first. Versions are snapshots the flow can be rolled back to. |
| create_flow_versionA | Snapshot the current state of a flow so it can be restored later. Take one before rewriting a flow you did not build — update_flow replaces the descriptor and there is no undo otherwise. |
| restore_flow_versionA | Roll a flow back to a saved version. The flow's current descriptor is replaced by the snapshot, so take a version of the current state first if you may want it back. |
| clone_flowA | Copy a flow, including its components and wiring. The copy is created stopped and its components have no accounts assigned unless connect_accounts is set. Cloning then editing the copy is the safe way to change a flow that is in use. |
| list_modifiersA | List the modifier functions available on this tenant — the |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| flow-authoring-guide | How to write a valid Appmixer flow descriptor JSON. |
TDQS
Scored across 37 tools
Most tools target a clearly distinct resource+action (flow lifecycle, versions, stores, unprocessed messages, components, accounts), and descriptions explicitly disambiguate close pairs like create_flow/update_flow/clone_flow and validate_flow/test_flow/start_flow. A few boundaries remain thin, notably trigger_component vs read_component_trigger (split only by HTTP method) and get_flow_accounts vs list_accounts, but guidance is sufficient to pick correctly.
All 37 tools follow a consistent snake_case verb_noun pattern (get_flow, list_flows, create_store, delete_store_record, retry_unprocessed_message, restore_flow_version). No mixed casing or vague bare verbs, and the noun portion reliably names the resource.
37 tools is heavy, but Appmixer is a genuinely broad platform (flow authoring, execution, triggers, logs, versions, stores, components, accounts, modifiers) and nearly every tool maps to a real operation. Still, some could be consolidated (e.g. list/get unprocessed message, trigger vs read trigger), so the surface feels larger than ideal.
Coverage is strong: full flow CRUD plus start/stop, validation, test-run, logs, status, versioning/clone, data store CRUD, unprocessed-message lifecycle, component/app/account discovery, and modifiers. Minor gaps exist (no delete/compare flow versions, no account connection by design), but no obvious dead ends for core workflows.