Skip to main content
Glama
shinypebble

microsoft-ads-mcp

by shinypebble

create_conversion_goal

Create conversion goals in Microsoft Advertising to track user actions like purchases, signups, or offline conversions. Set goal type, value, and conversion window for performance measurement.

Instructions

Create a conversion goal. Goals are created Active (a goal does not spend; a paused goal silently fails to record conversions) — pass status="Paused" to override.

Conversion goals CANNOT be deleted (Microsoft has no delete API) — they can only be paused or renamed, so name them deliberately.

Microsoft has no native "calls from ads" goal. The bid-eligible path for phone calls is an "OfflineConversion" goal fed by apply_offline_conversions (keyed by MSCLKID) — create that goal here, then upload qualifying calls with apply_offline_conversions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesGoal name. For an OfflineConversion goal, this is the name you pass as conversion_name to apply_offline_conversions.
valueNo
statusNo"Active" (default) or "Paused".
tag_idNoUET tag id (from get_uet_tags) — REQUIRED for the web goals, must be omitted for OfflineConversion (it is keyed by MSCLKID, not a UET tag).
goal_typeYesOne of "OfflineConversion", "Url", "Event", "Duration", "PagesViewedPerVisit". The four web goals require tag_id; OfflineConversion does not (it keys on MSCLKID).
count_typeNo"All" (every conversion per click) or "Unique" (one per click).
revenue_typeNoValue model — "FixedValue" (requires revenue_value), "VariableValue", or "NoValue".
url_operatorNoUrl goal — match operator: "Equals" (default), "BeginsWith", "RegularExpression", "Contains".Equals
goal_categoryNoReporting category, e.g. "Purchase", "SubmitLeadForm", "Contact". Required for "Event" and "OfflineConversion" goals (Microsoft rejects them with InvalidGoalCategory if omitted); recommended for the others too.
revenue_valueNoRevenue amount (required for "FixedValue").
label_operatorNo
url_expressionNoUrl goal — the URL to match (required for "Url").
value_operatorNo
action_operatorNo
label_expressionNo
action_expressionNo
category_operatorNo
category_expressionNo
exclude_from_biddingNoOmit to inherit Microsoft's default (false = included in bidding); true excludes the goal from the Conversions column and ECPC/tCPA bid math.
minimum_pages_viewedNoPagesViewedPerVisit goal — minimum pages per visit (required for "PagesViewedPerVisit").
revenue_currency_codeNoISO currency code for revenue_value, e.g. "USD".
minimum_duration_in_secondsNoDuration goal — minimum time-on-site in seconds (required for "Duration"). Note: this measures UET dwell time, NOT phone-call length.
conversion_window_in_minutesNoClick-to-conversion lookback in minutes (e.g. 43200 = 30 days).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
idsNo
messageYes
partial_errorsNo
Behavior5/5

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

Describes key behaviors beyond annotations: goals created active, paused goal silently fails, cannot be deleted, and the relationship between offline conversion goals and apply_offline_conversions. Annotations only indicate not read-only, so description adds significant context.

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?

Three paragraphs, front-loaded with key behavior. Efficient but slightly longer than absolutely necessary; still clear and well-structured.

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 high complexity (23 parameters, output schema exists), the description covers creation behavior, deletion constraint, status override, and relationship to offline conversions. Complete enough for correct agent invocation.

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

Parameters3/5

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

Schema description coverage is 65%, which is moderate-high. The description does not elaborate on parameter semantics beyond what the schema provides. It adds context for some parameters indirectly (e.g., name for offline conversion), but overall parameter meaning is adequately 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 the tool creates a conversion goal, with specific verb 'Create'. It distinguishes itself from sibling tools like update_conversion_goal and apply_offline_conversions by explaining the offline conversion workflow and deletion constraints.

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?

Explicit guidance on when to use: create conversion goals, with notes on status override, deletion impossibility, and the specific path for offline conversion goals using apply_offline_conversions. Clearly differentiates from alternatives.

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

Install Server

Other Tools

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/shinypebble/microsoft-ads-mcp'

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