Skip to main content
Glama
askads

VK Ads MCP

Создать кампанию (ad_plan)

create_ad_plan

Creates a VK Ads campaign with required initial ad groups, budget, and targeting. Use for new ad plans; VK rejects empty campaigns.

Instructions

Создаёт кампанию (ad_plan). Денежные поля — в валюте аккаунта. Сложные и редкие поля передаются через extra (подмешиваются в тело запроса как есть). Пустую кампанию VK не создаёт: в adGroups нужен массив новых групп объявлений, у каждой — name, package_id, targetings, а для autobiddingMode=max_goals ещё priced_goal {source_id: id счётчика, name: цель}. Следующие группы добавляет create_ad_group. Кампании на сайт нужна привязка extra.ad_object_type="url" + extra.ad_object_id (id URL-объекта; без неё любой package_id отвергается как invalid_package) — проще всего взять ad_object_id, package_id и priced_goal у существующей кампании и её групп (list_ad_plans / list_ad_groups с нужными fields). budgetLimit и budgetLimitDay одновременно передавать нельзя — только одно из двух. Чтобы ничего не запустилось, передать status="blocked" и в extra, и у каждой группы в adGroups.

Input Schema

NameRequiredDescriptionDefault
nameYesНазвание кампании.
extraNoДополнительные поля кампании, подмешиваемые в тело запроса (например, priced_goal, pricelist_id).
dateEndNoДата окончания, YYYY-MM-DD.
adGroupsNoПервые группы объявлений, создаваемые вместе с кампанией (новые, без id). Обязательны: VK не создаёт пустую кампанию.
maxPriceNoПредельная ставка в валюте аккаунта.
dateStartNoДата начала, YYYY-MM-DD.
objectiveNoЦель кампании, например site_conversions, leadads, traffic.
budgetLimitNoОбщий бюджет в валюте аккаунта.
budgetLimitDayNoДневной бюджет в валюте аккаунта. Минимум по справке VK — 300 ₽ (у Дзена свой лимит).
autobiddingModeNoСтратегия аукциона, например max_goals, fixed, second_price_mean.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.5.1
    • addedInput schema / properties / adGroups
      Added value: +{
      +  "description": "Первые группы объявлений, создаваемые вместе с кампанией (новые, без id). Обязательны: VK не создаёт пустую кампанию.",
      +  "items": {
      +    "additionalProperties": {},
      +    "type": "object"
      +  },
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / properties / budgetLimitDay / description
      Previous value: -"Дневной бюджет в валюте аккаунта."New value: +"Дневной бюджет в валюте аккаунта. Минимум по справке VK — 300 ₽ (у Дзена свой лимит)."
  2. Changed9 schema fields changedv1.5.0
    • changedInput schema / properties / autobiddingMode / description
      Previous value: -"Auction strategy, e.g. max_goals, fixed, second_price_mean."New value: +"Стратегия аукциона, например max_goals, fixed, second_price_mean."
    • changedInput schema / properties / budgetLimit / description
      Previous value: -"Total budget in account currency."New value: +"Общий бюджет в валюте аккаунта."
    • changedInput schema / properties / budgetLimitDay / description
      Previous value: -"Daily budget in account currency."New value: +"Дневной бюджет в валюте аккаунта."
    • changedInput schema / properties / dateEnd / description
      Previous value: -"End date YYYY-MM-DD."New value: +"Дата окончания, YYYY-MM-DD."
    • changedInput schema / properties / dateStart / description
      Previous value: -"Start date YYYY-MM-DD."New value: +"Дата начала, YYYY-MM-DD."
    • changedInput schema / properties / extra / description
      Previous value: -"Extra ad plan fields merged into the body (e.g. priced_goal, pricelist_id)."New value: +"Дополнительные поля кампании, подмешиваемые в тело запроса (например, priced_goal, pricelist_id)."
    • changedInput schema / properties / maxPrice / description
      Previous value: -"Bid cap in account currency."New value: +"Предельная ставка в валюте аккаунта."
    • changedInput schema / properties / name / description
      Previous value: -"Ad plan name."New value: +"Название кампании."
    • changedInput schema / properties / objective / description
      Previous value: -"Campaign objective, e.g. site_conversions, leadads, traffic."New value: +"Цель кампании, например site_conversions, leadads, traffic."
  3. Changed3 schema fields changedv1.1.4
    • removedInput schema / properties / dateEnd / $ref
      Removed value: -"#/properties/dateStart"
    • addedInput schema / properties / dateEnd / pattern
      Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
    • addedInput schema / properties / dateEnd / type
      Added value: +"string"
  4. First observedv1.1.3

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already establish this is a non-read-only, non-idempotent, open-world write with no destructive semantics; the description adds substantial constraints beyond that — budgetLimit vs budgetLimitDay mutual exclusivity, the extra.ad_object_type/ad_object_id requirement for site campaigns, and the status="blocked" recipe for creating without launching. It adds real value over the annotations, but it does not cover throttling or what a successful call returns (the campaign id), which an agent would need for follow-up calls.

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?

Every sentence carries operational content, and the core constraint (VK won't create an empty campaign) is front-loaded. However, it is one dense paragraph with several distinct rules (extra passthrough, adGroups shape, URL binding, budget exclusivity, status blocked) run together, making it harder to scan than a lightly structured version would be.

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 create operation with nested objects, no output schema, and high schema coverage, the description covers almost all invocation-time rules (required group structure, URL binding, budget exclusivity, blocked status). The main gaps are the return value/id of the created campaign and any rate-limit expectations, which matter for chaining into create_ad_group.

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 descriptions already document each parameter, which sets the baseline at 3 even though the description adds genuinely useful cross-parameter meaning: required adGroups structure (name, package_id, targetings, priced_goal for max_goals), the

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

Purpose5/5

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

States a concrete verb+resource ('Создаёт кампанию (ad_plan)') and immediately clarifies the non-obvious scope: the campaign is created together with its first ad groups, not standalone. It explicitly hands off to the sibling 'create_ad_group' for groups added later, so an agent can separate this from update_ad_plan and create_ad_group without reading schemas.

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?

Gives explicit when-and-how guidance: VK rejects an empty campaign, so adGroups must carry new groups; subsequent groups go through create_ad_group. It also prescribes the practical path of copying ad_object_id/package_id/priced_goal from existing entities via list_ad_plans/list_ad_groups, and names the concrete failure mode (invalid_package) if the URL binding is missing.

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