Skip to main content
Glama
kadam-official

@kadam-net/mcp-server

Official

@kadam-net/mcp-server

npm version npm downloads license node MCP Registry

MCP server for Kadam ad network — manage campaigns, creatives, audiences, sites, and analytics via AI agents.

Built on the Model Context Protocol (MCP), the open standard for connecting LLMs to external tools and data.

Install (one click)

Cursor

Or add manually to .cursor/mcp.json:

{
  "mcpServers": {
    "kadam": {
      "command": "npx",
      "args": ["-y", "@kadam-net/mcp-server"],
      "env": {
        "KADAM_ADV_API_KEY": "your-advertiser-api-key",
        "KADAM_PUB_API_KEY": "your-publisher-api-key"
      }
    }
  }
}

Claude Code

claude mcp add kadam -- npx -y @kadam-net/mcp-server

Then set the env var: export KADAM_ADV_API_KEY=your-key

Claude Desktop

Download → double-click → Install. Or add manually to claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "kadam": {
      "command": "npx",
      "args": ["-y", "@kadam-net/mcp-server"],
      "env": {
        "KADAM_ADV_API_KEY": "your-advertiser-api-key",
        "KADAM_PUB_API_KEY": "your-publisher-api-key"
      }
    }
  }
}

Any MCP client (universal one-liner)

npx add-mcp @kadam-net/mcp-server

Docker

docker run -i --rm \
  -e KADAM_ADV_API_KEY=your-key \
  kadam/mcp-server:latest

npm global

npm install -g @kadam-net/mcp-server
KADAM_ADV_API_KEY=your-key kadam-mcp-server

Related MCP server: Meta Ads MCP Server

Configuration

Variable

Required

Description

KADAM_ADV_API_KEY

One of two

Advertiser API key from partners.kadam.net -> Profile -> API

KADAM_PUB_API_KEY

One of two

Publisher API key from pub.kadam.net -> Profile -> API

KADAM_ADV_API_BASE

No

Advertiser API URL (default: https://partners.kadam.net/api/v1)

KADAM_PUB_API_BASE

No

Publisher API URL (default: https://pub.kadam.net/api)

LOG_LEVEL

No

Log level: trace, debug, info, warn, error, fatal (default: info)

At least one API key must be provided in stdio mode. In HTTP mode, tokens are passed per-request via Bearer authentication.

HTTP Transport (multi-tenant deployment)

For server-side deployment serving multiple users:

Variable

Required

Description

MCP_TRANSPORT

No

"stdio" (default) or "http"

MCP_HTTP_PORT

No

HTTP port (default: 8080)

MCP_HTTP_HOST

No

Bind address (default: 0.0.0.0)

KADAM_ADV_DOMAIN

No

Advertiser domain for PRM (default: https://partners.kadam.net)

KADAM_PUB_DOMAIN

No

Publisher domain for PRM (default: https://pub.kadam.net)

docker run -d --name kadam-mcp \
  -e MCP_TRANSPORT=http \
  -p 8080:8080 \
  kadam/mcp-server:latest

Connecting via HTTP (Cursor / Claude)

{
  "mcpServers": {
    "kadam-adv": {
      "url": "https://partners.kadam.net/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_ADV_API_KEY"
      }
    }
  }
}

Connecting via OAuth (ChatGPT)

Add https://partners.kadam.net/mcp (advertiser) or https://pub.kadam.net/mcp (publisher) as Server URL in ChatGPT settings. OAuth discovery, registration, and login happen automatically.

Tools (31)

Advertiser Tools (22)

Requires KADAM_ADV_API_KEY.

Campaigns

Tool

Description

Annotations

kadam_adv_list_campaigns

List campaigns with filters (folder, status, type, date, search) and pagination

readOnly

kadam_adv_get_campaign

Get full campaign configuration by ID: landing page URL, bids per country, budgets, targeting, frequency caps, schedule, conversion settings

readOnly

kadam_adv_create_campaign

Create campaign with full targeting (countries, devices, OS, browsers, age, gender, audiences)

kadam_adv_update_campaign

Update any campaign fields by ID

kadam_adv_set_campaign_status

Bulk status change (active/paused/archived) for comma-separated IDs

idempotent

Bid Management

Tool

Description

Annotations

kadam_adv_update_campaign_bid

Update bid for a single campaign (lightweight, no full payload). Falls back to current countries if omitted

idempotent

kadam_adv_bulk_update_bids

Update bids for multiple campaigns at once (all must share the same pricing model)

idempotent

kadam_adv_update_site_bids

Set per-site (zone) bids: static (0.05), multiplier (x1.5), or remove (0)

idempotent

Campaign Folders

Tool

Description

Annotations

kadam_adv_list_campaign_folders

List folders with campaign counts and budgets

readOnly

kadam_adv_create_campaign_folder

Create a new folder (name min 4 chars)

kadam_adv_update_campaign_folder

Update folder budgets and distribution

Creatives

Tool

Description

Annotations

kadam_adv_list_creatives

List creatives by campaign, status, or search query

readOnly

kadam_adv_create_creative

Create creative for a campaign (goes through moderation)

kadam_adv_update_creative

Update creative fields

kadam_adv_set_creative_status

Bulk status change for creatives

idempotent

Audiences

Tool

Description

Annotations

kadam_adv_list_audiences

List audiences with search and sorting

readOnly

kadam_adv_get_audience

Get detailed audience info by ID

readOnly

kadam_adv_create_audience

Create audience (pixel, code, fingerprint, or S2S)

kadam_adv_update_audience

Update audience settings

kadam_adv_delete_audience

Delete audience permanently (requires confirm: true)

destructive

Finance & Statistics

Tool

Description

Annotations

kadam_adv_list_finance_operations

Transaction history (deposits, charges, refunds)

readOnly

kadam_adv_get_stats

Unified statistics — 3 report types via reportType param: custom (report builder with dimension/metric mapping), sites (per-site breakdown), postbacks (conversion logs)

readOnly

Publisher Tools (9)

Requires KADAM_PUB_API_KEY.

Sites (Sources)

Tool

Description

Annotations

kadam_pub_list_sources

List publisher sites with stats

readOnly

kadam_pub_create_source

Add a new site (starts verification flow)

kadam_pub_get_source

Get detailed site info

readOnly

kadam_pub_update_source

Update site name

kadam_pub_set_source_status

Change site status (active/paused/archived/unarchived)

idempotent

Ad Units

Tool

Description

Annotations

kadam_pub_list_ad_units

List ad units for a site, filter by format (native/banner/push/popunder/inpagepush)

readOnly

kadam_pub_set_ad_unit_status

Change ad unit status (active/paused/archived/restored)

idempotent

User & Statistics

Tool

Description

Annotations

kadam_pub_get_user_info

Get publisher account info and balance

readOnly

kadam_pub_get_stats

Publisher statistics with human-readable dimension/metric mapping

readOnly

Resources (7)

Static reference data the agent can read before calling tools:

URI

Description

kadam://reference/campaign-types

All ad format types with IDs, features, pricing, and creative specs

kadam://reference/pricing-models

CPC, CPM, CPV, CPA Target with IDs and descriptions

kadam://reference/creative-formats

Creative requirements per campaign type

kadam://reference/ad-unit-types

Publisher ad unit formats with IDs

kadam://reference/site-states

Publisher site lifecycle states

kadam://reference/report-dimensions

Available dimensions and metrics for statistics tools

kadam://reference/api-overview

General Kadam API capabilities overview

Prompts (4)

Pre-built workflow templates that guide the agent through multi-step operations:

Prompt

Description

Arguments

kadam_launch_campaign

Step-by-step campaign creation (check types -> create folder -> create campaign -> add creatives)

type, name, url, budget

kadam_campaign_performance

Campaign performance analysis with optimization recommendations

campaignId, period

kadam_optimize_sites

Analyze site performance and suggest blacklist/whitelist changes

campaignId, minClicks, maxCPA

kadam_account_overview

Full account overview — campaigns, spend, top performers

Architecture

src/
├── index.ts                  # Entry point, server instructions, transport
├── config.ts                 # Zod-validated env config with cache
├── errors.ts                 # AuthError class
├── logger.ts                 # Pino structured logging (stderr)
├── output-formatter.ts       # Text formatting + 50KB truncation
├── middleware/
│   └── tool-wrapper.ts       # Auth, error handling, logging middleware
├── api/
│   ├── http-client.ts        # Generic HTTP client with retry/429/timeout
│   ├── partners-client.ts    # Advertiser API (lazy singleton)
│   └── pub-client.ts         # Publisher API (lazy singleton)
├── utils/
│   ├── pagination.ts         # Shared pagination extraction
│   ├── cache-once.ts         # Generic async cache-once utility
│   └── dimension-mapper.ts   # Stats dimension name→ID resolution
├── types/
│   ├── common.ts             # Shared types (ApiListResponse, ReportConfig)
│   ├── advertiser.ts         # Campaign, Creative, Audience types + maps
│   ├── publisher.ts          # Source, AdUnit, PubUser types + maps
│   └── tool-module.ts        # ToolModule interface
├── tools/
│   ├── advertiser/           # 21 tools across 6 modules
│   └── publisher/            # 9 tools across 4 modules
├── resources/                # 7 static reference resources
└── prompts/                  # 4 workflow prompts

Key Design Decisions

  • ToolWrapper middleware — centralized auth validation, error formatting, and logging for all 30 tools

  • Lazy singleton API clients — one HttpClient instance per product, created on first use

  • Output truncation — hard 50KB limit per response with maxResults (default 25, max 100) to prevent LLM context overflow

  • Human-readable output — formatted tables, aligned entities, pagination metadata instead of raw JSON

  • Tool annotationsreadOnlyHint, destructiveHint, idempotentHint to guide agent behavior

  • Server instructions — usage patterns and constraints sent to the LLM on connection

  • Dimension mapping — stats tools accept human-readable names ("clicks", "spend") and resolve them to API IDs internally

Development

Prerequisites

  • Node.js >= 18

  • npm

Setup

git clone https://github.com/kadam-official/mcp-server.git
cd mcp-server
npm install
cp .env.example .env  # Fill in your API keys

Commands

npm run dev             # Watch mode with tsx
npm run build           # Production build with Vite
npm run start           # Run built server
npm run typecheck       # TypeScript check
npm run lint            # ESLint
npm run format          # Prettier
npm test                # Run 82 tests
npm run test:coverage   # Tests with V8 coverage
npm run inspect         # MCP Inspector (visual debugger)

Testing

202 tests across 23 files using Vitest + MCP SDK InMemoryTransport:

  • Unit tests — output formatter, config, HTTP client (mocked fetch)

  • Middleware tests — ToolWrapper auth, error formatting, logging

  • Integration tests — full server with all 30 tools, 7 resources, 4 prompts via in-memory MCP client

  • Tool handler tests — each tool module with mocked API clients

npm test
# Test Files  23 passed (23)
#      Tests  202 passed (202)

MCP Inspector

The MCP Inspector provides a visual interface for testing:

npm run build
npm run inspect

Deployment

Docker

docker build -t kadam-mcp-server .
docker run -i --rm -e KADAM_ADV_API_KEY=... kadam-mcp-server

CI/CD

The .gitlab-ci.yml pipeline includes:

  • lint — ESLint + TypeScript check

  • test — Vitest with coverage

  • build — Vite production build

  • publish — npm publish + Docker push (manual trigger)

License

MIT

Available Tools

30 tools
kadam_adv_bulk_update_bidsA
Idempotent

Set the same bid on multiple campaigns at once. All campaigns in the batch must share one pricing model (mixing CPC/CPA errors out). Countries are required (backend rejects an empty list).

ParametersJSON Schema
NameRequiredDescriptionDefault
bidYesBid value in USD (for CPA this is the target CPA cost)
countriesYesComma-separated ISO country codes (e.g. 'US,DE'). Required — backend rejects empty list
campaignIdsYesComma-separated campaign IDs (e.g. '100,200,300')
pricingModelYesPricing model of the campaigns. All campaigns must share this model

TDQS

A4.4/5.0
Behavior4/5

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

Annotations provide idempotentHint=true. The description adds critical behavioral details: mixing pricing models errors out and countries are required. It does not mention if updates overwrite existing bids (implied) or what the response looks like, but given minimal annotations, the description provides meaningful context beyond annotations.

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 sentences, no filler, front-loaded with the core action. Every sentence provides necessary information without redundancy. Highly efficient.

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

Completeness4/5

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

The description covers the main action and critical constraints (pricing model, countries). It doesn't explain return values (no output schema) or other edge cases, but for a 4-parameter bulk update tool with high schema coverage, it is sufficiently complete for agent decision-making.

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

Parameters4/5

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

Schema coverage is 100%, so each parameter is already documented. The description adds cross-parameter business logic: all campaigns must share one pricing model. This adds value beyond individual parameter descriptions, justifying a score above baseline 3.

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

Purpose5/5

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

The description clearly states 'Set the same bid on multiple campaigns at once', with a specific verb and resource. It adds constraints (pricing model, countries) that distinguish it from sibling tools like kadam_adv_update_campaign_bid (single campaign) and kadam_adv_update_site_bids (site level).

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

Usage Guidelines4/5

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

The description explicitly states that all campaigns must share one pricing model and that countries are required. This provides clear context for when to use the tool. However, it does not explicitly exclude alternative tools or provide when-not-to-use guidance, but the constraints serve as implicit guidance.

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

kadam_adv_create_audienceA

Create an audience. Required fields by type: • audience_code (pixel) — name, expireDays; optional createFingerprint. • audience (stat) — name, expireDays, campaignIds, plus >=1 of hasClicks/hasConversions/hasHolds/hasRejects. • s2s — name, expireDays, linkedAudienceIds (pixel/fingerprint IDs). • fingerprint — not created directly; set createFingerprint=true on a pixel/stat audience.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
hasHoldsNoTrack holds (type=audience)
hasClicksNoTrack clicks (type=audience)
expireDaysYes
hasRejectsNoTrack rejects (type=audience)
campaignIdsNoComma-separated campaign IDs (required for type=audience)
hasConversionsNoTrack conversions (type=audience)
createFingerprintNoAlso create a linked fingerprint audience (type=audience_code or audience)
linkedAudienceIdsNoComma-separated pixel/fingerprint audience IDs (required for type=s2s)

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already indicate a write operation (readOnlyHint=false). The description adds context on field requirements per type but does not disclose side effects, auth needs, or rate limits.

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

Conciseness4/5

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

The description is concise and well-structured with bullet points per type. It avoids fluff, though could be slightly more compact.

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

Completeness4/5

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

Given 10 parameters and no output schema, the description covers the main logic and required fields per type. It suffices for correct invocation, though it omits error conditions and response format.

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

Parameters4/5

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

Schema coverage is 70%; the description adds meaning by grouping parameters by audience type and explaining conditional requirements (e.g., createFingerprint). It clarifies required vs optional beyond the schema.

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

Purpose5/5

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

The description clearly states 'Create an audience' and differentiates between audience types (audience_code, audience, s2s, fingerprint). It is distinct from sibling tools like update/delete/get/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?

The description provides required fields per type and notes that fingerprint is not created directly. It does not explicitly compare to siblings but implies this is the creation tool.

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

kadam_adv_create_autoruleA

Create an autorule on a CPC campaign (autorules are CPC-only). Campaigns usually carry several rules (a strategy); call once per rule. bidChange rules require slices + bidRate + bidMax and a spend/clicks condition.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesRule type
actionYesAction (must match type): areaBlPut/areaBlRemove (area), campaignStop/dayLimitIncrease (campaign), creoStop/creoActivate (creo), bidChange (bid)
bidMaxNobidChange: max bid cap (>=0.001). REQUIRED for bidChange.
periodYesEvaluation period in days
slicesNobid rules: granularity dimension IDs, e.g. [180,190] = per source x site. REQUIRED for bidChange.
statByNo
bidRateNobidChange: coefficient on the slice EPC (earnings/click ~ eCPC); new bid = EPC x bidRate, capped at bidMax. REQUIRED for bidChange, range 0.1-2. bidRate=1 = set bid to the eCPC (valid, NOT a no-op).
isActiveNo
campaignIdYesCPC campaign ID
conditionsYesConditions ANDed together; each {metric, match, value}. Note: bidChange (bid) rules don't allow the ROI metric, and spend/clicks conditions can't use value 0.
dayLimitTypeNodayLimitIncrease only
dayLimitValueNodayLimitIncrease only

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false, so the description correctly implies mutation. Adds CPC-only constraint and bidChange formula, which enriches behavioral understanding. Does not discuss validation errors, idempotency, or authorization, but given annotation presence, the bar is lower and the added context is valuable.

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 efficient sentences front-load main purpose. Every sentence adds unique value: first defines action and restriction, second explains usage pattern, third details special parameter requirements. No redundancy.

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

Completeness4/5

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

Given tool complexity (12 parameters, conditions array, business logic), the description covers key aspects: CPC-only, strategy pattern, bidChange specifics. Does not explain conditions structure or other rule types, but schema covers those. No output schema is acceptable. Good balance for high schema coverage.

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

Parameters4/5

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

Schema coverage is 83%, high. Description adds critical semantics for bidChange rules: relationship between bidRate, bidMax, EPC, and the formula. Also clarifies that bidRate=1 is valid. This goes beyond schema descriptions, justifying a score above baseline 3.

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?

Clear verb+resource: 'Create an autorule on a CPC campaign'. Adds context that autorules are CPC-only and that campaigns usually carry several rules, distinguishing this from other campaign types and defining usage pattern.

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?

Explicitly states CPC-only constraint and pattern to call once per rule. Provides specific details for bidChange rules. However, does not explicitly contrast with siblings list (e.g., update_autorule, set_autorule_status) or state when not to use.

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

kadam_adv_create_campaignA

Create a new advertiser campaign. Required: type, name, url, folderId (campaign group ID), pricingModel, bid, dailyBudget.

ParametersJSON Schema
NameRequiredDescriptionDefault
osNoComma-separated OS names or IDs (e.g. 'Android,iOS' or '10,20')
bidYesBid amount in USD (e.g. 0.05). For cpa_target this is the target CPA cost
urlYesLanding page URL
nameYesCampaign name shown in dashboard
typeYesAd format
sspIdsNoComma-separated SSP IDs for the whitelist/blacklist
devicesNoComma-separated device names or IDs (e.g. 'Desktop,Smartphone' or '1,4')
endDateNoEnd date (YYYY-MM-DD)
sspModeNoSSP list mode: whitelist (allow listed) or blacklist (block listed)
browsersNoComma-separated browser names or IDs (e.g. 'Chrome,Firefox' or '8,16')
folderIdYesCampaign group ID (API field: folderId)
scheduleNoComma-separated hours (0-23) to show ads, applied to all days (e.g. '9,10,11,17')
timezoneNoTimezone offset in hours (e.g. 3 for UTC+3)
countriesYesComma-separated ISO country codes for bid targeting (e.g. 'US,DE,BR'). Required.
languagesNoComma-separated language names or IDs
startDateNoStart date (YYYY-MM-DD)
categoriesNoComma-separated category IDs from kadam://reference/categories (or the 'mainstream'/'adult' keyword)
impTrackerNoThird-party impression tracking pixel URL
secondPushNoEnable second push notification (push/inpage_push only)
dailyBudgetYesDaily spending limit in USD
totalBudgetNoTotal campaign budget in USD
pricingModelYesPricing model: cpc, cpm, or cpa_target
siteBlacklistNoComma-separated site IDs for blacklist
siteWhitelistNoComma-separated site IDs for whitelist
connectionTypeNoNetwork connection type filter (all = no filter)
conversionHoldNoPostback status name for 'Hold' conversions (e.g. 'reg')
postViewWindowNoPost-view attribution window in hours (1-168)
campaignCapDaysNoWindow in days for campaignCapViews
postClickWindowNoPost-click attribution window in hours (1-168)
campaignCapViewsNoCampaign-level cap: max views of ANY creative from this campaign per user within campaignCapDays
conversionRejectNoPostback status name for 'Rejected' conversions
evenDistributionNoSpread budget evenly across the day
frequencyCapDaysNoWindow in days for frequencyCapViews
frequencyCapViewsNoCreative-level cap: max views of ONE creative per user within frequencyCapDays
audienceExcludeIdsNoComma-separated audience IDs to exclude
audienceIncludeIdsNoComma-separated audience IDs to include
conversionApprovedNoPostback status name for 'Approved' conversions (e.g. 'dep'); used with conversionTemplateId=0
conversionTemplateIdNoConversion template ID (from campaign options). Use 0 for custom mapping via conversionApproved/Hold/Reject
pauseAfterModerationNoPause campaign after creatives pass moderation
countLastCampaignOnlyNoAttribute conversion only to the last campaign impression (default: true)
postClickAttrPriorityNoPost-click attribution takes priority over post-view (default: true)
countFirstConversionOnlyNoCount only the first conversion per user (default: true)
postConversionAudienceIdsNoComma-separated audience IDs for post-conversion retargeting

TDQS

A4.1/5.0
Behavior4/5

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

The description accurately indicates a mutation ('Create') which aligns with the readOnlyHint=false annotation. It doesn't describe destructive behavior or side effects, but for a creation tool, the primary action is clearly communicated. No contradictions with annotations.

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 sentences, zero waste. The purpose is front-loaded and the required fields are listed succinctly. 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 complex tool with 43 parameters and no output schema, the description could mention the return value (e.g., campaign ID) or hint at optional targeting parameters. The schema covers details, but the description lacks completeness about what the agent can expect after creation.

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 description adds little beyond listing required parameters. It clarifies 'folderId (campaign group ID)' which is helpful, but overall meaning is already well-covered by the schema.

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

Purpose5/5

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

The description clearly states 'Create a new advertiser campaign' with a specific verb and resource, and lists required fields. It distinguishes itself from sibling tools like 'update_campaign' or 'set_campaign_status' by explicitly focusing on creation.

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

Usage Guidelines4/5

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

The description lists the required parameters, guiding the agent on what must be provided. While it doesn't explicitly mention when to use alternatives, the context of creation vs. update or deletion is clear enough for an AI agent.

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

kadam_adv_create_campaign_folderA

Create a new campaign group (called 'campaign group' / 'Группа кампаний' in the Kadam UI; API term: folder).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCampaign group name (1-50 characters, e.g. 'SA', 'US campaigns')

TDQS

A3.5/5.0
Behavior2/5

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

Annotations already indicate write operation (readOnlyHint=false). Description adds terminology clarification but does not disclose behavioral traits such as uniqueness constraints, potential errors, or what happens on success (e.g., returns folder ID). The agent gains little beyond the annotation.

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 concise sentence (20 words) that directly states the purpose. No unnecessary words. Front-loaded with the key action and resource.

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 a simple tool with one parameter and no output schema, the description covers the basic purpose. However, it lacks information about the expected response or side effects, which would help an agent use it correctly. The absence of output schema makes the description incomplete in terms of return value.

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 covers the single parameter (name) with a description including length and examples. The tool description adds the aliases but does not add new semantic meaning beyond the schema. With 100% schema coverage, 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?

Description clearly states the action ('Create') and resource ('campaign group' / 'folder'). It provides both UI and API terminology, and distinguishes from sibling tools like kadam_adv_create_campaign (different resource) and kadam_adv_update_campaign_folder (update vs create).

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

Usage Guidelines3/5

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

The description implies usage (when you need a new campaign group), but does not explicitly state when to use this tool vs alternatives or provide any exclusions. No prerequisites or context about 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.

kadam_adv_create_creativeA

Create a creative. Accepts image/video as a URL or local file path. Required fields by type:

  • Push / In-Page Push: title, text, url, imageUrl (icon), mainImageUrl

  • Native: title, url, imageUrl (icon), mainImageUrl

  • Banner: url, imageUrl, sizeId

  • Video: title, url, videoUrl (MP4)

  • Popunder: none (campaign URL is the ad) See kadam://reference/creative-formats for sizes and exact dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault
bidNoCustom bid for this creative (overrides campaign bid)
urlYesLanding page URL for the creative
textNoCreative text/description (required for push/inpage, max 45 chars)
titleNoCreative title (required for push/inpage/native/video, max 30 chars for push, 75 for native)
sizeIdNoBanner size ID (required for banner). See kadam://reference/creative-formats for valid sizes.
imageUrlNoIcon/image source: URL or local file path (push: 192x192+, native: 500x500+, banner: exact size)
stopDateNoCreative stop date (YYYY-MM-DD HH:MM:SS)
videoUrlNoVideo source: URL or local file path to MP4 (video campaigns only)
startDateNoCreative start date (YYYY-MM-DD HH:MM:SS)
campaignIdYesCampaign ID to add creative to
bidCountriesNoComma-separated country IDs for the bid
mainImageUrlNoMain/rectangle image source: URL or local path (push/inpage: 492x328+, native: 492x328+). Not needed for banner/video.
pauseAfterModerationNoPause creative after it passes moderation (default: true for safety)

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses input methods (URL/file path) and required fields per type. Annotations indicate non-read-only, which aligns. No contradictions; behavior is adequately transparent for a creation 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?

Concise and well-structured: starts with main action, then general info, then per-type requirements. References external resource for details. No extraneous text.

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

Completeness4/5

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

Given the tool's complexity (13 parameters, multiple types), the description covers core usage and references external documentation. Lacks details on output or error handling, but schema descriptions reduce the burden.

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

Parameters5/5

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

Schema descriptions are complete, and the description adds significant value by summarizing required fields per creative type, explaining relationships between parameters beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool creates a creative, specifying supported media types (image/video via URL or local file). It distinctively positions itself among siblings (create vs update/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?

The description provides detailed required fields per creative type and references external documentation for sizes. It implicitly distinguishes from update/list tools, but lacks explicit when-not-to-use guidance.

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

kadam_adv_delete_audienceA
Destructive

Permanently delete an audience. Requires confirm=true for safety.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
confirmYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already set destructiveHint=true, and the description adds the detail that deletion is permanent and requires confirm=true. This adds non-obvious behavioral context beyond annotations.

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 sentence conveying critical information with no wasted words. It is appropriately short and front-loaded.

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

Completeness4/5

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

For a simple delete tool with two parameters and no output schema, the description covers the key safety requirement and permanence. It does not describe return values, but that is acceptable given the action's nature.

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 0%, so the description must compensate. It explains the purpose of confirm (safety) but does not describe the id parameter. This provides partial but not complete parameter guidance.

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

Purpose5/5

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

The description clearly states 'Permanently delete an audience', which is a specific verb (delete) and resource (audience). It distinguishes from sibling tools like create_audience or update_audience.

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

Usage Guidelines4/5

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

The description provides the explicit guideline 'Requires confirm=true for safety', indicating the required parameter setting. It does not elaborate on when not to use, but for a delete operation, this is adequate.

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

kadam_adv_delete_autoruleA
Destructive

Permanently delete an autorule. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
confirmYes

TDQS

A4.2/5.0
Behavior5/5

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

Adds 'permanently' and 'requires confirm=true' beyond the destructiveHint annotation. Agent understands irreversibility and confirmation necessity, which are critical 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?

Two succinct sentences front-load purpose. Every word adds value; no filler.

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

Completeness4/5

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

Covers purpose and key requirement. Missing id explanation is minor given sibling tools; no output schema is typical for deletion. Adequate for a simple tool.

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

Parameters3/5

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

With 0% schema coverage, description must explain parameters. It explains confirm (must be true) but not id. Agent knows confirm's purpose but id remains ambiguous.

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

Purpose5/5

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

The description clearly states 'Permanently delete an autorule', specifying the verb (delete), resource (autorule), and permanence. This distinguishes it from sibling tools like update or set status.

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?

No explicit guidance on when to use this tool versus alternatives (e.g., deactivating via set_autorule_status). The requirement 'confirm=true' is a prerequisite, not a usage comparison.

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

kadam_adv_get_audienceA
Read-only

Get a single audience by ID. Returns type-specific details: tracking code for pixel/s2s, campaign links for stat, linked audiences for s2s.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already set readOnlyHint=true. The description adds valuable detail about return values depending on type (pixel/s2s/stat), going beyond a simple 'read'.

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 sentence, front-loaded with action, no wasted words.

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 1-param get tool without output schema, the description covers purpose and return differentiation. Could add more on error conditions or exact return structure.

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?

With 0% schema coverage, the description should compensate but only implies 'id' is the audience identifier by context. No explicit parameter description is provided.

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

Purpose5/5

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

The description clearly states it retrieves a single audience by ID. It distinguishes from siblings like list_audiences (returns multiple) and the many create/update/delete tools.

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

Usage Guidelines4/5

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

The description implies usage for fetching a specific audience's details. Sibling tool names provide context, but no explicit when-to-use or alternatives are given.

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

kadam_adv_get_campaignA
Read-only

Get full campaign configuration by ID, including landing page URL, bids per country, budgets, targeting (devices, OS, browsers, languages, sites, SSPs, audiences), frequency caps, schedule, and conversion settings. Use after kadam_adv_list_campaigns to inspect one campaign in detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCampaign ID

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds details about the returned data but does not disclose any hidden behavioral traits beyond what the annotation already conveys.

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, front-loaded with the main purpose, and lists many included items without unnecessary fluff.

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

Completeness5/5

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

For a simple read-only tool with one parameter and no output schema, the description adequately covers what is returned and the usage context, making it complete.

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?

The schema covers the only parameter 'id' with description 'Campaign ID' (100% coverage). The description adds no additional meaning beyond stating it's retrieved by ID, so baseline of 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?

The description explicitly states that the tool gets the full campaign configuration by ID, listing specific details. It differentiates from siblings by noting it should be used after kadam_adv_list_campaigns for detailed inspection.

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?

It gives explicit guidance to 'Use after kadam_adv_list_campaigns to inspect one campaign in detail,' clearly indicating the workflow context and when this tool is appropriate.

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

kadam_adv_get_extended_statsA
Read-only

Bid Optimization: per-slice stats grid for drilling down and setting bids (requires Bid Optimization access on the account). Drill by appending a sliceId to pathIds; reuse each row's pathIds to set bids via kadam_adv_update_extended_bids. Use ONE campaign to see per-row bids.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
dateToNo
periodNo7days
metricsNoComma-separated metric column keys (display-cased, the SAME keys as sortField and the output's 'Available metric columns' line): views,clicks,CTR,conversions,holds,rejections,spending,earning,profit,ROI,CR,CPM,EPL,EPC,CPC,CPA,CPL (default views,clicks,CPC,CR).
pathIdsNoDrill path: comma-separated alternating sliceId,valueId,... ending with a sliceId to break down by it. Slice IDs: 130 country, 140 platform, 150 browser, 180 source, 190 site, 200 platform version, 300 subscription age, 320 browser language, 380 CR-target. e.g. '130' = by country; '130,34,180' = sources within country 34
perPageNo
dateFromNo
sortFieldNoSort column key (same display-cased keys as metrics): views, clicks, CTR, conversions, holds, rejections, spending, earning, profit, ROI, CR, CPC, CPM, CPA, EPC, EPL, CPL. Default: views desc (high-traffic first).
sortOrderNo
campaignIdsYesComma-separated campaign IDs (use one for per-row bids)
searchQueryNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and the description confirms it's a stats grid, consistent with read-only. It adds behavioral details beyond annotations: the need for Bid Optimization access and the pattern of re-using pathIds for bid updates. No contradictions.

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 sentences with no wasted words. The first sentence states purpose and requirement, the second explains the drill/reuse pattern, and the third gives a cardinality tip. Information is front-loaded.

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

Completeness4/5

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

Given 11 parameters, low schema coverage, and no output schema, the description covers the core functionality and essential parameters well. It lacks detail on date range, search, and pagination but provides enough context for an agent to select and invoke the tool correctly.

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

Parameters4/5

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

Schema description coverage is low (36%), but the description adds significant meaning to key parameters: it explains how pathIds work (drill path, slice IDs), enumerates valid metric and sortField keys, and clarifies that campaignIds should be a single campaign for per-row bids. This compensates for the coverage gap.

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

Purpose5/5

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

The description clearly states 'Bid Optimization: per-slice stats grid for drilling down and setting bids,' which is a specific verb+resource combination. It distinguishes from sibling tools like kadam_adv_get_stats (general stats) and kadam_adv_list_extended_bids (list bids) by focusing on drill-down and bid-setting context.

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 states requirement ('requires Bid Optimization access'), provides when-to-use guidance ('Drill by appending a sliceId to pathIds'), and instructs how to re-use results ('reuse each row's pathIds to set bids via kadam_adv_update_extended_bids'). It also advises cardinality ('Use ONE campaign to see per-row bids').

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

kadam_adv_get_statsB
Read-only

Advertiser statistics. reportType: 'custom' (default, report builder), 'sites' (per-site), or 'conversions' (event log). For custom reports use names like 'spend,clicks,ctr' (metrics) and 'day,campaign,country' (groupBy).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
viewNoall
dateToNo
periodNo7days
sortByNo
groupByNoComma-separated groupings, e.g. 'day,campaign,country' (incl. campaign_group). Unknown names are reported back.
metricsNoComma-separated metric names, e.g. 'spend,clicks,ctr,cpa,conversions,income,roi' (income = profit). Unknown names are reported back; see report-dimensions for the full list.spend,clicks,impressions,ctr
perPageNo
dateFromNo
timezoneNoTimezone offset in hours (for reportType=conversions)
countriesNo
folderIdsNoComma-separated campaign group (folder) IDs (for reportType=conversions)
sortOrderNo
reportTypeNocustom
audienceIdsNoComma-separated audience IDs (for reportType=conversions)
campaignIdsNo
creativeIdsNo
searchQueryNo
conversionTypesNoComma-separated conversion type IDs (for reportType=conversions)

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, and the description aligns with a read operation. The description adds value by explaining report types and parameter details, but lacks disclosure on pagination, error handling, or rate limits.

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

Conciseness4/5

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

The description is concise with two short sentences and a fragment, front-loading the purpose. It efficiently introduces key options without extra verbiage.

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 19 parameters and no output schema, the description is insufficient. It omits return value format, pagination behavior, and how to interpret responses, leaving significant gaps for an AI agent.

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?

The description adds meaning by explaining reportType options and providing examples for metrics and groupBy, partially compensating for the low schema description coverage (32%). However, many parameters remain undocumented.

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 clearly states 'Advertiser statistics' and explains the three report types with examples for metrics and groupBy. It distinguishes itself from sibling CRUD and list tools by focusing on statistical data.

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 siblings like list_campaigns or other read tools. It does not mention alternatives or conditions for use.

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

kadam_adv_list_audiencesA
Read-only

List advertiser audiences with pagination. Filter by search query, sort by field and order.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
perPageNo
sortFieldNoSort column: audienceId, audienceName, dateCreated, expireDays, reachToday, newToday, reach7d, new7d, reach30d, new30d
sortOrderNo
searchQueryNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark the tool as read-only. The description adds behavioral details: it supports pagination, filtering by search query, and sorting by field and order, providing useful context beyond the annotation.

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 concise sentence that front-loads the main action and key features, with no unnecessary words.

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

Completeness4/5

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

For a list tool with 5 parameters and no output schema, the description covers the essential aspects (pagination, filter, sort). It could mention defaults or constraints, but it's largely complete for agent usage.

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 low (20%), so the description should compensate. It mentions 'Filter by search query, sort by field and order' but doesn't explain each parameter in depth, such as the minLength constraint on searchQuery or default values for page and perPage.

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

Purpose5/5

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

The description clearly states the verb 'List' and resource 'advertiser audiences', distinguishing it from sibling tools like create, delete, or update. It also mentions pagination, filtering, and sorting, which are specific to this tool.

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

Usage Guidelines4/5

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

The description implies when to use this tool: for viewing audiences with optional filtering and sorting. It doesn't explicitly state when not to use it, but the sibling tools cover modifications, making the intended use clear.

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

kadam_adv_list_autorulesA
Read-only

List autorules (campaign automation). Omit campaignId for all rules of active campaigns, or pass it for one campaign. Returns full rule definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
campaignIdNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds that it returns 'full rule definitions' and specifies behavior for campaignId, adding value beyond annotations without contradiction.

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 sentences with no filler. The information is front-loaded and every word is necessary. Highly concise and structured effectively.

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

Completeness4/5

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

Given the tool's simplicity (one optional param, read-only), the description is mostly complete. It states the return type ('full rule definitions'). Could mention pagination or limits, but not essential for a minimal viable description.

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

Parameters5/5

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

Schema has 0% description coverage for the only parameter (campaignId). The description fully compensates by explaining that omitting it returns all rules for active campaigns and passing it filters for one campaign, giving crucial semantic meaning.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'autorules (campaign automation)'. It distinguishes from sibling create/delete/update tools by specifying the listing behavior and the optional campaignId filter.

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

Usage Guidelines4/5

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

Provides clear guidance on parameter usage: omit campaignId for all rules of active campaigns, pass it for one campaign. Does not explicitly mention when not to use it or alternatives, but the context is sufficient for this read-only list tool.

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

kadam_adv_list_campaign_foldersA
Read-only

List advertiser campaign groups with pagination. Optional search by name. A campaign group (called 'campaign group' / 'Группа кампаний' in the Kadam UI) is the same entity the API/tool calls a folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
perPageNo
searchQueryNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true. The description adds behavioral context by mentioning pagination (page/perPage) and optional search by name, which are not in annotations. No contradictions.

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 sentences: first summarizes core action and features, second clarifies terminology. No redundant information. Front-loaded and efficient.

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

Completeness4/5

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

For a simple list tool with 3 parameters and no output schema, the description covers the main functionality. It lacks mention of response structure but is largely complete given the 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 coverage is 0%, so description must compensate. It explains that 'page' and 'perPage' enable pagination and 'searchQuery' allows search by name. However, it does not specify defaults or types, leaving some ambiguity.

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

Purpose5/5

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

The description clearly states the tool lists campaign groups (folders) with pagination and optional search. It clarifies terminology by noting the entity is called 'campaign group' or folder, distinguishing it from sibling tools like list_campaigns.

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 does not provide any guidance on when to use this tool versus alternatives (e.g., when to use list_campaign_folders vs list_campaigns). No exclusion criteria or context for selection.

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

kadam_adv_list_campaignsA
Read-only

List advertiser campaigns with pagination. Filter by campaign group (folderId), status, type, date range, or search query.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
typeNo
dateToNoStats range end (YYYY-MM-DD); pass with dateFrom
statusNo
perPageNo
dateFromNoStats range start (YYYY-MM-DD); pass with dateTo
folderIdNo
sortFieldNoSort column: campaign, dateCreation, views, clicks, moneyOut, CPC, CPM, CPA, CTR, CR, ROI, conversions, holds, rejects, profit
sortOrderNo
searchQueryNoCampaign name/domain or campaign ID

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, consistent with listing. The description adds pagination and filtering behavior, but does not complicate or contradict. No destructive behavior disclosed, which matches annotations.

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 sentence, front-loaded with primary action and filter options. No redundancy or unnecessary 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?

No output schema is provided. The description does not explain the return format (e.g., what fields are in each campaign object, pagination metadata). While it's a list tool, an agent might need to know the response structure. Completeness is adequate but not fully comprehensive.

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 40% (4/10 parameters described in schema). The description names filter categories but does not detail parameter formats or constraints beyond what schema provides. For example, enum values for status/type are not mentioned. It adds marginal context but does not fully compensate for low coverage.

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

Purpose5/5

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

The description clearly states 'List advertiser campaigns with pagination' and enumerates filtering options (folderId, status, type, date range, search query), distinguishing it from sibling tools like get_campaign (single) or create_campaign.

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

Usage Guidelines4/5

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

The description implies when to use (when you need a paginated, filtered list) but does not explicitly contrast with sibling tools like get_campaign for a single campaign or list_campaign_folders for folders. Still, the filtering context is clear.

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

kadam_adv_list_creativesB
Read-only

List advertiser creatives with pagination. Filter by campaign, status, or search query.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
statusNo
perPageNo
campaignIdNo
searchQueryNoCreative title/name or creative ID

TDQS

B3.4/5.0
Behavior3/5

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

The description adds pagination and filter capabilities beyond the readOnlyHint annotation. However, it does not disclose additional behavioral traits like authentication requirements, rate limits, or response structure.

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?

Extremely concise single sentence, front-loaded with the primary action and resource. Every clause serves a purpose without 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?

Given 5 parameters and no output schema, the description covers the core listing and filtering but omits default values (page, perPage), optional status enum details, and response format. It is adequate but has gaps.

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?

With only 20% schema description coverage, the description should compensate but merely lists filter types (campaign, status, search query) without adding meaning or format details beyond parameter names. The searchQuery parameter description in schema is not reiterated.

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

Purpose5/5

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

The description clearly states the tool lists advertiser creatives with pagination, using specific verb 'List' and resource. It distinguishes from sibling tools like list_campaigns or list_audiences by specifying 'creatives'.

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. While the name implies listing creatives, there is no mention of when not to use it or how it differs from other list tools among many siblings.

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

kadam_adv_list_extended_bidsA
Read-only

List the per-slice bid overrides currently set on campaign(s) (Bid Optimization). Paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
perPageNo
campaignIdsYesComma-separated campaign IDs

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true. The description adds that the tool is paginated and lists 'per-slice bid overrides' under 'Bid Optimization', which provides slight behavioral context but no additional safety or auth details. No contradiction with annotations.

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 that front-loads the action and resource. No wasted words.

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 mentions listing and pagination but does not describe the output format or structure. Given no output schema, this omission reduces completeness for an agent to understand what 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 33% (only 'campaignIds' has a description). The description does not explain any parameters beyond implying campaignIds are needed. It adds no meaning to 'page' or 'perPage' beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb 'List', the resource 'per-slice bid overrides', and the context 'Bid Optimization'. This uniquely identifies the tool's function and distinguishes it from siblings like 'kadam_adv_bulk_update_bids' and 'kadam_adv_update_extended_bids'.

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

Usage Guidelines3/5

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

The description implies usage for reading bid overrides but provides no explicit guidance on when to use this tool versus other listing tools (e.g., 'kadam_adv_list_campaigns'). No when-not or alternative tools are mentioned.

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

kadam_adv_list_finance_operationsA
Read-only

Lists financial operations (deposits, charges, refunds). Use to check account balance, recent transactions, and spending history.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
dateToNoRange end (YYYY-MM-DD); must be paired with dateFrom
perPageNo
dateFromNoRange start (YYYY-MM-DD); must be paired with dateTo
activityTypeNoOperation type filter

TDQS

A3.8/5.0
Behavior4/5

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

Annotations include readOnlyHint=true, confirming safety. Description adds purpose and typical use cases. No contradictions, but lacks additional behavioral details like pagination behavior or rate limits. Still, annotations cover the main safety aspect.

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?

Extremely concise: two sentences that front-load the purpose and provide immediate user intent. No wasted words.

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?

No output schema exists, yet description does not mention return format, pagination, or any error conditions. Adequate for basic use but leaves gaps for an AI agent needing full context.

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 has 5 parameters with 60% description coverage (page and perPage lack descriptions). The description does not add any parameter-specific meaning beyond what is in the schema, failing to compensate for the gaps.

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

Purpose5/5

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

Clearly specifies the verb 'Lists' and resource 'financial operations', with examples (deposits, charges, refunds) and intended use (check account balance, transactions). This distinguishes it from sibling tools like list_campaigns or list_audiences.

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 context for usage ('check account balance, recent transactions, and spending history') but does not explicitly state when not to use or mention alternatives among siblings. The guidance is implicit rather than explicit.

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

kadam_adv_set_autorule_statusB
Idempotent

Enable or disable an autorule without deleting it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
isActiveYes

TDQS

B3.3/5.0
Behavior4/5

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

Adds important context by clarifying the tool does not delete the autorule. The annotation 'idempotentHint' already covers idempotency, so the description does not need to repeat it.

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?

Extremely concise (one sentence), but at the cost of omitting parameter guidance and usage context; prioritizes brevity over completeness.

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 simple two-parameter tool without output schema, the description is too minimal; it fails to explain return values, what happens on error, or any behavioral nuances.

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 0% schema description coverage, the description must compensate by explaining parameters, but it does not mention 'id' or 'isActive' at all, leaving their meanings unclear.

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

Purpose5/5

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

Clearly states the verb (enable/disable) and resource (autorule), and distinguishes from sibling 'delete_autorule' by explicitly saying 'without deleting it'.

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?

Implies usage for toggling active state, but provides no explicit guidance on when to use versus alternatives like 'update_autorule' or conditions that must be met.

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

kadam_adv_set_campaign_statusA
Idempotent

Set status for multiple campaigns. Pass comma-separated IDs and status: active, paused, or archived.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes
statusYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations indicate idempotentHint=true, and the description does not contradict this. However, it adds no additional behavioral context such as error handling or batch behavior beyond what annotations already provide.

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 sentences with no fluff, front-loaded with the action and resource. Every word is necessary and clear.

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 two-parameter tool, the description covers parameter usage adequately but lacks details on return format, error handling, or partial failures, making it adequate but not complete.

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

Parameters4/5

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

With 0% schema coverage, the description adds meaning by clarifying that 'ids' is a comma-separated list and listing valid statuses. This compensates well for the schema gap, though status enum values are redundant.

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

Purpose5/5

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

The description clearly states the action 'Set status' and the resource 'multiple campaigns', with specific allowed statuses, differentiating it from sibling tools like 'kadam_adv_update_campaign' and 'kadam_adv_set_creative_status'.

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

Usage Guidelines3/5

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

The description provides basic usage (comma-separated IDs, allowed statuses) but lacks explicit when-to-use or when-not-to-use guidance compared to alternatives.

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

kadam_adv_set_creative_statusA
Idempotent

Set status for multiple creatives. Pass comma-separated IDs and status: active, paused, or archived.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes
statusYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotation idempotentHint=true is already provided; the description does not contradict it. However, the description adds no extra behavioral context beyond what the annotation conveys.

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 sentence that is front-loaded with the action and provides all necessary details without waste.

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 tool with 2 parameters and no output schema, the description covers the essential aspects. A minor omission is lack of mention of return or error behavior.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates by explaining that 'ids' are comma-separated and 'status' takes specific enum values, adding crucial formatting info.

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 clearly states the action (set status) and the resource (multiple creatives), distinguishing from sibling tools like kadam_adv_set_campaign_status and kadam_adv_update_creative.

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

Usage Guidelines3/5

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

The description specifies the format for IDs and allowed statuses, but does not explicitly state when to use this tool versus alternatives (e.g., when to use individual update vs bulk status set).

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

kadam_adv_update_audienceA

Update an existing audience (read-modify-write). Fetches current state, merges your changes, sends full payload. Type cannot be changed. Pass only the fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
hasHoldsNo
hasClicksNo
expireDaysNo
hasRejectsNo
campaignIdsNoComma-separated campaign IDs (type=audience)
hasConversionsNo
linkedAudienceIdsNoComma-separated pixel/fingerprint audience IDs (type=s2s)

TDQS

A4.2/5.0
Behavior5/5

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

The description discloses the read-modify-write behavior and full payload sending, adding context beyond the readOnlyHint annotation. No contradictions with annotations.

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, front-loaded with the core purpose, and contains no unnecessary 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?

While the key behavioral aspects are covered, the description lacks details about return values, error handling, or parameter specifics given the 9-parameter schema and no output 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?

With only 22% schema description coverage, the description does not detail individual parameters beyond a general principle. It fails to compensate for the lack of parameter documentation in the schema.

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

Purpose5/5

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

The description explicitly states the verb (update), the resource (audience), and the read-modify-write pattern, clearly distinguishing it from sibling tools like create or delete.

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

Usage Guidelines4/5

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

The description instructs to pass only fields to change and notes that type cannot be changed, providing clear usage guidance. However, it does not explicitly mention when to avoid this tool or alternatives beyond implication.

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

kadam_adv_update_autoruleA

Update an autorule (read-modify-write). Pass only the fields to change; full payload is rebuilt from current state.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAutorule ID
typeNoRule type
actionNo
bidMaxNobidChange: max bid cap (>=0.001). REQUIRED for bidChange.
periodNo
slicesNobid rules: granularity dims, e.g. [180,190]. REQUIRED for bidChange.
statByNo
bidRateNobidChange: coefficient on slice EPC (new bid = EPC x bidRate, capped at bidMax). REQUIRED for bidChange, range 0.1-2; bidRate=1 = set bid to eCPC.
isActiveNo
conditionsNo
dayLimitTypeNo
dayLimitValueNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only provide readOnlyHint=false. The description reveals a key behavioral trait: 'read-modify-write' and 'full payload is rebuilt from current state', adding value beyond annotations. However, it omits potential side effects or race conditions.

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, concise sentence with no wasted words. It front-loads the purpose and packs behavioral guidance efficiently.

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 12 parameters with enums and no output schema, yet the description omits return values, error handling, and prerequisites. For a complex mutation tool, this is insufficient for complete agent understanding.

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

Parameters3/5

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

With 42% schema description coverage, the description explains the partial-update strategy but adds no per-parameter details beyond what the schema provides. It clarifies optionality but does not compensate fully for undocumented params like conditions or action.

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

Purpose5/5

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

The description clearly states 'Update an autorule', specifying the verb and resource. It adds the 'read-modify-write' pattern, distinguishing it from create, delete, and status-only tools among siblings.

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

Usage Guidelines3/5

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

The description hints at partial updates ('pass only the fields to change') but does not explicitly contrast with alternatives like kadam_adv_set_autorule_status or kadam_adv_create_autorule. Usage context is implied, not directly stated.

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

kadam_adv_update_campaignA

Update a campaign (read-modify-write): pass only the fields to change, same names as create. Handles all targeting/budget/bid/schedule/conversion edits. For status changes use set_campaign_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCampaign ID to update
osNoComma-separated OS names or IDs (e.g. 'Android,iOS' or '10,20')
bidNoBid amount in USD. For cpa_target this is the target CPA cost
urlNoLanding page URL
nameNoCampaign name shown in dashboard
sspIdsNoComma-separated SSP IDs for the whitelist/blacklist
devicesNoComma-separated device names or IDs (e.g. 'Desktop,Smartphone' or '1,4')
endDateNoEnd date (YYYY-MM-DD)
sspModeNoSSP list mode: whitelist (allow listed) or blacklist (block listed)
browsersNoComma-separated browser names or IDs (e.g. 'Chrome,Firefox' or '8,16')
folderIdNoCampaign group ID (API field: folderId)
scheduleNoComma-separated hours (0-23) to show ads, applied to all days (e.g. '9,10,11,17')
timezoneNoTimezone offset in hours (e.g. 3 for UTC+3)
countriesNoComma-separated ISO country codes (e.g. 'US,DE,BR')
languagesNoComma-separated language names or IDs
startDateNoStart date (YYYY-MM-DD)
categoriesNoComma-separated category IDs from kadam://reference/categories (or the 'mainstream'/'adult' keyword)
impTrackerNoThird-party impression tracking pixel URL
secondPushNoEnable second push notification (push/inpage_push only)
dailyBudgetNoDaily spending limit in USD
totalBudgetNoTotal campaign budget in USD
disableProxyNoBlock proxy/VPN traffic
siteBlacklistNoComma-separated site IDs for blacklist
siteWhitelistNoComma-separated site IDs for whitelist
connectionTypeNoNetwork connection type filter (all = no filter)
conversionHoldNoPostback status name for 'Hold' conversions (e.g. 'reg')
postViewWindowNoPost-view attribution window in hours (1-168)
campaignCapDaysNoWindow in days for campaignCapViews
postClickWindowNoPost-click attribution window in hours (1-168)
campaignCapViewsNoCampaign-level cap: max views of ANY creative from this campaign per user within campaignCapDays
conversionRejectNoPostback status name for 'Rejected' conversions
evenDistributionNoSpread budget evenly across the day
frequencyCapDaysNoWindow in days for frequencyCapViews
subscriptionAgesNoComma-separated subscription-age IDs (push / in-page push only; see campaign options 'subAges'). Replaces the current set. Example: '1' = newest only.
frequencyCapViewsNoCreative-level cap: max views of ONE creative per user within frequencyCapDays
audienceExcludeIdsNoComma-separated audience IDs to exclude
audienceIncludeIdsNoComma-separated audience IDs to include
conversionApprovedNoPostback status name for 'Approved' conversions (e.g. 'dep'); used with conversionTemplateId=0
conversionTemplateIdNoConversion template ID (from campaign options). Use 0 for custom mapping via conversionApproved/Hold/Reject
pauseAfterModerationNoPause campaign after creatives pass moderation
countLastCampaignOnlyNoAttribute conversion only to the last campaign impression (default: true)
postClickAttrPriorityNoPost-click attribution takes priority over post-view (default: true)
countFirstConversionOnlyNoCount only the first conversion per user (default: true)
postConversionAudienceIdsNoComma-separated audience IDs for post-conversion retargeting

TDQS

A4.6/5.0
Behavior5/5

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

Description explains 'read-modify-write' pattern, implying it reads current state, applies changes, and writes. Annotations have readOnlyHint=false, so the write nature is clear. No contradiction, and adds context beyond annotations.

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 sentences front-loaded with purpose and usage guidance. No filler words; every sentence earns its place. Highly concise.

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

Completeness4/5

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

With 44 parameters and no output schema, the description covers the update pattern and categories of supported edits. It doesn't mention limits or side effects, but given the complexity, it provides sufficient context for an AI agent.

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

Parameters4/5

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

Schema has 100% description coverage, so baseline is 3. The description adds value by stating 'pass only the fields to change, same names as create', which clarifies the update mechanism and parameter naming consistency. This justifies a score of 4.

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

Purpose5/5

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

Description states 'Update a campaign (read-modify-write)' with a specific verb and resource, and lists categories of edits (targeting/budget/bid/schedule/conversion). It distinguishes from the sibling 'set_campaign_status' for status updates.

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?

Explicitly tells when not to use this tool ('For status changes use set_campaign_status'), providing clear context. However, it does not differentiate from other update tools like 'kadam_adv_update_campaign_bid', which might cause ambiguity.

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

kadam_adv_update_campaign_bidA
Idempotent

Change ONLY the bid for countries the campaign ALREADY targets (does NOT change geo). To add or change countries use kadam_adv_update_campaign. Unknown countries error out; omit countries to re-bid all current ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCampaign ID
bidYesBid value in USD (e.g. 0.05)
countriesNoWhich of the campaign's EXISTING countries to re-bid (e.g. 'US,DE') — not for adding countries. If omitted, re-bids all current countries.

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already provide idempotentHint=true. Description adds valuable behavioral details: error on unknown countries, re-bidding all when omitted, and that only bids are changed. No contradictions.

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 sentences, no wasted words. The first sentence front-loads the core purpose. Every sentence adds distinct value.

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

Completeness5/5

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

Despite no output schema, the description fully covers behavior: what it changes, constraints, error handling, and alternative tool. Complete for a focused bid update tool.

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

Parameters5/5

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

All three parameters have schema descriptions (100% coverage). The description adds crucial context for 'countries' parameter: it only accepts existing campaign countries, not for adding, and omission re-bids all. This goes beyond the schema.

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

Purpose5/5

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

The description clearly states the tool changes only bids for countries already targeted, explicitly distinguishing it from kadam_adv_update_campaign which adds/changes countries. The use of 'ONLY' and 'does NOT change geo' makes the specific resource and verb clear.

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 tells when to use this tool versus kadam_adv_update_campaign for geo changes. Also clarifies behavior on unknown countries (error) and omission of countries (re-bid all current).

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

kadam_adv_update_campaign_folderB

Update campaign group settings: budgets and distribution (campaign group = the UI term for a folder).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
dailyBudgetNo
totalBudgetNo
limitsEnabledNo
evenDistributionNo

TDQS

B3.3/5.0
Behavior2/5

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

The description confirms a write operation, which is already indicated by 'readOnlyHint: false'. No additional behavioral traits (e.g., side effects, permissions, rate limits) are disclosed beyond the annotations.

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 sentence that conveys the essential purpose without any superfluous words. It is efficiently structured.

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 5 parameters and no output schema, the description is too sparse. It does not explain whether updates are cumulative or overwrite, nor does it provide enough context for an agent to use it effectively without additional insight.

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 mentions 'budgets and distribution', which loosely maps to totalBudget, dailyBudget, and evenDistribution, but does not explain the 'limitsEnabled' parameter or the 'id' parameter. With 0% schema description coverage, more detail is needed to fully clarify each parameter's meaning.

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

Purpose5/5

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

The description clearly states the verb 'Update', the resource 'campaign group' (clarified as folder), and the specific settings 'budgets and distribution'. It distinguishes from sibling tools like 'kadam_adv_create_campaign_folder' and 'kadam_adv_update_campaign'.

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

Usage Guidelines3/5

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

The description implies it is used to update campaign group settings, but it does not explicitly state when to use it versus other update tools (e.g., 'kadam_adv_update_campaign_bid') or provide any exclusions or prerequisites.

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

kadam_adv_update_creativeA

Update an existing creative (read-modify-write). Fetches current state, merges your changes, sends full payload. Pass only the fields you want to change. For image changes, create a new creative instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
bidNoCustom bid for this creative
urlNoLanding page URL
textNoCreative description/text
titleNoCreative title
stopDateNoStop date (YYYY-MM-DD HH:MM:SS or null to clear)
startDateNoStart date (YYYY-MM-DD HH:MM:SS)
creativeIdYesCreative (material) ID to update
bidCountriesNoComma-separated GEO IDs for the bid
pauseAfterModerationNoPause after moderation

TDQS

A4.3/5.0
Behavior4/5

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

Discloses the read-modify-write pattern, explaining that it fetches current state, merges changes, and sends full payload. No annotation contradictions; adds context beyond readOnlyHint=false.

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 concise sentences, front-loaded with operation description, followed by key usage guidance. No redundant information; every sentence adds value.

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

Completeness5/5

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

Given the tool has 9 parameters and no output schema, the description sufficient covers behavior and key constraints (image change warning). No gaps in understanding how to use the tool.

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 parameters are well documented. The description adds only a general usage hint ('Pass only the fields you want to change'), not specific semantic details beyond the schema. Baseline of 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?

Explicitly states 'Update an existing creative' with the read-modify-write pattern. Distinguishes from create by noting image changes require a new creative. Clearly differentiates from siblings like create_creative and set_creative_status.

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

Usage Guidelines4/5

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

Provides clear guidance: 'Pass only the fields you want to change' and warns against using for image changes. Does not explicitly compare to other update tools like update_campaign, but context is adequate.

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

kadam_adv_update_extended_bidsA

Set / multiply / blacklist / remove per-slice bids (Bid Optimization). Bulk: every bid op applies to all listed campaigns. action: set (needs mode+bid), off (blacklist), on (un-blacklist), remove (delete). Get pathIds from kadam_adv_get_extended_stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
bidsYes
campaignIdsYesComma-separated campaign IDs (CPC/CPM)

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already indicate write behavior (readOnlyHint=false). The description adds behavioral details about actions and bulk application, but does not cover error states, idempotency, or response structure. No contradiction with annotations.

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 three concise sentences, front-loaded with key information, and every sentence adds value without fluff.

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 tool lacks an output schema, so the description should cover response expectations. It covers main functionality and required IDs but omits details on success/failure, idempotency, and invalid inputs.

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

Parameters4/5

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

The description adds meaning beyond schema by explaining action values ('off' = blacklist, 'on' = un-blacklist) and noting the source of pathIds. Given schema description coverage of 50%, the description significantly compensates.

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

Purpose5/5

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

The description clearly states the tool sets/multiplies/blacklists/removes per-slice bids with strong verbs and specific resource. It distinguishes from sibling tools like kadam_adv_bulk_update_bids by focusing on 'extended' and 'per-slice' bids.

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

Usage Guidelines4/5

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

The description provides context that operations apply to all listed campaigns and directs to another tool for obtaining pathIds. It lacks explicit when-not-to-use guidance but offers clear usage context.

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

kadam_adv_update_site_bidsB
Idempotent

Set per-site (zone) bids for campaigns. Bid is a number ('0.05'), a multiplier ('x1.5'), or '0' to remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
bidYesBid value: number ('0.05'), multiplier ('x1.5'), or '0' to remove
zonesYesComma-separated site (zone) IDs to set bids for
campaignIdsYesComma-separated campaign IDs

TDQS

B3.3/5.0
Behavior2/5

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

Beyond the idempotentHint annotation (which already indicates safe retries), the description adds no behavioral context such as what happens if campaign or zone IDs are invalid, whether bids are overwritten or merged, or any side effects. The bid format info is parameter-related, not behavioral.

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: two sentences, no fluff, front-loaded with the purpose. Every sentence adds value. It is optimally sized for quick comprehension.

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 update tool with three required parameters and an idempotent annotation, the description covers the core function. However, it lacks context about return values, error behavior, and differentiation from sibling tools, which limits completeness for an agent deciding between similar 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?

The input schema already describes all three parameters with 100% coverage, including the bid format. The description repeats the bid format (number, multiplier, '0' to remove) but does not add new semantic information 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.

Purpose5/5

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

The description clearly states the tool's purpose: 'Set per-site (zone) bids for campaigns.' It uses a specific verb ('set') and resource ('per-site bids'), and distinguishes from sibling tools like 'kadam_adv_update_campaign_bid' by specifying the per-site scope. The bid format explanation adds further clarity.

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 does not provide any guidance on when to use this tool versus alternatives such as 'kadam_adv_bulk_update_bids' or 'kadam_adv_update_campaign_bid'. There are no explicit when-to-use or when-not-to-use instructions, nor mention of prerequisites or context.

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. Dates show when Glama detected each change.

  1. 8 tool updatesv0.5.4
    • Addedkadam_adv_create_autorule
    • Addedkadam_adv_delete_autorule
    • Addedkadam_adv_get_extended_stats
    • Addedkadam_adv_list_autorules
    • Addedkadam_adv_list_extended_bids
    • Addedkadam_adv_set_autorule_status
    • Addedkadam_adv_update_autorule
    • Addedkadam_adv_update_extended_bids
  2. 4 tool updatesv0.5.3
    • Changedkadam_adv_list_audiences1 field changed
      • addedInput schema / properties / sortField / description
        Added value: +"Sort column: audienceId, audienceName, dateCreated, expireDays, reachToday, newToday, reach7d, new7d, reach30d, new30d"
    • Changedkadam_adv_list_campaigns5 fields changed
      • addedInput schema / properties / dateFrom / description
        Added value: +"Stats range start (YYYY-MM-DD); pass with dateTo"
      • addedInput schema / properties / dateTo / description
        Added value: +"Stats range end (YYYY-MM-DD); pass with dateFrom"
      • addedInput schema / properties / searchQuery / description
        Added value: +"Campaign name/domain or campaign ID"
      • addedInput schema / properties / searchQuery / minLength
        Added value: +2
      • addedInput schema / properties / sortField / description
        Added value: +"Sort column: campaign, dateCreation, views, clicks, moneyOut, CPC, CPM, CPA, CTR, CR, ROI, conversions, holds, rejects, profit"
    • Changedkadam_adv_list_creatives3 fields changed
      • addedInput schema / properties / searchQuery / description
        Added value: +"Creative title/name or creative ID"
      • addedInput schema / properties / searchQuery / minLength
        Added value: +2
      • addedInput schema / properties / status / enum
        Added value: +[
        +  "active",
        +  "paused",
        +  "moderation",
        +  "blocked",
        +  "archived"
        +]
    • Changedkadam_adv_list_finance_operations4 fields changed
      • addedInput schema / properties / activityType / description
        Added value: +"Operation type filter"
      • addedInput schema / properties / activityType / enum
        Added value: +[
        +  "impression",
        +  "deposit",
        +  "admin_deposit",
        +  "withdrawal",
        +  "admin_withdrawal"
        +]
      • addedInput schema / properties / dateFrom / description
        Added value: +"Range start (YYYY-MM-DD); must be paired with dateTo"
      • addedInput schema / properties / dateTo / description
        Added value: +"Range end (YYYY-MM-DD); must be paired with dateFrom"
  3. 3 tool updatesv0.5.2
    • Changedkadam_adv_create_campaign16 fields changed
      • changedInput schema / properties / campaignCapDays / description
        Previous value: -"Campaign-level: time window in days (e.g. 1 = per day). Used with campaignCapViews. Example: campaignCapViews=1, campaignCapDays=1 means 'show campaign to each user max once per day'"New value: +"Window in days for campaignCapViews"
      • changedInput schema / properties / campaignCapViews / description
        Previous value: -"Campaign-level: max times ANY creative from this campaign is shown to a user within campaignCapDays (e.g. 1 = one pop per user)"New value: +"Campaign-level cap: max views of ANY creative from this campaign per user within campaignCapDays"
      • changedInput schema / properties / categories / description
        Previous value: -"Comma-separated category IDs for content classification (e.g. '1,2,3' or 'mainstream,adult'). Multiple values allowed. Use campaign options to see available IDs."New value: +"Comma-separated category IDs from kadam://reference/categories (or the 'mainstream'/'adult' keyword)"
      • changedInput schema / properties / conversionApproved / description
        Previous value: -"Postback status name for 'Approved' conversions (e.g. 'dep', 'sale'). Used with conversionTemplateId=0 for custom mapping."New value: +"Postback status name for 'Approved' conversions (e.g. 'dep'); used with conversionTemplateId=0"
      • changedInput schema / properties / conversionHold / description
        Previous value: -"Postback status name for 'Hold' conversions (e.g. 'reg', 'lead'). Used with conversionTemplateId=0 for custom mapping."New value: +"Postback status name for 'Hold' conversions (e.g. 'reg')"
      • changedInput schema / properties / conversionReject / description
        Previous value: -"Postback status name for 'Rejected' conversions. Used with conversionTemplateId=0 for custom mapping."New value: +"Postback status name for 'Rejected' conversions"
      • changedInput schema / properties / conversionTemplateId / description
        Previous value: -"Conversion acceptance template ID from campaign options (conversionTemplates list). Use 0 for custom mapping with conversionApproved/Hold/Reject."New value: +"Conversion template ID (from campaign options). Use 0 for custom mapping via conversionApproved/Hold/Reject"
      • changedInput schema / properties / countFirstConversionOnly / description
        Previous value: -"Only count the first conversion per user (default: true). Set false to allow multiple conversions per view/click"New value: +"Count only the first conversion per user (default: true)"
      • changedInput schema / properties / folderId / description
        Previous value: -"Campaign group ID (the Kadam UI calls this a 'campaign group' / 'Группа кампаний'; the API field name is folderId)"New value: +"Campaign group ID (API field: folderId)"
      • changedInput schema / properties / frequencyCapDays / description
        Previous value: -"Creative-level: time window in days for the cap (e.g. 1 = per day, 7 = per week). Used with frequencyCapViews"New value: +"Window in days for frequencyCapViews"
      • changedInput schema / properties / frequencyCapViews / description
        Previous value: -"Creative-level: max times ONE creative is shown to a user within frequencyCapDays (e.g. 3 = user sees this creative at most 3 times)"New value: +"Creative-level cap: max views of ONE creative per user within frequencyCapDays"
      • changedInput schema / properties / postClickWindow / description
        Previous value: -"Post-click attribution window in hours (1-168). Time after ad click to count a conversion"New value: +"Post-click attribution window in hours (1-168)"
      • changedInput schema / properties / postViewWindow / description
        Previous value: -"Post-view attribution window in hours (1-168). Time after ad impression to count a conversion"New value: +"Post-view attribution window in hours (1-168)"
      • changedInput schema / properties / schedule / description
        Previous value: -"Comma-separated hours (0-23) to show ads, applied to all days (e.g. '9,10,11,12,13,14,15,16,17' for 9am-5pm)"New value: +"Comma-separated hours (0-23) to show ads, applied to all days (e.g. '9,10,11,17')"
      • changedInput schema / properties / sspIds / description
        Previous value: -"Comma-separated SSP IDs for the source whitelist/blacklist (see ssps in campaign options)"New value: +"Comma-separated SSP IDs for the whitelist/blacklist"
      • changedInput schema / properties / sspMode / description
        Previous value: -"SSP source list mode: 'whitelist' = only allow listed SSPs, 'blacklist' = block listed SSPs"New value: +"SSP list mode: whitelist (allow listed) or blacklist (block listed)"
    • Changedkadam_adv_get_stats2 fields changed
      • changedInput schema / properties / groupBy / description
        Previous value: -"Comma-separated groupings, e.g. 'day,campaign,country'. Includes campaign_group (a.k.a. folder). Unknown names are reported back, not silently ignored."New value: +"Comma-separated groupings, e.g. 'day,campaign,country' (incl. campaign_group). Unknown names are reported back."
      • changedInput schema / properties / metrics / description
        Previous value: -"Comma-separated metric names, e.g. 'spend,clicks,impressions,ctr,cpa,conversions,income,roi'. income = earned/profit. Unknown names are reported back, not silently ignored. See the report-dimensions resource for the full list."New value: +"Comma-separated metric names, e.g. 'spend,clicks,ctr,cpa,conversions,income,roi' (income = profit). Unknown names are reported back; see report-dimensions for the full list."
    • Changedkadam_adv_update_campaign16 fields changed
      • changedInput schema / properties / campaignCapDays / description
        Previous value: -"Campaign-level: time window in days (e.g. 1 = per day). Used with campaignCapViews. Example: campaignCapViews=1, campaignCapDays=1 means 'show campaign to each user max once per day'"New value: +"Window in days for campaignCapViews"
      • changedInput schema / properties / campaignCapViews / description
        Previous value: -"Campaign-level: max times ANY creative from this campaign is shown to a user within campaignCapDays (e.g. 1 = one pop per user)"New value: +"Campaign-level cap: max views of ANY creative from this campaign per user within campaignCapDays"
      • changedInput schema / properties / categories / description
        Previous value: -"Comma-separated category IDs for content classification (e.g. '1,2,3' or 'mainstream,adult'). Multiple values allowed. Use campaign options to see available IDs."New value: +"Comma-separated category IDs from kadam://reference/categories (or the 'mainstream'/'adult' keyword)"
      • changedInput schema / properties / conversionApproved / description
        Previous value: -"Postback status name for 'Approved' conversions (e.g. 'dep', 'sale'). Used with conversionTemplateId=0 for custom mapping."New value: +"Postback status name for 'Approved' conversions (e.g. 'dep'); used with conversionTemplateId=0"
      • changedInput schema / properties / conversionHold / description
        Previous value: -"Postback status name for 'Hold' conversions (e.g. 'reg', 'lead'). Used with conversionTemplateId=0 for custom mapping."New value: +"Postback status name for 'Hold' conversions (e.g. 'reg')"
      • changedInput schema / properties / conversionReject / description
        Previous value: -"Postback status name for 'Rejected' conversions. Used with conversionTemplateId=0 for custom mapping."New value: +"Postback status name for 'Rejected' conversions"
      • changedInput schema / properties / conversionTemplateId / description
        Previous value: -"Conversion acceptance template ID from campaign options (conversionTemplates list). Use 0 for custom mapping with conversionApproved/Hold/Reject."New value: +"Conversion template ID (from campaign options). Use 0 for custom mapping via conversionApproved/Hold/Reject"
      • changedInput schema / properties / countFirstConversionOnly / description
        Previous value: -"Only count the first conversion per user (default: true). Set false to allow multiple conversions per view/click"New value: +"Count only the first conversion per user (default: true)"
      • changedInput schema / properties / folderId / description
        Previous value: -"Campaign group ID (the Kadam UI calls this a 'campaign group' / 'Группа кампаний'; the API field name is folderId)"New value: +"Campaign group ID (API field: folderId)"
      • changedInput schema / properties / frequencyCapDays / description
        Previous value: -"Creative-level: time window in days for the cap (e.g. 1 = per day, 7 = per week). Used with frequencyCapViews"New value: +"Window in days for frequencyCapViews"
      • changedInput schema / properties / frequencyCapViews / description
        Previous value: -"Creative-level: max times ONE creative is shown to a user within frequencyCapDays (e.g. 3 = user sees this creative at most 3 times)"New value: +"Creative-level cap: max views of ONE creative per user within frequencyCapDays"
      • changedInput schema / properties / postClickWindow / description
        Previous value: -"Post-click attribution window in hours (1-168). Time after ad click to count a conversion"New value: +"Post-click attribution window in hours (1-168)"
      • changedInput schema / properties / postViewWindow / description
        Previous value: -"Post-view attribution window in hours (1-168). Time after ad impression to count a conversion"New value: +"Post-view attribution window in hours (1-168)"
      • changedInput schema / properties / schedule / description
        Previous value: -"Comma-separated hours (0-23) to show ads, applied to all days (e.g. '9,10,11,12,13,14,15,16,17' for 9am-5pm)"New value: +"Comma-separated hours (0-23) to show ads, applied to all days (e.g. '9,10,11,17')"
      • changedInput schema / properties / sspIds / description
        Previous value: -"Comma-separated SSP IDs for the source whitelist/blacklist (see ssps in campaign options)"New value: +"Comma-separated SSP IDs for the whitelist/blacklist"
      • changedInput schema / properties / sspMode / description
        Previous value: -"SSP source list mode: 'whitelist' = only allow listed SSPs, 'blacklist' = block listed SSPs"New value: +"SSP list mode: whitelist (allow listed) or blacklist (block listed)"
  4. 5 tool updatesv0.5.1
    • Changedkadam_adv_create_campaign1 field changed
      • changedInput schema / properties / folderId / description
        Previous value: -"Campaign folder ID"New value: +"Campaign group ID (the Kadam UI calls this a 'campaign group' / 'Группа кампаний'; the API field name is folderId)"
    • Changedkadam_adv_create_campaign_folder1 field changed
      • changedInput schema / properties / name / description
        Previous value: -"Folder name (1-50 characters, e.g. 'SA', 'US campaigns')"New value: +"Campaign group name (1-50 characters, e.g. 'SA', 'US campaigns')"
    • Changedkadam_adv_get_stats3 fields changed
      • changedInput schema / properties / folderIds / description
        Previous value: -"Comma-separated folder IDs (for reportType=conversions)"New value: +"Comma-separated campaign group (folder) IDs (for reportType=conversions)"
      • addedInput schema / properties / groupBy / description
        Added value: +"Comma-separated groupings, e.g. 'day,campaign,country'. Includes campaign_group (a.k.a. folder). Unknown names are reported back, not silently ignored."
      • addedInput schema / properties / metrics / description
        Added value: +"Comma-separated metric names, e.g. 'spend,clicks,impressions,ctr,cpa,conversions,income,roi'. income = earned/profit. Unknown names are reported back, not silently ignored. See the report-dimensions resource for the full list."
    • Changedkadam_adv_update_campaign2 fields changed
      • changedInput schema / properties / folderId / description
        Previous value: -"Campaign folder ID"New value: +"Campaign group ID (the Kadam UI calls this a 'campaign group' / 'Группа кампаний'; the API field name is folderId)"
      • addedInput schema / properties / subscriptionAges
        Added value: +{
        +  "description": "Comma-separated subscription-age IDs (push / in-page push only; see campaign options 'subAges'). Replaces the current set. Example: '1' = newest only.",
        +  "type": "string"
        +}
    • Changedkadam_adv_update_campaign_bid1 field changed
      • changedInput schema / properties / countries / description
        Previous value: -"Comma-separated ISO country codes (e.g. 'US,DE'). If omitted, keeps current countries from campaign settings"New value: +"Which of the campaign's EXISTING countries to re-bid (e.g. 'US,DE') — not for adding countries. If omitted, re-bids all current countries."
  5. 1 tool updatev0.4.5
    • Addedkadam_adv_get_campaign
  6. 21 tool updatesv0.3.9
    • First observedkadam_adv_bulk_update_bids
    • First observedkadam_adv_create_audience
    • First observedkadam_adv_create_campaign
    • First observedkadam_adv_create_campaign_folder
    • First observedkadam_adv_create_creative
    • First observedkadam_adv_delete_audience
    • First observedkadam_adv_get_audience
    • First observedkadam_adv_get_stats
    • First observedkadam_adv_list_audiences
    • First observedkadam_adv_list_campaign_folders
    • First observedkadam_adv_list_campaigns
    • First observedkadam_adv_list_creatives
    • First observedkadam_adv_list_finance_operations
    • First observedkadam_adv_set_campaign_status
    • First observedkadam_adv_set_creative_status
    • First observedkadam_adv_update_audience
    • First observedkadam_adv_update_campaign
    • First observedkadam_adv_update_campaign_bid
    • First observedkadam_adv_update_campaign_folder
    • First observedkadam_adv_update_creative
    • First observedkadam_adv_update_site_bids

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct resource and action, with clear boundaries. Even overlapping tools like update_campaign and update_campaign_bid are clearly differentiated by scope and usage in their descriptions.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case and a common prefix. The naming is predictable and uniform across all resources.

Tool Count5/5

22 tools cover the core functionality of an advertising platform without being excessive. Each tool serves a clear purpose and the count is well-scoped for the domain.

Completeness3/5

CRUD coverage is incomplete: delete is missing for campaigns, creatives, and folders; get creative by ID is absent; get campaign folder detail is missing. While status changes and updates are present, these gaps hinder full lifecycle management.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for programmatic management of Meta (Facebook/Instagram) advertising campaigns through AI assistants. It enables campaign creation, ad set management, creative upload, analytics, audience management, and conversion tracking.
    398
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for managing ad campaigns across Google Ads, Meta, and more. Enables deploying campaigns, checking performance, and managing budgets from terminal or AI assistants.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server that enables AI agents (Claude Code) to manage Criteo campaigns, ad sets, creatives, audiences, and reports via natural language.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kadam-official/mcp-server'

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