Skip to main content
Glama

analyticsdata.properties.batchRunPivotReports

Batch multiple pivot reports for one Google Analytics property, returning all requested reports as JSON in a single API response.

Instructions

Returns multiple pivot reports in a batch. All reports must be for the same Google Analytics property [HTTP POST] — creates or triggers a change; refused under --readonly safety profiles. Returns the API's response resource as JSON — request body is a JSON BatchRunPivotReportsRequest object accepting requests; pass it via params or whole via body_file Siblings over the same resource: batchRunReports, checkCompatibility, getMetadata, runPivotReport, runRealtimeReport, runReport.

Input Schema

NameRequiredDescriptionDefault
queryNoExtra KEY=VALUE query pairs for endpoints whose parameters Discovery does not describe.
paramsNoParameter map merged into the request; typed parameters win.
dry_runNoReturn the request that would be sent, without sending it.
propertyYes[URL path segment] A Google Analytics property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID]
body_fileNoRead the request body from this file ('-' for stdin) instead of building one from the parameters. The body is a JSON BatchRunPivotReportsRequest object.
request_bodyNoRequest body of type BatchRunPivotReportsRequest: pass it via `params` (merged into the built body) or whole via `body_file`.

Output Schema

NameRequiredDescriptionDefault
kindNo
pivotReportsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / body_file / description
      Previous value: -"Read the request body from this file ('-' for stdin) instead of building one from the parameters."New value: +"Read the request body from this file ('-' for stdin) instead of building one from the parameters. The body is a JSON BatchRunPivotReportsRequest object."
    • addedInput schema / properties / request_body
      Added value: +{
      +  "description": "Request body of type BatchRunPivotReportsRequest: pass it via `params` (merged into the built body) or whole via `body_file`.",
      +  "properties": {
      +    "requests": {
      +      "items": {
      +        "properties": {
      +          "cohortSpec": {
      +            "properties": {
      +              "cohortReportSettings": {
      +                "properties": {
      +                  "accumulate": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "cohorts": {
      +                "items": {
      +                  "properties": {
      +                    "dateRange": {
      +                      "type": "object"
      +                    },
      +                    "dimension": {
      +                      "type": "string"
      +                    },
      +                    "name": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "cohortsRange": {
      +                "properties": {
      +                  "endOffset": {
      +                    "type": "integer"
      +                  },
      +                  "granularity": {
      +                    "enum": [
      +                      "GRANULARITY_UNSPECIFIED",
      +                      "DAILY",
      +                      "WEEKLY",
      +                      "MONTHLY"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "startOffset": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "comparisons": {
      +            "items": {
      +              "properties": {
      +                "comparison": {
      +                  "type": "string"
      +                },
      +                "dimensionFilter": {
      +                  "properties": {
      +                    "andGroup": {
      +                      "type": "object"
      +                    },
      +                    "filter": {
      +                      "type": "object"
      +                    },
      +                    "notExpression": {
      +                      "type": "object"
      +                    },
      +                    "orGroup": {
      +                      "type": "object"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "name": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "currencyCode": {
      +            "type": "string"
      +          },
      +          "dateRanges": {
      +            "items": {
      +              "properties": {
      +                "endDate": {
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "type": "string"
      +                },
      +                "startDate": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "dimensionFilter": {
      +            "properties": {
      +              "andGroup": {
      +                "properties": {
      +                  "expressions": {
      +                    "items": {
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "filter": {
      +                "properties": {
      +                  "betweenFilter": {
      +                    "type": "object"
      +                  },
      +                  "emptyFilter": {
      +                    "type": "object"
      +                  },
      +                  "fieldName": {
      +                    "type": "string"
      +                  },
      +                  "inListFilter": {
      +                    "type": "object"
      +                  },
      +                  "numericFilter": {
      +                    "type": "object"
      +                  },
      +                  "stringFilter": {
      +                    "type": "object"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "notExpression": {
      +                "properties": {
      +                  "andGroup": {
      +                    "type": "object"
      +                  },
      +                  "filter": {
      +                    "type": "object"
      +                  },
      +                  "notExpression": {
      +                    "type": "object"
      +                  },
      +                  "orGroup": {
      +                    "type": "object"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "orGroup": {
      +                "properties": {
      +                  "expressions": {
      +                    "items": {
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "dimensions": {
      +            "items": {
      +              "properties": {
      +                "dimensionExpression": {
      +                  "properties": {
      +                    "concatenate": {
      +                      "type": "object"
      +                    },
      +                    "lowerCase": {
      +                      "type": "object"
      +                    },
      +                    "upperCase": {
      +                      "type": "object"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "name": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "keepEmptyRows": {
      +            "type": "boolean"
      +          },
      +          "metricFilter": {
      +            "properties": {
      +              "andGroup": {
      +                "properties": {
      +                  "expressions": {
      +                    "items": {
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "filter": {
      +                "properties": {
      +                  "betweenFilter": {
      +                    "type": "object"
      +                  },
      +                  "emptyFilter": {
      +                    "type": "object"
      +                  },
      +                  "fieldName": {
      +                    "type": "string"
      +                  },
      +                  "inListFilter": {
      +                    "type": "object"
      +                  },
      +                  "numericFilter": {
      +                    "type": "object"
      +                  },
      +                  "stringFilter": {
      +                    "type": "object"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "notExpression": {
      +                "properties": {
      +                  "andGroup": {
      +                    "type": "object"
      +                  },
      +                  "filter": {
      +                    "type": "object"
      +                  },
      +                  "notExpression": {
      +                    "type": "object"
      +                  },
      +                  "orGroup": {
      +                    "type": "object"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "orGroup": {
      +                "properties": {
      +                  "expressions": {
      +                    "items": {
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "metrics": {
      +            "items": {
      +              "properties": {
      +                "expression": {
      +                  "type": "string"
      +                },
      +                "invisible": {
      +                  "type": "boolean"
      +                },
      +                "name": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "pivots": {
      +            "items": {
      +              "properties": {
      +                "fieldNames": {
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "limit": {
      +                  "type": "string"
      +                },
      +                "metricAggregations": {
      +                  "items": {
      +                    "enum": [
      +                      "METRIC_AGGREGATION_UNSPECIFIED",
      +                      "TOTAL",
      +                      "MINIMUM",
      +                      "MAXIMUM",
      +                      "COUNT"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "offset": {
      +                  "type": "string"
      +                },
      +                "orderBys": {
      +                  "items": {
      +                    "properties": {
      +                      "desc": {
      +                        "type": "boolean"
      +                      },
      +                      "dimension": {
      +                        "type": "object"
      +                      },
      +                      "metric": {
      +                        "type": "object"
      +                      },
      +                      "pivot": {
      +                        "type": "object"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "property": {
      +            "type": "string"
      +          },
      +          "returnPropertyQuota": {
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed3 schema fields changed
    • changedInput schema / properties / property / description
      Previous value: -"A Google Analytics property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID]"New value: +"[URL path segment] A Google Analytics property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID]"
    • addedInput schema / properties / property / pattern
      Added value: +"^properties/[^/]+$"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "kind": {
      +      "type": "string"
      +    },
      +    "pivotReports": {
      +      "items": {
      +        "properties": {
      +          "aggregates": {
      +            "items": {
      +              "properties": {
      +                "dimensionValues": {
      +                  "items": {
      +                    "properties": {
      +                      "value": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "metricValues": {
      +                  "items": {
      +                    "properties": {
      +                      "value": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "dimensionHeaders": {
      +            "items": {
      +              "properties": {
      +                "name": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "type": "string"
      +          },
      +          "metadata": {
      +            "properties": {
      +              "currencyCode": {
      +                "type": "string"
      +              },
      +              "dataLossFromOtherRow": {
      +                "type": "boolean"
      +              },
      +              "dataTruncationReasons": {
      +                "items": {
      +                  "properties": {
      +                    "dataTruncationDate": {
      +                      "type": "string"
      +                    },
      +                    "dataTruncationDateRanges": {
      +                      "items": {
      +                        "type": "object"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "dataTruncationMessage": {
      +                      "type": "string"
      +                    },
      +                    "dataTruncationType": {
      +                      "enum": [
      +                        "DATA_TRUNCATION_TYPE_UNSPECIFIED",
      +                        "DATA_TRUNCATION_TYPE_RULES_BASED_MODELS",
      +                        "DATA_TRUNCATION_TYPE_DATA_DRIVEN_ATTRIBUTION",
      +                        "DATA_TRUNCATION_TYPE_DV360",
      +                        "DATA_TRUNCATION_TYPE_CM360",
      +                        "DATA_TRUNCATION_TYPE_ITEM_SCOPED_ECOMMERCE_METRICS",
      +                        "DATA_TRUNCATION_TYPE_EVENT_SCOPED_ECOMMERCE_METRICS",
      +                        "DATA_TRUNCATION_TYPE_DATE_RANGE",
      +                        "DATA_TRUNCATION_TYPE_PROPERTY",
      +                        "DATA_TRUNCATION_TYPE_CONVERSIONS",
      +                        "DATA_TRUNCATION_TYPE_GOOGLE_ADS"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "emptyReason": {
      +                "type": "string"
      +              },
      +              "samplingMetadatas": {
      +                "items": {
      +                  "properties": {
      +                    "samplesReadCount": {
      +                      "type": "string"
      +                    },
      +                    "samplingSpaceSize": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "schemaRestrictionResponse": {
      +                "properties": {
      +                  "activeMetricRestrictions": {
      +                    "items": {
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "subjectToThresholding": {
      +                "type": "boolean"
      +              },
      +              "timeZone": {
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "metricHeaders": {
      +            "items": {
      +              "properties": {
      +                "name": {
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "enum": [
      +                    "METRIC_TYPE_UNSPECIFIED",
      +                    "TYPE_INTEGER",
      +                    "TYPE_FLOAT",
      +                    "TYPE_SECONDS",
      +                    "TYPE_MILLISECONDS",
      +                    "TYPE_MINUTES",
      +                    "TYPE_HOURS",
      +                    "TYPE_STANDARD",
      +                    "TYPE_CURRENCY",
      +                    "TYPE_FEET",
      +                    "TYPE_MILES",
      +                    "TYPE_METERS",
      +                    "TYPE_KILOMETERS"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "pivotHeaders": {
      +            "items": {
      +              "properties": {
      +                "pivotDimensionHeaders": {
      +                  "items": {
      +                    "properties": {
      +                      "dimensionValues": {
      +                        "items": {
      +                          "type": "object"
      +                        },
      +                        "type": "array"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "rowCount": {
      +                  "type": "integer"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "propertyQuota": {
      +            "properties": {
      +              "concurrentRequests": {
      +                "properties": {
      +                  "consumed": {
      +                    "type": "integer"
      +                  },
      +                  "remaining": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "potentiallyThresholdedRequestsPerHour": {
      +                "properties": {
      +                  "consumed": {
      +                    "type": "integer"
      +                  },
      +                  "remaining": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "serverErrorsPerProjectPerHour": {
      +                "properties": {
      +                  "consumed": {
      +                    "type": "integer"
      +                  },
      +                  "remaining": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "tokensPerDay": {
      +                "properties": {
      +                  "consumed": {
      +                    "type": "integer"
      +                  },
      +                  "remaining": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "tokensPerHour": {
      +                "properties": {
      +                  "consumed": {
      +                    "type": "integer"
      +                  },
      +                  "remaining": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "tokensPerProjectPerHour": {
      +                "properties": {
      +                  "consumed": {
      +                    "type": "integer"
      +                  },
      +                  "remaining": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "rows": {
      +            "items": {
      +              "properties": {
      +                "dimensionValues": {
      +                  "items": {
      +                    "properties": {
      +                      "value": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "metricValues": {
      +                  "items": {
      +                    "properties": {
      +                      "value": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the safety burden well: it discloses the HTTP POST method, that it creates/triggers a change, and that it is refused under --readonly safety profiles. It omits auth requirements and any per-batch request-count limits, which would matter for a batched reporting call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core behavior and the property constraint before the HTTP/safety note and sibling list. It is a single dense block and partly restates the request_body schema description, but no sentence is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter tool with deeply nested request bodies and an output schema (so return values need not be explained), the description covers batch semantics, the same-property restriction, safety profile behavior, and body-passing options. The main gap is guidance on batch size limits or partial-failure behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents property, query, params, dry_run, body_file, and request_body. The description reinforces the dual body-passing path (`params` merge vs. whole `body_file`) and names the request type, but adds no syntax or value-level detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Returns multiple pivot reports in a batch") and adds the distinguishing constraint that all reports must target the same property. It also enumerates the sibling reports endpoints, making the batch-vs-single distinction (batchRunReports, runPivotReport) immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete usage constraint (same property for all requests) and lists the alternative analyticsdata siblings so the agent can route elsewhere for single-report needs. It stops short of an explicit "use this when you have multiple pivots; use runPivotReport for one" rule, leaving a small inference step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools