Skip to main content
Glama
kadam-official

@kadam-net/mcp-server

Official

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOG_LEVELNoLog level: trace, debug, info, warn, error, fatal (default: info)
KADAM_ADV_API_KEYNoAdvertiser API key from partners.kadam.net
KADAM_PUB_API_KEYNoPublisher API key from pub.kadam.net
KADAM_ADV_API_BASENoAdvertiser API URL (default: https://partners.kadam.net/api/v1)
KADAM_PUB_API_BASENoPublisher API URL (default: https://pub.kadam.net/api)

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
kadam_adv_list_campaignsA

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

kadam_adv_create_campaignA

Create a new advertiser campaign. Required: type, name, url, folderId (campaign group ID), pricingModel, bid, dailyBudget. Pass dryRun: true to only check the payload — nothing is created and the same field errors are reported, which is the cheap way to find out whether bids, targeting and limits are acceptable before committing.

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.

kadam_adv_set_campaign_statusA

Set status for multiple campaigns. Pass comma-separated IDs and status: active, paused, archived, or restored (take out of the archive). The API answers per campaign, so some IDs can be refused while others succeed.

kadam_adv_delete_campaignsA

Permanently delete campaigns together with their creatives. Requires confirm=true. A campaign must be archived first (use set_campaign_status with status=archived), otherwise the whole call is rejected. Retrying a call that already deleted the campaigns is rejected too, since deleted campaigns are no longer addressable.

kadam_adv_move_campaignsA

Move one or more campaigns to a campaign group. Pass comma-separated campaign IDs and the target campaign group ID. Validation errors reject the whole request; a successful response means every requested campaign was moved.

kadam_adv_update_campaign_bidA

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.

kadam_adv_bulk_update_bidsA

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).

kadam_adv_update_site_bidsB

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

kadam_adv_copy_campaignA

Copy a campaign. Targeting, limits and bids are cloned into a new campaign; statistics and spend are not. The copy always starts paused and goes through moderation again, so it does not spend until activated. Creatives are copied too (all of them by default) and are moderated as new ones.

kadam_adv_get_traffic_forecastA

Forecast how much traffic a bid can buy for a targeting set, based on yesterday's auction. Use it before creating a campaign or raising a bid. Targeting with too little traffic yesterday comes back with an empty curve — that means the forecast could not be built, not that the traffic is zero.

kadam_adv_set_campaign_rssA

Point a native campaign at an RSS feed so creatives are imported from it, or stop the import by sending an empty link. Native campaigns only — other formats are rejected. The import runs on a schedule, so a success here means the feed was saved, not that creatives exist yet.

kadam_adv_get_campaignA

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.

kadam_adv_list_campaign_foldersA

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.

kadam_adv_create_campaign_folderA

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

kadam_adv_get_campaign_folderA

Get a single campaign group by ID: name, archived state, budgets and distribution (campaign group = the UI term for a folder).

kadam_adv_update_campaign_folderB

Partially update a campaign group: rename and/or change budgets and distribution. Only the provided fields are changed (campaign group = the UI term for a folder).

kadam_adv_set_campaign_folder_statusA

Bulk action on campaign groups (comma-separated IDs): activate/pause all campaigns in the groups, archive the groups together with their campaigns, or restore archived groups and their campaigns (campaign group = the UI term for a folder). archive and restore are each other's inverse: restore accepts ONLY archived group IDs and rejects the whole call if a live ID is passed.

kadam_adv_list_audiencesA

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

kadam_adv_get_audienceA

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

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. Set dryRun=true to check the payload without creating anything — useful while assembling a campaign and its audience together.

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.

kadam_adv_get_audience_paramsA

Hardcoded parameter values a pixel or S2S audience substitutes into its tracking code. Only these two audience kinds have them, and only their owner can read them — an audience shared with the account answers as not found. Slots that were never set come back as null, which means the code keeps the {placeholder} as is.

kadam_adv_set_audience_paramsA

Set the hardcoded parameters of a pixel or S2S audience. This replaces the whole set: a slot you do not send is cleared, so send every value you want to keep. Read the current ones with kadam_adv_get_audience_params first. Values that look like a {placeholder} are refused — they would stand in for the template's own placeholders.

kadam_adv_delete_audienceA

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

kadam_adv_list_creativesB

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

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

  • Banner as an HTML5 archive: url, html5ArchiveUrl (.zip), sizeId — needs the HTML5 grant

  • Video: title, url, videoUrl (MP4) — uploading a video file is an internal grant; advertisers deliver video as a VAST tag

  • Video as a VAST tag: title, vastTagUrl (https) in a video campaign — needs the VAST grant, nothing is uploaded

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

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.

kadam_adv_set_creative_statusA

Set status for multiple creatives. Pass comma-separated IDs and status: active, paused, archived, or restored (take out of the archive). The API answers per creative, so some IDs can be refused while others succeed. restored is rejected for the whole call if the creative's campaign is itself archived — restore the campaign first.

kadam_adv_delete_creativesA

Permanently delete creatives. Requires confirm=true. A creative must be archived first (use set_creative_status with status=archived), otherwise the whole call is rejected. Retrying a call that already deleted the creatives is rejected too, since deleted creatives are no longer addressable.

kadam_adv_get_creative_test_conversionA

Links for checking that a creative's conversion tracking works. The go link makes a real test click when opened — it writes a click id, resolves the macros and redirects to the landing exactly as a served ad does, so the advertiser's postback can be verified end to end. This tool only hands the links over; nothing is registered until someone opens one. HTML-tag creatives have no single landing link and come back without a go link; the formats rendered in a frame also carry a preview link.

kadam_adv_copy_creativesA

Copy creatives into other campaigns. Every creative is copied into every target campaign, so 2 creatives and 2 targets produce 4 copies. Target campaigns must have the same ad format as the source, and each landing URL must stay on its target campaign's domain. Originals are untouched; copies start paused and go through moderation.

kadam_adv_move_creativesA

Move creatives to another campaign of the same ad format and the same pricing model. This is not a silent reparenting: the moved creatives lose their creative-level geo bids, are paused and go back to moderation. If any creative or the target campaign fails the checks, nothing moves. To keep the originals in place, copy instead.

kadam_adv_set_creative_bidsA

Set per-country bids on creatives. The list replaces the creatives' own bids entirely, so a country left out of it falls back to the campaign bid — send every country you want priced, not just the one you are changing. All creatives must belong to one campaign, every country must be targeted by that campaign, and a country may appear only once across the whole list. CPA campaigns are rejected: their bid is system-managed.

kadam_adv_upload_bulk_imagesA

First step of a bulk creative batch: stage images so they can be turned into creatives. Each image is checked against the formats of the target campaigns, which must be compatible with each other. Staging is asynchronous — this call only queues the work and returns a job; read the stagedId values from kadam_adv_get_bulk_job once it is done. Staged images count against the account's daily creative limit, and a batch that would exceed it is rejected.

kadam_adv_create_bulk_creativesA

Second step of a bulk creative batch: turn staged images into creatives. Every item is created in every listed campaign, so the batch size is items × campaigns. Each item needs a stagedId from kadam_adv_upload_bulk_images. Creation is asynchronous — this call queues the work and returns a job; read the per-row result from kadam_adv_get_bulk_job. Sending the same payload again returns the same job instead of creating the creatives twice.

kadam_adv_get_bulk_jobA

State of a bulk creative batch, for both steps: staged images and what staging refused for an upload job, the per-row outcome for a creation job. Status done only means the worker finished — individual rows can still have failed, so read the counters before reporting success.

kadam_adv_list_finance_operationsA

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

kadam_adv_list_payment_systemsA

Lists the payment systems the account may deposit through, with per-currency deposit conditions: commission, minimum and maximum amount, and the exchange rate to the account currency. Use before advising on a deposit. Systems reserved for administrators are not returned.

kadam_adv_get_day_money_limitA

Gets the daily spending limit of the WHOLE ACCOUNT, not of a single campaign (for a campaign budget use kadam_adv_get_campaign). A limit of 0 means no cap. When the reported minimum is null the account currency does not support changing the limit.

kadam_adv_set_day_money_limitA

Sets the daily spending limit of the WHOLE ACCOUNT, not of a single campaign (for a campaign budget use kadam_adv_update_campaign). Pass 0 to remove the limit, otherwise the amount must be at least the minimum reported by kadam_adv_get_day_money_limit. Only accounts in the supported currency may change it. Raising or removing the limit resumes campaigns that it had stopped.

kadam_adv_get_accountA

Gets the current advertiser account profile: id, balance, currency, registration date, and timezone offset in hours from UTC (-12 to 12). Does not return email or name.

kadam_adv_get_balanceA

Lightweight current advertiser balance and currency. Use for alerts and balance checks; prefer this over kadam_adv_get_account or finance operations when you only need the balance.

kadam_adv_get_statsB

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).

kadam_adv_block_sitesA

Stop or resume buying traffic from sites (zones) in the given campaigns. Zone IDs come from the sites report (macrosId). Blocking is per campaign: a site blocked in one campaign keeps running in the others, so list every campaign it should be stopped in. Repeating the call changes nothing, and a campaign that does not belong to the account refuses the whole request.

kadam_adv_list_autorulesA

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

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. A client token holds at most 5 rules per campaign and 300 per account — going over either is refused, so delete a rule before adding one. A token issued to Kadam staff for this account is not bound by those two limits.

kadam_adv_update_autoruleA

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

kadam_adv_set_autorule_statusB

Enable or disable an autorule without deleting it.

kadam_adv_delete_autoruleA

Permanently delete an autorule. Requires confirm=true.

kadam_adv_get_extended_statsA

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.

kadam_adv_list_extended_bidsA

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

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.

kadam_adv_reset_extended_bidsA

Drop every per-slice bid of the listed campaigns at once, returning them to the campaign-level bid. Blacklisted slices (action=off) are dropped too, so those slices start being bought again. Requires confirm=true: the dropped bids are not recoverable. To remove a single slice use kadam_adv_update_extended_bids with action=remove.

kadam_adv_toggle_autorule_slice_blockA

Exclude a slice from the campaign's bid autorules, or let them back in. This does not stop buying the slice — that is action=off in kadam_adv_update_extended_bids; it only keeps the autorules from rewriting the bid you set by hand. The call toggles, and the answer says which state the slice ended in, so read kadam_adv_get_campaign_autorule_slices first if you need a specific state.

kadam_adv_get_campaign_autorule_slicesA

Slices the campaign's bid autorules act on, one entry per rule. Use it to tell apart a bid you set by hand from one an autorule keeps rewriting.

kadam_adv_get_campaign_bid_restrictionsA

Bid limits of a campaign: the cap a fixed bid must stay under, the largest allowed multiplier, and the campaign bid the multiplier applies to (null when the geo bids differ). Read it before writing bids to know what will pass.

kadam_adv_get_dictionaryA

Gets one reference dictionary used to build campaign targeting: campaign-types, browsers, platforms (OS), devices, connection-types, categories, isps, conversion-templates, countries, regions or cities. Call this instead of guessing IDs — every targeting field expects the numeric ids returned here. campaign-types only lists the types this account may actually create. categories requires campaignType because the allowed set differs per type. isps, regions and cities require countryId, and are paginated and searchable because a single country can hold tens of thousands of entries. countries is the entry point of the geo chain: its ids are what a campaign stores in countries and what countryId expects here, while regions and cities give the ids a campaign stores in cities. cities can be narrowed to one region with regionId. platforms, devices and categories are trees: children are nested under their parent. conversion-templates entries carry the approved/hold/reject postback status strings, which are what a campaign's conversion field needs.

Prompts

Interactive templates invoked by user choice

NameDescription
kadam_launch_campaignStep-by-step guide to create a complete advertising campaign with creatives
kadam_campaign_performanceGet a formatted performance report for a campaign over a time period
kadam_optimize_sitesAnalyze site performance and suggest blacklisting underperforming sites
kadam_account_overviewGet a complete overview of the account: balance, active campaigns, top performers

Resources

Contextual data attached and managed by the client

NameDescription
campaign-types
categories
pricing-models
creative-formats
report-dimensions
api-overview

TDQS

A3.8/5.0

Scored across 58 tools

Disambiguation4/5

Tools are mostly differentiated by resource and action, and descriptions explicitly resolve several overlaps (e.g. get_balance vs get_account, update_campaign_bid vs bulk_update_bids). Some clusters around finance, bid optimization, and bulk campaign/creative operations still require careful reading, but boundaries are documented.

Naming Consistency5/5

All 58 tools use a consistent kadam_adv_ prefix and snake_case verb_noun naming. Verbs like get, list, create, update, delete, set, move, copy, and reset are used predictably with no mixed conventions.

Tool Count2/5

58 tools is far above the typical 3–15 range and makes agent navigation heavy. While many tools map to distinct API operations, the surface could be consolidated across finance, bid optimization, and folder/creative bulk actions.

Completeness4/5

Core lifecycle coverage is strong across campaigns, creatives, audiences, autorules, bid optimization, finance, and dictionaries. Minor gaps exist (e.g. account profile updates, deposit creation, some reporting consolidation), but agents can work around them.

Maintenance

ActivityActive
ResponsivenessNo issues