AroFlo MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Optional log level | info |
| AROFLO_ACCEPT | No | Optional Accept header | text/json |
| MCP_HTTP_HOST | No | Host for HTTP transport | |
| MCP_HTTP_PATH | No | Path for HTTP transport | |
| MCP_HTTP_PORT | No | Port for HTTP transport | |
| MCP_TRANSPORT | No | MCP transport mode (e.g., stdio, http) | stdio |
| AROFLO_HOST_IP | No | Optional host IP address | |
| AROFLO_PENCODED | Yes | Required AroFlo pencoded credential | |
| AROFLO_UENCODED | Yes | Required AroFlo uencoded credential | |
| AROFLO_SECRET_KEY | Yes | Required AroFlo secret key | |
| AROFLO_TIMEOUT_MS | No | Optional timeout in milliseconds | 65000 |
| AROFLO_MAX_RETRIES | No | Optional maximum number of retries | 2 |
| AROFLO_ORG_ENCODED | Yes | Required AroFlo org encoded credential | |
| AROFLO_API_BASE_URL | No | Optional API base URL | https://api.aroflo.com/ |
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
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| aroflo_get_lastupdateB | Query the AroFlo lastupdate zone for incremental sync workflows. |
| aroflo_query_zoneA | Query an arbitrary AroFlo zone using WHERE/ORDER/JOIN clauses. Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. Set compact=true and optionally select=["field","nested.field"] to reduce payload size. mode: data|verbose|debug|raw (default: data). See resource "aroflo://docs/api" for the extracted zone docs. |
| aroflo_get_recordB | Fetch one specific AroFlo record by zone and ID field/value. Use extraWhere for additional pipe-delimited clauses like "and|archived|=|false". |
| aroflo_create_or_update_recordC | Create or update a record in AroFlo using zone + postxml. |
| aroflo_get_businessunitsA | Query the AroFlo BusinessUnits zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_permissiongroupsA | Query the AroFlo PermissionGroups zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_usersA | Query the AroFlo Users zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_userpositionA | Query the AroFlo UserPosition zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_timesheetsA | Query the AroFlo Timesheets zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_transactiontermsA | Query the AroFlo TransactionTerms zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_prioritiesA | Query the AroFlo Priorities zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_clientsA | Query the AroFlo Clients zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_clientnotesA | Query the AroFlo ClientNotes zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_contactsA | Query the AroFlo Contacts zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_locationsA | Query the AroFlo Locations zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_quotesA | Query the AroFlo Quotes zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_quotelineitemsB | Query the AroFlo QuoteLineItems zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_tasktypesB | Query the AroFlo TaskTypes zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_tasksA | Query the AroFlo Tasks zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_taskmaterialsA | Query the AroFlo TaskMaterials zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_tasklaboursA | Query the AroFlo TaskLabours zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_taskexpensesA | Query the AroFlo TaskExpenses zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_taskresourcesB | Query the AroFlo TaskResources zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_invoicesA | Query the AroFlo Invoices zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_paymentsA | Query the AroFlo Payments zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_suppliersA | Query the AroFlo Suppliers zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_inventoryA | Query the AroFlo Inventory zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_inventorycategoriesA | Query the AroFlo InventoryCategories zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_inventorystocklevelsA | Query the AroFlo InventoryStockLevels zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_customholdersA | Query the AroFlo CustomHolders zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_inventorylistsA | Query the AroFlo InventoryLists zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_purchaseordersA | Query the AroFlo PurchaseOrders zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_billsA | Query the AroFlo Bills zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_billlineitemsA | Query the AroFlo BillLineItems zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_workordersA | Query the AroFlo WorkOrders zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_workorderlineitemsB | Query the AroFlo WorkOrderLineItems zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_assetsA | Query the AroFlo Assets zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_assetcategoriesB | Query the AroFlo AssetCategories zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_messageboardA | Query the AroFlo MessageBoard zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_substatusA | Query the AroFlo Substatus zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_documentsandphotosB | Query the AroFlo DocumentsAndPhotos zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_schedulesA | Query the AroFlo Schedules zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_projectsB | Query the AroFlo Projects zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_stagesA | Query the AroFlo Stages zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_messagetemplatesA | Query the AroFlo MessageTemplates zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_get_trackingcentresA | Query the AroFlo TrackingCentres zone (GET). Use pipe-delimited WHERE clauses like "and|field|=|value", ORDER clauses like "field|asc", and JOIN areas like "lineitems". where/order/join accept either a single string or an array. mode: data|verbose|debug|raw (default: data). Set compact=true and optionally select=["field","nested.field"] to reduce payload size. See resource "aroflo://docs/api/" (example: "aroflo://docs/api/quotes") for valid fields/values. |
| aroflo_list_open_projectsB | List open projects with optional client-side filtering (status/open + closeddate empty). Supports auto pagination with a result cap. |
| aroflo_resolve_job_contextA | Resolve a job context (jobnumber + related task(s), quote(s), and project) starting from any of: jobNumber, quoteId, quoteRefno, projectId, or projectRefno. Uses direct WHERE filters where supported and falls back to bounded scanning where necessary (for example when filtering by refno/refcode is not supported). |
| aroflo_report_project_labour_budget_auditA | Audit a project's actual labour hours against the linked quote's allowed labour hours, including a planned-vs-actual breakdown by task. Uses quote assemblies (parent QuoteLineItems only) as the planned-hour source to avoid double counting children. Highlights the "Credits, Extras & Variations" section when present. |
| aroflo_list_project_tasks_with_hoursC | Given projectIds, fetch tasks joined with project + tasktotals and group tasks by project with total hours. Uses client-side filtering by projectId and supports auto pagination with caps. |
| aroflo_report_open_projects_with_task_hoursA | Report open projects (status=open, closeddate empty) and their tasks with total labour hours. Internally fetches Projects then Tasks (join project + tasktotals) and returns a compact grouped output. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| aroflo_api_docs_index | Local reference extracted into docs/api. |
| docs/api/assetcategories.md | docs/api/assetcategories.md |
| docs/api/assets.md | docs/api/assets.md |
| docs/api/billlineitems.md | docs/api/billlineitems.md |
| docs/api/bills.md | docs/api/bills.md |
| docs/api/businessunits.md | docs/api/businessunits.md |
| docs/api/clientnotes.md | docs/api/clientnotes.md |
| docs/api/clients.md | docs/api/clients.md |
| docs/api/contacts.md | docs/api/contacts.md |
| docs/api/customholders.md | docs/api/customholders.md |
| docs/api/documentsandphotos.md | docs/api/documentsandphotos.md |
| docs/api/inventory.md | docs/api/inventory.md |
| docs/api/inventorycategories.md | docs/api/inventorycategories.md |
| docs/api/inventorylists.md | docs/api/inventorylists.md |
| docs/api/inventorystocklevels.md | docs/api/inventorystocklevels.md |
| docs/api/invoices.md | docs/api/invoices.md |
| docs/api/lastupdate.md | docs/api/lastupdate.md |
| docs/api/locations.md | docs/api/locations.md |
| docs/api/messageboard.md | docs/api/messageboard.md |
| docs/api/messagetemplates.md | docs/api/messagetemplates.md |
| docs/api/payments.md | docs/api/payments.md |
| docs/api/permissiongroups.md | docs/api/permissiongroups.md |
| docs/api/priorities.md | docs/api/priorities.md |
| docs/api/projects.md | docs/api/projects.md |
| docs/api/purchaseorders.md | docs/api/purchaseorders.md |
| docs/api/quotelineitems.md | docs/api/quotelineitems.md |
| docs/api/quotes.md | docs/api/quotes.md |
| docs/api/schedules.md | docs/api/schedules.md |
| docs/api/stages.md | docs/api/stages.md |
| docs/api/substatus.md | docs/api/substatus.md |
| docs/api/suppliers.md | docs/api/suppliers.md |
| docs/api/taskexpenses.md | docs/api/taskexpenses.md |
| docs/api/tasklabours.md | docs/api/tasklabours.md |
| docs/api/taskmaterials.md | docs/api/taskmaterials.md |
| docs/api/taskresources.md | docs/api/taskresources.md |
| docs/api/tasks.md | docs/api/tasks.md |
| docs/api/tasktypes.md | docs/api/tasktypes.md |
| docs/api/timesheets.md | docs/api/timesheets.md |
| docs/api/trackingcentres.md | docs/api/trackingcentres.md |
| docs/api/transactionterms.md | docs/api/transactionterms.md |
| docs/api/userposition.md | docs/api/userposition.md |
| docs/api/users.md | docs/api/users.md |
| docs/api/workorderlineitems.md | docs/api/workorderlineitems.md |
| docs/api/workorders.md | docs/api/workorders.md |
TDQS
Scored across 51 tools
Most tools are clearly distinct by targeting specific AroFlo zones (e.g., assets, clients, tasks), with minimal overlap. However, some tools like aroflo_get_record and aroflo_query_zone could be confused with the many specific get_* tools, as they offer more general querying capabilities. The descriptions help differentiate them, but an agent might need to carefully choose between specialized and general tools.
All tool names follow a consistent snake_case pattern with the prefix 'aroflo_' and clear verb_noun structures (e.g., get_assets, create_or_update_record, list_open_projects). There are no deviations in naming conventions, making the set predictable and easy to parse.
With 51 tools, the count is excessive for typical MCP server scopes (usually 3-15 tools). While AroFlo is a complex system, many tools are repetitive get_* queries for different zones, which could have been consolidated into fewer, more generic tools. This large number may overwhelm agents and increase selection complexity.
The tool set provides extensive read coverage across AroFlo's zones and includes a create/update tool, but lacks dedicated update, delete, or other write operations for most resources. There are also specialized reporting tools, but core CRUD lifecycle coverage is incomplete, relying heavily on querying with only one general write tool.