Built-in MCP Tools
QPR ProcessAnalyzer ships with the following built-in MCP tools that allow an MCP client to explore process models and run analytical queries against them.
Overview
The built-in tools are by default available in the MCP interface. All the tools are read-only, so they only retrieve data and never modify models, datatables, or any other server-side state. In addition to the built-in MCP tools, users can implement custom MCP tools using scripts.
It's possible to temporarily disable the built-in MCP tools using the EnabledPrimitives setting if they are undesired.
The built-in MCP tools are exposed in a system project (named _System) containing system scripts, one for each built-in MCP tool. System projects and scripts are content that cannot be modified and are not shown in the user interface. The built-in MCP tools can be listed using the expression language by querying SystemScripts in the Expression Designer.
A typical workflow is to first call List Available QPR ProcessAnalyzer Models to find a model of interest, then call Get QPR ProcessAnalyzer Model Details to inspect its structure (datatables, columns, object types), and finally use several calls for the Get QPR ProcessAnalyzer Generic Query to perform analyses from different viewpoints to answer to the questions of interest.
Built-in Tools
List Available QPR ProcessAnalyzer Models
Lists all QPR ProcessAnalyzer models in the server where the user has permissions. For each model it returns basic metadata such as the model ID, name, and description, and whether it is object-centric or case-centric. This tool is read-only.
Inputs: This tool takes no input parameters.
Outputs: The tool returns an object with a single models property, which is an array of model objects. Each model object contains a unique ID (integer), a name and description (strings), and an isObjectCentric flag that is true for object-centric (OCPM) models and false for case-centric ones. Each object also includes audit information: createdDate and modifiedDate (ISO date-time strings) together with createdBy and modifiedBy (the names of the users who created and last modified the model). Only models that pass a validity check are included in the result.
Get QPR ProcessAnalyzer Model Details
Returns detailed information about a single model, identified by its ID. In addition to the basic metadata also returned by the List Available QPR ProcessAnalyzer Models tool, this tool exposes the model's configuration and the datatables it uses, including their columns, data types, primary keys, and foreign keys. This is the recommended way to discover the exact table and column names needed to build a query. This tool is read-only.
Inputs: The tool takes one required parameter, model ID (integer), the identifier of the model to retrieve details for.
Outputs: The tool returns an object describing the model. It contains the same identity and audit fields as a model object from List Available QPR ProcessAnalyzer Models (id, name, description, isObjectCentric, createdDate, createdBy, modifiedDate, and modifiedBy). In addition, it includes a configuration object holding the model's configuration (for object-centric models this includes the OcelDataSource block with the available object types), and a usedDataTables array describing the data tables used by the model.
Each datatable entry includes its ID, name and description, its audit fields (created fate, created by, modified date, modified by), and its configuration. It also reports the data source type (Snowflake or SQL Server), the data source object type (Table or View), and the number of rows in the underlying data source table (nullable). Each datatable further contains columns and foreign keys.
Every column reports its Name, its Data type (one of Any, String, Boolean, Integer, Float, or DateTime), and a Primary key flag that is true only when the column is a primary key of the datatable. Each foreign key defines a TargetDatatable (the referenced datatable) and a Columns list of source-to-target column mappings, each mapping a Source column name to a Target column name.
QPR ProcessAnalyzer Generic Query
Runs a generic analytical query against a QPR ProcessAnalyzer model. Queries are written using the QPR ProcessAnalyzer query syntax and expression language, which lets you select a root dataset (such as cases, events, variations, or flows), group it into dimensions, and compute aggregated values. The tool supports all Snowflake models, i.e., case-centric and object-centric (OCPM) models. Despite its analytical power, this tool is designed to be read-only, so it only reads and aggregates existing data and never modifies it.
Runs a generic analytical query against a QPR ProcessAnalyzer model, answering questions about how a business process actually behaves, based on event log data from source systems. Queries are written using the QPR ProcessAnalyzer standard query syntax and expression language, which lets you select a root dataset (such as cases, events, variations, or flows), apply a filter, group the data into dimensions, and compute aggregated values. The tool supports both case-centric models and object-centric (OCPM) models.
Use this tool for as-is, data-driven questions: how often a path or variant occurs, where time is spent, which activities cause delay or rework, throughput and lead times, conformance statistics, and comparisons across time periods, organizational units, or case attributes.
Do not use this tool to read designed process documentation, BPMN diagrams, process descriptions, roles, or controls. Those describe the intended way of working and are served by QPR ProcessDesigner Generic Query. If the question is about what the process is designed to do rather than what the data shows it does, use the ProcessDesigner tool.
Inputs: The tool takes a single object parameter, called the query configuration, specifying the query using the QPR ProcessAnalyzer query syntax. The query contains the model ID to query, the root dataset to operate on, an optional filter, and the dimensions and values that shape the output.
Outputs: The result is a tabular dataset consisting of rows and named columns. The number of rows and columns depend on the query.
Root Cause Analysis
The Generic Query tool can explain why a selected set of cases differs from the rest, and it works for both case-centric and object-centric models. Root Cause Analysis is for Snowflake models only.
QPR ProcessDesigner Generic Query
Retrieves process models and documentation from the QPR ProcessDesigner repository. It describes the intended way of working, including activities, responsibilities, process hierarchies, flows, controls, related documents, and model attributes. Use this tool to discover models, explore process hierarchies, inspect elements, retrieve navigator-view data, and examine model versions. For operational analytics such as frequencies, durations, variants, bottlenecks, and actual process flows, use QPR ProcessAnalyzer Generic Query instead.
Input Parameters
The input is a JSON object. query and attributes are required. Additional properties are not accepted.
| Parameter | Required | Description |
|---|---|---|
query |
Yes | Nonempty QPR Web Services Foundation object query selecting objects and traversing relationships. |
attributes |
Yes | Nonempty, comma-separated list of attributes to return, such as id,name,typename.
|
criteria |
No | Boolean expression filtering candidate objects. |
sortBy |
No | Comma-separated sort attributes. Prefix an attribute with - for descending order.
|
options |
No | Comma-separated query options. Defaults to MaxCount=500 when omitted.
|
Queries start from bracketed, namespace-qualified IDs and can chain navigation functions:
[PG.<modelId>].SubObjects(recursive=1)
Common functions include Models, SubObjects, ChildObjects, ParentObjects, HierarchyRoots, Related, and Filter. Element relationships include InformationItems, Resources, IncomingFlows, and OutgoingFlows. Connectors expose From and To.
Recursion is disabled by default. Use recursive=1 to enable it, recursioncount=<n> to limit depth, and keeporiginals=1 to include starting objects.
Common Queries
List Available Models:
query: [PG].Models attributes: id,name,typename,version,status options: MaxCount=500
Retrieve a Model Hierarchy:
query: [PG.<modelId>].SubObjects(recursive=1) attributes: id,name,typename,parentobjects,childobjects options: MaxCount=5000
Retrieve a Process and Its Subtree:
query: [PG.<modelId>.<processId>].SubObjects(recursive=1, keeporiginals=1) attributes: id,name,typename,parentobjects,childobjects options: MaxCount=1000
Inspect a Known Element:
query: [PG.<modelId>.<elementId>] attributes: id,name,typename,description,owner.name,firstorganizationitem.name
Retrieve Outgoing Flows:
query: [PG.<modelId>.<elementId>].OutgoingFlows attributes: id,name,from,to
Discover Navigator Views:
query: [PG.<modelId>].HierarchyRoots(hierarchy="navigatorviewsettings") attributes: id,name,columns,columnnames sortBy: name options: MaxCount=500
Retrieve Navigator-View Data:
First discover the exact view name and its columns. Then use the following query, passing the discovered columns value as attributes:
[PG.<modelId>].HierarchyRoots(viewsettings="<view name>").Related(viewsettings="<view name>", recursive=1, keeporiginals=1)
Attributes and Filtering
Dotted attribute paths retrieve related values, such as model.name or owner.name.
owner.name: Explicitly assigned owner.firstorganizationitem.name: First organization unit or swim lane where an element appears.
These values may differ or be empty. Custom attributes use model-defined names and may expose .value, .values, or relation properties. Unknown or unsupported attributes are silently omitted.
Criteria support uppercase AND, OR, and NOT, comparisons, arithmetic, parentheses, and case-sensitive substring matching:
Find("Invoice", Name)
Escape inner quotes when embedding criteria inside a query string:
[PG.<modelId>].SubObjects(criteria="Find(\"Invoice\", Name)")