Skip to main content
Glama
markhilton
by markhilton

Adobe Customer Journey Analytics MCP Server

PyPI version Python 3.10+ License: MIT

Model Context Protocol (MCP) server for Adobe Customer Journey Analytics (CJA), enabling AI-powered analytics queries through Claude and other MCP clients.

⚡ Quick Start (Simplest Setup)

No repository cloning required! Users can run this MCP server with just 2 steps:

1. Install uv (Python package manager)

# macOS/Linux
brew install uv

# Or with curl
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

2. Configure Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "Adobe CJA": {
      "command": "uvx",
      "args": ["adobe-cja-mcp"],
      "env": {
        "ADOBE_CLIENT_ID": "your_client_id_here",
        "ADOBE_CLIENT_SECRET": "your_client_secret_here",
        "ADOBE_ORG_ID": "your_org_id@AdobeOrg",
        "ADOBE_DATA_VIEW_ID": "dv_your_dataview_id"
      }
    }
  }
}

That's it!

Restart Claude Desktop and uvx will automatically download and run the MCP server from PyPI - just like npx for Node.js!


Related MCP server: AEP MCP Server

Overview

This MCP server provides tools for querying Adobe CJA data, including:

  • Running analytics reports with dimensions and metrics

  • Multi-dimensional breakdown analysis

  • Time-series trend analysis at various granularities

  • Searching and filtering dimension values

  • Listing available dimensions and metrics

  • Data view configuration access

Features

Core Reporting Tools (MVP):

  • Run ranked reports with dimensions and metrics

  • Get top N items for any dimension

  • List available dimensions and metrics

  • Access data view configuration

Advanced Reporting:

  • Breakdown Reports: Multi-dimensional analysis (e.g., pages by device type)

  • Trended Reports: Time-series analysis with hourly/daily/weekly/monthly granularity

  • Dimension Search: Find specific dimension values (pages, products, campaigns)

  • Segment Support: Filter reports with segment IDs

Adobe CJA API Permissions

Required Permissions Scope

For this MCP server to function, your Adobe API credentials (OAuth 2.0 Server-to-Server) must have the following permissions granted in Adobe Admin Console.

Authentication Scopes

Your API credentials require these OAuth scopes:

openid
AdobeID
read_organizations
additional_info.projectedProductContext
cja.reporting         # CRITICAL - Required for all reporting operations
cja.workspace         # Required for workspace objects (projects, filters, etc.)

Critical Permissions (Required for Core Functionality)

Without these permissions, the MCP server cannot perform analytics queries:

1. CJA Reporting API - Ranked Reports

  • API Endpoint: POST https://cja.adobe.io/reports

  • Permission: CJA Reporting API Access

  • Required For:

    • Running analytical reports with dimensions and metrics

    • Querying website performance data (sessions, page views, conversions)

    • Generating attribution analysis

    • Creating breakdown reports

  • MCP Tools Blocked Without Permission:

    • cja_run_report - Main reporting tool

    • cja_get_top_items - Top performers analysis

    • cja_get_trended_report - Time-series analysis

    • cja_get_breakdown_report - Multi-dimensional breakdowns

    • cja_get_sessions_data - Session analytics

    • cja_get_conversions_data - Conversion tracking

    • cja_get_attribution_analysis - Attribution modeling

    • cja_get_funnel_analysis - Funnel analysis

2. CJA Reporting API - Top Items

  • API Endpoint: GET https://cja.adobe.io/reports/topItems

  • Permission: CJA Reporting API Access

  • Required For:

    • Ranking dimension items by metrics

    • Finding top pages, products, campaigns

  • MCP Tools Blocked Without Permission:

    • cja_get_top_items (alternative implementation)

Working Permissions (Read-Only Access)

These permissions are typically granted by default for read-only CJA API access and should already be available:

  1. GET /data/dataviews/{id}/dimensions - List available dimensions

  2. GET /data/dataviews/{id}/metrics - List available metrics

  3. GET /data/dataviews/{id} - Get data view configuration details

  4. GET /calculatedmetrics - List calculated metrics

  5. GET /filters - List filters/segments

  6. GET /dateranges - List date ranges

  7. GET /annotations - List annotations

  8. GET /projects - List Analysis Workspace projects

  9. GET /data/connections - List data connections

Optional Permissions (Enhanced Features)

These permissions enable additional features but are not required for basic operation:

Individual Dimension/Metric Details

  • Endpoints:

    • GET /data/dataviews/{id}/dimensions/{dimId}

    • GET /data/dataviews/{id}/metrics/{metricId}

  • Benefit: Get detailed metadata for specific dimensions/metrics

  • Workaround: Use list endpoints instead

Filter Validation

  • Endpoint: POST /filters/validate

  • Benefit: Validate filter definitions before use

  • Workaround: Test filters directly in reports

List All Data Views

  • Endpoint: GET /dataviews

  • Benefit: Discover all available data views

  • Workaround: Use configured data view ID from environment variables

Setting Up Permissions in Adobe Admin Console

Step 1: Navigate to API Credentials

  1. Log in to Adobe Admin Console

  2. Navigate to ProductsCustomer Journey Analytics

  3. Click on API Credentials

  4. Select your OAuth Server-to-Server credential (Client ID)

Step 2: Add Product Profile

  1. Click Add Product Profile

  2. Select a profile that includes CJA Reporting API Access

  3. Ensure the profile has the following permissions:

    • Reporting API: Full access to POST /reports and GET /reports/topItems

    • Workspace API: Access to filters, calculated metrics, projects

    • Data Views: Read access to configured data views

Step 3: Verify OAuth Scopes

In the API credential configuration, verify these scopes are enabled:

  • openid

  • AdobeID

  • read_organizations

  • additional_info.projectedProductContext

  • cja.reportingCRITICAL

  • cja.workspaceCRITICAL

Step 4: Generate New Credentials (if needed)

If updating an existing credential doesn't enable reporting access:

  1. Create a new OAuth Server-to-Server credential

  2. Add CJA API as a service

  3. Select a Product Profile with full Reporting API access

  4. Copy the new Client ID and Client Secret to your .env file

Example Queries and Expected Results

Session Analysis

Query:

Show me session count in a bar chart for the last 30 days

What Happens:

  1. Claude identifies you want session metrics over time

  2. Calls cja_get_trended_report or cja_run_report with:

    • Metric: sessions or visits

    • Date range: Last 30 days

    • Granularity: day

  3. Formats results as a text-based bar chart or table

  4. Returns daily session counts with visualization

Expected Output:

Session Count - Last 30 Days

Oct 1  ████████████████ 1,245
Oct 2  ██████████████ 1,108
Oct 3  ███████████████ 1,189
...
Oct 30 ████████████████████ 1,523

Total Sessions: 38,420
Average: 1,281 sessions/day
Peak: Oct 30 (1,523 sessions)

Top Pages Analysis

Query:

What are the top 10 pages by page views this month?

What Happens:

  1. Calls cja_get_top_items with:

    • Dimension: page or pageName

    • Metric: pageviews

    • Date range: This month

    • Limit: 10

  2. Returns ranked list of pages

Expected Output:

Top 10 Pages by Page Views - October 2025

1. /home                    15,234 views
2. /products                 8,901 views
3. /about                    6,543 views
4. /contact                  4,321 views
5. /blog/article-123         3,987 views
6. /pricing                  3,456 views
7. /features                 2,890 views
8. /blog                     2,543 views
9. /documentation            2,234 views
10. /support                 1,987 views

Total: 52,096 page views

Conversion Funnel

Query:

Show me the checkout funnel conversion rates for last week

What Happens:

  1. Calls cja_get_funnel_analysis with predefined checkout steps

  2. Or calls cja_run_report multiple times for each funnel step

  3. Calculates drop-off rates between steps

Expected Output:

Checkout Funnel - Last 7 Days

Step 1: Product Page     → 10,000 visitors (100.0%)
         ↓ 45.0%
Step 2: Add to Cart      →  4,500 visitors ( 45.0%)
         ↓ 66.7%
Step 3: Checkout Started →  3,000 visitors ( 30.0%)
         ↓ 50.0%
Step 4: Payment Info     →  1,500 visitors ( 15.0%)
         ↓ 80.0%
Step 5: Purchase         →  1,200 visitors ( 12.0%)

Overall Conversion Rate: 12.0%
Biggest Drop-off: Product Page → Add to Cart (55%)

Marketing Attribution

Query:

Show me first-touch attribution for conversions in the last 14 days

What Happens:

  1. Calls cja_get_attribution_analysis with:

    • Attribution model: first_touch

    • Success event: orders or conversions

    • Date range: Last 14 days

  2. Returns marketing channel credit distribution

Expected Output:

First-Touch Attribution - Last 14 Days
Total Conversions: 450

Channel              Conversions    % of Total    Revenue
──────────────────────────────────────────────────────────
Organic Search            180         40.0%      $45,000
Paid Search               135         30.0%      $33,750
Direct                     68         15.1%      $17,000
Email                      45         10.0%      $11,250
Social Media               22          4.9%       $5,500

Top First-Touch Channel: Organic Search
Highest Revenue/Conversion: Paid Search ($250 avg)

Available MCP Tools

Core Reporting

  • cja_run_report - Run custom analytics reports

  • cja_get_top_items - Get top-performing items for a dimension

  • cja_get_trended_report - Get time-series trends

  • cja_get_breakdown_report - Get multi-dimensional breakdowns

Metadata

  • cja_list_dimensions - List available dimensions

  • cja_list_metrics - List available metrics

  • cja_list_calculated_metrics - List calculated metrics

  • cja_list_filters - List filters/segments

  • cja_list_date_ranges - List predefined date ranges

  • cja_get_dataview_info - Get data view configuration

Advanced Analytics

  • cja_search_dimension_items - Search for dimension values

  • cja_get_sessions_data - Analyze session metrics

  • cja_get_conversions_data - Analyze conversion events

  • cja_get_attribution_analysis - Run attribution models

  • cja_get_funnel_analysis - Analyze conversion funnels

License

MIT License - see LICENSE file for details

Support

For issues or questions:

Available Tools

16 tools
cja_create_calculated_metricA

Create a new calculated metric in CJA.

Create a custom metric with formulas and functions that can be used in reports. IMPORTANT: Validate the definition first using cja_validate_calculated_metric.

Args: name: Metric name (required). definition: Metric definition with formula (required). Should have 'func': 'calc-metric', 'formula': {...}, 'version': [1,0,0]. description: Optional metric description. metric_type: Type: 'decimal', 'percent', 'currency', or 'time' (default 'decimal'). polarity: Optional 'positive' or 'negative' (indicates if higher values are better/worse). precision: Optional decimal places for display (0-10). dataview_id: Optional data view ID (uses configured default if not provided).

Returns: Dictionary with created calculated metric details including assigned ID.

Example queries: - "Create a calculated metric named 'Conversion Rate'" - "Make a new metric that divides revenue by orders" - "Create a metric for visits per visitor"

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
definitionYes
descriptionNo
metric_typeNodecimal
polarityNo
precisionNo
dataview_idNo

TDQS

A4.1/5.0
Behavior3/5

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

There are no annotations, so the description must disclose behavioral traits. It does state that the tool creates a new metric (mutation) and returns a dictionary with assigned ID, but it does not mention side effects, required permissions, error handling, or rate limits. The important validation note adds some transparency but is not comprehensive.

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?

The description is well-structured with a concise intro, a highlighted prerequisite, a clear args list, return info, and example queries. It avoids redundant information, though the args list somewhat mirrors the schema. The examples are helpful and efficient.

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?

Given no output schema, the description includes return details and covers all parameters. It mentions validation as a prerequisite and provides example queries. However, it lacks information on error cases, default dataview_id behavior, and authentication requirements, leaving some gaps for a creation tool.

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

Parameters4/5

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

Schema coverage is 0%, so the description must add meaning. It provides context for all 7 parameters: explains name as required, definition structure (func, formula, version), metric_type values, polarity meaning, precision range, and dataview_id optional. This adds significant value beyond the raw schema, though it could include more detail on the formula format.

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?

The description clearly states the tool creates a new calculated metric in CJA, specifying it's a custom metric with formulas and functions used in reports. It distinguishes itself from sibling tools like cja_list_calculated_metrics and cja_validate_calculated_metric by focusing on creation.

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?

The description includes an important prerequisite: validating the definition first using cja_validate_calculated_metric. It also provides example queries that illustrate common use cases, guiding the agent on when to use the tool. However, it does not explicitly state when not to use it or provide alternatives.

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

cja_create_segmentA

Create a new segment in CJA.

This tool creates a new segment/filter that can be used in reports. Segment definitions use a JSON structure to define filtering rules.

IMPORTANT: Segment definitions are complex. Best practice:

  1. Create a template segment in the CJA UI

  2. Use cja_get_segment_details to see its definition structure

  3. Modify the definition as needed

  4. Use cja_validate_segment before creating

Args: name: Segment name (required). definition: Segment definition object with container and rules (required). description: Optional segment description. dataview_id: Optional data view ID (uses configured default if not provided).

Returns: Dictionary with created segment including assigned ID.

Example queries: - "Create a segment for mobile users" - "Make a new filter for high-value customers"

Example definition (mobile users): { "container": { "func": "segment", "context": "hits", "pred": { "func": "exists", "val": {"func": "attr", "name": "variables/mobiledevicetype"} } }, "func": "segment-def", "version": [1, 0, 0] }

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
definitionYes
descriptionNo
dataview_idNo

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses creation behavior, required and optional parameters, and suggests validation. Adds context about complexity but does not detail error conditions or side effects.

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?

Well-structured with summary, best practices, args, returns, examples. Somewhat verbose but all information is useful and front-loaded.

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 complex tool with nested objects and no output schema, description provides example definition, return value, and example queries. Missing error handling but sufficient with sibling tools for validation and details.

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

Parameters5/5

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

Schema coverage is 0%, but description explains each parameter thoroughly: name, definition (with example), description, dataview_id. Provides meaning beyond schema types, including example definition.

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?

Clearly states 'Create a new segment in CJA.' with specific verb and resource. Distinguishes from sibling tools like cja_validate_segment and cja_get_segment_details.

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

Usage Guidelines5/5

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

Explicitly provides best practices: use cja_get_segment_details to see structure, use cja_validate_segment before creating. Also suggests creating template in UI. Guides when to use this tool vs alternatives.

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

cja_get_calculated_metric_detailsA

Get detailed information about a specific calculated metric.

Retrieve complete details about a calculated metric including its definition/formula. This is useful for understanding how a metric is calculated or copying definitions.

Args: metric_id: Calculated metric ID to retrieve (required). expansion: Optional comma-delimited fields: 'definition', 'tags', 'usedIn', 'compatibility'.

Returns: Dictionary with calculated metric details and formula definition.

Example queries: - "Show me the formula for calculated metric a5066209" - "Get definition for the conversion rate metric" - "What's the formula for metric ID 12345?"

ParametersJSON Schema
NameRequiredDescriptionDefault
metric_idYes
expansionNo

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It mentions returning a dictionary with details and formula, but lacks information on error handling, authentication requirements, or any side effects. Read-only nature is implied but not explicit.

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?

The description is well-structured with a summary, args, returns, and examples. It is front-loaded with purpose. The example queries are helpful but take some space; could be slightly more concise.

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 simple retrieval tool with two parameters (one required) and no output schema, the description covers essential aspects: what it does, what parameters do, and what is returned. Lack of error details is a minor gap.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It explains metric_id as 'Calculated metric ID to retrieve (required)' and expansion as 'Optional comma-delimited fields: definition, tags, usedIn, compatibility'. This adds significant meaning beyond the raw 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?

The description clearly states it retrieves detailed information about a specific calculated metric, including its definition/formula. This distinguishes it from sibling tools like cja_list_calculated_metrics (which lists) and cja_create_calculated_metric (which creates).

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?

The description provides example queries that illustrate appropriate use cases, such as 'Show me the formula for calculated metric a5066209'. However, it does not explicitly state when not to use this tool or list alternatives.

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

cja_get_dataview_infoA

Get detailed information about a CJA data view.

This tool retrieves configuration and metadata for the data view, including its name, description, owner, and component counts.

Args: dataview_id: Optional data view ID (uses configured default if not provided). expansion: Optional additional fields to include (e.g., 'components').

Returns: Dictionary with data view configuration and metadata.

Example queries: - "What data view am I using?" - "Show me information about the current data view" - "What's configured in my data view?"

ParametersJSON Schema
NameRequiredDescriptionDefault
dataview_idNo
expansionNo

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It indicates a read-only operation returning configuration metadata, but does not mention error handling, permissions, or response size. The basic behavior is clear but not comprehensive.

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

Conciseness5/5

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

The description is concise, consisting of a single introductory sentence followed by structured Args and Returns sections. It is front-loaded with the purpose and contains no extraneous information.

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?

Given the tool's simplicity (two optional params, no output schema), the description covers the essential aspects: purpose, parameters, and example queries. Minor gaps exist, such as the exact return structure and error scenarios, but it is largely sufficient for agent decision-making.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates well by explaining the two parameters: dataview_id is optional and defaults to a configured value, expansion can include additional fields like 'components'. This adds meaningful context beyond the raw 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?

The description clearly states that the tool retrieves detailed information about a CJA data view, using a specific verb and resource. It distinguishes itself from sibling tools, which focus on other entities like metrics, segments, or reports, making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for obtaining data view configuration but does not explicitly state when to use this tool versus alternatives or when not to use it. The sibling list provides context, but direct guidelines are missing.

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

cja_get_segment_detailsA

Get detailed information about a specific segment.

This tool retrieves complete details about a segment including its definition, which shows the exact logic and rules used to filter data.

Args: segment_id: Segment ID to retrieve. expansion: Additional fields to include: 'definition', 'tags', 'compatibility'.

Returns: Dictionary with complete segment information.

Example queries: - "Show me the definition of segment s300000022_5bb7c94e80f0073611afb35c" - "Get details for the Mobile Users segment" - "What's the logic in segment XYZ?"

ParametersJSON Schema
NameRequiredDescriptionDefault
segment_idYes
expansionNo

TDQS

A4.1/5.0
Behavior4/5

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

The description implies a read-only operation ('Get', 'retrieves'), but no annotations are present. It does not explicitly state side effects or safety, though for a get operation the behavior is transparent enough. Additional details on auth or rate limits would improve it.

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?

The description is fairly concise and well-structured with sections for Args, Returns, and Example queries. It could be slightly shorter by removing redundant phrases like 'which shows the exact logic and rules', but overall it is efficient.

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?

Given the tool's simplicity (2 parameters, no output schema), the description covers the core functionality, parameters, and provides examples. It lacks error handling or permission notes, but is sufficient for a straightforward get operation.

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

Parameters4/5

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

Schema description coverage is 0%, but the description adds meaningful information for both parameters: segment_id is the ID to retrieve, and expansion lists possible additional fields. It does not provide format or constraints, but compensates for the lack of schema descriptions.

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?

The description clearly states it retrieves detailed information about a specific segment, including definition and logic. The tool name and example queries reinforce this, and it is distinct from sibling tools like list_segments or create_segment.

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

Usage Guidelines3/5

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

Example queries are provided, but the description does not explicitly state when to use this tool versus alternatives (e.g., list_segments for listing, validate_segment for validation). No when-not guidance is given.

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

cja_get_top_itemsA

Get top N items for a dimension ranked by a metric.

This tool is optimized for finding the top performing dimension items based on a single metric, such as top pages by visits, top products by revenue, etc.

Args: dimension: Dimension ID (e.g., 'variables/page', 'variables/product'). metric: Metric ID to rank by (e.g., 'metrics/visits', 'metrics/revenue'). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. limit: Number of top items to return (default: 10, max: 500). dataview_id: Optional data view ID (uses configured default if not provided).

Returns: Dictionary with top dimension items and their metric values.

Example queries: - "What are the top 10 pages by visits this week?" - "Show me the top 20 products by revenue last month" - "Which marketing channels drove the most conversions?"

ParametersJSON Schema
NameRequiredDescriptionDefault
dimensionYes
metricYes
start_dateYes
end_dateYes
limitNo
dataview_idNo

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that the tool returns a dictionary with metric values and mentions a max limit of 500, which is useful. However, it does not explicitly state that the tool is read-only, non-destructive, or any other behavioral traits beyond the return format.

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?

The description is well-structured: a concise purpose statement at the top, followed by a bullet-style Args section and a Returns clause, plus example queries. It is appropriately sized without unnecessary fluff, though the Args section repeats some schema metadata.

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?

Given no output schema, the description provides a brief return description and example queries, which is adequate. All 6 parameters are documented, and the tool's purpose is clear. However, it could benefit from explaining pagination or the structure of the returned dictionary in more detail.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It provides clear parameter explanations for all 6 parameters, including examples for dimension and metric (e.g., 'variables/page'), date format, limit with default and max, and dataview_id optionality. This adds significant meaning beyond the schema names and types.

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?

The description clearly states the tool gets 'top N items for a dimension ranked by a metric', with concrete examples like 'top pages by visits' and 'top products by revenue'. This verb+resource combination is specific and distinguishes it from sibling report tools (e.g., cja_run_report, cja_run_breakdown_report) by emphasizing ranking and top-N filtering.

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?

The description explains the tool is 'optimized for finding the top performing dimension items' and provides example queries, giving strong context for when to use it. However, it does not explicitly state when not to use it or compare to alternative siblings like cja_run_breakdown_report for cross-tabulations or cja_search_dimension_items for searching.

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

cja_list_calculated_metricsA

List calculated metrics in CJA.

Retrieve calculated metrics (custom formulas) that can be used in reports. You can filter by name, tags, and share type.

Args: name: Optional filter by metric name (partial match). tag_names: Optional comma-delimited tag names to filter by. include_type: Optional 'shared', 'all', or 'templates' to include additional metrics. limit: Maximum results per page (1-1000, default 10). page: Page number for pagination (0-indexed, default 0). expansion: Optional comma-delimited fields: 'definition', 'tags', 'usedIn', 'compatibility'. dataview_id: Optional data view ID to filter metrics (uses configured default if not provided).

Returns: Dictionary with list of calculated metrics and total count.

Example queries: - "Show me all calculated metrics" - "List calculated metrics containing 'conversion' in the name" - "Get calculated metrics with their definitions"

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
tag_namesNo
include_typeNo
limitNo
pageNo
expansionNo
dataview_idNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description details filtering, pagination, and expansion options. It discloses read-only behavior and no destructive actions, though it omits rate limits or authentication requirements.

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?

The description is well-structured with a summary, parameter details, return info, and examples. It is slightly lengthy but each sentence is meaningful and earns its place.

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 list tool with 7 parameters and no output schema, the description covers arguments comprehensively and provides usage examples. It lacks detail on the return structure beyond a dictionary with list and count, which is adequate.

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

Parameters5/5

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

Schema descriptions are absent (0% coverage), but the description explains each parameter's purpose, options, and defaults clearly, adding significant value beyond the schema itself.

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?

The description clearly states the tool lists calculated metrics in CJA, explaining they are custom formulas for reports. This distinguishes it from siblings like cja_get_calculated_metric_details (single metric) and cja_create_calculated_metric (creation).

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?

The description provides filter parameters and example queries guiding usage. It does not explicitly exclude when to use alternatives, but the context and examples imply proper use, e.g., listing vs. getting details.

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

cja_list_dimensionsA

List all available dimensions in the CJA data view.

Dimensions are attributes that can be used to break down and categorize your data, such as page names, product categories, marketing channels, date/time components, etc.

Args: dataview_id: Optional data view ID (uses configured default if not provided). expansion: Optional additional fields to include (e.g., 'tags,approved').

Returns: Dictionary with dimensions list and total count.

Example queries: - "What dimensions are available in my data view?" - "List all dimensions I can use for analysis" - "Show me the available breakdowns"

ParametersJSON Schema
NameRequiredDescriptionDefault
dataview_idNo
expansionNo

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It mentions optional parameters and a return dictionary with list and count. It does not discuss permissions, rate limits, or error handling. The read-only nature is implied but not explicit.

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?

The description is concise, using a docstring format with Args and Returns sections. It includes example queries without being verbose. It is well-structured and easy to read.

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

Completeness3/5

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

Given the tool's simplicity and the absence of an output schema, the description fairly covers the purpose and parameters. However, it lacks any mention of errors, performance, or limitations, which would be helpful for completeness.

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

Parameters4/5

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

The schema has 0% description coverage, but the description explains the parameters 'dataview_id' (optional, uses default) and 'expansion' (additional fields) with an example. This adds useful meaning 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?

The description clearly states that the tool lists all available dimensions in the CJA data view, with examples of what dimensions are. It distinguishes from siblings like list_metrics and list_segments by focusing on attributes that break down data.

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?

The description explains when to use this tool (e.g., 'What dimensions are available?') and provides example queries. However, it does not explicitly mention when not to use it or contrast with alternatives like cja_search_dimension_items.

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

cja_list_metricsA

List all available metrics in the CJA data view.

Metrics are quantitative measurements of your data, such as visits, page views, revenue, conversion rates, time spent, etc.

Args: dataview_id: Optional data view ID (uses configured default if not provided). expansion: Optional additional fields to include.

Returns: Dictionary with metrics list and total count.

Example queries: - "What metrics can I measure?" - "List all available metrics" - "Show me metrics for measuring website performance"

ParametersJSON Schema
NameRequiredDescriptionDefault
dataview_idNo
expansionNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool lists all metrics and returns a dictionary with a list and total count. However, it does not mention any behavioral traits such as data view restrictions, authorization needs, or performance implications. The description provides basic but incomplete behavioral transparency.

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?

The description is well-structured with a clear opening sentence, separate Args and Returns sections, and example queries. It is informative without being overly verbose. Minor redundancy exists in repeating 'metrics' in examples, but overall it is concise and front-loaded.

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 simple list tool with no output schema, the description covers the essential aspects: purpose, parameters, return format, and usage examples. It lacks details on expansion values, but given the tool's simplicity, the description is largely complete and useful.

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?

With 0% schema description coverage, the description adds value by explaining that dataview_id is optional and uses a configured default, and that expansion allows additional fields. However, it does not specify what values expansion can take or provide examples, leaving some ambiguity. This is adequate but not excellent.

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?

The description clearly states 'List all available metrics in the CJA data view', which is a specific verb-resource combination. It distinguishes from sibling tools like cja_list_dimensions and cja_list_segments by focusing on metrics, and provides examples of metrics (visits, page views, revenue) that clarify the tool's scope.

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

Usage Guidelines3/5

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

The description includes example queries like 'What metrics can I measure?' which imply when to use, but it does not explicitly state when not to use this tool or provide direct alternatives. While the sibling list clarifies alternatives, the description itself lacks explicit usage guidance or conditions.

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

cja_list_segmentsA

List all available segments/filters in CJA.

Segments (also called filters in CJA) are reusable components that filter data in reports and analysis. This tool retrieves all segments you have access to.

Args: dataview_id: Optional data view ID to filter segments (uses configured default if not provided). name: Filter segments by name (partial match). tag_names: Comma-delimited list of tag names to filter by. include_type: Include additional segments: 'shared', 'all', 'templates'. limit: Number of results per page (default: 10, max: 1000). page: Page number, 0-indexed (default: 0). expansion: Additional fields to include: 'definition', 'tags', 'compatibility', 'ownerFullName'.

Returns: Dictionary with segments list and metadata.

Example queries: - "List all available segments" - "Show me segments with 'mobile' in the name" - "What filters are tagged with 'marketing'?" - "List all shared segments"

ParametersJSON Schema
NameRequiredDescriptionDefault
dataview_idNo
nameNo
tag_namesNo
include_typeNo
limitNo
pageNo
expansionNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description discloses key behavioral aspects: it retrieves segments the user has access to, supports pagination and expansion, and returns a dictionary. It does not explicitly declare read-only intent, but the listing nature implies no side effects.

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?

The description is well-structured with a brief opening, parameter list, return note, and example queries. It is slightly verbose due to the parenthetical clarification about segments/filters, but all content adds value.

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?

Given 7 parameters and no output schema or annotations, the description covers the tool's functionality well, including parameter details and use examples. It lacks precise output structure (e.g., exact keys), but the dictionary description is adequate for a list tool.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by explaining each parameter: dataview_id (optional filter, default), name (partial match), tag_names (comma-delimited), include_type (with examples 'shared', 'all', 'templates'), limit (default 10, max 1000), page (0-indexed), expansion (list of fields).

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?

The description clearly states 'List all available segments/filters in CJA', using a specific verb and resource. It distinguishes segments from related siblings like cja_get_segment_details and cja_create_segment by focusing on listing all accessible segments.

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

Usage Guidelines3/5

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

Example queries demonstrate typical use cases (e.g., 'List all available segments', 'Show me segments with 'mobile' in the name'). However, the description does not explicitly state when to avoid this tool or compare it to siblings like cja_get_segment_details for more detail.

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

cja_run_breakdown_reportA

Run a multi-dimensional breakdown report.

This tool performs breakdown analysis where you analyze a primary dimension and further break it down by a secondary dimension. For example, analyze pages and break them down by device type to understand device distribution per page.

Args: primary_dimension: Primary dimension ID (e.g., 'variables/page', 'variables/campaign'). breakdown_dimension: Dimension to break down by (e.g., 'variables/mobiledevicetype'). metrics: List of metric IDs to analyze. start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. limit: Maximum number of primary dimension items (default: 10, max: 500). breakdown_limit: Maximum breakdown items per primary item (default: 5, max: 50). segment_ids: Optional list of segment IDs to filter the report. dataview_id: Optional data view ID (uses configured default if not provided).

Returns: Dictionary with nested breakdown report results.

Example queries: - "Break down top pages by device type" - "Show me campaigns broken down by browser for last month" - "Analyze product performance by marketing channel"

ParametersJSON Schema
NameRequiredDescriptionDefault
primary_dimensionYes
breakdown_dimensionYes
metricsYes
start_dateYes
end_dateYes
limitNo
breakdown_limitNo
segment_idsNo
dataview_idNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided; description covers what the tool does (breakdown analysis, returns nested results) but lacks explicit mention of read-only nature, side effects, or rate limits.

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?

Well-structured with summary, args, returns, and examples. Contains some redundancy but overall concise and informative.

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

Completeness5/5

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

Covers all parameters, usage context, and return format. Given no output schema, the description is sufficiently complete for agent understanding.

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

Parameters4/5

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

Input schema has 0% description coverage, but description compensates by explaining each parameter's purpose, including examples and default values.

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?

Description clearly states it runs a breakdown report with primary and secondary dimensions. Examples differentiate from sibling tools like cja_run_report and cja_run_trended_report.

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?

Provides clear usage context with example queries and parameter explanations. Does not explicitly state when not to use, but sibling tool names imply alternatives.

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

cja_run_reportA

Run a CJA report with specified dimension and metrics over a date range.

This is the primary tool for analyzing data. It breaks down one or more metrics by a dimension over a specified time period.

IMPORTANT: Before calling this tool, check the 'cja://quick-reference' resource for common dimension and metric IDs. For daily trends, use 'variables/daterangeday'. For sessions, use 'metrics/visits'. The resources provide commonly used IDs.

Args: dimension: Dimension ID to break down (e.g., 'variables/daterangeday', 'variables/page'). metrics: List of metric IDs to measure (e.g., ['metrics/visits', 'metrics/pageviews']). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. limit: Maximum number of dimension items to return (default: 10, max: 50000). dataview_id: Optional data view ID (uses configured default if not provided).

Returns: Dictionary with report data including dimension items and metric values.

Common patterns (check cja://quick-reference resource for more): - Daily sessions: dimension='variables/daterangeday', metrics=['metrics/visits'] - Top pages: dimension='variables/page', metrics=['metrics/pageviews'] - Device breakdown: dimension='variables/mobiledevicetype', metrics=['metrics/visits']

Example queries: - "Show me daily visits for January 2024" - "What are the top pages by pageviews last month?" - "Analyze sessions by device type for Q1"

ParametersJSON Schema
NameRequiredDescriptionDefault
dimensionYes
metricsYes
start_dateYes
end_dateYes
limitNo
dataview_idNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations exist, so description bears full burden. It explains the function and return type but omits details like caching, pagination, or rate limits. The note about limit max and default is helpful.

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?

Well-structured with sections: overview, important note, args, returns, patterns, examples. Front-loaded with purpose. Could be slightly more concise but remains clear and organized.

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?

Given 6 params, no output schema, and no annotations, the description covers inputs well and explains return type. Common patterns and example queries add context. Missing details on output structure, but adequate for usage.

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

Parameters5/5

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

Schema coverage is 0%, but the description documents all 6 parameters with names, types, defaults, and examples. It adds meaning beyond the schema, especially for dimension and metrics with common ID references.

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?

The description clearly states it runs a CJA report with dimension and metrics over a date range, explicitly calling it 'the primary tool for analyzing data.' It distinguishes from siblings like breakdown and trended reports through its general nature.

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?

It advises checking the quick-reference resource for IDs and provides common patterns and example queries. However, it does not explicitly contrast with sibling tools or specify when not to use it.

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

cja_run_trended_reportA

Run a time-series trend report.

This tool analyzes how metrics change over time at a specified granularity (hourly, daily, weekly, monthly). Optionally break down trends by a dimension.

Args: metrics: List of metric IDs to trend over time. start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. granularity: Time granularity - 'hour', 'day', 'week', or 'month' (default: 'day'). dimension: Optional dimension to break down the trend (e.g., 'variables/mobiledevicetype'). dimension_limit: Maximum dimension items if dimension specified (default: 5, max: 50). segment_ids: Optional list of segment IDs to filter the report. dataview_id: Optional data view ID (uses configured default if not provided).

Returns: Dictionary with time-series trend data.

Example queries: - "Show me daily visits trend for last 30 days" - "Trend pageviews by hour for yesterday" - "Show weekly revenue trend broken down by device type" - "Monthly orders trend for Q1 2024"

ParametersJSON Schema
NameRequiredDescriptionDefault
metricsYes
start_dateYes
end_dateYes
granularityNoday
dimensionNo
dimension_limitNo
segment_idsNo
dataview_idNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral aspects. It indicates the tool runs a report (assumed read-only) and returns a dictionary, but it does not mention side effects, auth requirements, or rate limits. For a reporting tool, this is adequate but not thorough.

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?

The description is well-structured: a short intro, followed by an Args list, returns note, and example queries. It is front-loaded with the core purpose. While a bit lengthy, it earns its space by providing clear guidance without unnecessary fluff.

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?

Given 8 parameters (3 required) and no output schema, the description provides sufficient context: it explains what the tool does, what each parameter does, what it returns, and example use cases. It could detail error handling or output format further, but this is adequate for a reporting tool.

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

Parameters4/5

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

The input schema has 0% description coverage, so the description's 'Args' section adds significant meaning beyond the schema. It explains each parameter in plain language, including examples like 'dimension: Optional dimension to break down the trend (e.g., "variables/mobiledevicetype")', which is highly valuable.

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?

The description clearly states 'Run a time-series trend report' and explains that it analyzes how metrics change over time with specified granularity. This distinguishes it from siblings like cja_run_breakdown_report or cja_run_report, as it focuses on time-based trends.

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?

The description provides example queries that illustrate when to use the tool, such as 'Show me daily visits trend for last 30 days'. It also explains optional dimension breakdown, giving context for usage, though it does not explicitly state when not to use it.

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

cja_search_dimension_itemsA

Search for dimension items matching a search term.

This tool searches within a dimension's values to find items containing the search term. Useful for finding specific pages, products, campaigns, etc.

Args: dimension: Dimension ID to search within (e.g., 'variables/page', 'variables/product'). search_term: Search term to find matching dimension items. start_date: Optional start date to scope search results (YYYY-MM-DD format). end_date: Optional end date to scope search results (YYYY-MM-DD format). limit: Maximum number of matching items to return (default: 100, max: 1000). dataview_id: Optional data view ID (uses configured default if not provided).

Returns: Dictionary with matching dimension items.

Example queries: - "Find all pages containing 'checkout'" - "Search for products with 'pro' in the name" - "Which campaigns contain 'summer'?" - "Find pages with 'login' that had activity last week"

ParametersJSON Schema
NameRequiredDescriptionDefault
dimensionYes
search_termYes
start_dateNo
end_dateNo
limitNo
dataview_idNo

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so the description carries full burden. It explains the search operation and returns, but does not explicitly state it is read-only or describe error handling, rate limits, or access requirements. Minimal but adequate for a search tool.

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?

The description is well-structured with a summary, usage paragraph, Args list, Returns, and examples. It is appropriately sized for the parameter count and does not contain fluff, though it could be slightly more concise if schema parameters were documented.

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?

Given no output schema, no annotations, and 6 parameters, the description covers the core functionality well with examples. It lacks details on edge cases, case sensitivity, or pagination behavior, but is sufficient for typical usage.

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

Parameters5/5

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

With 0% schema description coverage, the description thoroughly documents all 6 parameters, including format hints (e.g., YYYY-MM-DD for dates), defaults (limit 100), and optionality (dataview_id uses configured default). The Args section adds significant value.

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?

The description clearly states the tool searches for dimension items matching a search term, specifying the verb 'Search' and resource 'dimension items'. Examples with specific use cases like 'Find all pages containing checkout' make the purpose unambiguous.

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

Usage Guidelines3/5

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

The description provides usage examples and states it's useful for finding specific items, but does not explicitly contrast with sibling tools like cja_get_top_items or mention when not to use it. Guidance on alternatives is missing.

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

cja_validate_calculated_metricA

Validate a calculated metric definition before creating or updating.

Check if a calculated metric definition is syntactically correct and compatible with the data view. Always use this before creating a new metric.

Args: name: Metric name for validation (required). definition: Metric definition to validate (required). metric_type: Type: 'decimal', 'percent', 'currency', or 'time' (default 'decimal'). description: Optional metric description for validation. dataview_id: Optional data view ID to validate against (uses configured default if not provided).

Returns: Dictionary with validation result, metrics used, and functions detected.

Example queries: - "Validate this calculated metric definition before I create it" - "Check if this metric formula is valid" - "Is this calculated metric definition compatible?"

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
definitionYes
metric_typeNodecimal
descriptionNo
dataview_idNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the tool is a validation step (non-destructive), and specifies return values including validation result, metrics used, and functions detected. No side effects are mentioned, but the nature implies read-only.

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

Conciseness5/5

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

The description is well-structured: purpose sentence, usage sentence, bulleted Args, Returns, and example queries. It is concise, front-loaded, and each part adds value.

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

Completeness5/5

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

Given 5 parameters and no output schema or annotations, the description fully explains all inputs and output structure. It provides sufficient context for an agent to use the tool correctly, including example queries.

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

Parameters5/5

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

Schema coverage is 0%, so description fully compensates by detailing each parameter: name required, definition required, metric_type with default 'decimal', description optional, dataview_id optional with default behavior. This adds clear meaning beyond the raw 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?

The description clearly states the tool validates a calculated metric definition before creation or update, using specific verbs ('validate', 'check') and distinguishing from siblings like create or segment validation.

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?

The description explicitly advises 'Always use this before creating a new metric', giving clear when-to-use guidance. Although no explicit when-not-to or alternatives are mentioned, the context is strong enough.

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

cja_validate_segmentA

Validate a segment definition before creating or updating.

This tool checks if a segment definition is syntactically correct and compatible with the specified data view. Always use this before creating a new segment.

Args: definition: Segment definition to validate (required). dataview_id: Optional data view ID to validate against (uses configured default if not provided).

Returns: Dictionary with validation result and compatibility information.

Example queries: - "Validate this segment definition before I create it" - "Check if this filter definition is valid" - "Is this segment compatible with my data view?"

ParametersJSON Schema
NameRequiredDescriptionDefault
definitionYes
dataview_idNo

TDQS

A3.8/5.0
Behavior3/5

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

The description discloses the tool checks syntax and compatibility, and returns a dictionary. However, with no annotations, it does not explicitly confirm it is read-only or describe error handling, which is a gap.

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?

The description is well-structured with Args, Returns, and Example queries. It is front-loaded with purpose. Minor redundancy like extra period after 'updating.' but overall concise.

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

Completeness3/5

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

The description includes example queries and basic return info. But lacks output schema and detailed validation result format. For a validation tool, more specifics on success/failure indicators would improve completeness.

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?

Description adds meaning to both parameters: explains 'definition' is required segment definition and 'dataview_id' is optional with default. However, schema coverage is 0% and the nested 'definition' object is not described, limiting usefulness.

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?

The description clearly states the verb 'validate' and the resource 'segment definition'. It distinguishes this tool from siblings like 'cja_validate_calculated_metric' and 'cja_create_segment' by specifying it validates before creating or updating.

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?

The description explicitly says 'Always use this before creating a new segment' and mentions validation for updates. It provides clear context but lacks explicit when-not-to-use or alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv0.1.2
    • First observedcja_create_calculated_metric
    • First observedcja_create_segment
    • First observedcja_get_calculated_metric_details
    • First observedcja_get_dataview_info
    • First observedcja_get_segment_details
    • First observedcja_get_top_items
    • First observedcja_list_calculated_metrics
    • First observedcja_list_dimensions
    • First observedcja_list_metrics
    • First observedcja_list_segments
    • First observedcja_run_breakdown_report
    • First observedcja_run_report
    • First observedcja_run_trended_report
    • First observedcja_search_dimension_items
    • First observedcja_validate_calculated_metric
    • First observedcja_validate_segment

TDQS

A4.2/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct resource or action. CRUD-like tools are separated per entity (calculated metrics vs. segments), report tools have different purposes (general, breakdown, trend, top items), and metadata tools (list dimensions, metrics, dataview) are clearly distinct.

Naming Consistency5/5

All tools follow the consistent 'cja_verb_noun' pattern in snake_case, e.g., cja_create_calculated_metric, cja_run_report, cja_list_dimensions. No mixing of conventions.

Tool Count5/5

16 tools cover the core functionalities of CJA: CRUD for metrics and segments, multiple report types, dimension/metadata discovery. The count feels right for a focused analytics server.

Completeness4/5

Covers creation, retrieval, listing, and validation for metrics/segments, plus various report types. Missing update/delete operations for metrics and segments, but core workflows are supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server that enables AI agents (Claude Code) to manage Criteo campaigns, ad sets, creatives, audiences, and reports via natural language.
    -
  • F
    license
    B
    quality
    C
    maintenance
    A platform-agnostic MCP server that connects Claude to campaign data, institutional knowledge, and historical performance for paid media teams, enabling automated analysis, reporting, and debugging.
    73
    -