Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WFLOW_ORGNoOrganization slug. Required for client_credentials mode.
WFLOW_READONLYNoSet to 'true' to block all write operations.false
WFLOW_AUTH_MODENoAuthentication mode: client_credentials (default) or interactive.
WFLOW_CLIENT_IDNoOAuth2 client ID.
WFLOW_MAX_ITEMSNoPagination safety cap per organization.2000
WFLOW_CLIENT_SECRETNoOAuth2 client secret. Required for client_credentials mode.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
wflow_list_organizationsA

List all wflow organizations the authenticated principal can access. Returns name, baseURL and slug (subdomain). The slug is what every other tool uses as organization. This is the entry point for any cross-organization task.

wflow_whoamiA

Return the authenticated account/identity for an organization (GET /account). Useful to confirm auth is working and see the acting user.

wflow_api_catalogA

Return the catalog of wflow public API operations (method, path, summary, tag). Use this to discover endpoints that no typed tool covers, then call them with wflow_request. Optionally filter by a keyword or tag (e.g. 'payment', 'approval', 'storage', 'partner').

wflow_requestA

Low-level escape hatch to call ANY wflow public API endpoint. Use this when no typed tool fits (browse the surface with wflow_api_catalog first). • path may be a bare resource ('documents', 'registers/costcenters'), an org-templated path ('/api/{organization}/roles') or the org is injected automatically for relative paths. • {organization} in the path (or a relative path) is filled from the organization argument or WFLOW_ORG. • query is an object of query-string parameters (wflow filter syntax for query, e.g. totalAmount > 1000). • body is sent as JSON for PUT/POST/PATCH. Writes (non-GET) are blocked when WFLOW_READONLY is set.

wflow_search_documentsA

Search / list documents across one or many organizations with the wflow filter syntax and auto-pagination. • query uses wflow filtering, e.g. orderNo = "Z01", totalAmount > 1000 and totalAmount < 5000, created > "2026-01-01", number = null. Quote the field name-free value as shown. • sort is a comma list, e.g. created desc,totalAmount. • Set allOrganizations or organizations for cross-org queries (e.g. 'find documents for these transactions across all organizations'). Returns slim rows by default; set slim=false for full document objects.

wflow_get_documentA

Fetch the full document object (all fields, VAT subtotals, lines, accounting) by its id.

wflow_get_document_eventsA

Return the chronological event/audit trail for a document (created, updated, approved, changed accounting, exported, …). Useful for controlling and spotting inconsistencies.

wflow_update_documentA

Create (omit id) or update (include id) a document. Only the fields you send are changed — unspecified fields are left untouched. Registers (costCenter, contract, activity, accountingRule, project, …) are set under accounting and may be referenced by {code}, {externalId} or {id} — wflow resolves them on write. Example accounting: {accounting:{costCenter:{code:"202"}, contract:{code:"12345"}}}. Line items go in lines (array of {description, quantity, unitPrice, totalAmount, vatRate, costCenter, …}).

wflow_bulk_update_documentsA

Find every document matching a wflow query (optionally across organizations) and apply the SAME partial patch to each. This powers requests like 'set all documents with order Z01 to cost centre Centrála'. SAFETY: runs as a DRY RUN by default (apply=false) — it returns the matched documents and the patch that would be applied, but changes nothing. Re-run with apply=true to execute. patch is a partial DocumentUpdate merged with each document's id, e.g. {accounting:{costCenter:{code:"CENTRALA"}}}.

wflow_export_documentsA

Export a set of documents in a given format (byznyssolitea, datev, excel, generic, isdoc, kros, moneyerp, moneys3, mrp, premier, xml). Optionally narrow the set with a StructuredFilter filter (search/sort/filters). The exported file is written to disk and its path returned (useful for 'compare against the accounting ledger export').

wflow_upload_document_fileA

Attach a local file to an existing document. Set main=true to mark it as the main document file. Use this together with wflow_update_document to create a document and attach its scan/PDF.

wflow_create_document_with_filesA

Create a new document and attach one or more local files in a single call (SK QR receipts and ISDOC files are auto-extracted). Optionally pin a document typeId and invoiceType.

wflow_get_registerA

Read entries from any wflow register/reference table. type is one of: accountingrules, activities, businesscases, businessitems, businessitemcategories, carddocumenttypes, cashdocumenttypes, cashregisters, chartofaccounts, contracts, costcenters, employees, locations, measureunits, organizationpersons, partnerpersons, partners, paymentmethods, projects, series, vatcontrolstatementlines, vatreturnlines, vatreversechargecodes, vehicles. Each entry typically has {id, externalId, code, description, isValid}. Supports the wflow query/sort syntax and auto-pagination — e.g. resolve a cost centre named 'Centrála' with type='costcenters' and query=description = "Centrála".

wflow_upsert_registerA

Write entries to a register. Two modes: • method='PUT' replaces the WHOLE set — entries missing from your list are marked invalid (this is how ERP reference-table imports work). Match is by externalId, or code if externalId is empty. • method='PATCH' updates only the entries you send, leaving the rest untouched. Each entry: {externalId?, code, description?, isValid?}.

wflow_list_usersA

List users in one or many organizations. Each user has {id, identity:{login, fullName}, hasFullAccess}. Use allOrganizations to sweep every org (e.g. to find where a user exists).

wflow_get_userA

Fetch a user by id including role & team membership, document-type permissions and effective rights (UserFull).

wflow_upsert_userA

Add (by login) or update a user's access. Body fields: {login, hasFullAccess?, roles?:[{id}], teams?:[{id}], documentTypes?:[{id,permission}]}. permission ∈ All | OnlyAssigned | FullAccess. Unspecified fields are left unchanged.

wflow_delete_userB

Delete (revoke) a user from an organization by id. Irreversible — confirm intent before calling.

wflow_find_users_with_rightA

Sweep organizations and return every user who holds a given right, or full-access users (who implicitly have all rights). Defaults to payment rights (CanMarkForPayment, CanManagePayments), directly answering 'which users can pay across organizations?'. Pass rights to check other rights (e.g. CanExport, CanApprove, CanManageSettings).

wflow_list_rolesA

List roles in an organization (id, name, description). Get one role's rights & members via wflow_request GET roles/{id}.

wflow_upsert_roleA

Create a role (POST, omit id) or update it (PUT, pass roleId). Body: {name, description?, users?:[userId...], rights?:[Right...]}. Rights are enum names like CanApprove, CanMarkForPayment, CanExport, CanManageSettings.

wflow_delete_roleB

Delete a role by id. Irreversible.

wflow_list_teamsA

List teams in one or many organizations (id, name, description, system flag).

wflow_get_teamA

Fetch a team by id including its member users.

wflow_upsert_teamA

Create a team (POST, omit id) or update it (PUT, pass teamId). Body: {name, description?, users?:[userId...]}. This is how you 'create a new team X and add these users to it'.

wflow_delete_teamA

Delete a team by id. Irreversible.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wflowcom/wflow-mcp-experimental'

If you have feedback or need assistance with the MCP directory API, please join our Discord server