wflow-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WFLOW_ORG | No | Organization slug. Required for client_credentials mode. | |
| WFLOW_READONLY | No | Set to 'true' to block all write operations. | false |
| WFLOW_AUTH_MODE | No | Authentication mode: client_credentials (default) or interactive. | |
| WFLOW_CLIENT_ID | No | OAuth2 client ID. | |
| WFLOW_MAX_ITEMS | No | Pagination safety cap per organization. | 2000 |
| WFLOW_CLIENT_SECRET | No | OAuth2 client secret. Required for client_credentials mode. |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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 |
| 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_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).
• |
| wflow_search_documentsA | Search / list documents across one or many organizations with the wflow filter syntax and auto-pagination.
• |
| 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 |
| wflow_bulk_update_documentsA | Find every document matching a wflow |
| 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 |
| wflow_upload_document_fileA | Attach a local file to an existing document. Set |
| 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 |
| wflow_get_registerA | Read entries from any wflow register/reference table. |
| 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 |
| wflow_get_userA | Fetch a user by id including role & team membership, document-type permissions and effective rights (UserFull). |
| wflow_upsert_userA | Add (by |
| 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 |
| 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 |
| 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 |
| wflow_delete_teamA | Delete a team by id. Irreversible. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 26 tools
Each tool targets a distinct resource and action: roles, teams, documents, registers, users, orgs, plus discovery/escape-hatch tools. Even create_document_with_files vs update_document are clearly separated by file attachment vs inline line items, and api_catalog/request serve unique discovery/execution roles.
Tools consistently follow a verb_noun pattern (list_*, get_*, upsert_*, delete_*, create_*, search_*, update_*). Minor exceptions like wflow_whoami, wflow_api_catalog, and wflow_request break the strict verb-first scheme but remain predictable and readable.
26 tools is above the typical 15-tool comfort zone, but the server covers a broad enterprise domain (documents, users, teams, roles, registers, organizations) plus low-level discovery/request capabilities. Most tools earn their place, though a unified document creation tool could reduce redundancy.
Documents, users, teams, roles, and registers have solid CRUD/lifecycle coverage, and bulk/export/event operations are a plus. However, there is no typed get_role, no document delete, and no approval/workflow action tools; these are deferred to the generic wflow_api_catalog/wflow_request escape hatch, which mitigates but does not fully cover the gaps.