Skip to main content
Glama

MCP Braze

Production-ready MCP server for Braze customer engagement

TypeScript Node.js Tests License

Built with the MCP SDK — Works with Claude Desktop & Claude.ai


Overview

A comprehensive MCP server enabling AI assistants to interact with Braze's customer engagement platform. Features 92 tools covering user management, messaging, campaigns, analytics, email/SMS operations, catalogs, and SCIM provisioning—built for production reliability.

Related MCP server: Braze Universal MCP Server

Δ Capabilities

Core

92 Tools — Users, messaging, campaigns, analytics Multi-Channel — Push, email, SMS, in-app, webhooks Header Auth — Multi-tenant ready architecture

Reliability

Circuit Breaker — Cascading failure prevention Auto-Retry — Exponential backoff with jitter Health Checks — K8s liveness & readiness probes

Security

Input Validation — Zod schemas everywhere Injection Prevention — XSS & path attacks blocked Rate Limiting — Token bucket algorithm

Performance

Request Queue — Concurrency control (10 max) Request Deduplication — Shares concurrent results Response Caching — TTL-based with LRU eviction

Quick Start

npm install && npm run build
node dist/index.js

Configuration

{
  "mcpServers": {
    "braze": {
      "command": "node",
      "args": ["/path/to/mcp-braze/dist/index.js"],
      "env": {
        "BRAZE_API_KEY": "your-api-key",
        "BRAZE_REST_ENDPOINT": "https://rest.iad-01.braze.com"
      }
    }
  }
}
{
  "mcpServers": {
    "braze": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://your-server.com/mcp",
        "--header", "x-braze-api-key:your-api-key",
        "--header", "x-braze-rest-endpoint:https://rest.iad-01.braze.com"
      ]
    }
  }
}
  1. Deploy server with HTTP transport

  2. Claude.ai → Settings → Connectors

  3. Add URL: https://your-server.com/mcp

  4. Add headers: x-braze-api-key, x-braze-rest-endpoint

Platform

Config Path

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Get your API key

β Tools

Category

Tools

Users

users_track · users_identify · users_alias_new · users_alias_update · users_delete · users_merge · users_external_id_rename · users_external_id_remove

Messaging

messages_send · campaigns_trigger_send · canvas_trigger_send · transactional_email_send · send_id_create · live_activity_update

Scheduling

scheduled_broadcasts_list · messages_schedule_create · messages_schedule_update · messages_schedule_delete · campaigns_schedule_create · campaigns_schedule_update · campaigns_schedule_delete · canvas_schedule_create · canvas_schedule_update · canvas_schedule_delete

Exports

campaigns_list · campaigns_details · campaigns_analytics · sends_analytics · canvas_list · canvas_details · canvas_analytics · canvas_summary · segments_list · segments_details · segments_analytics · users_export · users_export_segment · users_export_control_group · kpi_dau · kpi_mau · kpi_new_users · kpi_uninstalls · events_list · events_analytics · purchases_products · purchases_quantity · purchases_revenue · sessions_analytics

Email

email_hard_bounces · email_unsubscribes · email_subscription_status · email_bounce_remove · email_spam_remove · email_blocklist · email_blacklist°

SMS

sms_invalid_phones · sms_invalid_phones_remove

Subscriptions

subscription_status_get · subscription_user_status · subscription_status_set · subscription_status_set_v2

Templates

email_templates_list · email_templates_info · email_templates_create · email_templates_update · content_blocks_list · content_blocks_info · content_blocks_create · content_blocks_update

Catalogs

catalogs_list · catalogs_create · catalogs_delete · catalog_items_list · catalog_items_create · catalog_items_update · catalog_items_edit · catalog_items_delete · catalog_item_get · catalog_item_create · catalog_item_update · catalog_item_edit · catalog_item_delete

Preferences

preference_centers_list · preference_center_get · preference_center_url · preference_center_create · preference_center_update

SCIM

scim_users_search · scim_users_get · scim_users_create · scim_users_update · scim_users_delete

° Deprecated — use email_blocklist instead

Usage

"Track a purchase event for user123 with amount $99.99"

"Send the welcome campaign to users who signed up today"

"Get campaign analytics for the last 30 days"

"List all users in the Premium segment"

"Create a new email template for order confirmations"

Authentication

Priority

API Key

REST Endpoint

1

x-braze-api-key header

x-braze-rest-endpoint header

2

Authorization: Bearer header

restEndpoint parameter

3

brazeApiKey parameter

BRAZE_REST_ENDPOINT env

4

BRAZE_API_KEY env

Braze REST Endpoints

Region

Endpoint

US-01

https://rest.iad-01.braze.com

US-02

https://rest.iad-02.braze.com

US-03

https://rest.iad-03.braze.com

US-04

https://rest.iad-04.braze.com

US-05

https://rest.iad-05.braze.com

US-06

https://rest.iad-06.braze.com

US-07

https://rest.iad-07.braze.com

US-08

https://rest.iad-08.braze.com

EU-01

https://rest.fra-01.braze.eu

EU-02

https://rest.fra-02.braze.eu

Find your endpoint in Braze Dashboard → Settings → APIs and Identifiers

Stability & Resilience

  • Auto-retries on HTTP 429, 500, 502, 503, 504

  • Handles network errors (ECONNRESET, ETIMEDOUT, ECONNREFUSED)

  • Respects Retry-After headers

  • Configurable max retries, delays, jitter

Prevents cascading failures:

  • CLOSED — Normal operation

  • OPEN — Fast-fail mode (5 failures trigger)

  • HALF_OPEN — Recovery testing

  • Timeout: 30s default (AbortController)

  • Deduplication: Shares identical concurrent requests

  • Queue: Limits to 10 concurrent requests

  • Rate Limiting: Token bucket algorithm

Kubernetes-ready probes:

  • health — Full status report

  • liveness — Alive check

  • readiness — Traffic ready

Deployment

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY dist ./dist
EXPOSE 3000
CMD ["node", "dist/index.js"]
docker build -t mcp-braze .
docker run -p 3000:3000 \
  -e BRAZE_API_KEY=your-key \
  -e BRAZE_REST_ENDPOINT=https://rest.iad-01.braze.com \
  mcp-braze
# Server
PORT=3000
NODE_ENV=production

# Auth (prefer headers in production)
BRAZE_API_KEY=
BRAZE_REST_ENDPOINT=
BRAZE_APP_ID=

# Rate Limiting
RATE_LIMIT_ENABLED=true
RATE_LIMIT_REQUESTS_PER_SECOND=10

# Caching
CACHE_ENABLED=true
CACHE_TTL_SECONDS=300
CACHE_MAX_SIZE=1000

# Circuit Breaker
CIRCUIT_BREAKER_ENABLED=true
CIRCUIT_BREAKER_THRESHOLD=5
CIRCUIT_BREAKER_RESET_TIMEOUT=60000

# Logging
LOG_LEVEL=info

# Sentry (Optional)
SENTRY_DSN=
SENTRY_ENVIRONMENT=production

Architecture

src/
├── index.ts                 # Entry point
├── server.ts                # MCP server init
├── tools/                   # 92 tools
│   ├── users.ts
│   ├── messaging.ts
│   ├── scheduling.ts
│   ├── exports.ts
│   ├── email.ts
│   ├── sms.ts
│   ├── subscriptions.ts
│   ├── templates.ts
│   ├── catalogs.ts
│   ├── preference-center.ts
│   └── scim.ts
└── lib/                     # Core utilities
    ├── auth.ts              # API key extraction
    ├── client.ts            # Braze HTTP client
    ├── validation.ts        # Zod schemas
    ├── errors.ts            # Error handling
    ├── retry.ts             # Backoff
    ├── circuit-breaker.ts   # Failure prevention
    ├── rate-limiter.ts      # Token bucket
    ├── cache.ts             # TTL cache
    ├── request-queue.ts     # Concurrency
    ├── deduplication.ts     # Request dedup
    ├── idempotency.ts       # Safe retries
    ├── health.ts            # K8s probes
    ├── logger.ts            # Structured logging
    └── sentry.ts            # Error tracking

~3,500 lines · 154 unit tests · 126 e2e tests

References


MIT License

DELTΔ & βETΑ

From Change to What's Next

Available Tools

92 tools
campaigns_analyticsC

Get campaign performance analytics over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
lengthYesNumber of days to return (max 100)
ending_atNoEnd date (ISO 8601)
campaign_idYesCampaign ID
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It does not state that this is a read-only operation, what authentication is required, how results are returned, or any rate limits. 'Over time' hints at a time series, but return format, granularity, and pagination remain undocumented.

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 a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple analytics retrieval tool.

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

Completeness2/5

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

For a five-parameter analytics tool with no annotations and no output schema, the description is too sparse. It does not clarify available metrics, time-range behavior beyond the schema, or how it relates to other analytics siblings, leaving important context missing.

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 all five parameters. The description adds no additional parameter meaning, making the baseline score of 3 appropriate.

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

Purpose4/5

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

The description states a clear verb and resource: 'Get campaign performance analytics over time.' It is not a tautology and conveys the core action. However, it does not explicitly distinguish this tool from siblings like sends_analytics or canvas_analytics, so it falls short of a 5.

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

Usage Guidelines2/5

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

No when-to-use guidance or alternatives are given. An agent must infer that this is for campaign-level analytics rather than sends, canvas, segments, or events analytics. No exclusions or prerequisites are stated.

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

campaigns_detailsC

Get details for a specific campaign.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
campaign_idYesCampaign ID
restEndpointNoBraze REST endpoint URL

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state that this is a read-only lookup, whether it requires an existing campaign, or what the response contains. For an unannotated retrieval tool with auth parameters, this is a significant gap.

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

Conciseness3/5

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

One short, front-loaded sentence with no wasted words, which is structurally sound. But the brevity reflects under-specification rather than disciplined concision, so it earns only a middling score.

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

Completeness2/5

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

With no annotations, no output schema, and no parameter commentary in the description, an agent lacks key details: read-only semantics, failure behavior for unknown campaign_id, and whether the apiKey/restEndpoint parameters are caller-supplied or preconfigured. The definition is thin for a tool in a crowded sibling set.

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 campaign_id, apiKey, and restEndpoint are each documented in the schema. The description adds no format, ID-source, or auth-scoping context beyond that, which is the expected baseline when the schema does the heavy lifting.

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

Purpose3/5

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

States a specific verb and resource ('Get details for a specific campaign'), which is clear enough on its own. However, it gives no differentiation from close siblings like campaigns_list, campaigns_analytics, canvas_details, or segments_details, leaving the agent to infer boundaries from names alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus campaigns_list or campaigns_analytics, and no mention of prerequisites or required identifiers beyond the schema. The agent must infer usage entirely from the tool name.

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

campaigns_listC

List all campaigns in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-indexed)
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL
sort_directionNo
include_archivedNoInclude archived campaigns
last_edit_time_gtNoFilter by edit time (ISO 8601)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and falls short: it says 'all campaigns' but never mentions pagination (despite a 'page' parameter), that archived campaigns are excluded unless include_archived is set, or that authentication credentials are required. Nothing about rate limits or return behavior is disclosed.

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?

A single short sentence with zero filler and the resource front-loaded. It is efficient, though its brevity contributes to the under-specification noted in other dimensions rather than being a model of dense information.

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

Completeness2/5

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

For a 6-parameter list tool with no annotations and no output schema, the description is too thin. It omits pagination behavior, archiving defaults, filtering semantics, and what the response contains — all of which an agent needs to call this correctly alongside 70+ siblings.

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 83%, so the schema already documents page, include_archived, last_edit_time_gt, apiKey, and restEndpoint. The description adds no parameter meaning beyond that, which is the baseline expectation when the schema does the heavy lifting; only sort_direction lacks a schema description.

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

Purpose4/5

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

The description states a specific verb and resource ('List all campaigns') with clear scope ('in the workspace'), so an agent immediately knows the operation. However, it does nothing to distinguish itself from closely related siblings such as campaigns_details, campaigns_analytics, or canvas_list, leaving the agent to infer which is appropriate.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like campaigns_details (a single campaign) or campaigns_analytics (metrics). No prerequisites, no mention of the required API key/endpoint parameters, and no exclusions are given.

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

campaigns_schedule_createC

Schedule an API-triggered campaign for future delivery.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
send_idNo
audienceNo
scheduleYes
broadcastNo
recipientsNo
campaign_idYesAPI-triggered campaign ID
restEndpointNoBraze REST endpoint URL

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies creation of a schedule but says nothing about required auth (apiKey/endpoint), whether re-scheduling an existing campaign overwrites prior schedules, whether the campaign must already be API-triggered, or failure behavior.

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?

A single front-loaded sentence with no filler, which is well-structured. However, the extreme brevity leaves the complexity of an 8-parameter tool unaddressed.

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

Completeness2/5

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

For a tool with 8 params, nested objects, low schema coverage, no output schema and no annotations, one sentence is clearly insufficient. Nothing about prerequisites, side effects or required campaign state is conveyed.

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

Parameters1/5

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

Schema description coverage is only 38% across 8 parameters including nested audience, recipients and schedule objects, and the description adds zero parameter meaning. The undocumented params (send_id, broadcast, audience, recipients) are left entirely to the agent to guess.

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

Purpose4/5

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

States a specific verb ('Schedule'), resource ('API-triggered campaign') and scope ('for future delivery'). The 'API-triggered' qualifier usefully distinguishes it from a general campaign scheduler, but it does not explicitly name sibling alternatives like messages_schedule_create or campaigns_schedule_update, so the differentiation is implicit.

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

Usage Guidelines2/5

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

No statement of when to use this versus campaigns_trigger_send (immediate send) or the update/delete schedule variants. An agent must infer from the name alone that this creates a new schedule rather than modifying one.

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

campaigns_schedule_deleteC

Delete a scheduled API-triggered campaign.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
campaign_idYesCampaign ID
schedule_idYesSchedule ID to delete
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden, and it discloses almost nothing. It does not confirm the operation is destructive/irreversible, whether it cancels or merely detaches the schedule, what permissions are required, or what happens if the schedule_id is invalid. The 'API-triggered' qualifier is the only added behavioral hint.

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?

A single front-loaded sentence with zero waste. It is efficient, though so terse that it borders on under-specification for a destructive operation.

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

Completeness2/5

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

For a destructive mutation with no annotations and no output schema, the definition is too thin. It omits confirmation of what gets destroyed, authorization requirements, and any post-delete state an agent would need to reason about before calling it.

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 coverage is 100%, so the two required IDs and the auth/endpoint parameters are already documented in the schema; this sets the baseline at 3. The description adds no syntax, format, or sourcing detail beyond what the schema states.

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

Purpose4/5

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

States a specific verb ('Delete') and resource ('scheduled API-triggered campaign'), which cleanly separates it from campaigns_schedule_create and campaigns_schedule_update. It does not explicitly name the near-identical siblings canvas_schedule_delete or messages_schedule_delete, but the resource qualifier 'campaign' makes the scope inferable.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives, no prerequisites (e.g., the campaign must have an existing API-triggered schedule), and no exclusions. The agent must infer everything from the tool name.

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

campaigns_schedule_updateC

Update a scheduled API-triggered campaign.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
scheduleYes
campaign_idYesCampaign ID
schedule_idYesSchedule ID to update
restEndpointNoBraze REST endpoint URL

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Update' implies a mutation, but nothing is said about required permissions, whether the update is idempotent or reversible, how it interacts with an existing schedule, or what happens on failure. For a mutation endpoint with zero annotation coverage, this is a significant gap.

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

Conciseness3/5

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

One sentence with no wasted words and the action front-loaded, which is efficient. But for a five-parameter tool with a nested schedule object, the description is undersized rather than appropriately sized.

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

Completeness2/5

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

This is a mutation tool with no annotations, no output schema, and a nested object parameter set. The description supplies none of the missing context (preconditions, mutation semantics, effect on the existing schedule), leaving an agent without enough to invoke it confidently.

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 80%, so the schema already documents campaign_id, schedule_id, and the nested schedule fields (time, in_local_time, at_optimal_time). The description adds nothing beyond that baseline, which is the expected 3 when the schema does the heavy lifting.

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

Purpose3/5

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

The description gives a clear verb (Update) and resource (scheduled API-triggered campaign), and the 'API-triggered' qualifier narrows the campaign type. However, it does nothing to distinguish this from siblings like campaigns_schedule_create, campaigns_schedule_delete, or canvas_schedule_update, so an agent still has to infer which schedule operation to pick from the name alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus creating or deleting a schedule, no prerequisite or precondition, and no mention of alternatives. The agent is left to infer usage entirely.

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

campaigns_trigger_sendB

Trigger an API-triggered campaign. The campaign must be configured as API-triggered in Braze.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
send_idNoCustom send identifier
audienceNo
broadcastNo
recipientsNoSpecific recipients
campaign_idYesAPI-triggered campaign ID
restEndpointNoBraze REST endpoint URL
trigger_propertiesNoPersonalization properties

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden and fails to. It does not state that this is a live send (irreversible), whether send_id deduplicates or provides idempotency, auth requirements beyond the apiKey field, rate limits, or what a successful response contains.

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?

Two tight sentences, purpose front-loaded ahead of the prerequisite, with no filler. It is efficient, though the sparseness is a coverage problem rather than a conciseness virtue.

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

Completeness2/5

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

For an 8-parameter send tool with nested audience/recipients objects, zero annotations, and no output schema, the description is insufficient. An agent gets no guidance on the audience/recipients/broadcast interaction, recipient dedup via send_id, or what constitutes success.

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 75%, so the schema documents most parameters (apiKey, send_id, campaign_id, restEndpoint, recipients, trigger_properties) while broadcast and audience are bare. The description adds no meaning beyond the schema — notably it never explains audience vs recipients or broadcast semantics — so the baseline 3 stands.

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

Purpose4/5

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

States a specific verb (Trigger) and resource (API-triggered campaign) and names Braze as the system. It does not differentiate itself from near-siblings like canvas_trigger_send or messages_send, so an agent must infer the distinction from the name alone.

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?

Provides one real prerequisite — the campaign must be pre-configured as API-triggered — which is genuinely actionable. It says nothing about when to prefer this over canvas_trigger_send, messages_send, or campaigns_schedule_create, so alternative-selection is left to inference.

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

canvas_analyticsC

Get Canvas performance analytics over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
lengthYesNumber of days
canvas_idYesCanvas ID
ending_atNo
restEndpointNoBraze REST endpoint URL
include_step_breakdownNo
include_variant_breakdownNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden. It implies a time-series read via 'over time' but says nothing about required authentication (apiKey/restEndpoint), the maximum allowed length, rate limits, whether results are paginated, or what happens if the Canvas ID is invalid.

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?

A single, front-loaded sentence with no padding or redundancy. It is economical, though its brevity is also the source of its incompleteness rather than a sign of tight editing.

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

Completeness2/5

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

For a read tool with 7 parameters, no annotations, no output schema, and 57% schema coverage, the description is far too thin. It lacks any explanation of the step/variant breakdown options, the time-range semantics, or the response shape an agent needs to interpret results.

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

Parameters2/5

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

Schema coverage is only 57%, and the description adds no parameter detail beyond the vague 'over time' hint. The three undocumented parameters (ending_at, include_step_breakdown, include_variant_breakdown) are neither explained in the schema nor in the description, leaving meaningful gaps.

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

Purpose4/5

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

The description names a specific verb (Get) and resource (Canvas performance analytics) and adds a temporal scope ('over time'), which distinguishes it from canvas_details and canvas_summary. However, it does not explicitly differentiate itself from the near-identical campaigns_analytics or sends_analytics siblings, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus canvas_summary, canvas_details, or campaigns_analytics, nor any mention of prerequisites such as a required Canvas ID or time window. The agent must infer usage entirely from the name.

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

canvas_detailsC

Get details for a specific Canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
canvas_idYesCanvas ID
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/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 does not disclose whether this is a read-only operation, any rate limits, authentication requirements (beyond the apiKey parameter), or what the return format looks like. For a detail-fetch tool with zero annotation coverage, this is a significant gap.

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?

A single, front-loaded sentence with no wasted words. It efficiently conveys the core purpose.

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

Completeness2/5

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

With no annotations and no output schema, the description should do more to explain behavioral aspects like read-only nature, authentication, and return details. The minimal description leaves the agent with insufficient context for correct invocation.

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%: all three parameters (apiKey, canvas_id, restEndpoint) are documented in the schema. The description adds no parameter information beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose4/5

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

States a specific verb (Get) and resource (details for a specific Canvas), and names the identifier. It is differentiable from siblings like canvas_list or canvas_summary by the word 'specific', though it does not explicitly contrast with canvas_summary which could also return details.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives like canvas_summary, canvas_analytics, or canvas_list. The agent must infer usage from the name alone.

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

canvas_listC

List all Canvases in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL
sort_directionNo
include_archivedNo
last_edit_time_gtNo

TDQS

C2.8/5.0
Behavior2/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 doesn't disclose pagination behavior, authentication requirements (apiKey/restEndpoint), or whether the list is filtered by default (e.g., include_archived). For a list tool with 6 parameters and no annotations, this is a significant gap.

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 a single, clear sentence that is front-loaded with the essential action. It contains no unnecessary words.

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

Completeness2/5

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

Given the complexity (6 parameters, no output schema, no annotations) and low schema description coverage, the description is incomplete. It fails to explain pagination, filtering options, or authentication, which are crucial for correct invocation.

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

Parameters2/5

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

Schema description coverage is 33% (only apiKey and restEndpoint are described). The description adds no meaning for the other parameters (page, sort_direction, include_archived, last_edit_time_gt), leaving them undocumented. A baseline of 3 is not warranted because the description does not compensate for the low coverage.

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

Purpose4/5

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

The description states a clear verb ('List') and resource ('Canvases in the workspace'), which is easily distinguishable from siblings like canvas_details or canvas_analytics. However, it lacks explicit differentiation from campaigns_list (a similar list tool for a different resource).

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like canvas_details or campaigns_list. The description only states what it does, not when to use it or any prerequisites.

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

canvas_schedule_createC

Schedule an API-triggered Canvas for future delivery.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
audienceNo
scheduleYes
broadcastNo
canvas_idYesAPI-triggered Canvas ID
recipientsNo
restEndpointNoBraze REST endpoint URL

TDQS

C2.7/5.0
Behavior2/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 contributes only the fact that the Canvas must be API-triggered; it says nothing about required API key/permissions, idempotency, behavior when a schedule already exists, or reversibility. For a scheduling mutation with zero annotation coverage this is thin.

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?

A single front-loaded sentence with the verb and resource first and no filler. It is efficient, though the brevity is partly under-specification rather than tight editing.

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

Completeness2/5

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

With 7 parameters, nested objects, 43% schema coverage, no annotations, and no output schema, the description should do meaningful work but does not. An agent cannot determine prerequisites (API-triggered Canvas, auth), scheduling conflict behavior, or parameter usage from it.

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

Parameters2/5

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

Schema description coverage is only 43% across 7 parameters, including nested audience, recipients, and schedule objects, so the burden falls on the description. The description explains none of them — it does not clarify broadcast vs recipients, the schedule.time format, or how canvas_id relates to 'API-triggered'.

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

Purpose4/5

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

States a specific verb and resource ('Schedule an API-triggered Canvas') plus the outcome ('future delivery'), which implicitly separates it from the immediate-send canvas_trigger_send and from canvas_schedule_update/delete siblings. It does not name any sibling explicitly, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance. The phrase 'for future delivery' hints that this is the deferred counterpart to canvas_trigger_send, but the agent is left to infer that routing, and nothing states prerequisites or when to prefer update vs create.

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

canvas_schedule_deleteC

Delete a scheduled API-triggered Canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
canvas_idYesCanvas ID
schedule_idYesSchedule ID to delete
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/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 says 'Delete' but never states that the schedule is removed while the Canvas itself survives, that the deletion is irreversible, or whether special permissions/API key scopes are required. For a destructive operation with zero annotation coverage this is a meaningful 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?

A single short sentence with the action front-loaded and no filler. It is efficient, though its brevity borders on under-specification for a destructive tool rather than being an example of well-packed conciseness.

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

Completeness2/5

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

For a destructive, two-required-parameter tool with no annotations and no output schema, the description omits critical context: scope of destruction (schedule only vs. Canvas), irreversibility, and auth/permission expectations. An agent could call it correctly, but would do so without knowing the consequences.

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% (canvas_id, schedule_id, apiKey, restEndpoint all documented), so the baseline is 3. The description adds nothing about parameter meaning beyond what the schema already spells out.

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

Purpose4/5

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

States a specific verb (Delete) and resource (a scheduled API-triggered Canvas), and the resource name distinguishes it from the sibling campaigns_schedule_delete and messages_schedule_delete. It does not explicitly name those siblings, but the resource specificity makes selection unambiguous.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of the sibling alternatives (campaigns_schedule_delete, messages_schedule_delete) or of canvas_schedule_update as a non-destructive path. The agent must infer usage entirely from the name.

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

canvas_schedule_updateC

Update a scheduled API-triggered Canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
scheduleYes
canvas_idYesCanvas ID
schedule_idYesSchedule ID to update
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations, so the description carries the full behavioral burden. It does not disclose permissions, side effects, reversibility, rate limits, or response behavior for a mutation tool; only the word 'Update' implies a write.

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?

Single front-loaded sentence with no filler. It is appropriately concise, though sparse; missing detail is scored elsewhere.

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

Completeness2/5

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

Mutation tool with no annotations, no output schema, nested object, and five parameters needs more context. The description leaves usage, behavior, and return expectations unspecified.

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 80%, so baseline is 3. The description adds no parameter meaning beyond the schema; nested schedule fields are documented in the schema, not the description.

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

Purpose4/5

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

Clear verb 'Update' and resource 'scheduled API-triggered Canvas', which separates it from create/delete and campaign/message siblings. It does not explicitly name or contrast with alternatives, so sibling differentiation is implicit rather than stated.

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

Usage Guidelines2/5

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

No when-to-use, prerequisites, or alternatives are given. The agent must infer that this is for modifying an existing Canvas schedule rather than creating or deleting one.

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

canvas_summaryC

Get summary analytics for a Canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
lengthYesNumber of days
canvas_idYesCanvas ID
ending_atNo
restEndpointNoBraze REST endpoint URL

TDQS

C2.6/5.0
Behavior2/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 implies a read operation with 'Get', but does not disclose required permissions, behavior of the length/ending_at parameters, rate limits, or what the summary contains.

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 a single front-loaded sentence with no wasted words. It is appropriately concise, though its brevity leaves the specification thin.

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

Completeness2/5

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

For a 5-parameter analytics tool with no annotations and no output schema, the description is incomplete. It does not explain the required time-range parameters, the meaning of 'summary', or how this differs from related analytics tools.

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 80%, so the schema already documents most parameters. The description adds no meaning beyond the schema, which is acceptable at this coverage level but not helpful.

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

Purpose3/5

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

The verb 'Get' and resource 'Canvas' are clear, but 'summary analytics' is vague and does not distinguish this tool from sibling canvas_analytics. An agent cannot tell from the description alone which Canvas analytics tool to choose.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus canvas_analytics, canvas_details, or campaigns_analytics. It offers no prerequisites, exclusions, or context for selecting it.

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

canvas_trigger_sendB

Trigger an API-triggered Canvas. The Canvas must be configured as API-triggered in Braze.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
audienceNo
broadcastNo
canvas_idYesAPI-triggered Canvas ID
recipientsNo
restEndpointNoBraze REST endpoint URL
canvas_entry_propertiesNoEntry properties

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden, and it discloses only the API-triggered precondition. It says nothing about whether the send is immediate, how broadcast versus recipients interact, whether recipient lists are deduplicated, rate limits, or authentication requirements beyond the presence of an apiKey parameter.

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?

Two short sentences, zero filler, and the operative precondition is front-loaded rather than buried. Nothing in the text needs to be removed.

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

Completeness2/5

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

For a 7-parameter, nested-object, no-annotation, no-output-schema trigger tool, the description is significantly under-specified. An agent can identify the operation but lacks the information needed to construct a correct payload for broadcast or audience-based sends.

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

Parameters2/5

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

Schema description coverage is only 57% across 7 parameters with nested objects, so the description needs to compensate and does not. Non-obvious parameters such as broadcast, audience, send_to_existing_only, and the top-level versus per-recipient canvas_entry_properties distinction are left entirely undocumented here.

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

Purpose4/5

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

The description gives a specific verb ('Trigger') and resource ('Canvas'), so the agent knows exactly what operation it performs. It does not explicitly distinguish itself from the near-identical sibling campaigns_trigger_send or from messages_send, but the Canvas-versus-Campaign distinction is inherent in the name.

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?

It states one important precondition -- the Canvas must already be configured as API-triggered in Braze -- which implies when this tool is applicable. However, it offers no guidance on when to prefer this over campaigns_trigger_send, messages_send, or the canvas_schedule_* family.

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

catalog_item_createC

Create a single catalog item.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
item_idYesItem ID
item_dataYesItem data fields
catalog_nameYesCatalog name
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether creation is idempotent or upserts on an existing item_id, what happens on a duplicate ID, what permissions/API key scope are needed, or how many requests/rate limits apply. Only the bare fact of mutation is conveyed.

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?

A single front-loaded sentence with no filler, which is efficient. It is arguably too terse for a five-parameter mutation tool with a nested payload, but nothing in it is wasted.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and a free-form nested item_data object, the description should cover at least auth prerequisites, the batch-vs-single choice, and what is returned on success. None of that is present.

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 parameters are documented in the schema and a baseline of 3 applies. The description adds no meaning beyond the schema, and notably says nothing about the structure of the free-form item_data object or the required catalog_name/item_id pairing.

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

Purpose4/5

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

States a specific verb (Create) and resource (catalog item), and the qualifier 'a single' hints at scope versus a bulk operation. However, it never names the competing sibling catalog_items_create, so the distinction between single-item and batch creation must be inferred.

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

Usage Guidelines2/5

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

No indication of when to use this tool rather than catalog_items_create (bulk), catalog_item_update, or catalog_item_edit. No prerequisites are mentioned, even though the schema requires an apiKey and restEndpoint.

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

catalog_item_deleteC

Delete a single catalog item.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
item_idYesItem ID to delete
catalog_nameYesCatalog name
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. 'Delete' implies a destructive mutation, but the description does not state irreversibility, permission requirements, side effects, or authentication needs. This is a significant gap for a destructive tool with zero annotation coverage.

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?

A single efficient sentence with no waste. It is front-loaded and to the point, though it is perhaps too terse to be fully helpful.

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

Completeness2/5

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

For a destructive tool with no annotations, no output schema, and no supplementary behavioral context, the description is too sparse. An agent needs to know if the operation is reversible, what permissions are required, and how it relates to sibling deletion tools. None of that is present.

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 all four parameters (apiKey, item_id, catalog_name, restEndpoint) with clear descriptions. The description adds nothing beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb (Delete) and resource (catalog item) with scope limited to a single item. However, with sibling tools like catalogs_delete, catalog_items_delete, and catalog_item_edit present, the description does not differentiate exactly how this differs from those similarly-named alternatives besides the singular 'item'.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. There are two other deletion tools (catalogs_delete, catalog_items_delete) and it doesn't state the conditions or prerequisites for choosing this one.

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

catalog_item_editC

Edit a single catalog item (partial update).

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
item_idYesItem ID
item_dataYesFields to update
catalog_nameYesCatalog name
restEndpointNoBraze REST endpoint URL

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Partial update' hints at merge semantics but says nothing about permissions/auth (only the apiKey param hints at this), whether changes are reversible, what happens to omitted fields, or any 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?

A single short sentence that is front-loaded with the core verb and resource. It is efficient, though arguably under-specified rather than optimally concise.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, a nested free-form item_data object, and several confusingly similar siblings, this one-line description leaves far too much unspecified for an agent to call it confidently.

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% and every parameter (apiKey, item_id, item_data, catalog_name, restEndpoint) is documented in the schema. The description adds no syntax or format detail beyond that, so the baseline of 3 applies.

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

Purpose3/5

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

States a clear verb+resource ('Edit a single catalog item') and adds scope via '(partial update)'. However, the sibling set contains catalog_items_edit, catalog_item_update, catalog_items_update and catalog_items_create, and the description offers no way to distinguish catalog_item_edit from these near-identical tools.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives, which is a real gap given several sibling tools appear to perform overlapping edits/updates. The agent must guess between catalog_item_edit, catalog_items_edit and catalog_item_update.

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

catalog_item_getB

Get a single catalog item by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
item_idYesItem ID
catalog_nameYesCatalog name
restEndpointNoBraze REST endpoint URL

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation, but does not disclose authentication requirements, rate limits, error behavior (e.g., missing item), or return characteristics. For a tool with zero annotation coverage, this is a significant gap.

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 a single front-loaded sentence with no wasted words. It states the core action and scope efficiently.

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?

For a simple retrieval tool with full schema coverage and no output schema, the description covers the basic purpose. However, given no annotations, it omits behavioral context such as that it is a read-only operation and what the response contains, leaving the agent with only minimal information.

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 all four parameters (including apiKey, item_id, catalog_name, restEndpoint). The description's phrase 'by ID' aligns with item_id but adds no syntax, format, or conditional detail beyond what the schema provides; baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb ('Get'), resource ('catalog item'), and scope ('single ... by ID'), which distinguishes it from the sibling list tool catalog_items_list. However, it does not explicitly name the sibling or contrast them, so it falls short of the clearest possible differentiation.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use guidance, prerequisites, or alternatives. It implies retrieval by ID but does not say when to choose this over catalog_items_list or catalog_items_create, leaving the agent to infer the context entirely.

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

catalog_items_createB

Create multiple items in a catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesItems to create (max 50)
apiKeyNoBraze REST API key
catalog_nameYesCatalog name
restEndpointNoBraze REST endpoint URL

TDQS

B3.1/5.0
Behavior2/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, yet it discloses nothing about mutation behavior: whether duplicate IDs error or upsert, whether the write is atomic across the batch, permission/API-key requirements, or rate limits. For a bulk mutation endpoint this is a substantial 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?

A single front-loaded sentence with zero filler and no redundancy. It is efficient, though its brevity is partly under-specification rather than discipline.

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

Completeness2/5

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

For a bulk write tool with no annotations and no output schema, the description omits critical context: duplicate-ID handling, partial-failure semantics, and the 50-item cap's implications. An agent could invoke it but cannot predict its failure modes.

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 all four parameters (items, apiKey, catalog_name, restEndpoint) are already documented in the schema. The description adds only the notion of batching, matching the baseline 3 when the schema does the heavy lifting.

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

Purpose4/5

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

The description gives a clear verb+resource ('Create ... items in a catalog') and the word 'multiple' implicitly separates it from the singular sibling catalog_item_create. It never names or contrasts siblings explicitly, so it stops short of a 5.

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?

Usage is only implied through the word 'multiple' — an agent can infer batch creation, but the description never states when to use this batch tool versus catalog_item_create / catalog_items_update / catalog_items_edit, nor any prerequisites.

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

catalog_items_deleteC

Delete multiple items from a catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesItems to delete (max 50)
apiKeyNoBraze REST API key
catalog_nameYesCatalog name
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about irreversibility, whether deletion is permanent, failure behavior for partial batches, or auth requirements. For a destructive batch operation this is a significant gap.

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?

A single front-loaded sentence with zero filler. Nothing is repeated and the scope qualifier ('multiple') comes before the resource.

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

Completeness2/5

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

With no annotations, no output schema, and a destructive batch semantic, the description should disclose irreversibility and batch-failure behavior. Parameter documentation is fully handled by the schema, but the behavioral side is left entirely unaddressed.

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 all four parameters including the items array and its max-50 constraint are already documented. The description adds no format or syntax detail beyond the schema, making the baseline 3 appropriate.

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

Purpose4/5

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

States a specific verb (Delete) plus resource (items in a catalog) and scope (multiple). An agent can distinguish it from the singular catalog_item_delete and catalogs_delete without opening schemas, though it never names those siblings explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this batch delete versus catalog_item_delete, nor any prerequisites such as API key scope or endpoint selection. The only usage constraint (max 50 items) lives in the schema, not the description.

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

catalog_items_editC

Edit multiple items in a catalog (partial update).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesItems to edit (max 50)
apiKeyNoBraze REST API key
catalog_nameYesCatalog name
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose that updates are partial, but omits permission/auth requirements, batching failure behavior, rate limits, and whether unspecified fields are preserved or cleared.

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?

A single front-loaded sentence with no filler. It is efficient, though its brevity borders on under-specification rather than true conciseness.

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

Completeness2/5

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

For a batch mutation tool with no annotations and no output schema, the one-line description is too thin: it doesn't clarify merge-vs-replace semantics for partial updates, per-item error behavior, or how it relates to sibling edit/update tools.

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 catalog_name, items, apiKey, and restEndpoint. The description adds only the notion of multiple items and partial updates, which aligns with but does not extend the schema.

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

Purpose4/5

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

States a specific verb+resource ('Edit ... items in a catalog') and signals batch scope with 'multiple items', which distinguishes it from the singular catalog_item_edit sibling. However, it does not explain how it differs from the near-identical catalog_items_update sibling.

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

Usage Guidelines2/5

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

No when-to-use guidance is given. With siblings like catalog_item_edit and catalog_items_update that overlap heavily, the agent gets no criterion for choosing this tool over them, and no prerequisites or preconditions are stated.

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

catalog_items_listC

List items in a catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
cursorNoPagination cursor
catalog_nameYesCatalog name
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. The word 'List' implies a read-only operation, but the description does not disclose pagination behavior despite a cursor parameter, nor does it mention authentication, rate limits, or return characteristics.

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 single sentence is front-loaded and free of filler, which is structurally appropriate. However, it is so sparse that it omits useful context rather than earning its brevity through complete coverage.

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?

For a simple list tool with complete schema coverage and no output schema, the description is minimally adequate. It omits pagination context and sibling differentiation, but the schema covers the parameters well enough to make the tool callable.

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 all four parameters are already documented in the schema. The description adds no additional parameter-level meaning beyond 'items in a catalog', making the baseline 3 appropriate.

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

Purpose4/5

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

The description states a specific verb and resource ('List items in a catalog'), so an agent can tell it is a read operation on catalog items. It does not explicitly distinguish itself from siblings such as catalogs_list or catalog_item_get, which prevents a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like catalog_item_get or catalogs_list. The one-line description only implies usage from the name and resource.

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

catalog_items_updateB

Update multiple items in a catalog (replaces entire item).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesItems to update (max 50)
apiKeyNoBraze REST API key
catalog_nameYesCatalog name
restEndpointNoBraze REST endpoint URL

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose one genuinely important trait: the operation replaces the entire item, so unspecified fields are overwritten. It says nothing about auth requirements (the apiKey/restEndpoint params), error behavior, or the 50-item batch limit beyond what the schema already states.

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?

A single tight sentence with the replacement constraint front-loaded in the parenthetical. No filler or redundancy.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is thin: it omits auth prerequisite context for the apiKey/restEndpoint parameters and gives no sense of outcome or failure modes. It communicates the bare minimum needed to recognize the operation.

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 all four parameters including the max-50 items constraint and the id field. The description's 'multiple items' phrasing adds no syntax or format detail beyond the schema, making 3 the appropriate baseline.

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

Purpose4/5

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

States a specific verb (update) and resource (multiple items in a catalog), and the parenthetical '(replaces entire item)' pins down the semantics that distinguish it from a partial-update sibling. It stops short of naming catalog_items_edit as the contrasting alternative, so differentiation is implied rather than explicit.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance. The '(replaces entire item)' note hints at the replace-vs-merge distinction, but the description never tells the agent to prefer catalog_items_edit for partial updates, which is the key routing decision among the many catalog siblings.

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

catalog_item_updateA

Update a single catalog item (replaces entire item).

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
item_idYesItem ID
item_dataYesNew item data
catalog_nameYesCatalog name
restEndpointNoBraze REST endpoint URL

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose one important behavioral trait — the operation replaces the entire item rather than patching it, implying omitted fields are dropped — but says nothing about required permissions, reversibility, or how the API key/endpoint affect the call.

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?

A single front-loaded sentence with zero waste; the distinguishing qualifier and the replacement semantics are packed into the most valuable position.

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?

For a mutation tool with no annotations, no output schema, and a nested required object, the description is thin: it conveys the full-replace semantics but omits nothing about behavioral consequences of dropping fields, auth requirements, or the response. Adequate but with clear gaps given the tool's complexity.

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 every parameter is already documented in the schema and the baseline is 3. The description adds no additional parameter meaning (e.g., what item_data must contain or how the nested object is treated), so it neither compensates nor detracts.

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

Purpose4/5

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

States a specific verb (Update) and resource (a single catalog item), and the qualifier 'single' distinguishes it from the plural batch sibling catalog_items_update. The parenthetical '(replaces entire item)' further hints at the update-vs-edit distinction. It stops short of naming the edit/update siblings explicitly, so it is clear but not fully differentiated.

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?

There is no explicit when-to-use or when-not-to-use guidance and no named alternative. The '(replaces entire item)' note implicitly signals when to prefer this over a partial-edit sibling, but the agent must infer that from the parenthetical rather than from any stated rule.

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

catalogs_createC

Create a new catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
catalogsYesCatalogs to create
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and falls short. It does not state that this is a mutating/write operation, that an API key is required for auth, what happens on duplicate catalog names, or whether the change is reversible.

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?

A single front-loaded sentence with zero waste. It is appropriately terse, though the terseness borders on under-specification rather than true efficiency.

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

Completeness2/5

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

For a mutating tool with no annotations and no output schema, the description is too thin: it omits auth requirements, idempotency/duplicate behavior, and any hint of what a catalog or its required fields represent.

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 all three parameters (apiKey, catalogs, restEndpoint) are already documented in the schema. The description adds no syntax, format, or field-level meaning beyond it, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Create) and resource (catalog), so the operation is unambiguous. However, it offers no differentiation from siblings like catalogs_delete or catalogs_list beyond the verb embedded in the name itself.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as catalog_items_create or how this relates to other catalog operations. The agent gets no routing help.

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

catalogs_deleteC

Delete a catalog and all its items.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
catalog_nameYesCatalog name to delete
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says it deletes 'all its items' – a cascading destructive effect – but does not state irreversibility, required permissions, or side effects on dependent resources. After the deletion, dependent catalogs items or references may break, and this is not disclosed. The description is minimal for a destructive operation.

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?

One short sentence that is front-loaded with the verb and resource, and efficiently states the cascading scope. There is zero waste or filler.

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

Completeness2/5

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

For a destructive operation with no annotations and no output schema, the description is far too thin. It omits any warning about irrevocability, permission requirements, or downstream effects, and gives no guidance on when this should be used versus deleting individual items. An agent could easily misuse this tool without additional context.

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 each parameter (apiKey, catalog_name, restEndpoint) is already documented in the schema. The description adds no parameter detail beyond what's in the schema. Baseline 3 is correct when the schema does the heavy lifting and the description provides no extra parameter semantics.

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

Purpose4/5

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

The description states a specific verb ('Delete') and resource ('catalog') and clarifies scope ('and all its items'). It distinguishes itself from item-level siblings like catalog_items_delete and catalog_item_delete by operating on the catalog itself. It doesn't claim catalog-only vs. sibling nuances beyond that, but the verb+resource is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives is given. It doesn't explain the destructive, cascading nature of the deletion, nor does it clarify prerequisites (e.g., whether the catalog must be empty or have no items). An agent has no indication of when this is appropriate versus editing items individually.

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

catalogs_listC

List all catalogs in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List all' implies a read-only, unfiltered operation, but there is no mention of pagination, result limits, permissions required, or whether catalogs are returned in any order. For a no-annotation tool this is a substantial 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?

A single short sentence with the resource front-loaded and no wasted words. It is perhaps too terse given the missing behavioral context, but structurally it is clean.

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?

For a simple read-only list tool with no output schema, the description covers the core purpose but omits return shape hints, pagination behavior, and any auth context beyond the schema parameters. Adequate but with clear gaps.

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?

Both parameters (apiKey, restEndpoint) already carry schema descriptions at 100% coverage, so the schema does the heavy lifting. The description adds nothing about them, which is the expected baseline when coverage is high.

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

Purpose4/5

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

Specific verb (List) plus resource (catalogs) and scope (in the workspace). This clearly separates it from catalogs_create, catalogs_delete, and catalog_items_list. It does not name any sibling explicitly, though none is close enough to require it.

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

Usage Guidelines2/5

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

No guidance on when to use this versus catalog_items_list or catalogs_create, and no prerequisites for when listing catalogs is the right call. The agent must infer usage entirely from the name.

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

content_blocks_createC

Create a new content block.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesContent block name
tagsNoTags for organization
stateNoInitial state
apiKeyNoBraze REST API key
contentYesContent block HTML/text content
content_typeNoContent type (default: html)
restEndpointNoBraze REST endpoint URL

TDQS

C2.7/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: no permission/auth requirements, no default state, no idempotency, no validation or failure behavior for a write operation.

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?

A single front-loaded sentence with zero padding. It is efficient, though its brevity reflects under-specification rather than disciplined concision.

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

Completeness2/5

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

For a 7-parameter mutation tool with no annotations and no output schema, the description is far too thin: it omits auth context, defaults, and any hint of what a successful create returns.

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% with 7 documented parameters including two enums, so the schema already explains each field. The description adds no parameter meaning beyond the schema, which is the baseline 3 case.

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

Purpose4/5

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

States a specific verb and resource ('Create a new content block'), which is enough to tell it apart from content_blocks_list, content_blocks_info and content_blocks_update by verb alone, though it never names those siblings or scopes what a content block is.

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

Usage Guidelines2/5

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

No guidance on when to create versus update or list, no prerequisites, and no mention of the required apiKey/restEndpoint context. The agent must infer usage entirely from the name.

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

content_blocks_infoC

Get details for a specific content block.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL
content_block_idYesContent block ID
include_inclusion_dataNoInclude campaigns/canvases using this block

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. 'Get' implies a safe read, but nothing is said about authentication (the apiKey/restEndpoint params hint at it), rate limits, or what include_inclusion_data actually returns. This is thin for a tool with zero annotation coverage.

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?

A single front-loaded sentence with no filler, which is efficient. However, its brevity reflects under-specification rather than tight targeting of exactly what the agent needs.

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

Completeness2/5

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

The tool has 4 parameters, no output schema, and no annotations, so the description must do more work. It never explains the return shape or the optional include_inclusion_data enrichment, leaving an agent without needed context for calling it correctly.

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 all four parameters are already documented in the schema, and the baseline is 3. The description adds nothing about the meaning or effect of content_block_id or include_inclusion_data, so it does not exceed the baseline.

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

Purpose4/5

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

The description states a specific verb ('Get details') and resource ('a specific content block'), which clearly identifies it as a single-item read. It does not distinguish itself from siblings like content_blocks_list or content_blocks_update beyond the name, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as content_blocks_list or content_blocks_info's siblings, and no stated prerequisites. The agent must infer that this is the single-block counterpart to the list tool.

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

content_blocks_listC

List all content blocks in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 100)
apiKeyNoBraze REST API key
offsetNo
restEndpointNoBraze REST endpoint URL
modified_afterNoFilter by modified date (ISO 8601)
modified_beforeNoFilter by modified date (ISO 8601)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about read-only safety, pagination behavior, or the fact that results can be narrowed. 'List all' also obscures that the operation supports date filtering, which is the only behavioral hint available and it is absent.

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?

A single short sentence, front-loaded with the verb and resource and free of waste. It is arguably under-specified rather than padded, so it does not lose points for verbosity.

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

Completeness2/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 no annotations and no output schema, the description is too thin: it does not explain the filtering capability surfaced by the schema, the pagination model, or the return shape, leaving the agent to infer behavior from field names alone.

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 high (83%), so the schema already documents limit, modified_after, modified_before, and the auth fields; the baseline of 3 applies. The description adds nothing about the filter semantics, and its phrase 'all content blocks' slightly tensions with the available modified_after/before filters.

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

Purpose4/5

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

The description states a specific verb ('List') and resource ('content blocks') scoped to the workspace, so an agent can identify it as the read/list operation. However, it offers no explicit differentiation from the close siblings content_blocks_info, content_blocks_create, and content_blocks_update beyond the plain verb.

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

Usage Guidelines2/5

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

There is no guidance about when to use this list operation versus content_blocks_info or the create/update siblings, and no mention of prerequisites such as credentials. Usage is only implied by the tool name.

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

content_blocks_updateC

Update an existing content block.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name
tagsNoNew tags
stateNoNew state
apiKeyNoBraze REST API key
contentNoNew content
restEndpointNoBraze REST endpoint URL
content_block_idYesContent block ID to update

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says only that an existing block is updated, but does not disclose whether this is a partial or full replacement, what permissions or authentication are required, whether changes are reversible, or what side effects occur. It conveys mutation but no meaningful behavioral traits.

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 a single, front-loaded sentence with no wasted words. It is appropriately sized for what it attempts to convey, even though it is under-specified elsewhere.

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

Completeness2/5

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

Given a mutation tool with 7 parameters, no annotations, no output schema, and no usage guidance, the description is far too thin. An agent lacks essential context about authentication requirements, update semantics, and consequences, making this definition inadequate for safe invocation.

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 coverage is 100%, so all 7 parameters (including content_block_id, name, tags, state, apiKey, content, restEndpoint) are documented in the schema. The description adds no additional parameter meaning, which is the baseline when the schema already does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb ('Update') and resource ('content block'), making the core action unambiguous. However, it does not differentiate this tool from siblings like content_blocks_create, content_blocks_info, or content_blocks_list, so an agent gets no routing help beyond the verb.

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

Usage Guidelines2/5

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

There is no indication of when to use this tool versus alternatives, no prerequisites (such as needing an existing content block ID or API credentials), and no exclusions. The description offers no usage guidance at all.

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

email_blacklistA

[DEPRECATED: Use email_blocklist] Add email addresses to the blacklist.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail addresses to blacklist
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL

TDQS

A4.2/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 behavioral burden. It usefully discloses deprecation status (a non-obvious behavioral trait), but says nothing about authentication expectations, whether re-adding an existing address is idempotent, or how many addresses can be submitted at once, leaving real gaps for a mutation tool.

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?

Two short clauses with zero waste, and the most decision-relevant information (the deprecation redirect) is front-loaded before the purpose statement.

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 three-parameter mutation with full schema coverage and no output schema, the description covers purpose and lifecycle status adequately. It is not rich on operational behavior, but nothing essential to calling it correctly is missing.

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 all three parameters (email, apiKey, restEndpoint) are already documented in the schema. The description only implies that the target is an email list and adds no format, limit, or auth detail beyond the structured fields — baseline 3 applies.

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 ('Add email addresses to the blacklist') and immediately flags itself as deprecated in favor of the sibling tool email_blocklist, so an agent can distinguish it from the near-identically named alternative without opening the schema.

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 names the condition that should select another tool: '[DEPRECATED: Use email_blocklist]'. This is a direct when-not-to-use statement with a named alternative, which is the strongest form of routing guidance.

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

email_blocklistB

Add email addresses to the blocklist. Blocked emails will not receive any messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail addresses to blocklist (max 50)
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the consequence of blocking (no messages delivered) and "Add" implies an additive, persistent mutation, but it says nothing about reversibility, permissions, or whether re-adding an existing address is idempotent.

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?

Two short sentences, front-loaded with the action and followed by the effect. Efficient, though the second sentence borders on restating what "blocklist" already implies.

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?

For a mutation tool with no annotations and no output schema, the description covers the core action and its effect but omits auth requirements (implied only by the apiKey param), response behavior, and how it relates to email_blacklist. Adequate but with clear gaps.

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%, including the "max 50" limit, so the schema already documents all three parameters. The description adds no syntax, format, or batching detail beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

States a specific verb ("Add") and resource ("email addresses to the blocklist"), so the action is unambiguous. However, it does not distinguish itself from the near-identical sibling email_blacklist, leaving an agent to guess which one to pick.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives despite a confusingly similar sibling (email_blacklist). "Blocked emails will not receive any messages" describes an effect, not a usage condition.

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

email_bounce_removeC

Remove email addresses from the hard bounce list.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoSingle email to remove
apiKeyNoBraze REST API key
emailsNoMultiple emails to remove (max 50)
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It states a destructive removal but not the consequences: whether the removal is reversible, whether it re-enables sending to previously bounced addresses, whose permission is required, or whether it is rate limited.

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?

A single front-loaded sentence with no filler or repetition. It is efficient, though its brevity is also the source of the missing behavioral detail rather than an asset.

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

Completeness2/5

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

For a mutation tool with zero annotation coverage and no output schema, the description is too thin. It omits prerequisites, reversibility, error behavior, and the choice between the single-email and multi-email modes, leaving the agent to infer behavior from parameter names alone.

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 parameters (email, emails with max 50, apiKey, restEndpoint) are already fully documented in the schema. The description adds nothing beyond that, so the baseline 3 applies.

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

Purpose4/5

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

The description gives a specific verb (Remove) plus resource (email addresses) and target scope (hard bounce list), which is easily distinguished from close siblings like email_spam_remove and email_blocklist. It does not, however, explicitly name or contrast those siblings.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given. The description never states prerequisites (Braze REST API key and endpoint are required by the schema) or when an agent should prefer this over email_hard_bounces (inspection) or email_blocklist.

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

email_hard_bouncesC

Query emails that have hard bounced within a date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoFilter by specific email
limitNoMax results (default 100, max 500)
apiKeyNoBraze REST API key
offsetNoOffset for pagination
end_dateNoEnd date (YYYY-MM-DD)
start_dateNoStart date (YYYY-MM-DD)
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/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. 'Query' implies a read, but it says nothing about auth requirements (the apiKey/restEndpoint params hint at this), pagination behavior, or what the response contains.

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?

A single front-loaded sentence with no redundant phrasing. It is efficient, though its brevity leaves information gaps that conciseness alone cannot excuse.

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?

For a read-only reporting tool with full schema coverage and no output schema, the description is minimally adequate but omits return-shape and pagination expectations that an agent would need to drive repeated calls.

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% with all seven parameters documented inline, including the limit cap and date format. The description adds no meaning beyond what the schema already provides, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (query) and a precise resource (emails that hard bounced) with a date-range scope. It distinguishes itself from the create/remove-oriented email siblings, though it doesn't name which neighbor it replaces.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives such as email_bounce_remove or email_unsubscribes, and no prerequisites or context about acceptable date ranges. The agent must infer the call site.

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

email_spam_removeC

Remove email addresses from the spam list.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoSingle email to remove
apiKeyNoBraze REST API key
emailsNoMultiple emails to remove (max 50)
restEndpointNoBraze REST endpoint URL

TDQS

C2.6/5.0
Behavior2/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 says 'Remove' but does not state that this is a mutating/destructive operation, whether it requires authentication, whether removal is idempotent, or what happens if an address is not on the list.

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?

A single front-loaded sentence with no filler. It is efficient, though its extreme brevity is part of why substance is missing elsewhere rather than a virtue in itself.

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

Completeness2/5

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

This is a mutation tool with no annotations, no output schema and both single and batch parameter forms. The description does not explain the single-vs-batch choice, auth requirements, or any confirmation/limit behavior, so it is thin for the complexity involved.

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 email, emails (max 50), apiKey and restEndpoint. The description adds no syntax, format or batching guidance beyond that, so the baseline of 3 applies.

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

Purpose3/5

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

The description gives a specific verb ('Remove') and resource ('email addresses from the spam list'), which is better than a tautology. However, the sibling list contains several near-identical removal tools (email_bounce_remove, email_blacklist, email_blocklist, sms_invalid_phones_remove), and the description does nothing to distinguish the spam list from a blocklist or blacklist, leaving real ambiguity.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the adjacent suppression-list tools, nor any prerequisite note. The agent must infer usage entirely from the name.

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

email_subscription_statusC

Change email subscription status for users.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address to update
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL
subscription_stateYesNew subscription state

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it says only that it changes state. It omits whether the change is reversible, whether it requires the API key in apiKey/restEndpoint (implied by parameters but not explained), what happens to users not yet in Braze, and whether the update is synchronous or queued.

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 single sentence is front-loaded with the action and resource and contains no filler. It is appropriately terse, though its brevity is achieved partly by omitting necessary detail rather than by disciplined editing.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is far too thin. It does not explain the auth/endpoint requirements that three of the four parameters imply, nor how it differs from the six other subscription-related siblings, leaving an agent without enough context to select or invoke it confidently.

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 email, apiKey, restEndpoint, and the subscription_state enum. The description adds nothing beyond that baseline, so a 3 is the appropriate floor rather than a higher score.

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

Purpose4/5

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

The description states a clear verb (Change) and resource (email subscription status for users), making the purpose immediately legible. However, it does not distinguish this tool from its many near-identical siblings such as subscription_status_set, subscription_status_set_v2, subscription_user_status, and subscription_status_get, leaving the agent to guess which variant applies.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the alternative subscription tools despite a sibling list full of near-duplicates. An agent cannot tell from the description whether this is the v1 or legacy path versus subscription_status_set_v2.

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

email_templates_createC

Create a new email template.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesHTML body content
tagsNoTags for organization
apiKeyNoBraze REST API key
subjectYesEmail subject line
preheaderNoEmail preheader text
restEndpointNoBraze REST endpoint URL
template_nameYesTemplate name
plaintext_bodyNoPlain text body

TDQS

C2.9/5.0
Behavior2/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, yet it says nothing about authentication requirements (apiKey/restEndpoint are visible only in the schema), whether creation is idempotent, what happens on name collision, or what the response contains. For a mutation tool with zero annotation coverage this is a significant 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?

A single short, front-loaded sentence with no wasted words. It is efficient, though the terseness borders on under-specification rather than optimal conciseness.

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

Completeness2/5

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

A mutation tool with 8 parameters, no annotations, and no output schema needs more than a five-word sentence. Nothing about auth, error behavior, response shape, or field semantics beyond the schema is provided.

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% with all 8 parameters documented in the schema itself, so the baseline of 3 applies. The description adds no format, constraint, or default information beyond what the schema already provides.

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

Purpose4/5

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

States a specific verb (Create) and resource (email template), which distinguishes it from email_templates_list, email_templates_info, and email_templates_update in the sibling set. However, it does not explicitly differentiate itself from those siblings, so it stops short of a 5.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as email_templates_update for modifying an existing template. The agent must infer usage entirely from the name.

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

email_templates_infoC

Get details for a specific email template.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL
email_template_idYesEmail template ID

TDQS

C2.9/5.0
Behavior2/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. "Get" implies a safe read, but there is no disclosure of auth requirements beyond the key/endpoint params, no rate-limit or failure notes, and no hint at what "details" are returned.

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?

A single front-loaded sentence with no wasted words. It is efficient, though it borders on under-specification rather than being genuinely informative.

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?

For a simple single-item read with a fully documented schema and no output schema, the description is minimally adequate. It leaves unclear what "details" comprise and offers no routing guidance, but nothing critical to correct invocation is missing.

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% (apiKey, restEndpoint, email_template_id all documented), so the schema already carries parameter meaning. The description adds nothing beyond that baseline, so a 3 is warranted.

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

Purpose4/5

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

States a specific verb ("Get") and resource ("details for a specific email template"), and the word "specific" plus singular template signals retrieval of one item. This implicitly contrasts with sibling email_templates_list, though it never names it explicitly.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this versus email_templates_list, email_templates_update, or content_blocks_info. Usage is only inferable from the name and the word "specific".

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

email_templates_listC

List all email templates in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 100)
apiKeyNoBraze REST API key
offsetNo
restEndpointNoBraze REST endpoint URL
modified_afterNoFilter by modified date (ISO 8601)
modified_beforeNoFilter by modified date (ISO 8601)

TDQS

C2.7/5.0
Behavior1/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. The description doesn't disclose any behavioral traits such as pagination behavior, authentication requirements, rate limits, or output format. It's purely a restatement of the obvious.

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?

Single short sentence, front-loaded with the key action and resource. No unnecessary words.

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

Completeness2/5

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

For a tool with 6 parameters, no annotations, and no output schema, the description is too sparse. It doesn't explain pagination, filtering capabilities (despite modified_after/before parameters), or what the return value contains. Missing key context an agent would need to use it effectively.

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 83%, so the schema already documents most parameters (limit, apiKey, restEndpoint, modified_after, modified_before). The description adds no parameter details. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb (List) and resource (email templates) with scope (in the workspace). Clear enough to distinguish from siblings like email_templates_info and email_templates_create, though it doesn't explicitly name them.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives. With siblings such as email_templates_info, content_blocks_list, and campaigns_list, there's no indication of when this is appropriate. Simply implies it's for listing templates via the name.

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

email_templates_updateC

Update an existing email template.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoNew HTML body
tagsNoNew tags
apiKeyNoBraze REST API key
subjectNoNew subject line
preheaderNoNew preheader
restEndpointNoBraze REST endpoint URL
template_nameNoNew template name
plaintext_bodyNoNew plain text body
email_template_idYesTemplate ID to update

TDQS

C2.8/5.0
Behavior2/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 of behavioral disclosure and falls short. It does not say whether updates are partial or full-replacement, whether the template must already exist, whether auth is required (apiKey/restEndpoint are schema params), or whether changes are reversible. For a mutation tool with zero annotation coverage this is a meaningful gap.

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

Conciseness3/5

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

A single short sentence is front-loaded and free of waste, but for a nine-parameter mutation endpoint this is terse to the point of under-specification rather than genuinely efficient. It is neither bloated nor informative.

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

Completeness2/5

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

A mutation tool with no annotations, no output schema, and no partial-update semantics should explain more about what changes and what the caller must supply. Given the complexity of a nine-param template update, the description leaves the agent guessing about 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 all nine parameters (body, subject, tags, template_name, etc.). The description adds no format or semantics beyond that, which is the expected baseline when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb+resource combination ('Update an existing email template'), which is unambiguous and accurate. It does not differentiate from siblings like email_templates_create or email_templates_info, but the resource is clear enough that a name-plus-description read is sufficient.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as email_templates_create or content_blocks_update. The agent must infer that this is the mutation path for an already-existing template.

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

email_unsubscribesC

Query emails that have unsubscribed within a date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoFilter by specific email
limitNoMax results (default 100, max 500)
apiKeyNoBraze REST API key
offsetNoOffset for pagination
end_dateNoEnd date (YYYY-MM-DD)
start_dateNoStart date (YYYY-MM-DD)
restEndpointNoBraze REST endpoint URL
sort_directionNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only query but says nothing about authentication (the required apiKey/restEndpoint params), rate limits, pagination behavior, or the shape of results, all of which matter for an 8-parameter API 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?

One tight sentence with the resource and scope front-loaded and no wasted words. It is efficient, though brevity here edges toward under-specification for an 8-param tool.

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

Completeness2/5

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

With no annotations, no output schema, 8 parameters, and a dense sibling set, the description is too thin. It omits authentication requirements, pagination semantics, and any differentiation from the many adjacent email/subscription tools an agent could confuse it with.

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 coverage is high (88%), so the schema already documents email, limit, offset, dates, and endpoint. The description adds only the date-range framing that start_date/end_date already imply, contributing little beyond the schema; baseline 3 applies.

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

Purpose3/5

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

States a specific verb (Query) and resource (emails that have unsubscribed) with a scope (within a date range). However, it does not distinguish this tool from closely related siblings like email_hard_bounces, email_subscription_status, or subscription_status_get, leaving the agent to infer the difference between unsubscribes and bounce/subscription events.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use or when-not-to-use guidance and does not name any alternative sibling. Given the crowded email/subscription family, an agent cannot tell from this sentence when to prefer this tool over email_hard_bounces or subscription_status_get.

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

events_analyticsC

Get custom event analytics over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNo
eventYesEvent name
apiKeyNoBraze REST API key
app_idNo
lengthYesNumber of days
ending_atNo
restEndpointNoBraze REST endpoint URL

TDQS

C2.3/5.0
Behavior1/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, and it discloses nothing: no auth requirement (despite apiKey/restEndpoint params), no rate limits, no return shape, no note on how 'length' plus 'unit' interact with 'ending_at'. One sentence of pure restatement is all that is offered for a 7-parameter analytics 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?

A single front-loaded sentence with zero filler, which is structurally clean. The problem is under-specification rather than verbosity, so the sentence earns its place but is not enough.

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

Completeness2/5

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

For a 7-parameter tool with no output schema and no annotations, the description is far too thin: no pagination, response structure, auth, or default behavior for 'unit'/'ending_at' is given. The agent has no way to know what result to expect.

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

Parameters2/5

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

Schema description coverage is only 57%, so the description must compensate, but it adds no meaning: 'event', 'length' ('Number of days'), 'unit' enum values, and 'ending_at' are entirely undocumented in prose. 'Over time' loosely gestures at unit/length but supplies no format or interaction rules.

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

Purpose3/5

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

States a verb (Get) and resource (custom event analytics) with the temporal qualifier 'over time'. It is distinguishable from events_list (which lists events) and from kpi_* tools, but it never names a sibling or scopes what 'over time' means, leaving the boundary with siblings like sessions_analytics fuzzy.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no alternatives named. An agent choosing among events_list, events_analytics, and the kpi_* tools gets no routing help from the description.

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

events_listC

List all custom events tracked in the app.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation via 'List', but omits authentication needs (apiKey), pagination behavior (page), rate limits, and whether results are complete or paged.

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?

A single, front-loaded sentence with zero waste. It is appropriately sized for a simple list endpoint.

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

Completeness2/5

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

With no output schema, no annotations, and incomplete parameter descriptions, the definition is too thin for confident invocation. It lacks auth, pagination, and return format details that an agent would need.

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

Parameters2/5

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

Schema description coverage is 67%; apiKey and restEndpoint are documented in the schema, but page is undocumented. The description adds no parameter meaning at all, so it fails to compensate for the page gap.

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

Purpose4/5

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

States a specific verb ('List') and resource ('custom events tracked in the app'), making the enumeration purpose clear. However, it does not differentiate from close siblings like events_analytics or other list tools, so it falls short of a 5.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, no alternatives such as events_analytics for event metrics, and no conditions for using this list. The agent must infer usage from the name alone.

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

kpi_dauC

Get daily active users (DAU) over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
app_idNoSpecific app ID
lengthYesNumber of days
ending_atNo
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral-disclosure burden. It does not state that this is a read-only operation, does not mention authentication requirements, rate limits, pagination, or what the returned time series looks like.

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 a single front-loaded sentence with no wasted words. It is appropriately concise for a simple metric endpoint, though its brevity contributes to the broader completeness gaps.

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

Completeness2/5

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

For a 5-parameter analytics tool with no annotations and no output schema, one sentence is insufficient. It omits return format, time-window semantics, default behavior, and authentication context that an agent would need to call it confidently.

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 about 80%, so the schema largely documents parameters such as apiKey, app_id, length, and restEndpoint. The description adds no parameter meaning beyond the schema, and ending_at lacks a schema description, leaving a minor gap.

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

Purpose4/5

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

The description states a specific metric and temporal scope: 'daily active users (DAU) over time.' It clearly identifies the resource, though it does not explicitly differentiate this tool from siblings such as kpi_mau or kpi_new_users.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The only usage signal is the metric name itself, which is implicit at best.

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

kpi_mauC

Get monthly active users (MAU) over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
app_idNo
lengthYesNumber of days
ending_atNo
restEndpointNoBraze REST endpoint URL

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden but only implies a read operation via 'Get'. It does not disclose authentication requirements despite an apiKey parameter, rate limits, time granularity, or pagination behavior.

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 a single front-loaded sentence with no wasted words. It is appropriately concise, though the brevity contributes to gaps captured in other dimensions.

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

Completeness2/5

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

For a tool with five parameters, no annotations, and no output schema, the description is too sparse. It does not explain undocumented parameters, usage context, or behavioral details an agent would need to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 60%, leaving app_id and ending_at undocumented. The description adds no parameter meaning beyond what the schema already provides, and does not compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb ('Get'), resource ('monthly active users (MAU)'), and temporal scope ('over time'). It implicitly distinguishes itself from sibling kpi_dau by using 'monthly' versus 'daily', but it does not explicitly name or contrast with any alternative.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as kpi_dau, kpi_new_users, or kpi_uninstalls. It also omits prerequisites or conditions for selecting this metric.

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

kpi_new_usersC

Get new users count over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
app_idNo
lengthYesNumber of days
ending_atNo
restEndpointNoBraze REST endpoint URL

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says nothing about whether this is a read-only query, what permissions or API key are required, rate limits, or what granularity/format the time series returns.

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

Conciseness3/5

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

The single sentence is front-loaded and free of filler, which is good. However, it is terse to the point of under-specification for a 5-parameter analytics tool, so it earns only a middling score.

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

Completeness2/5

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

With 5 parameters, no annotations, no output schema, and two undocumented parameters, the description leaves too much unexplained. An agent cannot determine the returned granularity, the time-range semantics, or the authentication expectations from this definition alone.

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

Parameters2/5

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

Schema coverage is only 60% and the description adds no parameter meaning at all. It does not explain 'length' (days), 'ending_at' (undocumented in schema), 'app_id' (undocumented), or how they shape the returned series.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('new users count') with a temporal scope ('over time'), which cleanly separates it from siblings like kpi_dau, kpi_mau, and kpi_uninstalls. It does not explicitly name those siblings, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no indication of when to use this tool versus the other KPI tools (kpi_dau, kpi_mau) or the users_* analytics tools. No prerequisites, exclusions, or alternatives are given; usage is only weakly implied by the name.

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

kpi_uninstallsC

Get app uninstalls over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
app_idNo
lengthYesNumber of days
ending_atNo
restEndpointNoBraze REST endpoint URL

TDQS

C2.8/5.0
Behavior2/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 implies a read operation and a time-series result, but says nothing about auth requirements, rate limits, data freshness, timezone handling, maximum ranges, or 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.

Conciseness5/5

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

A single front-loaded sentence with no wasted words. It is as concise as possible while still naming the operation and resource.

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

Completeness2/5

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

For a 5-parameter analytics tool with no annotations, no output schema, and 60% schema description coverage, the one-line description is too thin. It omits required parameter semantics, return value expectations, and behavioral constraints an agent would need to call it correctly.

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

Parameters2/5

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

Schema description coverage is 60%, with only apiKey and length described in the schema. The description adds no parameter meaning; 'over time' loosely hints at temporal parameters but does not explain app_id, ending_at, or how length interacts with the result.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('app uninstalls over time'), which is clear enough to distinguish it from most siblings. However, it does not explicitly differentiate itself from other KPI tools like kpi_dau, kpi_mau, or kpi_new_users.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as sessions_analytics or other KPI endpoints. The implied context is analytics, but no explicit when-to-use or exclusions are given.

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

live_activity_updateB

Update an iOS Live Activity. Used for real-time updates like sports scores, delivery tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
app_idYesBraze app ID
stale_dateNoISO 8601 stale time
activity_idYesLive Activity ID to update
end_activityNoEnd the Live Activity
notificationNo
restEndpointNoBraze REST endpoint URL
content_stateYesUpdated content state
dismissal_dateNoISO 8601 dismissal time

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It is silent on whether this needs API credentials, what ending the activity does, whether updates are reversible, and typical latency/rate limits for a write against a live user-facing surface.

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?

Two short sentences, purpose first and use cases second, with zero filler. Appropriately sized for the information it chooses to convey.

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

Completeness2/5

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

For a nine-parameter mutation tool with a nested notification object, no annotations and no output schema, the description leaves too much uncovered. It should at minimum signal that ending an activity is irreversible and that authenticated API credentials are required.

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 89%, so the schema already documents most parameters including apiKey, app_id, activity_id, stale_date, dismissal_date and end_activity. The description only loosely hints at what content_state holds (scores, delivery status) and adds no format or syntax beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Update') and resource ('iOS Live Activity'), so the operation is unambiguous. It does not need to differentiate from siblings since none of the listed tools touch Live Activities, but it also does not explicitly claim that territory.

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?

'Used for real-time updates like sports scores, delivery tracking' gives the usage context and implies when to reach for it. It stops short of stating prerequisites, when-not-to-use, or any alternative, leaving the selection logic incomplete.

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

messages_schedule_createC

Schedule a message to be sent at a specific time.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
send_idNo
audienceNo
messagesNo
scheduleYes
broadcastNo
segment_idNo
campaign_idNo
restEndpointNoBraze REST endpoint URL
user_aliasesNo
external_user_idsNo

TDQS

C2.4/5.0
Behavior2/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. 'Schedule a message to be sent' implies a write/mutation operation with delayed delivery, but the description doesn't state permissions required, whether the schedule is cancellable/updatable, whether the message validates immediately, or what happens on failure. For a mutation tool with zero annotation coverage and 11 parameters, this is a significant 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?

A single short sentence with no filler. It's appropriately sized as far as it goes, but the brevity reflects under-specification rather than efficient information density.

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

Completeness2/5

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

With 11 parameters, nested objects (audience, messages, schedule), 18% schema coverage, no annotations, and no output schema, the description is far too thin. It omits any mention of Braze, audience targeting, required vs optional params, or mutation semantics, leaving the agent without critical context to call this tool correctly.

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

Parameters2/5

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

Schema description coverage is only 18%, well below the 50% threshold, so the description must compensate—and it doesn't. It mentions only 'a specific time' (mapping to the schedule.time param), leaving 10 other parameters (campaign_id, segment_id, audience, messages, broadcast, send_id, apiKey, etc.) completely undocumented in the description. The description adds no meaningful semantic guidance beyond what's already in the sparse schema.

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

Purpose3/5

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

The description states a clear verb ('Schedule') and resource ('a message') with a timing qualifier, which is understandable on its own. However, it doesn't distinguish this tool from siblings like messages_send (immediate send) or campaigns_schedule_create, canvas_schedule_create, and messages_schedule_update. A single sentence covering only the most basic intent leaves the agent guessing about which scheduling tool to pick.

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

Usage Guidelines2/5

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

No guidance on when to use this over messages_send, campaign/canvas scheduling variants, or messages_schedule_update. The agent has no signal about the distinction between scheduling a direct message versus a campaign/canvas, or when immediate send is more appropriate.

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

messages_schedule_deleteC

Delete a previously scheduled message.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
schedule_idYesSchedule ID to delete
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure for a destructive operation. It states only that a scheduled message is deleted, without explaining whether deletion is permanent, what permissions are required, or what happens if the schedule has already been sent.

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 a single, front-loaded sentence with no wasted words. It is appropriately concise for stating the tool's core action.

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

Completeness2/5

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

For a destructive mutation tool with no annotations and no output schema, the description is too thin. It should at least clarify the effects of deletion, authentication expectations, or error cases to help an agent invoke it correctly.

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 coverage is 100%, so the schema already documents apiKey, schedule_id, and restEndpoint. The description adds no parameter-level meaning beyond what the schema provides, making the baseline score of 3 appropriate.

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

Purpose4/5

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

The description states a specific verb ('Delete') and resource ('a previously scheduled message'), making the core action clear. It does not explicitly differentiate itself from closely named siblings like campaigns_schedule_delete or canvas_schedule_delete, but the word 'message' narrows scope adequately.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as messages_schedule_update or campaigns_schedule_delete. It also omits any prerequisites, like whether the schedule must still be pending.

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

messages_schedule_updateC

Update a previously scheduled message.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
messagesNo
scheduleYes
schedule_idYesSchedule ID to update
restEndpointNoBraze REST endpoint URL

TDQS

C2.3/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full behavioral burden. It says nothing about authentication requirements, whether the update is a full replacement or partial patch, what happens to existing schedule fields not supplied, or any side effects or rate limits. For a mutation tool, this is a severe gap.

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

Conciseness3/5

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

The single sentence is concise and front-loaded, but it is so minimal that it barely earns its place. It avoids verbosity yet fails to provide meaningful content, making it adequate but clearly under-specified.

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

Completeness1/5

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

With no output schema, no annotations, five parameters including nested objects, and only a one-line description, the definition is grossly incomplete. It does not provide enough context for an agent to safely invoke this mutation tool.

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

Parameters2/5

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

Schema description coverage is only 60%, and the description adds no parameter meaning at all. The nested 'messages' object and the required 'schedule' object remain unexplained, leaving the agent to infer structure from the schema alone where descriptions are absent.

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

Purpose4/5

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

The description states a clear verb ('Update') and resource ('a previously scheduled message'), making the basic purpose intelligible. However, it does not distinguish this tool from sibling schedule-update tools such as campaigns_schedule_update or canvas_schedule_update, so an agent cannot tell them apart without opening schemas.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like messages_schedule_create or messages_schedule_delete, nor any prerequisites or context for invocation. The description merely restates the action without helping the agent choose this tool over siblings.

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

messages_sendC

Send messages immediately to users via push, email, webhook, or content cards.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
send_idNoCustom send identifier
audienceNo
messagesNoMessage content by channel
broadcastNoSend to entire segment
segment_idNoTarget segment ID
campaign_idNoCampaign ID for settings
restEndpointNoBraze REST endpoint URL
user_aliasesNo
external_user_idsNoUser external IDs
override_frequency_cappingNo
recipient_subscription_stateNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says 'immediately', which implies direct dispatch without scheduling, but does not disclose rate limits, whether sends are irreversible, whether audience and broadcast interact (broadcast=true vs audience/segment_id), subscription-state effects, or any error behavior for a 12-parameter high-impact send 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?

A single front-loaded sentence with no filler. It is appropriately sized for what little it says, though the brevity contributes to the other gaps rather than compensating for them.

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

Completeness1/5

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

For a 12-parameter, nested-object, no-annotation, no-output-schema send tool with many overlapping siblings, the description is inadequate. It omits recipient targeting semantics, channel selection guidance, prerequisites (apiKey, restEndpoint), and behavioral caveats that an agent needs before invoking a synchronous send.

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

Parameters2/5

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

Schema description coverage is 67% and the description does not explain any of the 12 parameters. Key semantics are left ambiguous: how 'broadcast', 'audience', 'segment_id', 'external_user_ids', and 'user_aliases' interact to define the recipient set, or how 'messages' channel keys map to 'recipient_subscription_state'. The description adds no parameter meaning beyond what partial schema descriptions already provide.

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

Purpose3/5

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

The description states the verb (send) and resource (messages) plus the channels, which is clear enough. However, it doesn't distinguish this from close siblings like campaigns_trigger_send, canvas_trigger_send, transactional_email_send, or messages_schedule_create, which all send messages through different mechanisms. A 'one-sentence summary' that covers four channels without naming when this tool is the right one leaves the tool's identity ambiguous among many senders.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. With siblings like campaigns_trigger_send, canvas_trigger_send, transactional_email_send, and messages_schedule_create, the agent gets nothing to help choose, and the description does not even hint at the immediate-vs-scheduled distinction that the word 'immediately' implies exists.

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

preference_center_createC

Create a new preference center.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPreference center name
stateNo
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL
redirect_page_htmlNoRedirect page HTML
confirmation_page_htmlNoConfirmation page HTML
preference_center_titleNoTitle shown to users
preference_center_optionsNo
preference_center_page_htmlNoCustom HTML content

TDQS

C2.1/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but provides none. It doesn't mention authentication requirements (apiKey/restEndpoint are params), whether creation is reversible, side effects, or what the response contains. A mutation tool with this sparse description is seriously under-specified.

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

Conciseness3/5

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

The single sentence is concise and front-loaded, but it is too sparse to be informative. Conciseness is achieved at the cost of completeness, which undermines its utility.

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

Completeness1/5

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

Given 9 parameters, nested objects, no output schema, and no annotations, the description is completely inadequate. It omits authentication context, parameter roles, and any behavioral details an agent needs to invoke the tool correctly.

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

Parameters2/5

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

The schema has 78% description coverage, covering most parameters, but the description adds no meaning beyond what's in the schema. The state enum and nested preference_center_options lack explanation in the description, and required parameters like 'name' are only documented in the schema. The description does not compensate for the coverage gap.

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

Purpose3/5

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

The description states a clear verb ('Create') and resource ('preference center'), matching the tool name. However, it offers no differentiation from the sibling preference_center_update tool or explanation of what scope/kind of preference center is created. It is minimally descriptive without distinguishing from alternatives.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like preference_center_update or preference_centers_list. It doesn't state prerequisites or context for creation, leaving the agent to infer usage from the name alone.

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

preference_center_getC

Get details for a specific preference center.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL
preference_center_external_idYesPreference center external ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. 'Get' weakly implies a read-only, idempotent operation, but there is no statement about authentication needs, error behavior when the ID is unknown, or what 'details' actually comprise.

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?

A single front-loaded sentence with zero filler or repetition. It is efficient, though its brevity borders on under-specification rather than true conciseness.

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?

For a simple single-resource read with full schema coverage, the essentials are present. However, with no output schema and no annotations, the description never says what 'details' are returned or how failures surface, leaving a real gap.

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 apiKey, restEndpoint, and preference_center_external_id. The description only gestures at the ID parameter via 'specific preference center' and adds no format or constraint detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Get) and resource (a specific preference center), and 'specific' implies a single-resource lookup rather than a list. It is clear what the tool does, but it does not explicitly distinguish itself from the sibling preference_centers_list or preference_center_url.

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

Usage Guidelines2/5

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

No when-to-use context is given, and no alternatives are named. The agent must infer from the name that this is the single-item retrieval counterpart to preference_centers_list, with no stated exclusions or prerequisites.

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

preference_centers_listC

List all preference centers in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results
apiKeyNoBraze REST API key
offsetNo
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral burden. It discloses only that this is a list operation, but does not mention whether results are paginated, whether any authentication (apiKey) is required, or what the response format is. For a read/list tool without annotations, this is a significant gap.

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 a single, efficient sentence with no wasted words. It is front-loaded with the core action and resource.

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

Completeness2/5

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

For a list tool with four parameters, no annotations, no output schema, and only 75% schema coverage, the description is incomplete. It should at least mention pagination behavior, authentication requirements, or the workspace-scoping constraint to be sufficient for correct invocation.

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 coverage is 75%, with limit, apiKey, and restEndpoint documented in the schema; offset is undocumented. The description adds no parameter meaning beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a clear verb+resource: 'List all preference centers in the workspace.' It distinguishes from preference_center_get (singular 'all' vs presumably one), but does not explicitly name the sibling or clarify that it is scoped to the workspace's preference centers. This is clear but not maximally differentiated.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus preference_center_get or preference_center_url. It implies use for listing all centers, but offers no conditions, exclusions, or alternative routing.

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

preference_center_updateC

Update an existing preference center.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name
stateNo
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL
redirect_page_htmlNoNew redirect HTML
confirmation_page_htmlNoNew confirmation HTML
preference_center_titleNoNew title
preference_center_optionsNo
preference_center_page_htmlNoNew page HTML
preference_center_external_idYesPreference center external ID

TDQS

C2.3/5.0
Behavior1/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 does not disclose any behavioral traits such as required permissions, whether the update is destructive, side effects, or authentication needs. For a mutation tool with 10 parameters, this is inadequate.

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 a single, front-loaded sentence with zero waste. It is concise and structured well, though under-specified content limits the score.

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

Completeness1/5

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

With no annotations, no output schema, and a complex 10-parameter mutation tool, the description is entirely insufficient. It omits critical information about permissions, behavior, and parameter usage, making it inadequate for an agent to invoke correctly.

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 80%, so the schema documents most parameters. The description adds no additional meaning beyond the schema, not even mentioning the required external ID. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose3/5

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

The description states a clear verb (Update) and resource (preference center), distinguishing it from preference_center_create and preference_center_get. However, it is generic and does not specify what aspects of the preference center can be updated or the scope of the update, leaving it in the 'vague purpose' category.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternatives are mentioned. The description merely states the action without providing context on when this tool should be selected over others, such as create or get.

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

preference_center_urlC

Generate a preference center URL for a specific user.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
user_idYesUser external ID
restEndpointNoBraze REST endpoint URL
preference_center_external_idYesPreference center external ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It does not explain whether the URL is persistent, whether it requires a preference center to already exist, what the response contains, or any rate limits. This is a significant gap for an unannotated 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?

Single efficient sentence that front-loads the action and resource. It is appropriately sized, though minimal.

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

Completeness2/5

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

Given no annotations, no output schema, and four parameters requiring two identifiers, the description is too sparse. It omits key details like required permissions, dependency on a preference center, and expected return shape.

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 input schema already documents all four parameters thoroughly. The description adds no extra meaning beyond what the schema provides; baseline 3 applies.

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

Purpose4/5

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

Specific verb (Generate) and resource (preference center URL), clearly differentiated from siblings like preference_centers_list or preference_center_get. Minor ambiguity about whether it creates a URL or merely computes it, but the core purpose is clear.

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

Usage Guidelines2/5

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

No indication of when to use this tool versus related preference center tools (create, update, get, list). The description does not mention prerequisites such as an existing preference center, nor does it exclude any scenarios.

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

purchases_productsC

List all product IDs from purchase events.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL

TDQS

C2.8/5.0
Behavior2/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. 'List' implies a read-only operation, but nothing is said about authentication (the apiKey param), pagination behavior, or whether results are scoped to a time range or workspace.

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?

A single short, front-loaded sentence with no filler. Every word contributes to identifying the tool's output.

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

Completeness2/5

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

With no annotations, no output schema, and an undocumented page parameter, the definition is under-specified for a list endpoint. An agent lacks pagination, auth, and scoping details needed to call it correctly.

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

Parameters2/5

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

The description says nothing about any of the three parameters. Schema coverage is only 67%: apiKey and restEndpoint are documented in the schema, but 'page' has no description anywhere, and the description does not compensate for that gap or explain pagination.

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

Purpose4/5

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

States a specific verb (List) and a precise resource (product IDs from purchase events). This clearly separates it from sibling analytics tools like purchases_quantity and purchases_revenue, though it doesn't explicitly name those siblings.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus purchases_quantity, purchases_revenue, or events_list. No prerequisites, time-window constraints, or conditions for selection are given.

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

purchases_quantityC

Get purchase quantity analytics over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNo
apiKeyNoBraze REST API key
app_idNo
lengthYesNumber of days
ending_atNo
product_idYesProduct ID
restEndpointNoBraze REST endpoint URL

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says this is a read-style 'Get' operation, but does not disclose authentication requirements despite the apiKey parameter, rate limits, return format, granularity behavior, or how missing optional parameters are handled. The description adds very little beyond the tool name.

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 a single front-loaded sentence with no filler. Structurally it is efficient, though its brevity contributes to under-specification rather than conciseness through precision.

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

Completeness2/5

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

For a 7-parameter analytics tool with two required fields, no annotations, no output schema, and only 57% schema description coverage, this description is too sparse. An agent lacks enough context about required inputs, time-range semantics, and expected return shape to call the tool confidently.

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

Parameters2/5

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

Schema description coverage is 57%, meaning several parameters are not documented by the schema itself. The description adds no parameter meaning at all: it does not explain product_id, length, ending_at, app_id, unit, apiKey, or restEndpoint. It also does not resolve the discrepancy between length being described as 'Number of days' and unit allowing hour/week/month.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get purchase quantity analytics over time.' It is clear enough that this retrieves quantity analytics and not product or revenue analytics. However, it does not explicitly name or distinguish the sibling tools purchases_products or purchases_revenue, so sibling differentiation is only implied.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as purchases_products or purchases_revenue. It also omits prerequisites, time-range expectations, or when the required product_id and length parameters should be supplied. Usage is only vaguely implied by 'over time.'

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

purchases_revenueC

Get revenue analytics over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNo
apiKeyNoBraze REST API key
app_idNo
lengthYesNumber of days
ending_atNo
product_idYesProduct ID
restEndpointNoBraze REST endpoint URL

TDQS

C2.2/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits, but it only restates the purpose. It does not state that this is a read-only operation, does not mention authentication requirements (apiKey), does not describe rate limits, time-range constraints, or 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.

Conciseness2/5

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

The single sentence is front-loaded but so sparse that it fails to convey the necessary invocation details. This is under-specification rather than efficient conciseness, similar to the calibration example where a one-word description scored low.

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

Completeness1/5

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

For a 7-parameter tool with no annotations and no output schema, the description is completely inadequate. It omits required parameters, time-range semantics, authentication, and return behavior, leaving the agent unable to invoke the tool correctly without relying entirely on the schema.

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

Parameters2/5

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

Schema description coverage is 57%, and the description adds no parameter meaning whatsoever. It does not explain the required product_id and length, nor the optional unit, ending_at, or app_id parameters, leaving gaps where the schema descriptions are absent.

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

Purpose3/5

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

The description uses a specific verb ('Get') and resource ('revenue analytics'), but the scope 'over time' is vague and the tool is not differentiated from analytics siblings like purchases_quantity, purchases_products, or sends_analytics. An agent cannot tell exactly what revenue dimension or granularity this returns.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as purchases_quantity or purchases_products, nor any conditions, prerequisites, or exclusions. The agent must infer usage entirely from the tool name and schema.

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

scheduled_broadcasts_listC

List upcoming scheduled campaigns and Canvases.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
end_timeYesISO 8601 end time for query range
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read, but nothing is said about authentication, pagination, the required end_time range semantics, or what is returned. For a list tool with zero annotation coverage this is thin.

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?

A single efficient sentence with the resource front-loaded and no filler. It is appropriately sized, though it is so terse that it borders on under-specification rather than elegant concision.

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?

For a simple read-only list with a fully documented schema and a required end_time, the description is minimally adequate, but it omits pagination behavior and any return-shape context, and no output schema exists to compensate.

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 apiKey, end_time, and restEndpoint. The description adds no parameter meaning beyond the schema, which is the baseline-3 case.

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

Purpose4/5

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

States a specific verb (List) and resource (upcoming scheduled campaigns and Canvases), and the 'scheduled' qualifier separates it from the plain campaigns_list and canvas_list siblings. It does not, however, explain how it relates to those siblings explicitly.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of alternatives like campaigns_list or canvas_list, and no prerequisites stated. The agent is left to infer that this is the scheduling-focused variant from the name alone.

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

scim_users_createC

Create a new dashboard user account.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (requires SCIM permissions)
userNameYesEmail address for the new user
givenNameYesFirst name
departmentNoDepartment
familyNameYesLast name
permissionsNoUser permissions
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for a mutation tool, yet it discloses nothing about required SCIM-scoped auth, duplicate-userName handling, reversibility, or side effects on existing permissions. 'Create a new' only minimally implies a write operation.

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?

A single front-loaded sentence with zero waste. It is well-structured but so terse that the brevity borders on under-specification rather than efficient conciseness.

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

Completeness2/5

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

For a 7-parameter mutation with a nested permissions object, no annotations, and no output schema, one sentence is inadequate. It omits the dashboard-vs-end-user distinction, permission semantics, auth requirements, and error/duplicate behavior an agent needs to call it correctly.

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% and every parameter (userName, givenName, familyName, department, permissions, apiKey, restEndpoint) is documented in the schema. The description adds no parameter meaning beyond that, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb ('Create') and resource ('dashboard user account'), which is clearer than a tautology. However, it does not distinguish this from sibling scim_users_search/get/update/delete or clarify that this is a SCIM-provisioned dashboard user rather than an end-user profile (users_identify/users_track).

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this versus alternatives like scim_users_search or the users_identify/users_track family. No prerequisites, no mention of SCIM provisioning context, and no exclusions are stated.

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

scim_users_deleteB

Delete a dashboard user account. This is permanent.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (requires SCIM permissions)
user_idYesSCIM user ID to delete
restEndpointNoBraze REST endpoint URL

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden and does state the most important trait: the deletion is permanent. However, it omits required authorization details (though the schema's apiKey field mentions SCIM permissions), side effects on associated data, and error or recovery behavior.

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 extremely concise and front-loads the action and its most critical consequence. Both sentences earn their place without filler or redundancy.

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?

For a destructive three-parameter tool with no annotations and no output schema, the description is minimally adequate because it warns that deletion is permanent. It does not cover when to use it, prerequisites, or side effects, so it leaves meaningful gaps for a destructive SCIM operation.

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 all three parameters are already documented in the input schema. The description adds no additional parameter meaning or format guidance beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

The description gives a specific verb and resource: 'Delete a dashboard user account.' An agent can understand the core action, but it does not distinguish this from the sibling users_delete tool or clarify that this operates via SCIM rather than a standard user deletion path.

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

Usage Guidelines2/5

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

There is no guidance on when to use scim_users_delete versus alternatives such as users_delete, nor any prerequisites or context for selecting this tool. The description only states the action and permanence, leaving usage entirely to inference.

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

scim_users_getA

Get a dashboard user account by SCIM ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (requires SCIM permissions)
user_idYesSCIM user ID
restEndpointNoBraze REST endpoint URL

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, but 'Get' clearly implies a read-only, non-destructive operation. It does not disclose auth requirements, rate limits, or error behavior, leaving only the minimum behavioral signal.

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?

A single front-loaded sentence with no wasted words. The verb, resource, and lookup key are all present immediately.

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 read tool with fully described parameters, this is almost enough to call correctly. It could be more complete by routing from scim_users_search or noting SCIM permissions, but the core operation is clear.

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 coverage is 100%, and the description mirrors the user_id semantics with 'SCIM ID'. It adds no syntax or format beyond what the schema already documents, so baseline 3 is appropriate.

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 ('Get'), resource ('dashboard user account'), and lookup key ('SCIM ID'). This distinguishes it from scim_users_search, which would not fetch by ID.

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 phrase 'by SCIM ID' implies usage when a SCIM ID is known, but there is no explicit when-not guidance or named alternative such as scim_users_search. Usage is inferable but not fully directed.

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

scim_users_updateC

Update a dashboard user account.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (requires SCIM permissions)
user_idYesSCIM user ID
userNameNoNew email address
givenNameNoNew first name
departmentNoNew department
familyNameNoNew last name
permissionsNoNew permissions
restEndpointNoBraze REST endpoint URL

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It states the operation is an update (mutation) but does not disclose permission requirements beyond what the schema's apiKey description implies, does not describe how partial updates or omissions are handled, and provides no information on reversibility or response behavior.

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 a single short sentence, which is concise and front-loaded. However, its brevity is a result of under-specification rather than efficient coverage of necessary details.

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

Completeness2/5

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

For a mutation tool with 8 parameters (including a nested permissions object), no annotations, and no output schema, the description is insufficient. It fails to explain what can be updated, how partial updates work, permission requirements, or error conditions, leaving significant gaps for an agent to infer.

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 all 8 parameters with clear descriptions. The description adds no parameter-level meaning beyond the schema, which is acceptable at baseline when the schema does the heavy lifting.

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

Purpose2/5

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

The description 'Update a dashboard user account' restates the tool name with only mild added detail ('dashboard user account'). It identifies the basic verb+resource but is not specific about what can be updated and does not distinguish scim_users_update from siblings like users_identify, scim_users_create, or scim_users_delete.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as users_identify (which also updates a user profile) or scim_users_create. The implied usage is that it updates an existing SCIM user, but no prerequisites, exclusions, or alternatives are named.

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

segments_analyticsC

Get segment size analytics over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
lengthYesNumber of days
ending_atNo
segment_idYesSegment ID
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only implies a read operation through 'Get' but does not describe permissions, rate limits, return format, or how the 'length' and 'ending_at' parameters affect the time series. This is a significant gap for an analytics 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 a single, front-loaded sentence with no wasted words. It is efficient, though its extreme brevity may be under-informative rather than concise.

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

Completeness2/5

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

Given no output schema and no annotations, the description should explain what the analytics return (e.g., time granularity, metrics included) and when to use it. It only states the core purpose, leaving key contextual details missing for an agent to invoke it correctly.

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 80%, so the schema already documents most parameters (segment_id, length, apiKey, restEndpoint), though 'ending_at' lacks a description. The description adds no additional parameter meaning beyond the schema, which is the baseline expectation when schema coverage is high.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('segment size analytics over time'), which distinguishes it from sibling tools like segments_list and segments_details that deal with segment definitions, not analytics. It does not explicitly differentiate from other analytics tools such as campaigns_analytics, but the resource is clear.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, time-range constraints, or any conditions that would help an agent choose it over related analytics tools.

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

segments_detailsC

Get details for a specific segment.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
segment_idYesSegment ID
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral burden. It does not state whether the operation is read-only, what authentication is required (beyond the schema's apiKey parameter), rate limits, or what data is returned. For a read operation with zero annotation coverage, this is a notable gap.

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?

A single, efficient sentence with zero waste. Front-loaded with the action and resource.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and multiple siblings, the description is too sparse. It should clarify what 'details' includes, whether it returns the full segment configuration, and how it differs from segments_list or segments_analytics.

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 all three parameters (apiKey, segment_id, restEndpoint) are documented in the schema. The description adds no additional parameter semantics beyond implying segment_id is required, which is already in the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description states a clear verb (Get) and resource (details for a specific segment). It distinguishes from siblings like segments_list (list vs. specific), though it does not explicitly name the alternative.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus segments_list, segments_analytics, or users_export_segment. Usage context is entirely absent.

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

segments_listC

List all segments in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL
sort_directionNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says only that segments are listed, without disclosing pagination behavior, sorting defaults, authentication requirements, rate limits, or return shape. The presence of a page parameter also slightly undercuts the unqualified claim to list 'all' segments.

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

Conciseness3/5

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

The description is a single front-loaded sentence with no wasted words, but it is under-specified rather than appropriately concise for a tool with four parameters and unannotated behavior.

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

Completeness2/5

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

For a list tool with no annotations, no output schema, 50% schema coverage, and undocumented pagination/sorting parameters, the description is not complete enough. An agent lacks guidance on pagination, sorting, authentication context, and how to distinguish this from segments_details or segments_analytics.

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

Parameters2/5

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

Schema description coverage is 50%: apiKey and restEndpoint are documented in the schema, but page and sort_direction are not. The description adds no parameter meaning at all, so it fails to compensate for the undocumented pagination and sorting parameters.

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

Purpose4/5

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

The description gives a clear verb and resource: 'List all segments in the workspace.' It is specific enough to distinguish from non-list siblings, but it does not distinguish itself from closely related siblings like segments_details or segments_analytics.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of alternatives such as segments_details for a single segment, and no indication that page/sort_direction affect how the list is retrieved. Usage is only implied by the verb 'List.'

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

send_id_createA

Create a send ID for tracking message sends. Use to correlate sends with analytics.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
send_idYesCustom send identifier to create
campaign_idNoCampaign to create send ID for
restEndpointNoBraze REST endpoint URL

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says 'Create' but does not disclose authentication requirements, idempotency, duplicate handling, rate limits, or what the tool returns, which is significant for a mutation tool.

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?

Two short sentences, front-loaded with the action and then the purpose. There is no redundant or filler text.

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?

For a simple create tool with full schema coverage and no output schema, the description covers the basic purpose. However, with no annotations, it leaves behavioral gaps around permissions, side effects, and analytics correlation mechanics unaddressed.

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 apiKey, send_id, campaign_id, and restEndpoint are already documented in the schema. The description adds no additional parameter meaning beyond what the schema provides, so the baseline of 3 applies.

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 states a specific verb and resource: 'Create a send ID for tracking message sends.' It also names the purpose, tracking/correlating sends with analytics, which distinguishes it from analytics-read siblings such as sends_analytics and campaigns_analytics.

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 gives a clear usage context: 'Use to correlate sends with analytics.' That tells the agent when this tool is appropriate, but it does not name alternatives or 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.

sends_analyticsC

Get analytics for a specific send ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
lengthYesNumber of days
send_idYesSend ID
ending_atNo
campaign_idYesCampaign ID
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/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 and delivers almost nothing: no statement of auth requirements despite a required apiKey parameter, no rate-limit or read-only confirmation, no indication of what metrics or time window are returned. For a tool requiring Braze REST credentials this is a significant disclosure 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?

A single front-loaded sentence with zero filler, so it is structurally clean. It is arguably too terse for a six-parameter tool, but the shortfall is under-specification rather than verbosity.

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

Completeness2/5

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

With six parameters, three of them required, no annotations, and no output schema, the description should explain the required campaign_id/send_id/length combination and at least sketch the analytic payload. As written it omits all of this, leaving the agent to reconstruct semantics from the schema alone.

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 83% (>80%), so the schema already documents send_id, campaign_id, length, apiKey and restEndpoint; the baseline of 3 applies. The description adds nothing beyond the schema – notably it never explains the required 'length' (days) window or the optional ending_at parameter.

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

Purpose4/5

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

The description states a specific verb+resource ('Get analytics') scoped to 'a specific send ID', which is enough to distinguish it from campaigns_analytics or canvas_analytics at a glance. It stops short of naming those siblings explicitly, so an agent must infer that this is the send-scoped analytics endpoint.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the many sibling analytics endpoints (campaigns_analytics, canvas_analytics, segments_analytics, events_analytics), nor prerequisites, nor what a 'send ID' is relative to campaign_id. The agent is left to infer everything from the name.

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

sessions_analyticsC

Get app session analytics over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNo
apiKeyNoBraze REST API key
app_idNo
lengthYesNumber of days
ending_atNo
restEndpointNoBraze REST endpoint URL

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation ('Get') and a time-series response ('over time') but says nothing about authentication requirements, rate limits, default units, date-range constraints, or what the returned analytics include. For a data-retrieval tool with no safety annotations this is a significant gap.

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

Conciseness3/5

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

The single sentence is front-loaded and free of filler, which is structurally sound. However, it is over-terse for a six-parameter analytics tool with no annotations and no output schema, so its brevity comes at the cost of necessary detail.

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

Completeness2/5

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

Given the tool's complexity (six parameters, one enum, required length), the absence of annotations, and no output schema, the description is materially incomplete. It does not explain authentication, time-range limits, what metrics are returned, or how to interpret the response, leaving critical context for an agent to guess.

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

Parameters2/5

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

Schema description coverage is 50%, and the description adds no parameter-level meaning beyond the vague phrase 'over time.' Required 'length' is already described in the schema, 'unit' uses an enum, but 'app_id' and 'ending_at' are undocumented in both schema and description, so the description fails to compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('app session analytics') with temporal scope ('over time'), which is clear and distinguishable from most siblings like campaigns_analytics or sends_analytics. However, it does not explicitly name or exclude any alternative analytics tool, so an agent must rely on the name alone for differentiation.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description only asserts what it does, leaving the agent to infer appropriate context from the name.

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

sms_invalid_phonesC

Query phone numbers that have been marked as invalid within a date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 100, max 500)
phoneNoFilter by specific phone number
apiKeyNoBraze REST API key
offsetNoOffset for pagination
end_dateNoEnd date (YYYY-MM-DD)
start_dateNoStart date (YYYY-MM-DD)
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it discloses nothing about read-only nature, authentication requirements (apiKey/restEndpoint), rate limits, pagination behavior, or return shape. For a 7-parameter tool with no output schema, this is a substantial 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?

A single, well-formed sentence with zero filler and the key scope constraint front-loaded. It is efficient, though its brevity contributes to the under-specification elsewhere rather than being a model of tightness.

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

Completeness2/5

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

Given 7 parameters, zero annotations, and no output schema, the definition should say more: pagination/limit behavior, auth expectations, result format, and the relationship to the remove sibling. Almost all of that is missing.

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 every parameter is already documented in the schema. The description only echoes the date-range concept behind start_date/end_date and adds no syntax, defaults, or format details beyond that, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb ('Query'), a precise resource ('phone numbers marked as invalid'), and a scope ('within a date range'). The purpose is clear on its own, but it never distinguishes itself from the closely related sibling sms_invalid_phones_remove, which a reader must disambiguate unaided.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no mention of the natural alternative sms_invalid_phones_remove for clearing invalid numbers. Usage is only implied by the verb 'Query'.

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

sms_invalid_phones_removeC

Remove phone numbers from the invalid phone list.

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneNoSingle phone number to remove
apiKeyNoBraze REST API key
phonesNoMultiple phone numbers to remove (max 50)
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and falls short: it doesn't say whether removal is reversible, whether operation is idempotent, what happens to numbers not on the list, or that an apiKey/restEndpoint pair is needed for auth. Only the bare mutation is conveyed.

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?

One sentence, front-loaded with the verb and resource, with zero filler. It is appropriately sized but arguably under-specified rather than padded.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and no required-parameter declaration, the description should explain auth expectations, batch limits/partial-failure behavior, and whether a removed number can be re-added. None of this is present, so an agent must guess at operational 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 phone, phones (max 50), apiKey and restEndpoint are already documented in the schema; the baseline of 3 applies. The description adds no meaning beyond the schema and notably omits any hint about the phone-vs-phones relationship (single vs batch), which the schema lists as two independent properties.

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

Purpose4/5

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

States a specific verb (remove) and resource (phone numbers from the invalid phone list), which is immediately distinguishable from the sibling sms_invalid_phones list tool. However, it never names or contrasts with that sibling explicitly, leaving differentiation to inference.

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

Usage Guidelines2/5

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

No guidance on when to use this versus the sibling sms_invalid_phones (list) or email counterparts like email_bounce_remove/email_spam_remove. No prerequisites, no mention that a phone must already be on the invalid list, and no exclusions.

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

subscription_status_getC

Get the subscription group status for users.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoEmails to query
phoneNoPhone numbers to query (for SMS)
apiKeyNoBraze REST API key
external_idNoExternal IDs to query
restEndpointNoBraze REST endpoint URL
subscription_group_idYesSubscription group ID

TDQS

C2.8/5.0
Behavior2/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 of behavioral disclosure. It signals a read operation via 'Get' but says nothing about authentication requirements (the apiKey/restEndpoint params suggest a Braze REST call), rate limits, or what happens when identifiers are missing. Little is added beyond the verb.

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

Conciseness3/5

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

A single short sentence is front-loaded and wastes no words, but it is arguably under-specified rather than truly concise. There is no signal about output or identifier requirements, leaving the brevity closer to thinness than efficiency.

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

Completeness2/5

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

For a read tool with no annotations and no output schema, the description should at least sketch what a 'subscription group status' result contains (e.g., subscribed/unsubscribed states). It does not, and it omits that at least one user identifier is needed, so an agent lacks enough to call it confidently.

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 all six parameters, including the required subscription_group_id and the email/phone/external_id query arrays. The description adds no syntax, format, or constraint detail beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('subscription group status for users'), which is clear on its own. However, it does not differentiate from close siblings like 'subscription_user_status', 'email_subscription_status', or 'subscription_status_set', whose relationship to this read tool an agent must infer.

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

Usage Guidelines2/5

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

There is no guidance on when to use this read tool versus the near-identical 'subscription_user_status' sibling, nor any mention of prerequisites such as supplying at least one of email/phone/external_id. The only usage hint is the implicit 'for users' phrasing.

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

subscription_status_setB

Update subscription group status for users (email or SMS/WhatsApp).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoEmails to update
phoneNoPhone numbers to update
apiKeyNoBraze REST API key
external_idNoExternal IDs to update
restEndpointNoBraze REST endpoint URL
subscription_stateYesNew status
subscription_group_idYesSubscription group ID

TDQS

B3.1/5.0
Behavior2/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 states what is updated but omits critical behavioral details such as required API key handling, rate limits, whether changes are reversible, and error/partial-success behavior for batch updates.

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 a single, front-loaded sentence with no filler or redundancy. Every word earns its place.

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?

For a multi-channel subscription mutation tool with no annotations and no output schema, the description is minimally adequate but lacks essential context about authentication, batching, and return behavior. It covers the what but not the how or side effects.

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 all seven parameters with field-level descriptions and an enum for subscription_state. The description adds no meaning beyond what the schema provides, making a baseline 3 appropriate.

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

Purpose4/5

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

The description states a specific verb (Update) and resource (subscription group status for users) and clarifies the channel scope (email/SMS/WhatsApp). It is clear, but does not differentiate itself from the sibling subscription_status_set_v2 or subscription_status_get, which is a notable gap given the near-identical names.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the v2 variant or subscription_user_status. The description mentions update but offers no context, prerequisites, or alternatives, leaving the agent to infer usage entirely.

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

subscription_status_set_v2C

Update subscription group status for users (V2 API with more options).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoEmail address
phoneNoPhone number
apiKeyNoBraze REST API key
external_idNoExternal ID
restEndpointNoBraze REST endpoint URL
subscription_groupsYesSubscription groups to update

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations and no output schema, the description carries the full burden. It says 'Update', implying a mutation, but does not disclose permission requirements, whether the update is idempotent, partial failure behavior across multiple subscription groups, or confirmation that it requires a user identifier (email, phone, or external_id).

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?

A single efficient sentence with no waste. It is appropriately sized for a short description, though the parenthetical could be expanded to add more value.

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

Completeness2/5

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

For a mutation tool with 6 parameters, no annotations, no output schema, and several sibling alternatives, the description is too thin. It does not cover authentication needs (the apiKey parameter), the required user identification method, or the V2 vs V1 distinction, leaving significant gaps an agent must infer.

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 all 6 parameters including the nested subscription_groups array with enum values. The description adds no parameter-level meaning beyond the schema; baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb (Update) and resource (subscription group status for users), and the parenthetical '(V2 API with more options)' hints at a sibling v1 version. However, it doesn't describe what makes V2 different or when to choose it over 'subscription_status_set'.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance. The '(V2 API with more options)' is a thin hint that a V1 exists, but it does not specify conditions for selecting this tool over the sibling 'subscription_status_set'.

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

subscription_user_statusC

List all subscription groups for a specific user.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoUser's email
limitNoMax results
phoneNoUser's phone number
apiKeyNoBraze REST API key
offsetNo
external_idNoUser's external ID
restEndpointNoBraze REST endpoint URL

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry behavioral disclosure. 'List' implies a read-only operation, but it omits auth requirements, rate limits, pagination behavior, and whether the operation is safe/idempotent.

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?

One front-loaded sentence with no filler. It is efficiently structured, though its brevity contributes to other gaps.

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

Completeness2/5

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

For a 7-parameter tool with no required fields, no annotations, and no output schema, the description is incomplete. It does not specify that at least one user identifier (email, phone, or external_id) is likely required, nor does it explain pagination or return structure.

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 coverage is high (86%), so the schema documents most parameters. The description only implies a user identifier is needed and adds no syntax, constraints, or guidance on limit/offset or restEndpoint/apiKey.

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

Purpose4/5

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

States a specific verb (List), resource (subscription groups), and scope (specific user), so the action is understandable. It does not differentiate itself from subscription_status_get or other subscription siblings, keeping it at a 4 rather than 5.

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

Usage Guidelines2/5

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

Gives no when-to-use, prerequisites, or alternatives. The phrase 'for a specific user' hints at user scoping but does not say which identifier to use or when to prefer this over subscription_status_get.

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

transactional_email_sendB

Send a transactional email via an API-triggered campaign. Used for order confirmations, password resets, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
recipientYesSingle recipient for transactional email
campaign_idYesTransactional campaign ID
restEndpointNoBraze REST endpoint URL
external_send_idNoCustom identifier for this send
trigger_propertiesNoEmail personalization data

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses almost nothing beyond the mechanism. It does not state that this is a mutating, non-idempotent send, whether it requires a valid API key (the apiKey/restEndpoint params hint at auth but the description never says so), what happens on duplicate sends, or any rate/error behavior.

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?

Two short sentences, with the core action front-loaded and no padding. The second sentence is useful for orientation but ends in a vague 'etc.' that adds little precision.

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

Completeness2/5

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

This is a 6-parameter mutation tool with a nested recipient object, no output schema, and no annotations. The description should at minimum cover auth requirements, the campaign prerequisite, and send semantics, but it covers none of these, leaving the agent under-equipped to invoke it correctly.

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 campaign_id, recipient, apiKey, restEndpoint, external_send_id, and trigger_properties. The description adds no parameter-level meaning (e.g., that external_send_id enables idempotency or that trigger_properties feed personalization), so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb and resource ('Send a transactional email') and adds the mechanism ('via an API-triggered campaign'), which tells the agent a pre-configured campaign is required. It does not distinguish itself from close siblings such as messages_send, campaigns_trigger_send, or canvas_trigger_send, which an agent could easily confuse it with.

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?

'Used for order confirmations, password resets, etc.' gives example scenarios, which implies the usage context, but there is no explicit when-to-use/when-not, no prerequisites, and no named alternative among the many sibling send tools. The agent must infer selection criteria on its own.

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

users_alias_newC

Create new user aliases for existing users or create alias-only profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (optional if set via env/header)
restEndpointNoBraze REST endpoint URL
user_aliasesYesArray of user aliases to create

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a write operation but says nothing about required auth/permissions, whether creation is idempotent on repeated alias_name+alias_label, what happens on conflict, or the batch ceiling (the schema's maxItems=50 is never surfaced).

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?

A single tightly-worded sentence with the action front-loaded and no filler. It could arguably be split to carry an alternative-tool pointer, but as written nothing is wasted.

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?

For a parameterized mutation tool with no annotations and no output schema, the definition is minimal but not misleading. It omits auth expectations, batch/rate behavior, and behavior on alias collision, leaving real gaps an agent would want before invoking it.

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 baseline is 3. The phrase 'existing users or create alias-only profiles' does add meaning by implicitly explaining why external_id is optional, but the description gives no syntax, format, or constraint detail beyond what the schema already documents.

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

Purpose4/5

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

States a specific verb+resource ('Create new user aliases') and even distinguishes two modes of operation (attaching to existing users vs. creating alias-only profiles). It does not, however, differentiate itself from the closely-named sibling users_alias_update, which is the highest-risk confusion point.

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

Usage Guidelines2/5

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

No when-to-use guidance beyond the implicit 'create' semantics. It never names users_alias_update (the obvious alternative for modifying an existing alias) or users_identify as the path when the alias needs to be linked to a known external_id. The reader must infer the choice from sibling names alone.

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

users_alias_updateC

Update existing user aliases. Changes the alias_name for a given alias_label.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (optional if set via env/header)
restEndpointNoBraze REST endpoint URL
alias_updatesYesArray of alias updates

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it only restates that a name is changed. It says nothing about required permissions, reversibility, error behavior for a non-existent label, or the batch limit (which lives only in the schema). For a mutation tool with zero annotation coverage this is a notable gap.

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?

Two short sentences, front-loaded with the action and immediately followed by the specific field change. No filler or redundancy.

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

Completeness2/5

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

A write operation with no annotations and no output schema needs more than a one-line restatement. Missing permission requirements, behavior on invalid labels, and response expectations leave the agent under-informed despite the schema covering parameters.

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 baseline is 3. The description reinforces the old_alias_name/new_alias_name relationship at a conceptual level but adds no syntax, format, or constraint detail beyond what the schema already documents.

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

Purpose4/5

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

States a specific verb and resource ("Update existing user aliases") and clarifies the operation changes alias_name for a given alias_label. The word "existing" implicitly separates it from users_alias_new, but no sibling is named explicitly, so it stops short of full differentiation.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no reference to alternatives like users_alias_new or users_external_id_rename. The only hint is "existing," which is inference rather than stated guidance.

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

users_deleteA

Delete user profiles from Braze. This is permanent and cannot be undone. Use for GDPR/CCPA compliance.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (optional if set via env/header)
braze_idsNoBraze IDs of users to delete
external_idsNoExternal IDs of users to delete
restEndpointNoBraze REST endpoint URL
user_aliasesNoUser aliases to delete

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It correctly discloses the critical trait that deletion is permanent and cannot be undone, which is valuable. It still omits other important behavioral details such as required permissions, whether the operation is synchronous or asynchronous, and any rate or batch limits.

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?

Three short sentences, front-loaded with the core action. The destructive warning and compliance use case follow immediately, and there is no filler or repetition.

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?

For a destructive, unannotated tool with five parameters and no output schema, the description covers the what, the irreversibility, and one use case. It does not compensate for the schema's missing required identifiers or explain the API key and endpoint configuration, so an agent could still invoke it incorrectly by omitting user identifiers.

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 all five parameters. The description adds no parameter-level guidance, such as which identifier type to use or whether at least one of braze_ids, external_ids, or user_aliases is required. With full schema coverage, a baseline score of 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource: delete user profiles from Braze. This clearly distinguishes it from read-oriented siblings like users_export or aggregation siblings like kpi_dau, but it does not explicitly differentiate from scim_users_delete, which is another deletion endpoint in the sibling list.

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 a clear intended context: 'Use for GDPR/CCPA compliance.' That gives an agent a strong signal for when this tool is appropriate. However, it does not state when not to use it or name any alternative, such as using users_alias_update or users_external_id_remove for narrower identifier cleanup.

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

users_exportC

Export user profiles by identifier (external_id, user_alias, or braze_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
braze_idsNo
external_idsNoExternal IDs to export
restEndpointNoBraze REST endpoint URL
user_aliasesNo
fields_to_exportNoSpecific fields to return

TDQS

C2.9/5.0
Behavior2/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 says nothing about whether this is a read-only operation, whether exports are asynchronous/job-based, pagination or rate limits, permission requirements, or how results are delivered. For a 6-parameter data-export tool this is a substantial gap.

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?

A single sentence, front-loaded with the verb and resource, with zero filler. Appropriately sized for what it attempts to convey.

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

Completeness2/5

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

Six parameters, no annotations, no output schema, and 67% schema coverage. The description omits authentication context, export delivery semantics, and any constraint on combining identifier types, leaving an agent under-informed for anything beyond the simplest call.

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 coverage is 67%, so the schema documents most parameters. The description usefully maps its three named identifier types onto external_ids, user_aliases and braze_ids, but adds nothing about fields_to_export, apiKey, restEndpoint, or whether identifiers can be mixed.

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

Purpose4/5

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

Specific verb+resource: 'Export user profiles', with the identifier types named. It distinguishes this from sibling exporters like users_export_segment or users_export_control_group by scoping to identifier-based lookup, though it never names those siblings explicitly.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites (e.g. that this is a Braze API call requiring apiKey/restEndpoint), and no routing against the closely-named export siblings. The agent must infer context from the tool name alone.

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

users_export_control_groupC

Export users in the Global Control Group.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
restEndpointNoBraze REST endpoint URL
output_formatNo
fields_to_exportNo
callback_endpointNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral burden. It does not disclose whether the operation is read-only, what permissions are required, how the export is delivered, or what side effects exist. It only states what is exported.

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

Conciseness3/5

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

The single sentence is front-loaded and free of fluff, but it is arguably too sparse for the tool's complexity. The structure is clean, though the content is under-specified rather than efficiently concise.

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

Completeness1/5

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

The tool has 5 parameters, no annotations, no output schema, and an async-export-like design with callback and output format options. The description fails to explain return values, delivery behavior, authentication, or any operational context needed to invoke it correctly.

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

Parameters1/5

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

With 5 parameters and only 40% schema description coverage, the description must compensate for undocumented parameters. It adds no meaning beyond the schema and does not clarify output_format, fields_to_export, callback_endpoint, or the authentication parameters.

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

Purpose4/5

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

The description states a specific verb (Export) and resource (users in the Global Control Group), which distinguishes it from the broader users_export and users_export_segment siblings. It does not explicitly name alternatives, but the scope itself provides clear differentiation.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus users_export or users_export_segment, nor any prerequisites, exclusions, or context conditions. Usage is only implied by the tool name and description.

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

users_export_segmentC

Export all user profiles in a segment (async job).

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key
segment_idYesSegment ID to export
restEndpointNoBraze REST endpoint URL
output_formatNo
fields_to_exportNo
callback_endpointNoWebhook URL for completion

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It notes the async nature, which is useful, but doesn't mention authentication requirements, rate limits, how completion is signaled (the callback_endpoint param implies this but isn't explained), or that this may take time. For a mutation/export tool with zero annotation coverage, this is thin.

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?

One tight sentence with the key fact (async job) in parentheses. It is front-loaded and wastes no words, though the parenthetical could be more informative about what async implies.

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 6 parameters, no output schema, no annotations, and a closely-named sibling, the description is minimally adequate. It states the core purpose and async nature but omits the callback-driven completion model, permissions, and disambiguation from users_export_control_group — leaving real gaps an agent would need to fill.

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 coverage is 67%, so the schema documents most parameters. The description adds nothing about output_format options, fields_to_export, or callback_endpoint semantics — notably the async callback behavior is only hinted at in the parenthetical. Baseline 3 is appropriate when schema does most of the work, but the description misses an opportunity to clarify the async flow.

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

Purpose4/5

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

States a specific verb (Export) and resource (user profiles in a segment), clearly distinguishing it from generic users_export. However, it doesn't differentiate from the close sibling users_export_control_group, which would be the main ambiguity for an agent selecting between them.

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

Usage Guidelines2/5

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

No guidance on when to use this versus users_export, users_export_control_group, or other export tools. The twin sibling users_export_control_group is a strong signal that usage is non-obvious, yet no disambiguation is provided.

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

users_external_id_removeB

Remove deprecated external IDs that were previously renamed. Cleans up old ID references.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (optional if set via env/header)
external_idsYesArray of deprecated external IDs to remove
restEndpointNoBraze REST endpoint URL

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says 'Remove' and 'Cleans up,' implying mutation, but does not disclose whether removal is irreversible, what permissions are required, rate limits, or what happens if any IDs are not deprecated.

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?

Two short sentences, front-loaded with the primary action and scoped by the deprecated-ID qualifier. There is no filler and the reader immediately knows the tool's focus.

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 parameter schema is fully documented and no output schema exists, so the description need not explain return values. However, for a destructive mutation with no annotations, the description should provide more behavioral context such as irreversibility or prerequisite state.

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 input schema already documents apiKey, external_ids, and restEndpoint. The description adds only general context about deprecated IDs and does not supplement the parameter meanings beyond what the schema already provides.

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

Purpose4/5

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

The description states a specific verb and resource: remove deprecated external IDs that were previously renamed. It clearly distinguishes the operation from a rename or user delete by emphasizing old, deprecated IDs, though it does not explicitly name the sibling tool users_external_id_rename.

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?

Usage is implied as post-rename cleanup, since the tool targets 'deprecated external IDs that were previously renamed.' However, it gives no explicit when-to-use guidance, no exclusions, and no named alternative for cases where IDs are still active.

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

users_external_id_renameB

Rename external IDs for users. Use for migrating to a new ID scheme.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (optional if set via env/header)
restEndpointNoBraze REST endpoint URL
external_id_renamesYesArray of external ID renames

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. For a mutation tool ('rename'), it omits whether the operation is reversible, what happens to the old ID, permission/auth requirements, and any rate or batch limits, leaving key behavioral traits undisclosed.

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?

Two short sentences with the action front-loaded and no filler. It is efficient, though arguably too terse to be maximally useful for a mutation tool.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is under-informative: it never covers side effects, reversibility, or error behavior, and doesn't route the agent away from the similar alias/merge siblings. The schema covers parameters, but behavioral completeness is thin.

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%, and the description adds nothing about the parameters beyond what the schema already documents (including the current/new ID pair structure and the maxItems=50 cap). Baseline 3 is appropriate when the schema does all the work.

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

Purpose4/5

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

States a specific verb and resource ('Rename external IDs for users'), which is clearer than a tautology. However, it does not differentiate from closely related siblings like users_alias_new, users_alias_update, or users_external_id_remove, leaving the agent to infer the distinction.

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?

'Use for migrating to a new ID scheme' gives an implied usage context, but it offers no when-not-to-use guidance and never names the adjacent alias/merge/remove tools an agent might otherwise pick.

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

users_identifyA

Identify an alias-only user profile with an external_id. This merges the alias profile into the identified user.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (optional if set via env/header)
restEndpointNoBraze REST endpoint URL
aliases_to_identifyYesArray of alias-to-external-id mappings

TDQS

A3.5/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 behavioral burden. It discloses the core side effect ('merges the alias profile into the identified user'), which is valuable, but it omits reversibility, permission requirements, rate limits, and what happens to the alias profile after merge.

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 two sentences with no wasted words, and the key operation is front-loaded before the merge effect. It is appropriately sized for a tool with a fully documented schema.

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 covers the purpose and the merge behavior, and the schema is fully documented. However, for a mutation tool with no annotations and no output schema, it lacks important context such as irreversibility, authentication needs, and explicit sibling differentiation.

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 all parameters. The description mentions 'external_id' but adds no syntax, format, or constraint details beyond what the schema provides, matching the baseline score for fully covered schemas.

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

Purpose4/5

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

The description states a specific verb (Identify) and resource (alias-only user profile) and explains the merge effect. It distinguishes this from sibling tools like users_alias_new or users_alias_update by targeting alias-only profiles, but it does not explicitly name an alternative for comparison.

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 phrase 'alias-only user profile with an external_id' implies the condition for use, but there is no explicit when-to-use versus alternatives like users_merge or users_alias_new, and no mention of prerequisites or exclusions.

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

users_mergeC

Merge one user profile into another. Data from the merged user will be combined into the target user.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (optional if set via env/header)
restEndpointNoBraze REST endpoint URL
merge_updatesYesArray of merge operations

TDQS

C2.9/5.0
Behavior2/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 hints at the outcome ('data ... will be combined into the target user') but never states that the merged profile is consumed/destroyed, whether the operation is reversible, what permissions are required, or the batch limit (maxItems 50). For an irreversible mutation, that is a significant disclosure gap.

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?

Two tight sentences with zero filler, front-loading the operation and following with the behavioral consequence. Nothing could be cut without losing information.

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

Completeness2/5

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

For an irreversible multi-user mutation with no annotations and no output schema, the description should explain authentication needs, irreversibility, and batch limits. It covers only the basic data-flow direction, leaving an agent under-informed before calling.

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 apiKey, restEndpoint, and the merge_updates structure. The description's 'merged user' vs 'target user' phrasing loosely maps to identifier_to_merge/identifier_to_keep, but adds no format or constraint detail beyond the schema.

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

Purpose4/5

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

The description gives a specific verb (merge) and resource (user profile) and clarifies the direction of the merge: source data flows into the target. It is clearly distinguishable from siblings like users_delete or users_alias_update, though it never names an alternative explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to merge versus deleting, aliasing, or identifying a user, and no prerequisites or exclusions are stated. The usage is only implied by the tool's name and operation.

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

users_trackB

Track user data including attributes, custom events, and purchases. Use this to update user profiles, log events, and record purchases in Braze.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoBraze REST API key (optional if set via env/header)
eventsNoCustom events to log
purchasesNoPurchase events to record
attributesNoUser attributes to update (max 75)
restEndpointNoBraze REST endpoint URL

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it does not disclose that this is a write/mutation operation, whether it is idempotent, batch-size limits, required permissions, or how the three payload arrays interact. It merely restates the purpose, leaving behavioral traits largely undocumented.

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?

Two sentences with no filler, and the resource scope is front-loaded ahead of the task list. Efficient, though the second sentence is somewhat redundant with the first.

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

Completeness2/5

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

This is a multi-array mutation tool with zero annotations, no output schema, and no required parameters. The description omits prerequisites (API key/config), the fact that all three payload arrays are optional and combinable, and any notion of the response or failure behavior, leaving an agent under-informed for a write operation.

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 all five parameters (including the 'max 75' attributes note and required sub-fields). The description names the three payload categories but adds no syntax or format meaning beyond what the schema provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific verb+resource ('Track user data') and enumerates the three payload types (attributes, custom events, purchases), which an agent can map to the tool's arrays. However, it does not distinguish this from sibling identity/mutation tools such as users_identify, users_merge, or users_alias_update, so sibling differentiation is absent.

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?

It gives implied usage ('update user profiles, log events, and record purchases'), which is enough to know the general intent. But there is no when-to-use vs alternatives guidance, no mention of when to prefer users_identify or users_alias_new, and no exclusions.

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. 92 tool updatesv1.0.0
    • First observedcampaigns_analytics
    • First observedcampaigns_details
    • First observedcampaigns_list
    • First observedcampaigns_schedule_create
    • First observedcampaigns_schedule_delete
    • First observedcampaigns_schedule_update
    • First observedcampaigns_trigger_send
    • First observedcanvas_analytics
    • First observedcanvas_details
    • First observedcanvas_list
    • First observedcanvas_schedule_create
    • First observedcanvas_schedule_delete
    • First observedcanvas_schedule_update
    • First observedcanvas_summary
    • First observedcanvas_trigger_send
    • First observedcatalog_item_create
    • First observedcatalog_item_delete
    • First observedcatalog_item_edit
    • First observedcatalog_item_get
    • First observedcatalog_item_update
    • First observedcatalog_items_create
    • First observedcatalog_items_delete
    • First observedcatalog_items_edit
    • First observedcatalog_items_list
    • First observedcatalog_items_update
    • First observedcatalogs_create
    • First observedcatalogs_delete
    • First observedcatalogs_list
    • First observedcontent_blocks_create
    • First observedcontent_blocks_info
    • First observedcontent_blocks_list
    • First observedcontent_blocks_update
    • First observedemail_blacklist
    • First observedemail_blocklist
    • First observedemail_bounce_remove
    • First observedemail_hard_bounces
    • First observedemail_spam_remove
    • First observedemail_subscription_status
    • First observedemail_templates_create
    • First observedemail_templates_info
    • First observedemail_templates_list
    • First observedemail_templates_update
    • First observedemail_unsubscribes
    • First observedevents_analytics
    • First observedevents_list
    • First observedkpi_dau
    • First observedkpi_mau
    • First observedkpi_new_users
    • First observedkpi_uninstalls
    • First observedlive_activity_update
    • First observedmessages_schedule_create
    • First observedmessages_schedule_delete
    • First observedmessages_schedule_update
    • First observedmessages_send
    • First observedpreference_center_create
    • First observedpreference_center_get
    • First observedpreference_center_update
    • First observedpreference_center_url
    • First observedpreference_centers_list
    • First observedpurchases_products
    • First observedpurchases_quantity
    • First observedpurchases_revenue
    • First observedscheduled_broadcasts_list
    • First observedscim_users_create
    • First observedscim_users_delete
    • First observedscim_users_get
    • First observedscim_users_search
    • First observedscim_users_update
    • First observedsegments_analytics
    • First observedsegments_details
    • First observedsegments_list
    • First observedsend_id_create
    • First observedsends_analytics
    • First observedsessions_analytics
    • First observedsms_invalid_phones
    • First observedsms_invalid_phones_remove
    • First observedsubscription_status_get
    • First observedsubscription_status_set
    • First observedsubscription_status_set_v2
    • First observedsubscription_user_status
    • First observedtransactional_email_send
    • First observedusers_alias_new
    • First observedusers_alias_update
    • First observedusers_delete
    • First observedusers_export
    • First observedusers_export_control_group
    • First observedusers_export_segment
    • First observedusers_external_id_remove
    • First observedusers_external_id_rename
    • First observedusers_identify
    • First observedusers_merge
    • First observedusers_track

TDQS

C2.5/5.0

Scored across 92 tools

Disambiguation2/5

Multiple tools have overlapping or confusing boundaries: catalog singular vs plural variants (catalog_item_create vs catalog_items_create), subscription_status_set vs subscription_status_set_v2, email_blocklist vs deprecated email_blacklist, and several message-sending tools (messages_send, campaigns_trigger_send, canvas_trigger_send, transactional_email_send). Descriptions help somewhat, but an agent could easily misselect.

Naming Consistency3/5

Mostly snake_case with a resource_action pattern, but inconsistent resource plurality (preference_center_get vs preference_centers_list), action verbs (get vs details vs info), a version suffix (_v2), and deprecated blacklist vs blocklist spelling. Readable but not fully predictable.

Tool Count1/5

92 tools is an extreme mismatch for a single MCP server, far beyond the ideal 3-15 range and exceeding the 50+ threshold. Many tools are redundant (e.g., singular/plural catalog item operations, v1/v2 subscription status), bloating the surface.

Completeness3/5

Coverage is broad across Braze domains (users, messages, campaigns, canvas, analytics, catalogs, SCIM), but notable gaps exist: no delete for email templates, content blocks, or preference centers; no subscription groups list; SMS send is ambiguous. Core workflows are covered, but dead ends remain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server providing over 390 tools across 66 providers, including major SaaS platforms like GitHub, Slack, and Stripe. It enables AI assistants to interact directly with a wide array of public APIs and utility services through a single interface.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Watermelon.ai that exposes all 13 public API endpoints as tools, enabling AI assistants to manage contacts, conversations, messages, custom fields, and webhooks.
    MIT
  • F
    license
    C
    quality
    D
    maintenance
    Comprehensive MCP server for Mailchimp Marketing API v3.0 with over 104 tools and 15+ React UI apps, enabling management of campaigns, audiences, ecommerce, automations, reports, and more via natural language.
    100
    1
    -