Skip to main content
Glama
marco-looy

Pega DX MCP Server

by marco-looy

get_list_data_view

Retrieve list data from Pega with filtering, sorting, aggregation, and pagination for standard, aggregated, distinct, or non-queryable data views.

Instructions

Retrieve list type data view with advanced querying capabilities. Supports 4 distinct use cases:

  1. Standard Data Retrieval: Get data with pagination, filtering, and sorting Example: { "dataViewID": "D_Employees", "query": { "select": [{"field": "Name"}, {"field": "Age"}], "filter": { "filterConditions": { "F1": { "lhs": {"field": "Department"}, "comparator": "EQ", "rhs": {"value": "IT"} } }, "logic": "F1" } }, "paging": { "pageSize": 100 } }

  2. Aggregated Data: Get aggregated data with optional grouping Example: { "dataViewID": "D_Employees", "query": { "aggregations": { "AvgAge": { "field": "age", "summaryFunction": "AVG" } }, "select": [{"field": "Department"}] }, "paging": { "maxResultsToFetch": 2000 } }

  3. Distinct Values: Get unique values from filtered lists Example: { "dataViewID": "D_Employees", "query": { "select": [{"field": "Department"}], "distinctResultsOnly": true }, "paging": { "maxResultsToFetch": 1000 } }

  4. Non-queryable Data Views: Simple data retrieval without querying Example: { "dataViewID": "D_SimpleData", "dataViewParameters": { "param1": "value1", "param2": "value2" } }

Filter comparators supported: boolean (IS_TRUE, IS_FALSE, IS_NULL, IS_NOT_NULL, EQ, NEQ), string (EQ, NEQ, IN, NOT_IN, IS_NULL, IS_NOT_NULL, STARTS_WITH, NOT_STARTS_WITH, ENDS_WITH, NOT_ENDS_WITH, CONTAINS, NOT_CONTAINS), number/date (EQ, NEQ, IN, NOT_IN, GT, GTE, LT, LTE, ISNULL, ISNOTNULL).

Aggregation functions: COUNT, MAX, MIN, DISTINCT_COUNT. For numbers: SUM, AVG.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataViewIDYesData view ID. Example: "D_CaseList"
dataViewParametersNoParameters for parameterized data views. Key-value pairs. Example: {"CustomerID": "C-123"}
queryNoOptional query object for filtering, sorting, aggregation, and field selection. If not specified, retrieves data as a regular data view.
pagingNoOptional pagination configuration. Can specify either maxResultsToFetch or pageNumber/pageSize combination, but not both.
useExtendedTimeoutNoOptional flag that works only if the data view is sourced by a report definition. When set to true, increases timeout to 45 seconds. Otherwise, timeout is 10 seconds.
sessionCredentialsNoOptional session-specific credentials. If not provided, uses environment variables. Supports two authentication modes: (1) OAuth mode - provide baseUrl, clientId, and clientSecret, or (2) Token mode - provide baseUrl and accessToken.

Implementation Reference

  • The main handler function that executes the tool logic: validates inputs, builds the request body from parameters, initializes session, and calls the Pega API via executeWithErrorHandling.
    async execute(params) {
      const { dataViewID, dataViewParameters, query, paging, useExtendedTimeout } = params;
      let sessionInfo = null;
    
      try {
        sessionInfo = this.initializeSessionConfig(params);
    
        // Validate required parameters
        const requiredValidation = this.validateRequiredParams(params, ['dataViewID']);
        if (requiredValidation) {
          return requiredValidation;
        }
    
        // Build request body from optional parameters
        const requestBody = {};
    
        if (dataViewParameters) {
          requestBody.dataViewParameters = dataViewParameters;
        }
    
        if (query) {
          requestBody.query = query;
        }
    
        if (paging) {
          requestBody.paging = paging;
        }
    
        if (useExtendedTimeout !== undefined) {
          requestBody.useExtendedTimeout = useExtendedTimeout;
        }
    
        // Execute with standardized error handling
        return await this.executeWithErrorHandling(
          `List Data View: ${dataViewID}${query ? ' (with query)' : ''}${paging ? ' (paginated)' : ''}`,
          async () => await this.pegaClient.getListDataView(dataViewID, requestBody),
          { sessionInfo }
        );
      } catch (error) {
        return {
          content: [{
            type: 'text',
            text: `## Error: List Data View: ${dataViewID}\n\n**Unexpected Error**: ${error.message}\n\n${sessionInfo ? `**Session**: ${sessionInfo.sessionId} (${sessionInfo.authMode} mode)\n` : ''}*Error occurred at: ${new Date().toISOString()}*`
          }]
        };
      }
    }
  • Tool schema definition for MCP protocol, including name, detailed description, and comprehensive inputSchema with properties for dataViewID (required), parameters, query (filter/sort/aggregate/select/distinct), paging, timeout, and session credentials.
      static getDefinition() {
        return {
          name: 'get_list_data_view',
          description: `Retrieve list type data view with advanced querying capabilities. Supports 4 distinct use cases:
    
    1. **Standard Data Retrieval**: Get data with pagination, filtering, and sorting
       Example: { "dataViewID": "D_Employees", "query": { "select": [{"field": "Name"}, {"field": "Age"}], "filter": { "filterConditions": { "F1": { "lhs": {"field": "Department"}, "comparator": "EQ", "rhs": {"value": "IT"} } }, "logic": "F1" } }, "paging": { "pageSize": 100 } }
    
    2. **Aggregated Data**: Get aggregated data with optional grouping
       Example: { "dataViewID": "D_Employees", "query": { "aggregations": { "AvgAge": { "field": "age", "summaryFunction": "AVG" } }, "select": [{"field": "Department"}] }, "paging": { "maxResultsToFetch": 2000 } }
    
    3. **Distinct Values**: Get unique values from filtered lists
       Example: { "dataViewID": "D_Employees", "query": { "select": [{"field": "Department"}], "distinctResultsOnly": true }, "paging": { "maxResultsToFetch": 1000 } }
    
    4. **Non-queryable Data Views**: Simple data retrieval without querying
       Example: { "dataViewID": "D_SimpleData", "dataViewParameters": { "param1": "value1", "param2": "value2" } }
    
    Filter comparators supported: boolean (IS_TRUE, IS_FALSE, IS_NULL, IS_NOT_NULL, EQ, NEQ), string (EQ, NEQ, IN, NOT_IN, IS_NULL, IS_NOT_NULL, STARTS_WITH, NOT_STARTS_WITH, ENDS_WITH, NOT_ENDS_WITH, CONTAINS, NOT_CONTAINS), number/date (EQ, NEQ, IN, NOT_IN, GT, GTE, LT, LTE, ISNULL, ISNOTNULL).
    
    Aggregation functions: COUNT, MAX, MIN, DISTINCT_COUNT. For numbers: SUM, AVG.`,
          inputSchema: {
            type: 'object',
            properties: {
              dataViewID: {
                type: 'string',
                description: 'Data view ID. Example: "D_CaseList"'
              },
              dataViewParameters: {
                type: 'object',
                description: 'Parameters for parameterized data views. Key-value pairs. Example: {"CustomerID": "C-123"}'
              },
              query: {
                type: 'object',
                description: 'Optional query object for filtering, sorting, aggregation, and field selection. If not specified, retrieves data as a regular data view.',
                properties: {
                  select: {
                    type: 'array',
                    description: 'Array of field objects to select. Each object should have a "field" property. Example: [{"field": "Name"}, {"field": "Age"}, {"field": "DOB"}]',
                    items: {
                      type: 'object',
                      properties: {
                        field: {
                          type: 'string',
                          description: 'Field name to select'
                        }
                      },
                      required: ['field']
                    }
                  },
                  sortBy: {
                    type: 'array',
                    description: 'Array of sorting configurations. Each object can specify field name with type (ASC/DESC) or aggregation name with type. Example: [{"field": "Name", "type": "ASC"}, {"aggregation": "AverageAge", "type": "DESC"}]',
                    items: {
                      type: 'object',
                      properties: {
                        field: {
                          type: 'string',
                          description: 'Field name to sort by'
                        },
                        aggregation: {
                          type: 'string',
                          description: 'Aggregation name to sort by'
                        },
                        type: {
                          type: 'string',
                          enum: ['ASC', 'DESC'],
                          description: 'Sort direction - ascending or descending',
                          default: 'ASC'
                        }
                      }
                    }
                  },
                  filter: {
                    type: 'object',
                    description: 'Complex filtering conditions with support for multiple comparators and logical operators.',
                    properties: {
                      filterConditions: {
                        type: 'object',
                        description: 'Object containing filter conditions. Each key (F1, F2, etc.) represents a condition with lhs (left-hand side), comparator, and rhs (right-hand side). Example: {"F1": {"ignoreCase": true, "lhs": {"field": "firstname"}, "comparator": "EQ", "rhs": {"value": "abc"}}, "F2": {"lhs": {"field": "IsRetired"}, "comparator": "IS_TRUE"}}'
                      },
                      logic: {
                        type: 'string',
                        description: 'Logical expression combining filter conditions using AND/OR operators. Supports parentheses. Examples: "F1", "F1 AND F2", "(F1 AND F2) OR (F3 AND F4)". Default is AND.',
                        default: 'AND'
                      }
                    }
                  },
                  aggregations: {
                    type: 'object',
                    description: 'Object containing aggregation definitions. Each key is a unique name for the aggregation, each value contains field and summaryFunction. Example: {"AverageAge": {"field": "age", "summaryFunction": "AVG"}, "EmployeeCount": {"field": "EmployeeID", "summaryFunction": "COUNT"}}'
                  },
                  distinctResultsOnly: {
                    type: 'boolean',
                    description: 'Set to true to return distinct set of results only. Cannot be specified with aggregation. Use with select fields to get unique combinations.',
                    default: false
                  }
                }
              },
              paging: {
                type: 'object',
                description: 'Optional pagination configuration. Can specify either maxResultsToFetch or pageNumber/pageSize combination, but not both.',
                properties: {
                  pageNumber: {
                    type: 'integer',
                    minimum: 1,
                    description: 'Page number to retrieve (1-based). Use with pageSize. Cannot be used with maxResultsToFetch.',
                    default: 1
                  },
                  pageSize: {
                    type: 'integer',
                    minimum: 1,
                    maximum: 5000,
                    description: 'Number of records per page. Maximum value is 5000. Use with pageNumber. Cannot be used with maxResultsToFetch.',
                    default: 100
                  },
                  maxResultsToFetch: {
                    type: 'integer',
                    minimum: 1,
                    maximum: 5000,
                    description: 'Maximum number of results to fetch when data is not paginated. Default and maximum value is 5000. Cannot be used with pageNumber/pageSize.'
                  }
                }
              },
              useExtendedTimeout: {
                type: 'boolean',
                description: 'Optional flag that works only if the data view is sourced by a report definition. When set to true, increases timeout to 45 seconds. Otherwise, timeout is 10 seconds.',
                default: false
              },
              sessionCredentials: getSessionCredentialsSchema()
            },
            required: ['dataViewID']
          }
        };
      }
  • Static method indicating the tool category 'dataviews', used by the configurable tool loader for discovery and categorization in the tool registry.
    static getCategory() {
      return 'dataviews';
    }
  • Helper method in PegaClient that proxies the getListDataView call to the version-specific API client (v1 or v2). Called by the tool handler.
    async getListDataView(dataViewID, requestBody = {}) {
      return this.client.getListDataView(dataViewID, requestBody);

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/marco-looy/pega-dx-mcp'

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