Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TOOLSNoSet 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_URLYesYour Appmixer tenant API url. For example: https://api.YOUR_TENANT.appmixer.cloud
APPMIXER_PASSWORDNoYour Appmixer password. Required if APPMIXER_ACCESS_TOKEN is not provided.
APPMIXER_USERNAMENoYour Appmixer username. Required if APPMIXER_ACCESS_TOKEN is not provided.
APPMIXER_ACCESS_TOKENNoYour 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

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_flowsA

List Appmixer flows of the authenticated user, sorted by last modification. Returns flow IDs, names, stages and modification times. Use pattern to filter by name.

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: err (message, code, name, stack) and messages, the input the component received keyed by inPort — together they usually explain why it failed.

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 component, returns a compact summary of all the app's components (type, description, port names). With component (the full type, e.g. "appmixer.utils.email.SendEmail"), returns the full manifest including input fields, required fields and output variables — needed to build config.transform correctly. Never guess component types, port names or fields.

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 componentIds. The flow is created stopped; fix any validation errors with update_flow, then use start_flow.

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 source URL (Slack channel pickers, spreadsheet lists, generated output variables). Take component_type and out_port from that source URL (it often points at a different, auxiliary component), and pass the component that owns the field as component_id — it must already exist in a flow and, for connected services, have an account assigned, because the lookup runs with that component's credentials. Results are the auxiliary component's raw output: sources that declare a transform are not converted here, so pick the identifier the target field expects (Slack channels: id). Pointer strings in source.data such as "properties/event" mean "send that property's value".

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. value is stored as it is, so wrap a scalar in an object, e.g. {"value": "text"}. Useful for seeding data a flow will read, or correcting a record a flow wrote.

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 g_* functions usable in a transform's functions array (g_length, g_jsonPath, g_formatDate …). Check here instead of assuming a function exists.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
flow-authoring-guideHow to write a valid Appmixer flow descriptor JSON.

TDQS

A3.7/5.0

Scored across 37 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessSyncing